![]() |
PandA-2024.02
|
#include "Range_Analysis.hpp"#include "config_HAVE_ASSERTS.hpp"#include "Parameter.hpp"#include "application_manager.hpp"#include "basic_block.hpp"#include "call_graph.hpp"#include "call_graph_manager.hpp"#include "function_behavior.hpp"#include "graph.hpp"#include "op_graph.hpp"#include "var_pp_functor.hpp"#include "design_flow_graph.hpp"#include "design_flow_manager.hpp"#include "function_frontend_flow_step.hpp"#include "dead_code_elimination.hpp"#include "hls_device.hpp"#include "hls_manager.hpp"#include "memory.hpp"#include "custom_map.hpp"#include <map>#include <set>#include <sstream>#include <vector>#include "ext_tree_node.hpp"#include "token_interface.hpp"#include "tree_basic_block.hpp"#include "tree_helper.hpp"#include "tree_manager.hpp"#include "tree_manipulation.hpp"#include "tree_reindex.hpp"#include "Bit_Value_opt.hpp"#include "bit_lattice.hpp"#include "dbgPrintHelper.hpp"#include "string_manipulation.hpp"#include <filesystem>
Go to the source code of this file.
Data Structures | |
| union | vcFloat |
| struct | vcFloat::_FP_STRUCT_LAYOUT |
| union | vcDouble |
| struct | vcDouble::_FP_STRUCT_LAYOUT |
| class | VarNode |
| class | ValueRange |
| class | SymbRange |
| This is an interval that contains a symbolic limit, which is given by the bounds of a program name, e.g. More... | |
| class | ConditionalValueRange |
| class | OpNode |
| This class represents a generic operation in our analysis. More... | |
| class | NodeContainer |
| class | PhiOpNode |
| A constraint like sink = phi(src1, src2, ..., srcN) More... | |
| class | UnaryOpNode |
| A constraint like sink = operation(source) [l, u] Examples: unary instructions such as truncation, sign extensions, zero extensions. More... | |
| class | SigmaOpNode |
| Specific type of UnaryOp used to represent sigma functions. More... | |
| class | BinaryOpNode |
| A constraint like sink = source1 operation source2 intersect [l, u]. More... | |
| class | TernaryOpNode |
| class | LoadOpNode |
| class | ControlDepNode |
| Specific type of OpNode used in Nuutila's strongly connected components algorithm. More... | |
| class | Nuutila |
| class | Meet |
Macros | |
| #define | RA_JUMPSET |
| . include More... | |
| #define | INTEGER_PTR |
| #define | BITVALUE_UPDATE |
| #define | RA_EXEC_NORMAL 0 |
| #define | RA_EXEC_READONLY 1 |
| #define | RA_EXEC_SKIP 2 |
| #define | CASE_MISCELLANEOUS |
| #define | OPERATION_OPTION(opts, X) |
| #define | RETURN_DISABLED_OPTION(x, bw) |
| #define | RESULT_DISABLED_OPTION(x, var, stdResult) enable_##x ? (stdResult) : getRangeFor(var, Regular) |
Typedefs | |
| using | bw_t = Range::bw_t |
| using | ConditionalValueRanges = std::map< tree_nodeConstRef, ConditionalValueRange, tree_reindexCompare > |
| using | VarNodes = std::map< tree_nodeConstRef, VarNode *, tree_reindexCompare > |
| using | OpNodes = CustomSet< OpNode * > |
| using | DefMap = std::map< tree_nodeConstRef, OpNode *, tree_reindexCompare > |
| using | UseMap = std::map< tree_nodeConstRef, CustomSet< OpNode * >, tree_reindexCompare > |
| using | SymbMap = std::map< tree_nodeConstRef, CustomSet< OpNode * >, tree_reindexCompare > |
| using | CallMap = CustomMap< unsigned int, std::list< tree_nodeConstRef > > |
| using | ParmMap = CustomMap< unsigned int, std::pair< bool, std::vector< tree_nodeConstRef > >> |
Enumerations | |
| enum | updateType { ut_None = 0, ut_Range = 1, ut_BitValue = 2 } |
| enum | ValueRangeType { ValueRangeId, SymbRangeId } |
Functions | |
| std::ostream & | operator<< (std::ostream &OS, const VarNode *VN) |
| REF_FORWARD_DECL (ValueRange) | |
| CONSTREF_FORWARD_DECL (ValueRange) | |
| template<class T > | |
| T * | GetVR (const ValueRange *t) |
| std::ostream & | operator<< (std::ostream &OS, const ValueRange *BI) |
| template<typename T > | |
| T * | GetOp (OpNode *t) |
| template<typename T > | |
| const T * | GetOp (const OpNode *t) |
| unsigned int | evaluateBranch (const tree_nodeRef br_op, const blocRef branchBB, int debug_level) |
| static RangeRef | constructor_range (const tree_managerConstRef TM, const tree_nodeConstRef tn, const RangeConstRef init) |
Variables | |
| uint32_t | sign |
| uint32_t | exp |
| uint32_t | frac |
| static bool | enable_add = true |
| static bool | enable_sub = true |
| static bool | enable_mul = true |
| static bool | enable_sdiv = true |
| static bool | enable_udiv = true |
| static bool | enable_srem = true |
| static bool | enable_urem = true |
| static bool | enable_shl = true |
| static bool | enable_shr = true |
| static bool | enable_abs = true |
| static bool | enable_negate = true |
| static bool | enable_not = true |
| static bool | enable_and = true |
| static bool | enable_or = true |
| static bool | enable_xor = true |
| static bool | enable_sext = true |
| static bool | enable_zext = true |
| static bool | enable_trunc = true |
| static bool | enable_min = true |
| static bool | enable_max = true |
| static bool | enable_load = true |
| static bool | enable_float_pack = true |
| static bool | enable_view_convert = true |
| static bool | enable_ternary |
| static bool | enable_bit_phi = true |
Definition in file Range_Analysis.cpp.
| #define BITVALUE_UPDATE |
Definition at line 100 of file Range_Analysis.cpp.
| #define CASE_MISCELLANEOUS |
Definition at line 110 of file Range_Analysis.cpp.
Referenced by UnaryOpNode::eval(), BinaryOpNode::evaluate(), SymbRange::print(), and SymbRange::solveFuture().
| #define INTEGER_PTR |
Definition at line 99 of file Range_Analysis.cpp.
| #define OPERATION_OPTION | ( | opts, | |
| X | |||
| ) |
Definition at line 2322 of file Range_Analysis.cpp.
| #define RA_EXEC_NORMAL 0 |
Definition at line 102 of file Range_Analysis.cpp.
| #define RA_EXEC_READONLY 1 |
Definition at line 103 of file Range_Analysis.cpp.
| #define RA_EXEC_SKIP 2 |
Definition at line 104 of file Range_Analysis.cpp.
| #define RA_JUMPSET |
. include
behavior includes HLS include HLS/memory include stl Tree includes
Definition at line 97 of file Range_Analysis.cpp.
| #define RESULT_DISABLED_OPTION | ( | x, | |
| var, | |||
| stdResult | |||
| ) | enable_##x ? (stdResult) : getRangeFor(var, Regular) |
Definition at line 2333 of file Range_Analysis.cpp.
Referenced by UnaryOpNode::eval().
| #define RETURN_DISABLED_OPTION | ( | x, | |
| bw | |||
| ) |
Definition at line 2328 of file Range_Analysis.cpp.
Referenced by BinaryOpNode::evaluate().
| using bw_t = Range::bw_t |
Definition at line 128 of file Range_Analysis.cpp.
| using CallMap = CustomMap<unsigned int, std::list<tree_nodeConstRef> > |
Definition at line 4954 of file Range_Analysis.cpp.
| using ConditionalValueRanges = std::map<tree_nodeConstRef, ConditionalValueRange, tree_reindexCompare> |
Definition at line 2019 of file Range_Analysis.cpp.
| using DefMap = std::map<tree_nodeConstRef, OpNode*, tree_reindexCompare> |
Definition at line 2158 of file Range_Analysis.cpp.
Definition at line 2156 of file Range_Analysis.cpp.
| using ParmMap = CustomMap<unsigned int, std::pair<bool, std::vector<tree_nodeConstRef> >> |
Definition at line 4956 of file Range_Analysis.cpp.
| using SymbMap = std::map<tree_nodeConstRef, CustomSet<OpNode*>, tree_reindexCompare> |
Definition at line 4269 of file Range_Analysis.cpp.
| using UseMap = std::map<tree_nodeConstRef, CustomSet<OpNode*>, tree_reindexCompare> |
Definition at line 2160 of file Range_Analysis.cpp.
| using VarNodes = std::map<tree_nodeConstRef, VarNode*, tree_reindexCompare> |
Definition at line 2154 of file Range_Analysis.cpp.
| enum updateType |
| Enumerator | |
|---|---|
| ut_None | |
| ut_Range | |
| ut_BitValue | |
Definition at line 1177 of file Range_Analysis.cpp.
| enum ValueRangeType |
| Enumerator | |
|---|---|
| ValueRangeId | |
| SymbRangeId | |
Definition at line 1522 of file Range_Analysis.cpp.
| CONSTREF_FORWARD_DECL | ( | ValueRange | ) |
|
static |
Definition at line 3984 of file Range_Analysis.cpp.
References DEBUG_LEVEL_VERY_PEDANTIC, el, tree_helper::get_array_dim_and_bitsize(), GET_CONST_NODE, GET_INDEX_CONST_NODE, INDENT_DBG_MEX, tree_helper::IsArrayEquivType(), Regular, STR, THROW_ASSERT, and test_panda::type.
Referenced by LoadOpNode::opCtorGenerator().


