Halide 22.0.0 Halide compiler and libraries

Classes | Namespaces | Typedefs | Enumerations | Functions
Bounds.h File Reference

Methods for computing the upper and lower bounds of an expression, and the regions of a function read or written by a statement. More...

`#include "Interval.h"`
`#include "Scope.h"`

Go to the source code of this file.

## Classes
struct | Halide::Internal::Box
| Represents the bounds of a region of arbitrary dimension. More...

## Namespaces
namespace | Halide
| This file defines the class FunctionDAG, which is our representation of a Halide pipeline, and contains methods to using Halide's bounds tools to query properties of it.
namespace | Halide::Internal

## Typedefs
typedef std::map< std::pair< std::string, int >, Interval > | Halide::Internal::FuncValueBounds

## Enumerations
enum class | Halide::Internal::Direction { Halide::Internal::Upper , Halide::Internal::Lower }
| Given a varying expression, try to find a constant that is either: An upper bound (always greater than or equal to the expression), or A lower bound (always less than or equal to the expression) If it fails, returns an undefined Expr. More...

## Functions
const FuncValueBounds & | Halide::Internal::empty_func_value_bounds ()
Interval | Halide::Internal::bounds_of_expr_in_scope (const Expr &expr, const Scope< Interval > &scope, const FuncValueBounds &func_bounds=empty_func_value_bounds(), bool const_bound=false)
| Given an expression in some variables, and a map from those variables to their bounds (in the form of (minimum possible value, maximum possible value)), compute two expressions that give the minimum possible value and the maximum possible value of this expression. More...
Expr | Halide::Internal::find_constant_bound (const Expr &e, Direction d, const Scope< Interval > &scope=Scope< Interval >::empty_scope())
Interval | Halide::Internal::find_constant_bounds (const Expr &e, const Scope< Interval > &scope)
| Find bounds for a varying expression that are either constants or +/-inf. More...
void | Halide::Internal::merge_boxes (Box &a, const Box &b)
| Expand box a to encompass box b. More...
bool | Halide::Internal::boxes_overlap (const Box &a, const Box &b)
| Test if box a could possibly overlap box b. More...
Box | Halide::Internal::box_union (const Box &a, const Box &b)
| The union of two boxes. More...
Box | Halide::Internal::box_intersection (const Box &a, const Box &b)
| The intersection of two boxes. More...
bool | Halide::Internal::box_contains (const Box &a, const Box &b)
| Test if box a provably contains box b. More...
std::map< std::string, Box > | Halide::Internal::boxes_required (const Expr &e, const Scope< Interval > &scope=Scope< Interval >::empty_scope(), const FuncValueBounds &func_bounds=empty_func_value_bounds())
| Compute rectangular domains large enough to cover all the 'Call's to each function that occurs within a given statement or expression. More...
std::map< std::string, Box > | Halide::Internal::boxes_required (Stmt s, const Scope< Interval > &scope=Scope< Interval >::empty_scope(), const FuncValueBounds &func_bounds=empty_func_value_bounds())
std::map< std::string, Box > | Halide::Internal::boxes_provided (const Expr &e, const Scope< Interval > &scope=Scope< Interval >::empty_scope(), const FuncValueBounds &func_bounds=empty_func_value_bounds())
| Compute rectangular domains large enough to cover all the 'Provides's to each function that occurs within a given statement or expression. More...
std::map< std::string, Box > | Halide::Internal::boxes_provided (Stmt s, const Scope< Interval > &scope=Scope< Interval >::empty_scope(), const FuncValueBounds &func_bounds=empty_func_value_bounds())
std::map< std::string, Box > | Halide::Internal::boxes_touched (const Expr &e, const Scope< Interval > &scope=Scope< Interval >::empty_scope(), const FuncValueBounds &func_bounds=empty_func_value_bounds())
| Compute rectangular domains large enough to cover all the 'Call's and 'Provides's to each function that occurs within a given statement or expression. More...
std::map< std::string, Box > | Halide::Internal::boxes_touched (Stmt s, const Scope< Interval > &scope=Scope< Interval >::empty_scope(), const FuncValueBounds &func_bounds=empty_func_value_bounds())
Box | Halide::Internal::box_required (const Expr &e, const std::string &fn, const Scope< Interval > &scope=Scope< Interval >::empty_scope(), const FuncValueBounds &func_bounds=empty_func_value_bounds())
| Variants of the above that are only concerned with a single function. More...
Box | Halide::Internal::box_required (Stmt s, const std::string &fn, const Scope< Interval > &scope=Scope< Interval >::empty_scope(), const FuncValueBounds &func_bounds=empty_func_value_bounds())
Box | Halide::Internal::box_provided (const Expr &e, const std::string &fn, const Scope< Interval > &scope=Scope< Interval >::empty_scope(), const FuncValueBounds &func_bounds=empty_func_value_bounds())
Box | Halide::Internal::box_provided (Stmt s, const std::string &fn, const Scope< Interval > &scope=Scope< Interval >::empty_scope(), const FuncValueBounds &func_bounds=empty_func_value_bounds())
Box | Halide::Internal::box_touched (const Expr &e, const std::string &fn, const Scope< Interval > &scope=Scope< Interval >::empty_scope(), const FuncValueBounds &func_bounds=empty_func_value_bounds())
Box | Halide::Internal::box_touched (Stmt s, const std::string &fn, const Scope< Interval > &scope=Scope< Interval >::empty_scope(), const FuncValueBounds &func_bounds=empty_func_value_bounds())
FuncValueBounds | Halide::Internal::compute_function_value_bounds (const std::vector< std::string > &order, const std::map< std::string, Function > &env)
| Compute the maximum and minimum possible value for each function in an environment. More...
Expr | Halide::Internal::span_of_bounds (const Interval &bounds)
void | Halide::Internal::bounds_test ()

## Detailed Description

Methods for computing the upper and lower bounds of an expression, and the regions of a function read or written by a statement.

Definition in file Bounds.h.