PandA-2024.02
Public Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes
soft_float_cg_ext Class Reference

Add to the call graph the function calls associated with the floating point primitive operations. More...

#include <soft_float_cg_ext.hpp>

Inheritance diagram for soft_float_cg_ext:
Inheritance graph
[legend]
Collaboration diagram for soft_float_cg_ext:
Collaboration graph
[legend]

Public Member Functions

 soft_float_cg_ext (const ParameterConstRef _parameters, const application_managerRef AppM, unsigned int _function_id, const DesignFlowManagerConstRef design_flow_manager)
 Constructor. More...
 
 ~soft_float_cg_ext () override
 Destructor. More...
 
DesignFlowStep_Status InternalExec () override
 Fixes the var_decl duplication. More...
 
bool HasToBeExecuted () const override
 Check if this step has actually to be executed. More...
 
- Public Member Functions inherited from FunctionFrontendFlowStep
 FunctionFrontendFlowStep (const application_managerRef AppM, const unsigned int function_id, const FrontendFlowStepType frontend_flow_step_type, const DesignFlowManagerConstRef design_flow_manager, const ParameterConstRef parameters)
 Constructor. More...
 
 ~FunctionFrontendFlowStep () override
 Destructor. More...
 
void ComputeRelationships (DesignFlowStepSet &relationship, const DesignFlowStep::RelationshipType relationship_type) override
 Compute the relationships of a step with other steps. More...
 
std::string GetSignature () const override
 Return the signature of this step. More...
 
std::string GetName () const override
 Return the name of this design step. More...
 
DesignFlowStep_Status Exec () final
 Execute the step. More...
 
unsigned int CGetBBVersion () const
 
unsigned int GetBitValueVersion () const
 
void PrintInitialIR () const override
 Dump the initial intermediate representation. More...
 
void PrintFinalIR () const override
 Dump the final intermediate representation. More...
 
- Public Member Functions inherited from FrontendFlowStep
 FrontendFlowStep (const application_managerRef AppM, const FrontendFlowStepType frontend_flow_step_type, const DesignFlowManagerConstRef design_flow_manager, const ParameterConstRef parameters)
 Constructor. More...
 
 ~FrontendFlowStep () override
 Destructor. More...
 
virtual std::string GetKindText () const
 Return the name of the type of this frontend flow step. More...
 
DesignFlowStepFactoryConstRef CGetDesignFlowStepFactory () const override
 Return the factory to create this type of steps. More...
 
void PrintTreeManager (const bool before) const
 Dump the tree manager. More...
 
- Public Member Functions inherited from DesignFlowStep
 DesignFlowStep (const DesignFlowManagerConstRef design_flow_manager, const ParameterConstRef parameters)
 Constructor. More...
 
virtual ~DesignFlowStep ()
 Destructor. More...
 