| unsigned int evaluateBranch | ( | const tree_nodeRef | br_op, |
| const blocRef | branchBB, | ||
| int | debug_level | ||
| ) |
Definition at line 3506 of file Range_Analysis.cpp.
References OpNode::debug_level, DEBUG_LEVEL_VERY_PEDANTIC, BinaryOpNode::evaluate(), bloc::EXIT_BLOCK_ID, GET_CONST_NODE, tree_helper::get_integer_cst_value(), tree_helper::GetConstValue(), INDENT_DBG_MEX, Range::max_digits, Regular, STR, and THROW_ASSERT.

|
inline |
Definition at line 2027 of file Range_Analysis.cpp.
|
inline |
Definition at line 2032 of file Range_Analysis.cpp.
|
inline |
Definition at line 1532 of file Range_Analysis.cpp.
| std::ostream& operator<< | ( | std::ostream & | OS, |
| const VarNode * | VN | ||
| ) |
Definition at line 1513 of file Range_Analysis.cpp.
References VarNode::print().

| std::ostream& operator<< | ( | std::ostream & | OS, |
| const ValueRange * | BI | ||
| ) |
Definition at line 1593 of file Range_Analysis.cpp.
References ValueRange::print().

| REF_FORWARD_DECL | ( | ValueRange | ) |
Definition at line 2304 of file Range_Analysis.cpp.
Definition at line 2295 of file Range_Analysis.cpp.
Definition at line 2307 of file Range_Analysis.cpp.
Definition at line 2320 of file Range_Analysis.cpp.
Definition at line 2316 of file Range_Analysis.cpp.
Definition at line 2315 of file Range_Analysis.cpp.
Definition at line 2314 of file Range_Analysis.cpp.
Definition at line 2313 of file Range_Analysis.cpp.
Definition at line 2297 of file Range_Analysis.cpp.
Definition at line 2305 of file Range_Analysis.cpp.
Definition at line 2306 of file Range_Analysis.cpp.
Definition at line 2308 of file Range_Analysis.cpp.
Definition at line 2298 of file Range_Analysis.cpp.
Definition at line 2310 of file Range_Analysis.cpp.
Definition at line 2302 of file Range_Analysis.cpp.
Definition at line 2303 of file Range_Analysis.cpp.
Definition at line 2300 of file Range_Analysis.cpp.
Definition at line 2296 of file Range_Analysis.cpp.
|
static |
Definition at line 2318 of file Range_Analysis.cpp.
Definition at line 2312 of file Range_Analysis.cpp.
Definition at line 2299 of file Range_Analysis.cpp.
Definition at line 2301 of file Range_Analysis.cpp.
Definition at line 2317 of file Range_Analysis.cpp.
Definition at line 2309 of file Range_Analysis.cpp.
Definition at line 2311 of file Range_Analysis.cpp.
| uint64_t exp |
Definition at line 135 of file Range_Analysis.cpp.
Referenced by AllocationInformation::EstimateControllerDelay(), getFunctionType(), hist(), fu_binding::manage_extern_global_port(), RELU(), soft_max(), ss_sort(), update(), and VarSum().
| uint64_t frac |
Definition at line 136 of file Range_Analysis.cpp.
| uint64_t sign |
Definition at line 134 of file Range_Analysis.cpp.
Referenced by top_entity::add_command_signals(), conn_binding::add_datapath_connection(), classic_datapath::add_ports(), fu_binding::add_to_SM(), conn_binding::add_to_SM(), bsearch(), minimal_interface::build_wrapper(), structural_manager::check_bound(), connect_with_signal_name(), WB4_interface::connect_with_signal_name(), fixedpt_sin(), TopEntityMemoryMapped::insertMemoryMappedRegister(), fu_binding::manage_memory_ports_chained(), conn_binding::mux_allocation(), conn_binding::mux_connection(), and structural_manager::remove_empty_signal().
1.8.13