Halide 19.0.0
Halide compiler and libraries
Loading...
Searching...
No Matches
ConstantBounds.h
Go to the documentation of this file.
1#ifndef HALIDE_CONSTANT_BOUNDS_H
2#define HALIDE_CONSTANT_BOUNDS_H
3
4#include "ConstantInterval.h"
5#include "Expr.h"
6#include "Scope.h"
7
8/** \file
9 * Methods for computing compile-time constant int64_t upper and lower bounds of
10 * an expression. Cheaper than symbolic bounds inference, and useful for things
11 * like instruction selection.
12 */
13
14namespace Halide {
15namespace Internal {
16
17/** Deduce constant integer bounds on an expression. This can be useful to
18 * decide if, for example, the expression can be cast to another type, be
19 * negated, be incremented, etc without risking overflow.
20 *
21 * Also optionally accepts a scope containing the integer bounds of any
22 * variables that may be referenced, and a cache of constant integer bounds on
23 * known Exprs, which this function will update. The cache is helpful to
24 * short-circuit large numbers of redundant queries, but it should not be used
25 * in contexts where the same Expr object may take on different values within a
26 * single Expr (i.e. before uniquify_variable_names).
27 */
30 std::map<Expr, ConstantInterval, ExprCompare> *cache = nullptr);
31
32} // namespace Internal
33} // namespace Halide
34
35#endif
Defines the ConstantInterval class, and operators on it.
Base classes for Halide expressions (Halide::Expr) and statements (Halide::Internal::Stmt)
Defines the Scope class, which is used for keeping track of names in a scope while traversing IR.
A common pattern when traversing Halide IR is that you need to keep track of stuff when you find a Le...
Definition Scope.h:94
ConstantInterval constant_integer_bounds(const Expr &e, const Scope< ConstantInterval > &scope=Scope< ConstantInterval >::empty_scope(), std::map< Expr, ConstantInterval, ExprCompare > *cache=nullptr)
Deduce constant integer bounds on an expression.
This file defines the class FunctionDAG, which is our representation of a Halide pipeline,...
@ Internal
Not visible externally, similar to 'static' linkage in C.
A fragment of Halide syntax.
Definition Expr.h:258
A class to represent ranges of integers.