virtual void Initialize ()
 Initialize the step (i.e., like a constructor, but executed just before exec. More...
 
DesignFlowStep_Status GetStatus () const
 Return the status of this design step. More...
 
virtual void WriteDot (std::ostream &out) const
 Write the label for a dot graph. More...
 
bool IsComposed () const
 Returns if this step is composed. More...
 
int CGetDebugLevel () const
 Return the debug level of the step. More...
 

Private Types

enum  InterfaceType { INTERFACE_TYPE_NONE = 0, INTERFACE_TYPE_INPUT = 1, INTERFACE_TYPE_OUTPUT = 2, INTERFACE_TYPE_REAL = 4 }
 

Private Member Functions

tree_nodeRef int_type_for (const tree_nodeRef &type, bool use_internal) const
 
bool signature_lowering (function_decl *f_decl) const
 
void ssa_lowering (ssa_name *ssa, bool internal_type) const
 
void replaceWithCall (const FloatFormatRef &specFF, const std::string &fu_name, std::vector< tree_nodeRef > args, const tree_nodeRef &current_statement, const tree_nodeRef &current_tree_node, const std::string &current_scrp)
 Replace current_tree_node with a call_expr to fu_name function specialized with specFF fp format in current_statement. More...
 
bool RecursiveExaminate (const tree_nodeRef &current_statement, const tree_nodeRef &current_tree_node, int castRename)
 Recursive examine tree node. More...
 
tree_nodeRef generate_interface (const blocRef &bb, tree_nodeRef stmt, const tree_nodeRef &ssa, FloatFormatRef inFF, FloatFormatRef outFF) const
 Generate necessary statements to convert ssa variable from inFF to outFF and insert them after stmt in bb. More...
 
tree_nodeRef cstCast (uint64_t in, const FloatFormatRef &inFF, const FloatFormatRef &outFF) const
 Cast real type constant from inFF to outFF format. More...
 
tree_nodeRef floatNegate (const tree_nodeRef &op, const FloatFormatRef &ff) const
 Generate float negate operation based on given floating-point format. More...
 
tree_nodeRef floatAbs (const tree_nodeRef &op, const FloatFormatRef &ff) const
 Generate float absolute value operation based on given floating-point format. More...
 
const CustomUnorderedSet< std::pair< FrontendFlowStepType, FunctionRelationship > > ComputeFrontendRelationships (const DesignFlowStep::RelationshipType relationship_type) const override
 Return the set of analyses in relationship with this design step. More...
 

Static Private Member Functions

static bool lowering_needed (const ssa_name *ssa)
 

Private Attributes

CustomUnorderedSet< unsigned int > already_visited
 Already visited tree node (used to avoid infinite recursion) More...
 
const tree_managerRef TreeM
 Tree manager. More...
 
const tree_manipulationRef tree_man
 tree manipulation More...
 
function_declfd
 
bool isTopFunction
 
std::vector< tree_nodeReftopReturn
 
bool bindingCompleted
 
std::vector< tree_nodeRefparamBinding
 
FunctionVersionRef _version
 
tree_nodeRef int_type
 
tree_nodeRef int_ptr_type
 
CustomMap< ssa_name *, boolviewConvert
 
std::vector< tree_nodeRefnopConvert
 
CustomMap< ssa_name *, std::tuple< FloatFormatRef, std::vector< unsigned int > > > inputInterface
 SSA variable which requires cast renaming from standard to user-defined float format in all but given statements. More...
 
CustomMap< ssa_name *, std::tuple< FloatFormatRef, std::vector< tree_nodeRef > > > outputInterface
 SSA variable which requires cast renaming from user-defined to standard float format in given statements only. More...
 
CustomMap< ssa_name *, std::set< unsigned int > > hwParam
 Hardware implemented functions need parameters specified as real_type, thus it is necessary to add a view_convert. More...
 
std::vector< ssa_name * > hwReturn
 Hardware implemented functions return values as real_type, thus a view_convert is necessary. More...
 

Static Private Attributes

static CustomMap< CallGraph::vertex_descriptor, FunctionVersionRef > funcFF
 Floating-point function version map. More...
 
static CustomMap< unsigned int, std::array< tree_nodeRef, 8 > > versioning_args
 Static arguments list to feed specialization parameters of versioned functions. More...
 
static bool inline_math = false
 
static bool inline_conversion = false
 
static tree_nodeRef float32_type
 
static tree_nodeRef float32_ptr_type
 
static tree_nodeRef float64_type
 
static tree_nodeRef float64_ptr_type
 

Additional Inherited Members

- Public Types inherited from FrontendFlowStep
using FunctionRelationship = enum { ALL_FUNCTIONS, CALLED_FUNCTIONS, CALLING_FUNCTIONS, SAME_FUNCTION, WHOLE_APPLICATION }
 The different relationship type between function analysis. More...
 
- Public Types inherited from DesignFlowStep
enum  RelationshipType { DEPENDENCE_RELATIONSHIP, INVALIDATION_RELATIONSHIP, PRECEDENCE_RELATIONSHIP }
 The relationship type. More...
 
- Static Public Member Functions inherited from FunctionFrontendFlowStep
static const std::string ComputeSignature (const FrontendFlowStepType frontend_flow_step_type, const unsigned int function_id)
 Compute the signature of a function frontend flow step. More...
 
- Static Public Member Functions inherited from FrontendFlowStep
static void CreateSteps (const DesignFlowManagerConstRef design_flow_manager, const CustomUnorderedSet< std::pair< FrontendFlowStepType, FunctionRelationship >> &frontend_relationships, const application_managerConstRef application_manager, DesignFlowStepSet &relationships)
 Create the relationship steps of a step with other steps starting from already specified dependencies between frontend flow steps. More...
 
static const std::string EnumToKindText (const FrontendFlowStepType frontend_flow_step_type)
 Given a frontend flow step type, return the name of the type. More...
 
- Protected Member Functions inherited from FunctionFrontendFlowStep
void WriteBBGraphDot (const std::string &filename) const
 Write the current version of statement list in dot format. More...
 
- Protected Attributes inherited from FunctionFrontendFlowStep
const FunctionBehaviorRef function_behavior
 The function behavior of the function to be analyzed. More...
 
const unsigned int function_id
 The index of the function to be analyzed. More...
 
unsigned int bb_version
 The version of the basic block intermediate representation on which this step has been applied. More...
 
unsigned int bitvalue_version
 The version of the bitvalue information on which this step has been applied. More...
 
- Protected Attributes inherited from FrontendFlowStep
const application_managerRef AppM
 The application manager. More...
 
const FrontendFlowStepType frontend_flow_step_type
 The type of this step. More...
 
unsigned int print_counter
 Print counter. More...
 
- Protected Attributes inherited from DesignFlowStep
bool composed
 True if this step represents a composition of design flow steps (e.g., a flow); must be set by specialized constructors. More...
 
const Wrefcount< const DesignFlowManagerdesign_flow_manager
 The design flow manager. More...
 
const ParameterConstRef parameters
 Set of input parameters. More...
 
int debug_level
 The debug level. More...
 
const int output_level
 The output level. More...
 

Detailed Description

Add to the call graph the function calls associated with the floating point primitive operations.

Definition at line 76 of file soft_float_cg_ext.hpp.

Member Enumeration Documentation

◆ InterfaceType

Enumerator
INTERFACE_TYPE_NONE 
INTERFACE_TYPE_INPUT 
INTERFACE_TYPE_OUTPUT 
INTERFACE_TYPE_REAL 

Definition at line 94 of file soft_float_cg_ext.hpp.

Constructor & Destructor Documentation

◆ soft_float_cg_ext()

soft_float_cg_ext::soft_float_cg_ext ( const ParameterConstRef  _parameters,
const application_managerRef  AppM,
unsigned int  _function_id,
const DesignFlowManagerConstRef  design_flow_manager 
)

◆ ~soft_float_cg_ext()

soft_float_cg_ext::~soft_float_cg_ext ( )
overridedefault

Destructor.

Referenced by soft_float_cg_ext().

Here is the caller graph for this function:

Member Function Documentation

◆ ComputeFrontendRelationships()

const CustomUnorderedSet< std::pair< FrontendFlowStepType, FrontendFlowStep::FunctionRelationship > > soft_float_cg_ext::ComputeFrontendRelationships ( const DesignFlowStep::RelationshipType  relationship_type) const
overrideprivatevirtual

Return the set of analyses in relationship with this design step.

Parameters
relationship_typeis the type of relationship to be considered

Implements FrontendFlowStep.

Definition at line 416 of file soft_float_cg_ext.cpp.

References ABORTED, ALL_FUNCTIONS, CALLED_FUNCTIONS, DesignFlowStep::DEPENDENCE_RELATIONSHIP, EMPTY, DesignFlowStep::GetStatus(), DesignFlowStep::INVALIDATION_RELATIONSHIP, NONEXISTENT, DesignFlowStep::PRECEDENCE_RELATIONSHIP, SAME_FUNCTION, SKIPPED, SUCCESS, THROW_UNREACHABLE, UNCHANGED, UNEXECUTED, UNNECESSARY, and WHOLE_APPLICATION.

Here is the call graph for this function:

◆ cstCast()

tree_nodeRef soft_float_cg_ext::cstCast ( uint64_t  in,
const FloatFormatRef &  inFF,
const FloatFormatRef &  outFF 
) const
private

Cast real type constant from inFF to outFF format.

Parameters
inReal type constant bits represented as inFF
inFFInput floating point format
outFFOutput floating point format
Returns
tree_nodeRef Unsigned integer constant bits representation of input bits using outFF format

Definition at line 1171 of file soft_float_cg_ext.cpp.

References FloatFormat::FPException_IEEE, FloatFormat::FPRounding_NearestEven, tree_manipulation::GetCustomIntegerType(), max, ONE, STR, THROW_ASSERT, THROW_ERROR, tree_man, TreeM, and U.

Referenced by RecursiveExaminate().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ floatAbs()

tree_nodeRef soft_float_cg_ext::floatAbs ( const tree_nodeRef op,
const FloatFormatRef &  ff 
) const
private

Generate float absolute value operation based on given floating-point format.

Parameters
opNegate operand
ffFloating-point format
Returns
tree_nodeRef Floating-point format related absolute value expression to replace abs_expr with

Definition at line 1460 of file soft_float_cg_ext.cpp.

References BUILTIN_SRCP, tree_manipulation::create_binary_operation(), tree_manipulation::GetCustomIntegerType(), ONE, THROW_ERROR, tree_man, TreeM, and U.

Referenced by RecursiveExaminate().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ floatNegate()

tree_nodeRef soft_float_cg_ext::floatNegate ( const tree_nodeRef op,
const FloatFormatRef &  ff 
) const
private

Generate float negate operation based on given floating-point format.

Parameters
opNegate operand
ffFloating-point format
Returns
tree_nodeRef Floating-point format related negate expression to replace negate_expr with

Definition at line 1444 of file soft_float_cg_ext.cpp.

References BUILTIN_SRCP, tree_manipulation::create_binary_operation(), tree_manipulation::GetCustomIntegerType(), THROW_ERROR, tree_man, TreeM, and U.

Referenced by RecursiveExaminate().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ generate_interface()

tree_nodeRef soft_float_cg_ext::generate_interface ( const blocRef &  bb,
tree_nodeRef  stmt,
const tree_nodeRef ssa,
FloatFormatRef  inFF,
FloatFormatRef  outFF 
) const
private

Generate necessary statements to convert ssa variable from inFF to outFF and insert them after stmt in bb.

Parameters
bbGenerated operations will be inserted in this basic block
stmtGenerated statements will be inserted after this statement, if nullptr they will be inserted at the beginning of the BB
ssaReal type ssa_name tree reindex to be converted from inFF to outFF
inFFInput float format, if nullptr will be deduced as standard IEEE 754 type from ssa bitwidth
outFFOutput float format, if nullptr will be deduced as standard IEEE 754 type from ssa bitwidth
Returns
tree_nodeRef New ssa_name tree reindex reference representing converted input ssa

Definition at line 1353 of file soft_float_cg_ext.cpp.

References FrontendFlowStep::AppM, test_panda::args, BUILTIN_SRCP, tree_helper::CGetType(), tree_manipulation::CloneFunction(), tree_manipulation::CreateCallExpr(), tree_manipulation::CreateGimpleAssign(), tree_manipulation::CreateNopExpr(), DesignFlowStep::debug_level, DEBUG_LEVEL_VERY_PEDANTIC, FLOAT_CAST_FU_NAME, funcFF, FunctionFrontendFlowStep::function_id, GET_CONST_NODE, tree_manipulation::GetBooleanType(), tree_manipulation::GetCustomIntegerType(), tree_helper::GetFunctionReturnType(), tree_manipulation::GetSignedIntegerType(), tree_node::GetString(), INDENT_DBG_MEX, INLINE, inline_conversion, tree_helper::IsSameType(), ONE, FunctionCallOpt::RequestCallOpt(), STR, THROW_ASSERT, tree_man, TreeM, and U.

Referenced by InternalExec().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ HasToBeExecuted()

bool soft_float_cg_ext::HasToBeExecuted ( ) const
overridevirtual

Check if this step has actually to be executed.

Returns
true if the step has to be executed

Reimplemented from FunctionFrontendFlowStep.

Definition at line 465 of file soft_float_cg_ext.cpp.

References FunctionFrontendFlowStep::bb_version, and FunctionFrontendFlowStep::HasToBeExecuted().

Here is the call graph for this function:

◆ int_type_for()

tree_nodeRef soft_float_cg_ext::int_type_for ( const tree_nodeRef type,
bool  use_internal 
) const
private

Definition at line 987 of file soft_float_cg_ext.cpp.

References _version, tree_helper::CGetPointedType(), float32_ptr_type, float32_type, float64_ptr_type, float64_type, int_type, tree_helper::IsPointerType(), tree_helper::Size(), and THROW_ASSERT.

Referenced by InternalExec(), RecursiveExaminate(), signature_lowering(), and ssa_lowering().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ InternalExec()

DesignFlowStep_Status soft_float_cg_ext::InternalExec ( )
overridevirtual

◆ lowering_needed()

bool soft_float_cg_ext::lowering_needed ( const ssa_name ssa)
staticprivate

Definition at line 978 of file soft_float_cg_ext.cpp.

References tree_helper::CGetPointedType(), tree_helper::IsPointerType(), tree_helper::IsRealType(), and ssa_name::type.

Referenced by InternalExec(), RecursiveExaminate(), and ssa_lowering().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ RecursiveExaminate()

bool soft_float_cg_ext::RecursiveExaminate ( const tree_nodeRef current_statement,
const tree_nodeRef current_tree_node,
int  castRename 
)
private

Recursive examine tree node.

Parameters
current_statementis the current analyzed statement
current_tree_nodeis the current tree node
castRenameis the required interface type bitmask reported using InterfaceType enum
Returns
bool True if IR has been modified, else false

Definition at line 1539 of file soft_float_cg_ext.cpp.

References _version, CallGraphManager::addCallPointAndExpand(), already_visited, FrontendFlowStep::AppM, test_panda::arg, test_panda::args, bindingCompleted, BUILTIN_WAIT_CALL, CASE_BINARY_EXPRESSION, CASE_CPP_NODES, CASE_CST_NODES, CASE_DECL_NODES, CASE_FAKE_NODES, CASE_GIMPLE_NODES, CASE_PRAGMA_NODES, CASE_QUATERNARY_EXPRESSION, CASE_TERNARY_EXPRESSION, CASE_TYPE_NODES, CASE_UNARY_EXPRESSION, tree_helper::CGetPointedType(), tree_helper::CGetType(), convert_fp_to_bits(), tree_manipulation::create_unary_operation(), tree_manipulation::CreateCallExpr(), cstCast(), DesignFlowStep::debug_level, DEBUG_LEVEL_NONE, DEBUG_LEVEL_VERY_PEDANTIC, FunctionEdgeInfo::direct_call, fd, float32_type, float32FF(), float64_type, float64FF(), floatAbs(), floatNegate(), funcFF, FunctionFrontendFlowStep::function_behavior, FunctionFrontendFlowStep::function_id, GET_CONST_NODE, GET_INDEX_CONST_NODE, tree_node::get_kind(), GET_NODE, tree_manipulation::GetBooleanType(), tree_manipulation::GetCustomIntegerType(), tree_manipulation::GetPointerType(), tree_manipulation::GetSignedIntegerType(), hwParam, hwReturn, INDENT_DBG_MEX, tree_node::index, INLINE, inline_conversion, inline_math, inputInterface, int_type_for(), INTERFACE_TYPE_INPUT, INTERFACE_TYPE_NONE, INTERFACE_TYPE_OUTPUT, INTERFACE_TYPE_REAL, tree_helper::IsLoad(), tree_helper::IsPointerType(), tree_helper::IsRealType(), tree_helper::IsStore(), isTopFunction, tree_helper::IsUnsignedIntegerType(), function_decl::list_of_args, lowering_needed(), MEMCPY, MEMSET, NODE_NOT_YET_SUPPORTED_EC, nopConvert, outputInterface, paramBinding, DesignFlowStep::parameters, tree_helper::print_function_name(), replaceWithCall(), FunctionCallOpt::RequestCallOpt(), tree_helper::Size(), STR, strip_fname(), THROW_ASSERT, THROW_ERROR, THROW_ERROR_CODE, THROW_UNREACHABLE, topReturn, tree_man, TreeM, and viewConvert.

Referenced by InternalExec().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ replaceWithCall()

void soft_float_cg_ext::replaceWithCall ( const FloatFormatRef &  specFF,
const std::string &  fu_name,
std::vector< tree_nodeRef args,
const tree_nodeRef current_statement,
const tree_nodeRef current_tree_node,
const std::string &  current_scrp 
)
private

Replace current_tree_node with a call_expr to fu_name function specialized with specFF fp format in current_statement.

Parameters
specFFFP format for fu_name function specialization
fu_nameFunction name
argsFunction arguments
current_statement
current_tree_node
current_scrp

Definition at line 1481 of file soft_float_cg_ext.cpp.

References CallGraphManager::addCallPointAndExpand(), already_visited, FrontendFlowStep::AppM, tree_manipulation::CloneFunction(), tree_manipulation::CreateCallExpr(), DesignFlowStep::debug_level, DEBUG_LEVEL_NONE, DEBUG_LEVEL_VERY_PEDANTIC, FunctionEdgeInfo::direct_call, funcFF, FunctionFrontendFlowStep::function_id, GET_INDEX_CONST_NODE, tree_manipulation::GetBooleanType(), tree_manipulation::GetSignedIntegerType(), INDENT_DBG_MEX, ONE, STR, THROW_ASSERT, tree_man, TreeM, U, and versioning_args.

Referenced by RecursiveExaminate().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ signature_lowering()

bool soft_float_cg_ext::signature_lowering ( function_decl f_decl) const
private

◆ ssa_lowering()

void soft_float_cg_ext::ssa_lowering ( ssa_name ssa,
bool  internal_type 
) const
private

Field Documentation

◆ _version

FunctionVersionRef soft_float_cg_ext::_version
private

◆ already_visited

CustomUnorderedSet<unsigned int> soft_float_cg_ext::already_visited
private

Already visited tree node (used to avoid infinite recursion)

Definition at line 103 of file soft_float_cg_ext.hpp.

Referenced by RecursiveExaminate(), and replaceWithCall().

◆ bindingCompleted

bool soft_float_cg_ext::bindingCompleted
private

Definition at line 114 of file soft_float_cg_ext.hpp.

Referenced by InternalExec(), and RecursiveExaminate().

◆ fd

function_decl* soft_float_cg_ext::fd
private

Definition at line 111 of file soft_float_cg_ext.hpp.

Referenced by InternalExec(), RecursiveExaminate(), and ssa_lowering().

◆ float32_ptr_type

tree_nodeRef soft_float_cg_ext::float32_ptr_type
staticprivate

Definition at line 88 of file soft_float_cg_ext.hpp.

Referenced by int_type_for(), and soft_float_cg_ext().

◆ float32_type

tree_nodeRef soft_float_cg_ext::float32_type
staticprivate

◆ float64_ptr_type

tree_nodeRef soft_float_cg_ext::float64_ptr_type
staticprivate

Definition at line 90 of file soft_float_cg_ext.hpp.

Referenced by int_type_for(), and soft_float_cg_ext().

◆ float64_type

tree_nodeRef soft_float_cg_ext::float64_type
staticprivate

◆ funcFF

CustomMap< CallGraph::vertex_descriptor, FunctionVersionRef > soft_float_cg_ext::funcFF
staticprivate

Floating-point function version map.

Header include.

design_flows include frontend_analysis Behavior include Graph include Parameter include STL include Tree include Utility include

Definition at line 80 of file soft_float_cg_ext.hpp.

Referenced by generate_interface(), InternalExec(), RecursiveExaminate(), replaceWithCall(), and soft_float_cg_ext().

◆ hwParam

CustomMap<ssa_name*, std::set<unsigned int> > soft_float_cg_ext::hwParam
private

Hardware implemented functions need parameters specified as real_type, thus it is necessary to add a view_convert.

Definition at line 135 of file soft_float_cg_ext.hpp.

Referenced by InternalExec(), and RecursiveExaminate().

◆ hwReturn

std::vector<ssa_name*> soft_float_cg_ext::hwReturn
private

Hardware implemented functions return values as real_type, thus a view_convert is necessary.

Definition at line 138 of file soft_float_cg_ext.hpp.

Referenced by InternalExec(), and RecursiveExaminate().

◆ inline_conversion

bool soft_float_cg_ext::inline_conversion = false
staticprivate

Definition at line 86 of file soft_float_cg_ext.hpp.

Referenced by generate_interface(), RecursiveExaminate(), and soft_float_cg_ext().

◆ inline_math

bool soft_float_cg_ext::inline_math = false
staticprivate

Definition at line 85 of file soft_float_cg_ext.hpp.

Referenced by RecursiveExaminate(), and soft_float_cg_ext().

◆ inputInterface

CustomMap<ssa_name*, std::tuple<FloatFormatRef, std::vector<unsigned int> > > soft_float_cg_ext::inputInterface
private

SSA variable which requires cast renaming from standard to user-defined float format in all but given statements.

Definition at line 129 of file soft_float_cg_ext.hpp.

Referenced by InternalExec(), and RecursiveExaminate().

◆ int_ptr_type

tree_nodeRef soft_float_cg_ext::int_ptr_type
private

Definition at line 120 of file soft_float_cg_ext.hpp.

Referenced by soft_float_cg_ext().

◆ int_type

tree_nodeRef soft_float_cg_ext::int_type
private

Definition at line 119 of file soft_float_cg_ext.hpp.

Referenced by int_type_for(), and soft_float_cg_ext().

◆ isTopFunction

bool soft_float_cg_ext::isTopFunction
private

Definition at line 112 of file soft_float_cg_ext.hpp.

Referenced by InternalExec(), and RecursiveExaminate().

◆ nopConvert

std::vector<tree_nodeRef> soft_float_cg_ext::nopConvert
private

Definition at line 126 of file soft_float_cg_ext.hpp.

Referenced by InternalExec(), and RecursiveExaminate().

◆ outputInterface

CustomMap<ssa_name*, std::tuple<FloatFormatRef, std::vector<tree_nodeRef> > > soft_float_cg_ext::outputInterface
private

SSA variable which requires cast renaming from user-defined to standard float format in given statements only.

Definition at line 132 of file soft_float_cg_ext.hpp.

Referenced by InternalExec(), and RecursiveExaminate().

◆ paramBinding

std::vector<tree_nodeRef> soft_float_cg_ext::paramBinding
private

Definition at line 115 of file soft_float_cg_ext.hpp.

Referenced by InternalExec(), and RecursiveExaminate().

◆ topReturn

std::vector<tree_nodeRef> soft_float_cg_ext::topReturn
private

Definition at line 113 of file soft_float_cg_ext.hpp.

Referenced by InternalExec(), and RecursiveExaminate().

◆ tree_man

const tree_manipulationRef soft_float_cg_ext::tree_man
private

◆ TreeM

const tree_managerRef soft_float_cg_ext::TreeM
private

◆ versioning_args

CustomMap< unsigned int, std::array< tree_nodeRef, 8 > > soft_float_cg_ext::versioning_args
staticprivate

Static arguments list to feed specialization parameters of versioned functions.

Definition at line 83 of file soft_float_cg_ext.hpp.

Referenced by replaceWithCall().

◆ viewConvert

CustomMap<ssa_name*, bool> soft_float_cg_ext::viewConvert
private

Definition at line 123 of file soft_float_cg_ext.hpp.

Referenced by InternalExec(), and RecursiveExaminate().


The documentation for this class was generated from the following files:

Generated on Mon Feb 12 2024 13:04:03 for PandA-2024.02 by doxygen 1.8.13