Halide 19.0.0
Halide compiler and libraries
Loading...
Searching...
No Matches
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 >, IntervalHalide::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 FuncValueBoundsHalide::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.
 
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.
 
void Halide::Internal::merge_boxes (Box &a, const Box &b)
 Expand box a to encompass box b.
 
bool Halide::Internal::boxes_overlap (const Box &a, const Box &b)
 Test if box a could possibly overlap box b.
 
Box Halide::Internal::box_union (const Box &a, const Box &b)
 The union of two boxes.
 
Box Halide::Internal::box_intersection (const Box &a, const Box &b)
 The intersection of two boxes.
 
bool Halide::Internal::box_contains (const Box &a, const Box &b)
 Test if box a provably contains box b.
 
std::map< std::string, BoxHalide::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.
 
std::map< std::string, BoxHalide::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, BoxHalide::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.
 
std::map< std::string, BoxHalide::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, BoxHalide::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.
 
std::map< std::string, BoxHalide::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.
 
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.
 
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.