|
| ::llvm::APInt | convert_bitvalue_repr (const rvsdg::BitValueRepresentation &vr) |
| |
| static bool | is_identity_mapping (const rvsdg::MatchOperation &op) |
| |
| static const llvm::ThreeAddressCode * | get_match (const llvm::ThreeAddressCode *branch) |
| |
| static bool | has_return_value (const ControlFlowGraph &cfg) |
| |
| static TailControlledLoop | ExtractLoop (ControlFlowGraphNode &loopEntry, ControlFlowGraphNode &loopExit) |
| |
| static void | ReinsertLoop (const TailControlledLoop &loop) |
| |
| static const ThreeAddressCodeVariable * | CreateContinuationVariable (BasicBlock &bb, std::shared_ptr< const rvsdg::ControlType > type) |
| |
| static const ThreeAddressCodeVariable & | CreateLoopExitVariable (BasicBlock &bb, std::shared_ptr< const rvsdg::ControlType > type) |
| |
| static const ThreeAddressCodeVariable & | CreateLoopEntryVariable (BasicBlock &bb, std::shared_ptr< const rvsdg::ControlType > type) |
| |
| static const ThreeAddressCodeVariable & | CreateLoopRepetitionVariable (BasicBlock &basicBlock) |
| |
| static void | AppendBranch (BasicBlock &basicBlock, const Variable *operand) |
| |
| static void | AppendConstantAssignment (BasicBlock &basicBlock, const ThreeAddressCodeVariable &variable, const size_t value) |
| |
| static void | RestructureLoopEntry (const StronglyConnectedComponentStructure &sccStructure, BasicBlock *newEntryNode, const ThreeAddressCodeVariable *entryVariable) |
| |
| static void | RestructureLoopExit (const StronglyConnectedComponentStructure &sccStructure, BasicBlock &newRepetitionNode, BasicBlock &newExitNode, ControlFlowGraphNode ®ionExit, const ThreeAddressCodeVariable &repetitionVariable, const ThreeAddressCodeVariable *exitVariable) |
| |
| static void | RestructureLoopRepetition (const StronglyConnectedComponentStructure &sccStructure, ControlFlowGraphNode &newRepetitionNode, const ThreeAddressCodeVariable *entryVariable, const ThreeAddressCodeVariable &repetitionVariable) |
| |
| static BasicBlock * | GetEntryVariableBlock (ControlFlowGraphNode *node) |
| |
| static void | RestructureControlFlow (ControlFlowGraphNode &, ControlFlowGraphNode &, std::vector< TailControlledLoop > &) |
| |
| static std::unique_ptr< rvsdg::MatchOperation > | invertMatchOperation (const rvsdg::MatchOperation &matchOperation) |
| |
| static void | adjustLoopRepetitionEdge (const StronglyConnectedComponentStructure &sccStructure) |
| |
| static void | RestructureLoops (ControlFlowGraphNode ®ionEntry, ControlFlowGraphNode ®ionExit, std::vector< TailControlledLoop > &loops) |
| |
| static ControlFlowGraphNode & | ComputeHeadBranch (ControlFlowGraphNode &start, ControlFlowGraphNode &end) |
| |
| static util::HashSet< ControlFlowGraphNode * > | ComputeDominatorGraph (const ControlFlowGraphEdge *edge) |
| |
| static Continuation | ComputeContinuation (const ControlFlowGraphNode &headBranch) |
| |
| static void | RestructureBranches (ControlFlowGraphNode &entry, ControlFlowGraphNode &exit) |
| |
| void | RestructureLoops (ControlFlowGraph &cfg) |
| |
| void | RestructureBranches (ControlFlowGraph &cfg) |
| |
| void | RestructureControlFlow (ControlFlowGraph &cfg) |
| |
| static bool | requiresExport (const InterProceduralGraphNode &ipgNode) |
| |
| static void | ConvertAssignment (const llvm::ThreeAddressCode &threeAddressCode, rvsdg::Region &, llvm::VariableMap &variableMap) |
| |
| static void | ConvertSelect (const llvm::ThreeAddressCode &threeAddressCode, rvsdg::Region &, llvm::VariableMap &variableMap) |
| |
| static void | ConvertBranch (const llvm::ThreeAddressCode &threeAddressCode, rvsdg::Region &, llvm::VariableMap &) |
| |
| template<class TNode , class TOperation > |
| static void | Convert (const llvm::ThreeAddressCode &threeAddressCode, rvsdg::Region ®ion, llvm::VariableMap &variableMap) |
| |
| static void | ConvertThreeAddressCode (const llvm::ThreeAddressCode &threeAddressCode, rvsdg::Region ®ion, llvm::VariableMap &variableMap) |
| |
| static void | ConvertBasicBlock (const ThreeAddressCodeList &basicBlock, rvsdg::Region ®ion, llvm::VariableMap &variableMap) |
| |
| static void | ConvertAggregationNode (const AggregationNode &aggregationNode, const AnnotationMap &demandMap, rvsdg::LambdaNode &lambdaNode, RegionalizedVariableMap ®ionalizedVariableMap) |
| |
| static void | Convert (const EntryAggregationNode &entryAggregationNode, const AnnotationMap &demandMap, rvsdg::LambdaNode &lambdaNode, RegionalizedVariableMap ®ionalizedVariableMap) |
| |
| static void | Convert (const ExitAggregationNode &exitAggregationNode, const AnnotationMap &, rvsdg::LambdaNode &lambdaNode, RegionalizedVariableMap ®ionalizedVariableMap) |
| |
| static void | Convert (const BasicBlockAggregationNode &blockAggregationNode, const AnnotationMap &, rvsdg::LambdaNode &, RegionalizedVariableMap ®ionalizedVariableMap) |
| |
| static void | Convert (const LinearAggregationNode &linearAggregationNode, const AnnotationMap &demandMap, rvsdg::LambdaNode &lambdaNode, RegionalizedVariableMap ®ionalizedVariableMap) |
| |
| static void | Convert (const BranchAggregationNode &branchAggregationNode, const AnnotationMap &demandMap, rvsdg::LambdaNode &lambdaNode, RegionalizedVariableMap ®ionalizedVariableMap) |
| |
| static void | Convert (const LoopAggregationNode &loopAggregationNode, const AnnotationMap &demandMap, rvsdg::LambdaNode &lambdaNode, RegionalizedVariableMap ®ionalizedVariableMap) |
| |
| static void | RestructureControlFlowGraph (ControlFlowGraph &controlFlowGraph, const std::string &functionName, InterProceduralGraphToRvsdgStatisticsCollector &statisticsCollector) |
| |
| static std::unique_ptr< AggregationNode > | AggregateControlFlowGraph (ControlFlowGraph &controlFlowGraph, const std::string &functionName, InterProceduralGraphToRvsdgStatisticsCollector &statisticsCollector) |
| |
| static std::unique_ptr< AnnotationMap > | AnnotateAggregationTree (const AggregationNode &aggregationTreeRoot, const std::string &functionName, InterProceduralGraphToRvsdgStatisticsCollector &statisticsCollector) |
| |
| static rvsdg::Output * | ConvertAggregationTreeToLambda (const AggregationNode &aggregationTreeRoot, const AnnotationMap &demandMap, RegionalizedVariableMap &scopedVariableMap, const std::string &functionName, std::shared_ptr< const rvsdg::FunctionType > functionType, const Linkage &functionLinkage, const CallingConvention &functionCallingConvention, const AttributeSet &functionAttributes, InterProceduralGraphToRvsdgStatisticsCollector &statisticsCollector) |
| |
| static rvsdg::Output * | ConvertControlFlowGraph (const FunctionNode &functionNode, RegionalizedVariableMap ®ionalizedVariableMap, InterProceduralGraphToRvsdgStatisticsCollector &statisticsCollector) |
| |
| static rvsdg::Output * | ConvertFunctionNode (const FunctionNode &functionNode, RegionalizedVariableMap ®ionalizedVariableMap, InterProceduralGraphToRvsdgStatisticsCollector &statisticsCollector) |
| |
| static rvsdg::Output * | ConvertDataNodeInitialization (const DataNodeInit &init, rvsdg::Region ®ion, RegionalizedVariableMap ®ionalizedVariableMap) |
| |
| static rvsdg::Output * | ConvertDataNode (const DataNode &dataNode, RegionalizedVariableMap ®ionalizedVariableMap, InterProceduralGraphToRvsdgStatisticsCollector &statisticsCollector) |
| |
| static rvsdg::Output * | ConvertInterProceduralGraphNode (const InterProceduralGraphNode &ipgNode, RegionalizedVariableMap ®ionalizedVariableMap, InterProceduralGraphToRvsdgStatisticsCollector &statisticsCollector) |
| |
| static void | ConvertStronglyConnectedComponent (const std::unordered_set< const InterProceduralGraphNode * > &stronglyConnectedComponent, rvsdg::Graph &graph, RegionalizedVariableMap ®ionalizedVariableMap, InterProceduralGraphToRvsdgStatisticsCollector &statisticsCollector) |
| |
| static std::unique_ptr< LlvmRvsdgModule > | ConvertInterProceduralGraphModule (InterProceduralGraphModule &interProceduralGraphModule, InterProceduralGraphToRvsdgStatisticsCollector &statisticsCollector) |
| |
| std::unique_ptr< LlvmRvsdgModule > | ConvertInterProceduralGraphModule (InterProceduralGraphModule &interProceduralGraphModule, util::StatisticsCollector &statisticsCollector) |
| |
| static const Variable * | ConvertConstant (::llvm::Constant *, std::vector< std::unique_ptr< llvm::ThreeAddressCode > > &, Context &) |
| |
| static const Variable * | convertInstruction (::llvm::Instruction *instruction, std::vector< std::unique_ptr< ThreeAddressCode > > &threeAddressCodes, Context &context) |
| |
| const Variable * | ConvertValueOrFunction (::llvm::Value *v, tacsvector_t &tacs, Context &ctx) |
| |
| const Variable * | ConvertValue (::llvm::Value *v, tacsvector_t &tacs, Context &ctx) |
| |
| static rvsdg::BitValueRepresentation | convert_apint (const ::llvm::APInt &value) |
| |
| Attribute::kind | ConvertAttributeKind (const ::llvm::Attribute::AttrKind &kind) |
| |
| static EnumAttribute | ConvertEnumAttribute (const ::llvm::Attribute &attribute) |
| |
| static IntAttribute | ConvertIntAttribute (const ::llvm::Attribute &attribute) |
| |
| static TypeAttribute | ConvertTypeAttribute (const ::llvm::Attribute &attribute, TypeConverter &typeConverter) |
| |
| static StringAttribute | ConvertStringAttribute (const ::llvm::Attribute &attribute) |
| |
| static AttributeSet | convert_attributes (const ::llvm::AttributeSet &as, TypeConverter &typeConverter) |
| |
| AttributeList | convertAttributeList (const ::llvm::AttributeList &attributeList, const size_t numParameters, TypeConverter &typeConverter) |
| |
| static const Variable * | convert_int_constant (::llvm::Constant *c, std::vector< std::unique_ptr< ThreeAddressCode > > &tacs, Context &) |
| |
| static const Variable * | convert_undefvalue (::llvm::Constant *c, std::vector< std::unique_ptr< llvm::ThreeAddressCode > > &tacs, Context &ctx) |
| |
| static const Variable * | convert_constantExpr (::llvm::Constant *constant, std::vector< std::unique_ptr< llvm::ThreeAddressCode > > &tacs, Context &ctx) |
| |
| static const Variable * | convert_constantFP (::llvm::Constant *constant, std::vector< std::unique_ptr< llvm::ThreeAddressCode > > &tacs, Context &ctx) |
| |
| static const Variable * | convert_globalVariable (::llvm::Constant *c, std::vector< std::unique_ptr< llvm::ThreeAddressCode > > &tacs, Context &ctx) |
| |
| static const Variable * | convert_constantPointerNull (::llvm::Constant *constant, std::vector< std::unique_ptr< llvm::ThreeAddressCode > > &tacs, Context &ctx) |
| |
| static const Variable * | convert_blockAddress (::llvm::Constant *constant, std::vector< std::unique_ptr< llvm::ThreeAddressCode > > &, Context &) |
| |
| static const Variable * | convert_constantAggregateZero (::llvm::Constant *c, std::vector< std::unique_ptr< llvm::ThreeAddressCode > > &tacs, Context &ctx) |
| |
| static const Variable * | convert_constantArray (::llvm::Constant *c, std::vector< std::unique_ptr< llvm::ThreeAddressCode > > &tacs, Context &ctx) |
| |
| static const Variable * | convert_constantDataArray (::llvm::Constant *constant, std::vector< std::unique_ptr< llvm::ThreeAddressCode > > &tacs, Context &ctx) |
| |
| static const Variable * | convert_constantDataVector (::llvm::Constant *constant, std::vector< std::unique_ptr< llvm::ThreeAddressCode > > &tacs, Context &ctx) |
| |
| static const Variable * | ConvertConstantStruct (::llvm::Constant *c, std::vector< std::unique_ptr< llvm::ThreeAddressCode > > &tacs, Context &ctx) |
| |
| static const Variable * | convert_constantVector (::llvm::Constant *c, std::vector< std::unique_ptr< llvm::ThreeAddressCode > > &tacs, Context &ctx) |
| |
| static const Variable * | convert_globalAlias (::llvm::Constant *constant, std::vector< std::unique_ptr< llvm::ThreeAddressCode > > &, Context &) |
| |
| static const Variable * | convert_function (::llvm::Constant *c, tacsvector_t &tacs, Context &ctx) |
| |
| static const Variable * | ConvertConstant (::llvm::PoisonValue *poisonValue, tacsvector_t &threeAddressCodeVector, Context &context) |
| |
| template<class T > |
| static const Variable * | ConvertConstant (::llvm::Constant *constant, tacsvector_t &threeAddressCodeVector, Context &context) |
| |
| static std::vector< std::unique_ptr< llvm::ThreeAddressCode > > | ConvertConstant (::llvm::Constant *c, Context &ctx) |
| |
| static const Variable * | convert_return_instruction (::llvm::Instruction *instruction, tacsvector_t &tacs, Context &ctx) |
| |
| static const Variable * | ConvertBranchInstruction (::llvm::Instruction *instruction, tacsvector_t &tacs, Context &ctx) |
| |
| static const Variable * | convertSwitchInstruction (::llvm::SwitchInst *switchInstruction, tacsvector_t &tacs, Context &ctx) |
| |
| static const Variable * | convert_unreachable_instruction (::llvm::Instruction *i, tacsvector_t &, Context &ctx) |
| |
| static std::unique_ptr< rvsdg::BinaryOperation > | ConvertIntegerIcmpPredicate (const ::llvm::CmpInst::Predicate predicate, const std::size_t numBits) |
| |
| static std::unique_ptr< rvsdg::BinaryOperation > | ConvertPointerIcmpPredicate (const ::llvm::CmpInst::Predicate predicate) |
| |
| static const Variable * | convert (const ::llvm::ICmpInst *instruction, tacsvector_t &tacs, Context &ctx) |
| |
| static const Variable * | convert_fcmp_instruction (::llvm::Instruction *instruction, tacsvector_t &tacs, Context &ctx) |
| |
| static const Variable * | AddIOBarrier (tacsvector_t &tacs, const Variable *operand, const Context &ctx) |
| |
| static const Variable * | convert_load_instruction (::llvm::Instruction *i, tacsvector_t &tacs, Context &ctx) |
| |
| static const Variable * | convert_store_instruction (::llvm::Instruction *i, tacsvector_t &tacs, Context &ctx) |
| |
| static const Variable * | ConvertPhiInstruction (::llvm::Instruction *i, tacsvector_t &tacs, Context &ctx) |
| |
| static const Variable * | convert_getelementptr_instruction (::llvm::Instruction *inst, tacsvector_t &tacs, Context &ctx) |
| |
| static const Variable * | convertMallocCall (const ::llvm::CallInst &instruction, tacsvector_t &threeAddressCodes, Context &context) |
| |
| static const Variable * | convertFreeCall (const ::llvm::CallInst &instruction, tacsvector_t &threeAddressCodes, Context &context) |
| |
| static bool | IsVolatile (const ::llvm::Value &value) |
| |
| static const Variable * | convertMemCpyCall (const ::llvm::IntrinsicInst *instruction, tacsvector_t &threeAddressCodes, Context &context) |
| |
| static const Variable * | convertMemSetCall (const ::llvm::IntrinsicInst &instruction, tacsvector_t &threeAddressCodes, Context &context) |
| |
| static const Variable * | convertMemMoveCall (const ::llvm::IntrinsicInst &instruction, tacsvector_t &threeAddressCodes, Context &context) |
| |
| static bool | isMallocCall (const ::llvm::CallInst &callInstruction) |
| |
| static bool | isFreeCall (const ::llvm::CallInst &callInstruction) |
| |
| static const Variable * | convertFMulAddIntrinsic (const ::llvm::CallInst &instruction, tacsvector_t &tacs, Context &ctx) |
| |
| static const Variable * | convertCeilIntrinsic (const ::llvm::CallInst &instruction, tacsvector_t &tacs, Context &context) |
| |
| static const Variable * | convertRIntIntrinsic (const ::llvm::CallInst &instruction, tacsvector_t &tacs, Context &context) |
| |
| static const Variable * | convertTruncIntrinsic (const ::llvm::CallInst &instruction, tacsvector_t &tacs, Context &context) |
| |
| static const Variable * | convertFloorIntrinsic (const ::llvm::CallInst &instruction, tacsvector_t &tacs, Context &context) |
| |
| static const Variable * | convertRoundIntrinsic (const ::llvm::CallInst &instruction, tacsvector_t &tacs, Context &context) |
| |
| static const Variable * | convertFShlIntrinsic (const ::llvm::CallInst &instruction, tacsvector_t &tacs, Context &context) |
| |
| static const Variable * | convertSMaxIntrinsic (const ::llvm::CallInst &instruction, tacsvector_t &tacs, Context &context) |
| |
| static const Variable * | convertUMaxIntrinsic (const ::llvm::CallInst &instruction, tacsvector_t &tacs, Context &context) |
| |
| static const Variable * | convertSMinIntrinsic (const ::llvm::CallInst &instruction, tacsvector_t &tacs, Context &context) |
| |
| static const Variable * | convertUMinIntrinsic (const ::llvm::CallInst &instruction, tacsvector_t &tacs, Context &context) |
| |
| static const Variable * | convertCopysignIntrinsic (const ::llvm::CallInst &instruction, tacsvector_t &tacs, Context &context) |
| |
| static const Variable * | convertPtrMaskIntrinsic (const ::llvm::CallInst &instruction, tacsvector_t &tacs, Context &context) |
| |
| static const Variable * | convertFAbsIntrinsic (const ::llvm::CallInst &instruction, tacsvector_t &tacs, Context &context) |
| |
| static const Variable * | convertAbsIntrinsic (const ::llvm::CallInst &instruction, tacsvector_t &tacs, Context &context) |
| |
| static const Variable * | convertBSwapIntrinsic (const ::llvm::CallInst &instruction, tacsvector_t &tacs, Context &context) |
| |
| static const Variable * | convertCtlzIntrinsic (const ::llvm::CallInst &instruction, tacsvector_t &tacs, Context &context) |
| |
| static const Variable * | convertCttzIntrinsic (const ::llvm::CallInst &instruction, tacsvector_t &tacs, Context &context) |
| |
| static const Variable * | convertCtpopIntrinsic (const ::llvm::CallInst &instruction, tacsvector_t &tacs, Context &context) |
| |
| static const Variable * | convertIsConstantIntrinsic (const ::llvm::CallInst &instruction, tacsvector_t &tacs, Context &context) |
| |
| static const Variable * | convertIsFPClassIntrinsic (const ::llvm::CallInst &instruction, tacsvector_t &tacs, Context &context) |
| |
| static const Variable * | convertSAddWithOverflowIntrinsic (const ::llvm::CallInst &instruction, tacsvector_t &tacs, Context &context) |
| |
| static const Variable * | convertUAddWithOverflowIntrinsic (const ::llvm::CallInst &instruction, tacsvector_t &tacs, Context &context) |
| |
| static const Variable * | convertSSubWithOverflowIntrinsic (const ::llvm::CallInst &instruction, tacsvector_t &tacs, Context &context) |
| |
| static const Variable * | convertSMulWithOverflowIntrinsic (const ::llvm::CallInst &instruction, tacsvector_t &tacs, Context &context) |
| |
| static const Variable * | convertUMulWithOverflowIntrinsic (const ::llvm::CallInst &instruction, tacsvector_t &tacs, Context &context) |
| |
| std::vector< const Variable * > | convertCallArguments (const ::llvm::CallInst &callInstruction, tacsvector_t &threeAddressCodes, Context &context) |
| |
| static const Variable * | createCall (const ::llvm::CallInst &callInstruction, tacsvector_t &threeAddressCodes, Context &context) |
| |
| static bool | shouldIgnoreIntrinsic (::llvm::Intrinsic::ID intrinsicId) |
| |
| static const Variable * | convertIntrinsicInstruction (const ::llvm::IntrinsicInst &intrinsicInstruction, tacsvector_t &threeAddressCodes, Context &context) |
| |
| static const Variable * | convertCallInstruction (const ::llvm::CallInst &callInstruction, tacsvector_t &threeAddressCodes, Context &context) |
| |
| static const Variable * | convert_select_instruction (::llvm::Instruction *i, tacsvector_t &tacs, Context &ctx) |
| |
| static std::unique_ptr< rvsdg::BinaryOperation > | ConvertIntegerBinaryOperation (const ::llvm::Instruction::BinaryOps binaryOperation, std::size_t numBits) |
| |
| static std::unique_ptr< rvsdg::BinaryOperation > | ConvertFloatingPointBinaryOperation (const ::llvm::Instruction::BinaryOps binaryOperation, fpsize floatingPointSize) |
| |
| static const Variable * | convert (const ::llvm::BinaryOperator *instruction, tacsvector_t &tacs, Context &ctx) |
| |
| static const Variable * | convert_alloca_instruction (::llvm::Instruction *instruction, tacsvector_t &tacs, Context &ctx) |
| |
| static const Variable * | convert_extractvalue (::llvm::Instruction *i, tacsvector_t &tacs, Context &ctx) |
| |
| static const Variable * | convertInsertValueInstruction (const ::llvm::InsertValueInst &instruction, tacsvector_t &tacs, Context &context) |
| |
| static const Variable * | convert_extractelement_instruction (::llvm::Instruction *i, tacsvector_t &tacs, Context &ctx) |
| |
| static const Variable * | convert (::llvm::ShuffleVectorInst *i, tacsvector_t &tacs, Context &ctx) |
| |
| static const Variable * | convert_insertelement_instruction (::llvm::Instruction *i, tacsvector_t &tacs, Context &ctx) |
| |
| static const Variable * | convertFreezeInstruction (::llvm::Instruction *i, tacsvector_t &tacs, Context &ctx) |
| |
| static const Variable * | convert (::llvm::UnaryOperator *unaryOperator, tacsvector_t &threeAddressCodeVector, Context &ctx) |
| |
| template<class OP > |
| static std::unique_ptr< rvsdg::SimpleOperation > | create_unop (std::shared_ptr< const rvsdg::Type > st, std::shared_ptr< const rvsdg::Type > dt) |
| |
| static const Variable * | convert_cast_instruction (::llvm::Instruction *i, tacsvector_t &tacs, Context &ctx) |
| |
| template<class INSTRUCTIONTYPE > |
| static const Variable * | convert (::llvm::Instruction *instruction, tacsvector_t &tacs, Context &ctx) |
| |
| static std::vector<::llvm::PHINode * > | convert_instructions (::llvm::Function &function, Context &ctx) |
| |
| static void | PatchPhiOperands (const std::vector<::llvm::PHINode * > &phis, Context &ctx) |
| |
| static BasicBlockMap | convert_basic_blocks (::llvm::Function &f, ControlFlowGraph &cfg) |
| |
| static std::unique_ptr< llvm::Argument > | convert_argument (const ::llvm::Argument &argument, Context &ctx) |
| |
| static void | EnsureSingleInEdgeToExitNode (ControlFlowGraph &cfg) |
| |
| static std::unique_ptr< ControlFlowGraph > | create_cfg (::llvm::Function &f, Context &ctx) |
| |
| static void | convert_function (::llvm::Function &function, Context &ctx) |
| |
| static const llvm::Linkage & | convert_linkage (const ::llvm::GlobalValue::LinkageTypes &linkage) |
| |
| static void | declare_globals (::llvm::Module &lm, Context &ctx) |
| |
| static std::unique_ptr< DataNodeInit > | create_initialization (::llvm::GlobalVariable &gv, Context &ctx) |
| |
| static void | convert_global_value (::llvm::GlobalVariable &gv, Context &ctx) |
| |
| static void | convert_globals (::llvm::Module &lm, Context &ctx) |
| |
| std::unique_ptr< InterProceduralGraphModule > | ConvertLlvmModule (::llvm::Module &llvmModule) |
| |
| static bool | is_sese_basic_block (const ControlFlowGraphNode *node) noexcept |
| |
| static bool | is_branch_split (const ControlFlowGraphNode *node) noexcept |
| |
| static bool | is_branch_join (const ControlFlowGraphNode *node) noexcept |
| |
| static bool | is_branch (const ControlFlowGraphNode *split) noexcept |
| |
| static bool | is_linear (const ControlFlowGraphNode *node) noexcept |
| |
| static ControlFlowGraphNode * | aggregate (ControlFlowGraphNode *, ControlFlowGraphNode *, AggregationMap &) |
| |
| static void | reduceLoop (const StronglyConnectedComponentStructure &sccStruct, AggregationMap &map) |
| |
| static ControlFlowGraphNode * | reduce_branch (ControlFlowGraphNode *split, ControlFlowGraphNode **entry, AggregationMap &map) |
| |
| static ControlFlowGraphNode * | reduce_linear (ControlFlowGraphNode *source, ControlFlowGraphNode **entry, ControlFlowGraphNode **exit, AggregationMap &map) |
| |
| static void | aggregate_loops (ControlFlowGraphNode *entry, ControlFlowGraphNode *exit, AggregationMap &map) |
| |
| static void | aggregate_acyclic_sese (ControlFlowGraphNode *node, ControlFlowGraphNode **entry, ControlFlowGraphNode **exit, AggregationMap &map) |
| |
| std::unique_ptr< AggregationNode > | aggregate (ControlFlowGraph &cfg) |
| | Aggregate a properly structured CFG to a aggregation tree.
|
| |
| size_t | ntacs (const AggregationNode &root) |
| |
| template<class T > |
| static bool | is (const AggregationNode *node) |
| |
| static void | AnnotateReadWrite (const AggregationNode &, AnnotationMap &) |
| |
| static void | AnnotateReadWrite (const EntryAggregationNode &entryAggregationNode, AnnotationMap &demandMap) |
| |
| static void | AnnotateReadWrite (const ExitAggregationNode &exitAggregationNode, AnnotationMap &demandMap) |
| |
| static void | AnnotateReadWrite (const BasicBlockAggregationNode &basicBlockAggregationNode, AnnotationMap &demandMap) |
| |
| static void | AnnotateReadWrite (const LinearAggregationNode &linearAggregationNode, AnnotationMap &demandMap) |
| |
| static void | AnnotateReadWrite (const BranchAggregationNode &branchAggregationNode, AnnotationMap &demandMap) |
| |
| static void | AnnotateReadWrite (const LoopAggregationNode &loopAggregationNode, AnnotationMap &demandMap) |
| |
| static void | AnnotateDemandSet (const AggregationNode &, VariableSet &, AnnotationMap &) |
| |
| static void | AnnotateDemandSet (const EntryAggregationNode &entryAggregationNode, VariableSet &workingSet, AnnotationMap &demandMap) |
| |
| static void | AnnotateDemandSet (const ExitAggregationNode &exitAggregationNode, VariableSet &workingSet, AnnotationMap &demandMap) |
| |
| static void | AnnotateDemandSet (const BasicBlockAggregationNode &basicBlockAggregationNode, VariableSet &workingSet, AnnotationMap &demandMap) |
| |
| static void | AnnotateDemandSet (const LinearAggregationNode &linearAggregationNode, VariableSet &workingSet, AnnotationMap &demandMap) |
| |
| static void | AnnotateDemandSet (const BranchAggregationNode &branchAggregationNode, VariableSet &workingSet, AnnotationMap &demandMap) |
| |
| static void | AnnotateDemandSet (const LoopAggregationNode &loopAggregationNode, VariableSet &workingSet, AnnotationMap &demandMap) |
| |
| template<class T > |
| static void | AnnotateDemandSet (const AggregationNode *aggregationNode, VariableSet &workingSet, AnnotationMap &demandMap) |
| |
| std::unique_ptr< AnnotationMap > | Annotate (const AggregationNode &aggregationTreeRoot) |
| |
| static const util::BijectiveMap<::llvm::CallingConv::ID, CallingConvention > & | getCallingConventionMap () |
| |
| jlm::llvm::CallingConvention | convertCallingConventionToJlm (::llvm::CallingConv::ID cc) |
| |
| ::llvm::CallingConv::ID | convertCallingConventionToLlvm (jlm::llvm::CallingConvention cc) |
| |
| static void | AddToWorklist (std::deque< rvsdg::Input * > &worklist, rvsdg::Output &output) |
| |
| CallSummary | ComputeCallSummary (const rvsdg::LambdaNode &lambdaNode) |
| |
| template<class T > |
| static bool | is (const ControlFlowGraphNode *node) noexcept |
| |
| static void | strongconnect (ControlFlowGraphNode *node, ControlFlowGraphNode *exit, std::unordered_map< ControlFlowGraphNode *, std::pair< size_t, size_t > > &map, std::vector< ControlFlowGraphNode * > &node_stack, size_t &index, std::vector< StronglyConnectedComponent > &sccs) |
| |
| std::vector< StronglyConnectedComponent > | find_sccs (const ControlFlowGraph &cfg) |
| |
| std::vector< StronglyConnectedComponent > | find_sccs (ControlFlowGraphNode *entry, ControlFlowGraphNode *exit) |
| |
| static std::unique_ptr< ControlFlowGraph > | copy_structural (const ControlFlowGraph &in) |
| |
| static bool | is_loop (const jlm::llvm::ControlFlowGraphNode *node) noexcept |
| |
| static bool | is_linear_reduction (const jlm::llvm::ControlFlowGraphNode *node) noexcept |
| |
| static jlm::llvm::ControlFlowGraphNode * | find_join (const jlm::llvm::ControlFlowGraphNode *split) noexcept |
| |
| static bool | is_branch (const jlm::llvm::ControlFlowGraphNode *split) noexcept |
| |
| static bool | is_proper_branch (const jlm::llvm::ControlFlowGraphNode *split) noexcept |
| |
| static bool | is_T1 (const jlm::llvm::ControlFlowGraphNode *node) noexcept |
| |
| static bool | is_T2 (const jlm::llvm::ControlFlowGraphNode *node) noexcept |
| |
| static void | reduce_loop (jlm::llvm::ControlFlowGraphNode *node, std::unordered_set< jlm::llvm::ControlFlowGraphNode * > &to_visit) |
| |
| static void | reduce_linear (jlm::llvm::ControlFlowGraphNode *entry, std::unordered_set< jlm::llvm::ControlFlowGraphNode * > &to_visit) |
| |
| static void | reduce_branch (jlm::llvm::ControlFlowGraphNode *split, std::unordered_set< jlm::llvm::ControlFlowGraphNode * > &to_visit) |
| |
| static void | reduce_proper_branch (jlm::llvm::ControlFlowGraphNode *split, std::unordered_set< jlm::llvm::ControlFlowGraphNode * > &to_visit) |
| |
| static void | reduce_T1 (jlm::llvm::ControlFlowGraphNode *node) |
| |
| static void | reduce_T2 (jlm::llvm::ControlFlowGraphNode *node, std::unordered_set< jlm::llvm::ControlFlowGraphNode * > &to_visit) |
| |
| static bool | reduce_proper_structured (jlm::llvm::ControlFlowGraphNode *node, std::unordered_set< jlm::llvm::ControlFlowGraphNode * > &to_visit) |
| |
| static bool | reduce_structured (jlm::llvm::ControlFlowGraphNode *node, std::unordered_set< jlm::llvm::ControlFlowGraphNode * > &to_visit) |
| |
| static bool | reduce_reducible (jlm::llvm::ControlFlowGraphNode *node, std::unordered_set< jlm::llvm::ControlFlowGraphNode * > &to_visit) |
| |
| static bool | has_valid_phis (const BasicBlock &bb) |
| |
| static bool | is_valid_basic_block (const BasicBlock &bb) |
| |
| static bool | has_valid_entry (const ControlFlowGraph &cfg) |
| |
| static bool | has_valid_exit (const ControlFlowGraph &cfg) |
| |
| bool | is_valid (const ControlFlowGraph &cfg) |
| |
| bool | is_closed (const ControlFlowGraph &cfg) |
| |
| bool | is_linear (const ControlFlowGraph &cfg) |
| |
| static bool | reduce (const ControlFlowGraph &cfg, const std::function< bool(llvm::ControlFlowGraphNode *, std::unordered_set< llvm::ControlFlowGraphNode * > &)> &f) |
| |
| bool | is_structured (const ControlFlowGraph &cfg) |
| |
| bool | is_proper_structured (const ControlFlowGraph &cfg) |
| |
| bool | is_reducible (const ControlFlowGraph &cfg) |
| |
| void | straighten (ControlFlowGraph &cfg) |
| |
| void | purge (ControlFlowGraph &cfg) |
| | Remove all basic blocks without instructions.
|
| |
| static std::unordered_set< const ControlFlowGraphNode * > | compute_livenodes (const ControlFlowGraph &cfg) |
| |
| static std::unordered_set< ControlFlowGraphNode * > | compute_deadnodes (ControlFlowGraph &cfg) |
| |
| static std::unordered_set< BasicBlock * > | compute_live_sinks (const std::unordered_set< ControlFlowGraphNode * > &deadnodes) |
| |
| static void | update_phi_operands (llvm::ThreeAddressCode &phitac, const std::unordered_set< ControlFlowGraphNode * > &deadnodes) |
| |
| static void | update_phi_operands (const std::unordered_set< BasicBlock * > &sinks, const std::unordered_set< ControlFlowGraphNode * > &deadnodes) |
| |
| static void | remove_deadnodes (const std::unordered_set< ControlFlowGraphNode * > &deadnodes) |
| |
| void | prune (ControlFlowGraph &cfg) |
| |
| static bool | is_acyclic (const ControlFlowGraph &cfg) |
| |
| std::vector< ControlFlowGraphNode * > | postorder (const ControlFlowGraph &cfg) |
| |
| std::vector< ControlFlowGraphNode * > | reverse_postorder (const ControlFlowGraph &cfg) |
| |
| std::vector< ControlFlowGraphNode * > | breadth_first (const ControlFlowGraph &cfg) |
| |
| size_t | ntacs (const ControlFlowGraph &cfg) |
| |
| static std::unique_ptr< DominatorTreeNode > | build_domtree (std::unordered_map< ControlFlowGraphNode *, ControlFlowGraphNode * > &doms, ControlFlowGraphNode *root) |
| |
| static ControlFlowGraphNode * | intersect (ControlFlowGraphNode *b1, ControlFlowGraphNode *b2, const std::unordered_map< ControlFlowGraphNode *, size_t > &indices, const std::unordered_map< ControlFlowGraphNode *, ControlFlowGraphNode * > &doms) |
| |
| std::unique_ptr< DominatorTreeNode > | domtree (ControlFlowGraph &cfg) |
| |
| static std::unique_ptr< GlobalValue > | create_gblvalue (DataNode *node) |
| |
| static size_t | ntacs (const InterProceduralGraphModule &im) |
| |
| rvsdg::Output & | GetMemoryStateRegionArgument (const rvsdg::LambdaNode &lambdaNode) noexcept |
| |
| rvsdg::Input & | GetMemoryStateRegionResult (const rvsdg::LambdaNode &lambdaNode) noexcept |
| |
| rvsdg::SimpleNode * | tryGetMemoryStateExitMerge (const rvsdg::LambdaNode &lambdaNode) noexcept |
| |
| rvsdg::SimpleNode * | tryGetMemoryStateEntrySplit (const rvsdg::LambdaNode &lambdaNode) noexcept |
| |
| std::string_view | linkageToString (const Linkage linkage) |
| |
| Linkage | linkageFromString (const std::string_view stringValue) |
| |
| bool | isDiscardableIfUnused (const Linkage linkage) |
| |
| bool | isPrivateOrInternal (const Linkage linkage) |
| |
| std::optional< std::vector< rvsdg::Output * > > | foldMatchOperationWithConstant (const rvsdg::MatchOperation &matchOperation, const std::vector< rvsdg::Output * > &operands) |
| |
| | TEST (ControlOperationsTests, foldConstants) |
| |
| | TEST (ConversionOperationsTests, SExtConstantFolding) |
| |
| | TEST (ConversionOperationsTests, ZExtConstantFolding) |
| |
| | TEST (ConversionOperationsTests, TruncConstantFolding) |
| |
| | TEST (ConversionOperationsTests, FunctionToPointerInversion) |
| |
| | TEST (ConversionOperationsTests, PointerToFunctionInversion) |
| |
| bool | reduceStaticallyKnownPredicate (rvsdg::GammaNode &gammaNode) |
| |
| | TEST (GammaTests, test_predicate_reduction) |
| |
| | TEST (GetElemenPtrOperationTests, typeChecks) |
| |
| | TEST (GetElementPtrOperationTests, TestOperationEquality) |
| |
| | TEST (GetElementPtrTests, TryGetAsConstantTest) |
| |
| | TEST (GetElementPtrTests, TestGetElementPtrOperationConstant_OffestInBytes) |
| |
| | TEST (GetElementPtrTests, normalizeIdempotentReduction) |
| |
| template<typename TBinOp > |
| static IntegerValueRepresentation | foldBinaryOperation (const IntegerValueRepresentation &r1, const IntegerValueRepresentation &r2) |
| |
| template<typename TBinOp > |
| static std::optional< std::vector< rvsdg::Output * > > | foldBinaryOperationConstants (const std::vector< rvsdg::Output * > &operands) |
| |
| template<typename Operation > |
| static void | TestFoldConstants (const FoldConstantsTestInput &input) |
| |
| | TEST (IntegerEqOperationTest, foldConstants) |
| |
| | TEST (IntegerNeOperationTest, foldConstants) |
| |
| | TEST (IntegerSgeOperationTest, foldConstants) |
| |
| | TEST (IntegerSgtOperationTest, foldConstants) |
| |
| | TEST (IntegerSleOperationTest, foldConstants) |
| |
| | TEST (IntegerSltOperationTest, foldConstants) |
| |
| | TEST (IntegerUgeOperationTest, foldConstants) |
| |
| | TEST (IntegerUgtOperationTest, foldConstants) |
| |
| | TEST (IntegerUleOperationTest, foldConstants) |
| |
| | TEST (IntegerUltOperationTest, foldConstants) |
| |
| | TEST (IntegerOrOperationTest, foldConstants) |
| |
| | TEST (IntegerAndOperationTest, foldConstants) |
| |
| | TEST (IntegerXorOperationTest, foldConstants) |
| |
| | TEST (IntegerAddOperationTest, foldConstants) |
| |
| | TEST (IntegerSubOperationTest, foldConstants) |
| |
| | TEST (IntegerMulOperationTest, foldConstants) |
| |
| | TEST (IntegerSDivOperationTest, foldConstants) |
| |
| | TEST (IntegerUDivOperationTest, foldConstants) |
| |
| | TEST (IntegerSRemOperationTest, foldConstants) |
| |
| | TEST (IntegerURemOperationTest, foldConstants) |
| |
| | TEST (IntegerAShrOperationTest, foldConstants) |
| |
| | TEST (IntegerShlOperationTest, foldConstants) |
| |
| | TEST (IntegerLShrOperationTest, foldConstants) |
| |
| | TEST (IntegerSubOperationTests, normalizeAdditiveInverse) |
| |
| static bool | is_load_alloca_reducible (const std::vector< rvsdg::Output * > &operands) |
| |
| static bool | is_reducible_state (const rvsdg::Output *state, const rvsdg::Node *loadalloca) |
| |
| static bool | is_load_store_state_reducible (const LoadNonVolatileOperation &op, const std::vector< rvsdg::Output * > &operands) |
| |
| static bool | is_multiple_origin_reducible (const std::vector< rvsdg::Output * > &operands) |
| |
| static std::vector< rvsdg::Output * > | perform_load_alloca_reduction (const LoadNonVolatileOperation &op, const std::vector< rvsdg::Output * > &operands) |
| |
| static std::vector< rvsdg::Output * > | perform_load_store_state_reduction (const LoadNonVolatileOperation &op, const std::vector< rvsdg::Output * > &operands) |
| |
| static std::vector< rvsdg::Output * > | perform_multiple_origin_reduction (const LoadNonVolatileOperation &op, const std::vector< rvsdg::Output * > &operands) |
| |
| static std::optional< size_t > | getAllocationSizeInBytes (const rvsdg::Output &output) |
| |
| template<class TMemoryStateMergeOrJoinOperation > |
| std::vector< rvsdg::Output * > | CollectNestedMemoryStateMergeOrJoinOperands (const std::vector< rvsdg::Output * > &operands) |
| |
| static void | CheckMemoryNodeIds (const std::vector< MemoryNodeId > &memoryNodeIds) |
| |
| static std::string | ToString (const std::vector< MemoryNodeId > &memoryNodeIds) |
| |
| bool | hasMemoryState (const rvsdg::Node &node) |
| |
| static const util::BijectiveMap<::llvm::CmpInst::Predicate, ICmpPredicate > & | getICmpPredicateMap () |
| |
| ICmpPredicate | convertICmpPredicateToJlm (::llvm::CmpInst::Predicate predicate) |
| |
| ::llvm::CmpInst::Predicate | convertICmpPredicateToLlvm (ICmpPredicate predicate) |
| |
| std::string_view | iCmpPredicateToString (ICmpPredicate predicate) |
| |
| template<typename TOperation > |
| static bool | isOutputOf (rvsdg::Output &operand) |
| |
| static bool | isAllocationSide (rvsdg::Output &output) |
| |
| | TEST (PtrCmpOperationTests, testNormalizeNullPointerComparison) |
| |
| static bool | is_store_mux_reducible (const std::vector< jlm::rvsdg::Output * > &operands) |
| |
| static bool | is_store_alloca_reducible (const std::vector< jlm::rvsdg::Output * > &operands) |
| |
| static bool | is_multiple_origin_reducible (const std::vector< jlm::rvsdg::Output * > &operands) |
| |
| static std::vector< jlm::rvsdg::Output * > | perform_store_mux_reduction (const StoreNonVolatileOperation &op, const std::vector< jlm::rvsdg::Output * > &operands) |
| |
| static std::vector< jlm::rvsdg::Output * > | perform_store_alloca_reduction (const StoreNonVolatileOperation &op, const std::vector< jlm::rvsdg::Output * > &operands) |
| |
| static std::vector< jlm::rvsdg::Output * > | perform_multiple_origin_reduction (const StoreNonVolatileOperation &operation, const std::vector< jlm::rvsdg::Output * > &operands) |
| |
| static std::optional< size_t > | getAllocationSizeInBytes (const rvsdg::Output &output) |
| |
| static std::string | emit_tacs (const tacsvector_t &tacs) |
| |
| static std::string | emit_function_node (const InterProceduralGraphNode &clg_node) |
| |
| static std::string | emit_data_node (const InterProceduralGraphNode &clg_node) |
| |
| std::string | to_str (const InterProceduralGraph &clg) |
| |
| std::string | to_str (const AggregationNode &n, const AnnotationMap &dm) |
| |
| void | print (const AggregationNode &n, const AnnotationMap &dm, FILE *out) |
| |
| static void | print_ascii (const InterProceduralGraph &ipg, FILE *out) |
| |
| static std::string | to_str (const InterProceduralGraphModule &im) |
| |
| static void | print (const InterProceduralGraphModule &im, FILE *out) |
| |
| static std::string | to_str (const AggregationNode &n) |
| |
| static void | print (const AggregationNode &n, FILE *out) |
| |
| void | destruct_ssa (ControlFlowGraph &cfg) |
| |
| static void | check_operands (const rvsdg::SimpleOperation &operation, const std::vector< const Variable * > &operands) |
| |
| static void | check_results (const rvsdg::SimpleOperation &operation, const std::vector< std::unique_ptr< ThreeAddressCodeVariable > > &results) |
| |
| template<class T > |
| static bool | is (const llvm::ThreeAddressCode *tac) |
| |
| rvsdg::Output & | traceOutput (rvsdg::Output &output, const rvsdg::Region *withinRegion) |
| |
| std::optional< int64_t > | tryGetConstantSignedInteger (const rvsdg::Output &output) |
| |
| TracedPointerOrigin | TracePointerOriginPrecise (const rvsdg::Output &p) |
| |
| static bool | traceAllPointerOriginsInternal (const rvsdg::Output *basePointer, std::optional< int64_t > offsetInBytes, TraceCollection &traceCollection, const size_t maxTraceCollectionSize) |
| |
| bool | TraceAllPointerOrigins (TracedPointerOrigin p, TraceCollection &traceCollection, const size_t maxTraceCollectionSize) |
| |
| const rvsdg::Output & | traceOutput (const rvsdg::Output &output, const rvsdg::Region *withinRegion=nullptr) |
| |
| size_t | GetTypeStoreSize (const rvsdg::Type &type) |
| |
| size_t | GetTypeAllocSize (const rvsdg::Type &type) |
| |
| size_t | GetTypeAlignment (const rvsdg::Type &type) |
| |
| template<class ELEMENTYPE > |
| bool | IsOrContains (const jlm::rvsdg::Type &type) |
| |
| bool | IsAggregateType (const jlm::rvsdg::Type &type) |
| |
| template<class T > |
| bool | isVectorOf (const rvsdg::Type &type) |
| |
| template<class T > |
| bool | isVectorOfSize (const rvsdg::Type &type, const size_t size) |
| |
| template<class T > |
| static bool | is (const llvm::Variable *variable) noexcept |
| |
| static VectorNodeHashMap | createElementAllocaNodes (rvsdg::SimpleNode &allocaNode) |
| |
| static bool | areOutputsCongruent (const rvsdg::Output &o1, const rvsdg::Output &o2, CommonNodeElimination::Context &context) |
| |
| static bool | checkNodesCongruent (const rvsdg::Node &node1, const rvsdg::Node &node2, CommonNodeElimination::Context &context) |
| |
| void | markNodeAsLeader (const rvsdg::Node &leader, CommonNodeElimination::Context &context) |
| |
| void | markNodesAsCongruent (const rvsdg::Node &leader, const rvsdg::Node &follower, CommonNodeElimination::Context &context) |
| |
| const rvsdg::SimpleNode * | tryGetLeaderNode (const rvsdg::SimpleNode &node, CommonNodeElimination::Context &context) |
| |
| static void | markSimpleTopNode (const rvsdg::SimpleNode &node, TopNodeLeaderList &leaders, CommonNodeElimination::Context &context) |
| |
| static void | markSimpleNode (const rvsdg::SimpleNode &node, CommonNodeElimination::Context &context) |
| |
| static void | markRegion (const rvsdg::Region &, CommonNodeElimination::Context &context) |
| |
| static void | markGraphImports (const rvsdg::Region ®ion, CommonNodeElimination::Context &context) |
| |
| static bool | partitionArguments (const rvsdg::Region ®ion, const std::vector< CommonNodeElimination::Context::CongruenceSetIndex > &partitions, CommonNodeElimination::Context &context) |
| |
| static bool | markSubregionsFromInputs (const rvsdg::StructuralNode &node, CommonNodeElimination::Context &context) |
| |
| static std::optional< CommonNodeElimination::Context::CongruenceSetIndex > | tryGetGammaExitVarCongruenceSet (rvsdg::GammaNode::ExitVar &exitVar, CommonNodeElimination::Context &context) |
| |
| static size_t | getGammaExitVariableHash (const rvsdg::GammaNode::ExitVar &exitVar, CommonNodeElimination::Context &context) |
| |
| static bool | areGammaExitVariablesCongruent (const rvsdg::GammaNode::ExitVar &first, const rvsdg::GammaNode::ExitVar &second, CommonNodeElimination::Context &context) |
| |
| static void | insertGammaExitVarInHashmap (rvsdg::GammaNode::ExitVar &exitVar, CommonNodeElimination::Context::CongruenceSetIndex congruenceSet, std::unordered_map< size_t, CommonNodeElimination::Context::CongruenceSetIndex > &leaderHashes, CommonNodeElimination::Context &context) |
| |
| static void | lookupOrInsertGammaExitVarInHashmap (const rvsdg::GammaNode::ExitVar &exitVar, const rvsdg::GammaNode &gamma, std::unordered_map< size_t, CommonNodeElimination::Context::CongruenceSetIndex > &leaderHashes, CommonNodeElimination::Context &context) |
| |
| static void | markGamma (const rvsdg::GammaNode &gamma, CommonNodeElimination::Context &context) |
| |
| static void | markTheta (const rvsdg::ThetaNode &theta, CommonNodeElimination::Context &context) |
| |
| static void | markStructuralNode (const rvsdg::StructuralNode &node, CommonNodeElimination::Context &context) |
| |
| static void | divertOutput (rvsdg::Output &output, CommonNodeElimination::Context &context) |
| |
| static void | divertInRegion (rvsdg::Region &, CommonNodeElimination::Context &) |
| |
| static void | divertInStructuralNode (rvsdg::StructuralNode &node, CommonNodeElimination::Context &context) |
| |
| static bool | isLoadNonVolatileMemoryStateOutput (const rvsdg::Output &output) |
| |
| static std::vector< rvsdg::Output * > | routeContextVariablesToRegion (rvsdg::Region ®ion, const rvsdg::LambdaNode &callee) |
| |
| static void | tryRerouteMemoryStateMergeAndSplit (rvsdg::SimpleNode &callEntryMerge, rvsdg::SimpleNode &callExitSplit) |
| |
| static void | hoistInlinedAllocas (const rvsdg::LambdaNode &callee, rvsdg::LambdaNode &caller, rvsdg::SubstitutionMap &smap) |
| |
| static void | runIOBarrierElimination (LlvmRvsdgModule &rvsdgModule) |
| |
| | TEST (IOBarrierEliminationTests, testLambdaArgument) |
| |
| | TEST (IOBarrierEliminationTests, testSizeIsRespected) |
| |
| | TEST (IOBarrierEliminationTests, testSuccess) |
| |
| | TEST (IOBarrierEliminationTests, testInvidiualIOBarrierUserRerouting) |
| |
| static std::vector< rvsdg::NodeNormalization< rvsdg::MatchOperation > > | matchOperationNormalizations ({ foldMatchOperationWithConstant }) |
| |
| static std::vector< rvsdg::NodeNormalization< SExtOperation > > | sextOperationNormalizations ({ SExtOperation::foldConstant }) |
| |
| static std::vector< rvsdg::NodeNormalization< ZExtOperation > > | zextOperationNormalizations ({ ZExtOperation::foldConstant }) |
| |
| static std::vector< rvsdg::NodeNormalization< TruncOperation > > | truncOperationNormalizations ({ TruncOperation::foldConstant }) |
| |
| static std::vector< rvsdg::NodeNormalization< IntegerEqOperation > > | integerEqNormalizations ({ IntegerEqOperation::foldConstants }) |
| |
| static std::vector< rvsdg::NodeNormalization< IntegerNeOperation > > | integerNeNormalizations ({ IntegerNeOperation::foldConstants }) |
| |
| static std::vector< rvsdg::NodeNormalization< IntegerSgeOperation > > | integerSgeNormalizations ({ IntegerSgeOperation::foldConstants }) |
| |
| static std::vector< rvsdg::NodeNormalization< IntegerSgtOperation > > | integerSgtNormalizations ({ IntegerSgtOperation::foldConstants }) |
| |
| static std::vector< rvsdg::NodeNormalization< IntegerSleOperation > > | integerSleNormalizations ({ IntegerSleOperation::foldConstants }) |
| |
| static std::vector< rvsdg::NodeNormalization< IntegerSltOperation > > | integerSltNormalizations ({ IntegerSltOperation::foldConstants }) |
| |
| static std::vector< rvsdg::NodeNormalization< IntegerUgeOperation > > | integerUgeNormalizations ({ IntegerUgeOperation::foldConstants }) |
| |
| static std::vector< rvsdg::NodeNormalization< IntegerUgtOperation > > | integerUgtNormalizations ({ IntegerUgtOperation::foldConstants }) |
| |
| static std::vector< rvsdg::NodeNormalization< IntegerUleOperation > > | integerUleNormalizations ({ IntegerUleOperation::foldConstants }) |
| |
| static std::vector< rvsdg::NodeNormalization< IntegerUltOperation > > | integerUltNormalizations ({ IntegerUltOperation::foldConstants }) |
| |
| static std::vector< rvsdg::NodeNormalization< IntegerAddOperation > > | integerAddNormalizations ({ IntegerAddOperation::foldConstants }) |
| |
| static std::vector< rvsdg::NodeNormalization< IntegerSubOperation > > | integerSubNormalizations ({ IntegerSubOperation::normalizeAdditiveInverse, IntegerSubOperation::foldConstants }) |
| |
| static std::vector< rvsdg::NodeNormalization< IntegerMulOperation > > | integerMulNormalizations ({ IntegerMulOperation::foldConstants }) |
| |
| static std::vector< rvsdg::NodeNormalization< IntegerSDivOperation > > | integerSDivNormalizations ({ IntegerSDivOperation::foldConstants }) |
| |
| static std::vector< rvsdg::NodeNormalization< IntegerUDivOperation > > | integerUDivNormalizations ({ IntegerUDivOperation::foldConstants }) |
| |
| static std::vector< rvsdg::NodeNormalization< IntegerSRemOperation > > | integerSRemNormalizations ({ IntegerSRemOperation::foldConstants }) |
| |
| static std::vector< rvsdg::NodeNormalization< IntegerURemOperation > > | integerURemNormalizations ({ IntegerURemOperation::foldConstants }) |
| |
| static std::vector< rvsdg::NodeNormalization< IntegerAShrOperation > > | integerAShrNormalizations ({ IntegerAShrOperation::foldConstants }) |
| |
| static std::vector< rvsdg::NodeNormalization< IntegerShlOperation > > | integerShlNormalizations ({ IntegerShlOperation::foldConstants }) |
| |
| static std::vector< rvsdg::NodeNormalization< IntegerLShrOperation > > | integerLShrNormalizations ({ IntegerLShrOperation::foldConstants }) |
| |
| static std::vector< rvsdg::NodeNormalization< IntegerAndOperation > > | integerAndNormalizations ({ IntegerAndOperation::foldConstants }) |
| |
| static std::vector< rvsdg::NodeNormalization< IntegerOrOperation > > | integerOrNormalizations ({ IntegerOrOperation::foldConstants }) |
| |
| static std::vector< rvsdg::NodeNormalization< IntegerXorOperation > > | integerXorNormalizations ({ IntegerXorOperation::foldConstants }) |
| |
| static std::vector< rvsdg::NodeNormalization< LoadNonVolatileOperation > > | loadNonVolatileNormalizations ({ LoadNonVolatileOperation::NormalizeLoadStore, LoadNonVolatileOperation::NormalizeLoadAlloca, LoadNonVolatileOperation::NormalizeDuplicateStates, LoadNonVolatileOperation::NormalizeLoadStoreState, LoadNonVolatileOperation::normalizeIOBarrierAddress }) |
| |
| static std::vector< rvsdg::NodeNormalization< StoreNonVolatileOperation > > | storeNonVolatileNormalizations ({ StoreNonVolatileOperation::NormalizeStoreMux, StoreNonVolatileOperation::normalizeStoreStore, StoreNonVolatileOperation::NormalizeStoreAlloca, StoreNonVolatileOperation::NormalizeDuplicateStates, StoreNonVolatileOperation::normalizeIOBarrierAddress, StoreNonVolatileOperation::normalizeStoreAllocaSingleUser }) |
| |
| static std::vector< rvsdg::NodeNormalization< MemoryStateMergeOperation > > | memoryStateMergeNormalizations ({ MemoryStateMergeOperation::NormalizeSingleOperand, MemoryStateMergeOperation::NormalizeDuplicateOperands, MemoryStateMergeOperation::NormalizeNestedMerges, MemoryStateMergeOperation::NormalizeMergeSplit }) |
| |
| static std::vector< rvsdg::NodeNormalization< MemoryStateJoinOperation > > | memoryStateJoinNormalizations ({ MemoryStateJoinOperation::NormalizeSingleOperand, MemoryStateJoinOperation::NormalizeDuplicateOperands }) |
| |
| static std::vector< rvsdg::NodeNormalization< MemoryStateSplitOperation > > | memoryStateSplitNormalizations ({ MemoryStateSplitOperation::NormalizeSingleResult, MemoryStateSplitOperation::NormalizeNestedSplits, MemoryStateSplitOperation::NormalizeSplitMerge }) |
| |
| static std::vector< rvsdg::NodeNormalization< LambdaExitMemoryStateMergeOperation > > | lambdaExitMemoryStateMergeNormalizations ({ LambdaExitMemoryStateMergeOperation::NormalizeLoadFromAlloca, LambdaExitMemoryStateMergeOperation::NormalizeStoreToAlloca, LambdaExitMemoryStateMergeOperation::NormalizeAlloca }) |
| |
| static std::vector< rvsdg::NodeNormalization< PtrCmpOperation > > | ptrCmpNormalizations ({ PtrCmpOperation::normalizeNullPointerComparison }) |
| |
| static std::vector< rvsdg::NodeNormalization< GetElementPtrOperation > > | getElementPtrNormalizations ({ GetElementPtrOperation::normalizeIdempotent }) |
| |
| static std::vector< rvsdg::NodeNormalization< rvsdg::BinaryOperation > > | binaryOperationNormalizations ({ rvsdg::NormalizeBinaryOperation }) |
| |
| template<typename TOperation > |
| static rvsdg::NodeNormalization< TOperation > | createNormalizer (const std::vector< rvsdg::NodeNormalization< TOperation > > &nodeNormalizations) |
| |
| template<class TOperation > |
| static bool | reduceSimpleNode (rvsdg::SimpleNode &simpleNode, const std::vector< rvsdg::NodeNormalization< TOperation > > &normalizations, size_t &counter) |
| |
| | TEST (NodeReductionTests, MultipleReductionsPerRegion) |
| |
| static std::optional< std::vector< uint64_t > > | extractConstantAlternatives (const rvsdg::Output &gammaOutput) |
| |
| static std::optional< std::unique_ptr< ThetaGammaPredicateCorrelation > > | computeControlConstantCorrelation (rvsdg::ThetaNode &thetaNode) |
| |
| static std::optional< std::unique_ptr< ThetaGammaPredicateCorrelation > > | computeMatchConstantCorrelation (rvsdg::ThetaNode &thetaNode) |
| |
| static std::optional< std::unique_ptr< ThetaGammaPredicateCorrelation > > | computeMatchCorrelation (rvsdg::ThetaNode &thetaNode) |
| |
| std::optional< std::unique_ptr< ThetaGammaPredicateCorrelation > > | computeThetaGammaPredicateCorrelation (rvsdg::ThetaNode &thetaNode) |
| |
| static std::optional< std::unique_ptr< GammaGammaPredicateCorrelation > > | computeMatchCorrelation (rvsdg::GammaNode &gammaNode1) |
| |
| std::optional< std::unique_ptr< GammaGammaPredicateCorrelation > > | computeGammaGammaPredicateCorrelation (rvsdg::GammaNode &gammaNode) |
| |
| std::optional< GammaSubregionRoles > | determineGammaSubregionRoles (const ThetaGammaPredicateCorrelation &correlation) |
| |
| static bool | empty (const rvsdg::GammaNode *gamma) |
| |
| static bool | isSingleSuccessor (const rvsdg::Node &node, const rvsdg::Node &singleSuccessor) |
| |
| static void | pullin_node (rvsdg::GammaNode *gamma, rvsdg::Node *node) |
| |
| static void | cleanup (rvsdg::GammaNode *gamma, rvsdg::Node *node) |
| |
| void | pullin_top (rvsdg::GammaNode *gamma) |
| |
| static size_t | is_used_in_nsubregions (const rvsdg::GammaNode *gamma, const rvsdg::Node *node) |
| |
| void | pull (rvsdg::GammaNode *gamma) |
| |
| void | pull (rvsdg::Region *region) |
| |
| static void | pull (rvsdg::RvsdgModule &module, util::StatisticsCollector &statisticsCollector) |
| |
| static RegionSlice | computeRegionSlice (rvsdg::Output &output) |
| |
| static void | copyRegionSlice (rvsdg::Region &targetRegion, const RegionSlice ®ionSlice, rvsdg::SubstitutionMap &substitutionMap) |
| |
| static rvsdg::Output & | copyDeltaRegionSlice (rvsdg::Output &output, rvsdg::Region &targetRegion) |
| |
| static rvsdg::Output & | copyDeltaElement (const uint64_t elementOffsetInBytes, rvsdg::Output &output, rvsdg::Region &targetRegion, const std::shared_ptr< const rvsdg::Type > &loadedType) |
| |
| static std::unique_ptr< aa::AliasAnalysis > | createAliasAnalysis (rvsdg::RvsdgModule &module, util::StatisticsCollector &statisticsCollector) |
| |
| static bool | is_eqcmp (const rvsdg::Operation &op) |
| |
| static bool | is_theta_invariant (const jlm::rvsdg::Output *output) |
| |
| static rvsdg::Output * | push_from_theta (jlm::rvsdg::Output *output) |
| |
| static bool | is_idv (jlm::rvsdg::Input *input) |
| |
| static void | unroll_body (const rvsdg::ThetaNode *theta, rvsdg::Region *target, rvsdg::SubstitutionMap &smap, size_t factor) |
| |
| static void | copy_body_and_unroll (const rvsdg::ThetaNode *theta, size_t factor) |
| |
| static void | unroll_theta (const LoopUnrollInfo &ui, rvsdg::SubstitutionMap &smap, size_t factor) |
| |
| static void | add_remainder (const LoopUnrollInfo &ui, rvsdg::SubstitutionMap &smap, size_t factor) |
| |
| static void | unroll_known_theta (const LoopUnrollInfo &ui, size_t factor) |
| |
| static jlm::rvsdg::Output * | create_unrolled_gamma_predicate (const LoopUnrollInfo &ui, size_t factor) |
| |
| static jlm::rvsdg::Output * | create_unrolled_theta_predicate (rvsdg::Region *, const rvsdg::SubstitutionMap &smap, const LoopUnrollInfo &ui, size_t factor) |
| |
| static jlm::rvsdg::Output * | create_residual_gamma_predicate (const rvsdg::SubstitutionMap &smap, const LoopUnrollInfo &ui) |
| |
| static void | unroll_unknown_theta (const LoopUnrollInfo &ui, size_t factor) |
| |
| void | unroll (rvsdg::ThetaNode *otheta, size_t factor) |
| |
| static bool | unroll (rvsdg::Region *region, size_t factor) |
| |