|
| bool | isForbiddenChar (char c) |
| |
| void | check_may_not_depend_on (mlir::Value value, ::llvm::SmallPtrSet< mlir::Value, 16 > &forbiddenDependencies, ::llvm::SmallPtrSet< mlir::Value, 16 > &visited) |
| |
| void | check_oValids (::llvm::SmallVector< mlir::Value > &oReadys, ::llvm::SmallVector< mlir::Value > &oValids) |
| |
| std::string | ConvertToCType (const rvsdg::Type *type) |
| |
| std::optional< std::string > | GetReturnTypeAsC (const rvsdg::LambdaNode &kernel) |
| |
| std::tuple< size_t, std::string, std::string > | GetParameterListAsC (const rvsdg::LambdaNode &kernel) |
| |
| static rvsdg::Input * | FindUserNode (rvsdg::Output *out) |
| |
| static void | PlaceBuffer (rvsdg::Output *out, size_t capacity, bool passThrough) |
| |
| static void | OptimizeAddrQ (rvsdg::SimpleNode *node) |
| |
| static void | OptimizeBuffer (rvsdg::SimpleNode *node) |
| |
| static void | OptimizeLoop (LoopNode *loopNode) |
| |
| static void | AddBuffers (rvsdg::Region *region) |
| |
| static constexpr uint32_t | round_up_pow2 (uint32_t x) |
| |
| static void | MaximizeBuffers (rvsdg::Region *region) |
| |
| static std::vector< size_t > | NodeCycles (rvsdg::SimpleNode *node, std::vector< size_t > &input_cycles) |
| |
| static std::vector< size_t > | NodeCapacity (rvsdg::SimpleNode *node, std::vector< size_t > &input_capacities) |
| |
| static void | CreateLoopFrontier (const LoopNode *loop, std::unordered_map< rvsdg::Output *, size_t > &output_cycles, std::unordered_set< rvsdg::Input * > &frontier, std::unordered_set< BackEdgeResult * > &stream_backedges, std::unordered_set< rvsdg::SimpleNode * > &top_muxes) |
| |
| static void | CalculateLoopCycleDepth (LoopNode *loop, std::unordered_map< rvsdg::Output *, size_t > &output_cycles, bool analyze_inner_loop=false) |
| |
| static void | PushCycleFrontier (std::unordered_map< rvsdg::Output *, size_t > &output_cycles, std::unordered_set< rvsdg::Input * > &frontier, std::unordered_set< BackEdgeResult * > &stream_backedges, std::unordered_set< rvsdg::SimpleNode * > &top_muxes) |
| |
| void | setMemoryLatency (size_t memoryLatency) |
| |
| static size_t | PlaceBufferLoop (rvsdg::Output *out, size_t min_capacity, bool passThrough) |
| |
| static void | AdjustLoopBuffers (LoopNode *loop, std::unordered_map< rvsdg::Output *, size_t > &output_cycles, std::unordered_map< rvsdg::Output *, size_t > &buffer_capacity, bool analyze_inner_loop=false) |
| |
| static void | CalculateLoopDepths (rvsdg::Region *region) |
| |
| void | add_prints (rvsdg::Region *region) |
| |
| void | add_prints (llvm::LlvmRvsdgModule &rm) |
| |
| void | convert_prints (llvm::LlvmRvsdgModule &rm) |
| |
| void | convert_prints (rvsdg::Region *region, jlm::rvsdg::Output *printf, const std::shared_ptr< const rvsdg::FunctionType > &functionType) |
| |
| static jlm::rvsdg::Output * | gep_to_index (jlm::rvsdg::Output *o) |
| |
| static void | alloca_conv (rvsdg::Region *region) |
| |
| static void | CheckAddrQueue (rvsdg::Node *node) |
| |
| static void | check_rhls (rvsdg::Region *sr) |
| |
| static void | check_rhls (rvsdg::RvsdgModule &rm) |
| |
| static bool | RemoveUnusedLoopOutputs (LoopNode &loopNode) |
| |
| static bool | RemoveUnusedInputs (LoopNode &loopNode) |
| |
| static bool | EliminateDeadNodesInRegion (rvsdg::Region ®ion) |
| |
| void | EliminateDeadNodes (llvm::LlvmRvsdgModule &rvsdgModule) |
| |
| static rvsdg::Output * | follow_state_edge (rvsdg::Input *state_edge, std::vector< rvsdg::SimpleNode * > &mem_ops, bool modify) |
| |
| static rvsdg::Output * | trace_edge (rvsdg::Input *state_edge, rvsdg::Output *new_edge, rvsdg::SimpleNode *target_call, rvsdg::Output *end) |
| |
| static void | handle_structural (std::vector< std::tuple< rvsdg::SimpleNode *, rvsdg::Input * > > &outstanding_dec_reqs, std::vector< rvsdg::SimpleNode * > &mem_ops, rvsdg::Input *state_edge_before, rvsdg::Output *state_edge_after) |
| |
| static void | optimize_single_mem_op_loop (std::vector< rvsdg::SimpleNode * > &mem_ops, rvsdg::Input *state_edge_before, rvsdg::Output *state_edge_after) |
| |
| void | convert_loop_state_to_lcb (rvsdg::Input *loop_state_input) |
| |
| static void | decouple_mem_state (rvsdg::RvsdgModule &rvsdgModule) |
| |
| static void | ConvertGammaNodeWithoutSpeculation (rvsdg::GammaNode &gammaNode) |
| |
| static void | ConvertGammaNodeWithSpeculation (rvsdg::GammaNode &gammaNode) |
| |
| static bool | CanGammaNodeBeSpeculative (const rvsdg::GammaNode &gammaNode) |
| |
| static void | ConvertGammaNodesInRegion (rvsdg::Region ®ion) |
| |
| static void | ConvertGammaNodesInStructuralNode (rvsdg::StructuralNode &structuralNode) |
| |
| static void | TestGammaConversion (RvsdgModule &rvsdgModule, size_t expectedMuxCount) |
| |
| | TEST (GammaConversionTests, WithMatchOperation) |
| |
| | TEST (GammaConversionTests, WithoutMatchOperation) |
| |
| | TEST (GammaConversionTests, NestedGammas) |
| |
| | TEST (GammaConversionTests, MuxPredicateMapping) |
| |
| | TEST (GammaConversionTests, MuxAlternativeSelection) |
| |
| | TEST (GammaConversionTests, MuxControlPredicateMapping) |
| |
| | TEST (GammaConversionTests, SpeculativeConversionUsesDiscardingMux) |
| |
| | TEST (GammaConversionTests, NonSpeculativeModeUsesBranches) |
| |
| std::vector< rvsdg::LambdaNode::ContextVar > | find_function_arguments (const rvsdg::LambdaNode *lambda, std::string name_contains) |
| |
| void | trace_function_calls (rvsdg::Output *output, std::vector< rvsdg::SimpleNode * > &calls, std::unordered_set< rvsdg::Output * > &visited) |
| |
| const llvm::IntegerConstantOperation * | trace_constant (const rvsdg::Output *dst) |
| |
| rvsdg::Output * | route_to_region_rhls (rvsdg::Region *target, rvsdg::Output *out) |
| |
| rvsdg::Output * | route_response_rhls (rvsdg::Region *target, rvsdg::Output *response) |
| |
| rvsdg::Output * | route_request_rhls (rvsdg::Region *target, rvsdg::Output *request) |
| |
| std::deque< rvsdg::Region * > | get_parent_regions (rvsdg::Region *region) |
| |
| const rvsdg::Output * | trace_call_rhls (const rvsdg::Output *output) |
| |
| const rvsdg::Output * | trace_call_rhls (const rvsdg::Input *input) |
| |
| bool | is_function_argument (const rvsdg::LambdaNode::ContextVar &cv) |
| |
| std::string | get_function_name (jlm::rvsdg::Input *input) |
| |
| bool | is_dec_req (rvsdg::SimpleNode *node) |
| |
| bool | is_dec_res (rvsdg::SimpleNode *node) |
| |
| rvsdg::Input * | get_mem_state_user (rvsdg::Output *state_edge) |
| |
| rvsdg::Output * | FindSourceNode (rvsdg::Output *out) |
| |
| rvsdg::LambdaNode * | change_function_name (rvsdg::LambdaNode *ln, const std::string &name) |
| |
| void | instrument_ref (llvm::LlvmRvsdgModule &rm) |
| |
| void | instrument_ref (rvsdg::Region *region, jlm::rvsdg::Output *ioState, jlm::rvsdg::Output *load_func, const std::shared_ptr< const jlm::rvsdg::FunctionType > &loadFunctionType, jlm::rvsdg::Output *store_func, const std::shared_ptr< const jlm::rvsdg::FunctionType > &storeFunctionType, jlm::rvsdg::Output *alloca_func, const std::shared_ptr< const jlm::rvsdg::FunctionType > &allocaFunctionType) |
| |
| void | instrument_ref (rvsdg::Region *region, jlm::rvsdg::Output *ioState, jlm::rvsdg::Output *load_func, const std::shared_ptr< const rvsdg::FunctionType > &loadFunctionType, jlm::rvsdg::Output *store_func, const std::shared_ptr< const rvsdg::FunctionType > &storeFunctionType, jlm::rvsdg::Output *alloca_func, const std::shared_ptr< const rvsdg::FunctionType > &allocaFunctionType) |
| |
| rvsdg::SimpleNode * | find_decouple_response (const rvsdg::LambdaNode *lambda, const llvm::IntegerConstantOperation *request_constant) |
| |
| static std::pair< rvsdg::Input *, std::vector< rvsdg::Input * > > | TraceEdgeToMerge (rvsdg::Input *state_edge) |
| |
| void | OptimizeResMemState (rvsdg::Output *res_mem_state) |
| |
| void | OptimizeReqMemState (rvsdg::Output *req_mem_state) |
| |
| rvsdg::SimpleNode * | ReplaceDecouple (const rvsdg::LambdaNode *lambda, rvsdg::SimpleNode *decouple_request, rvsdg::Output *resp) |
| |
| void | gather_mem_nodes (rvsdg::Region *region, std::vector< rvsdg::Node * > &loadNodes, std::vector< rvsdg::Node * > &storeNodes, std::vector< rvsdg::Node * > &decoupleNodes, std::unordered_set< rvsdg::Node * > exclude) |
| |
| static void | TracePointer (rvsdg::Output *output, std::unordered_set< rvsdg::Output * > &visited, TracedPointerNodes &tracedPointerNodes) |
| |
| std::vector< TracedPointerNodes > | TracePointerArguments (const rvsdg::LambdaNode *lambda) |
| |
| rvsdg::LambdaNode * | find_containing_lambda (rvsdg::Region *region) |
| |
| static size_t | CalculatePortWidth (const TracedPointerNodes &tracedPointerNodes) |
| |
| static rvsdg::SimpleNode * | ReplaceLoad (rvsdg::SubstitutionMap &smap, const rvsdg::Node *originalLoad, rvsdg::Output *response) |
| |
| static rvsdg::SimpleNode * | ReplaceStore (rvsdg::SubstitutionMap &smap, const rvsdg::Node *originalStore, rvsdg::Output *response) |
| |
| static rvsdg::Output * | ConnectRequestResponseMemPorts (const rvsdg::LambdaNode *lambda, size_t argumentIndex, rvsdg::SubstitutionMap &smap, const std::vector< rvsdg::Node * > &originalLoadNodes, const std::vector< rvsdg::Node * > &originalStoreNodes, const std::vector< rvsdg::Node * > &originalDecoupledNodes) |
| |
| static void | ConvertMemory (rvsdg::RvsdgModule &rvsdgModule) |
| |
| static void | find_load_store (jlm::rvsdg::Output *op, std::vector< jlm::rvsdg::SimpleNode * > &load_nodes, std::vector< jlm::rvsdg::SimpleNode * > &store_nodes, std::unordered_set< jlm::rvsdg::Output * > &visited) |
| |
| static rvsdg::StructuralOutput * | find_loop_output (jlm::rvsdg::StructuralInput *sti) |
| |
| static rvsdg::Output * | separate_load_edge (jlm::rvsdg::Output *mem_edge, jlm::rvsdg::Output *addr_edge, jlm::rvsdg::SimpleNode **load, jlm::rvsdg::Output **new_mem_edge, std::vector< jlm::rvsdg::Output * > &store_addresses, std::vector< jlm::rvsdg::Output * > &store_dequeues, std::vector< bool > &store_precedes, bool *load_encountered) |
| |
| jlm::rvsdg::Output * | process_loops (jlm::rvsdg::Output *state_edge) |
| |
| static void | mem_queue (rvsdg::RvsdgModule &rvsdgModule) |
| |
| static rvsdg::RegionResult * | trace_edge (jlm::rvsdg::Output *common_edge, jlm::rvsdg::Output *new_edge, std::vector< rvsdg::Node * > &load_nodes, const std::vector< rvsdg::Node * > &store_nodes, std::vector< rvsdg::Node * > &decouple_nodes) |
| |
| bool | is_output_of (jlm::rvsdg::Output *output, rvsdg::Node *node) |
| |
| bool | depends_on (jlm::rvsdg::Output *output, rvsdg::Node *node) |
| |
| rvsdg::GammaNode::EntryVar | get_entryvar (jlm::rvsdg::Output *origin, rvsdg::GammaNode *gamma) |
| |
| bool | merge_gamma (rvsdg::GammaNode *gamma) |
| |
| void | merge_gamma (rvsdg::Region *region) |
| |
| static bool | remove_unused_loop_backedges (LoopNode *loopNode) |
| |
| static bool | remove_unused_loop_outputs (LoopNode *ln) |
| |
| static bool | remove_loop_passthrough (LoopNode *ln) |
| |
| static bool | remove_unused_loop_inputs (LoopNode *ln) |
| |
| static bool | dead_spec_gamma (rvsdg::Node *dmux_node) |
| |
| static bool | dead_nonspec_gamma (rvsdg::Node *ndmux_node) |
| |
| static bool | dead_loop (rvsdg::Node *ndmux_node) |
| |
| static bool | dead_loop_lcb (rvsdg::Node *lcb_node) |
| |
| static bool | fix_mem_split (rvsdg::Node *split_node) |
| |
| static bool | fix_mem_merge (rvsdg::Node *merge_node) |
| |
| void | split_opt (llvm::LlvmRvsdgModule &rm) |
| |
| void | pre_opt (jlm::llvm::LlvmRvsdgModule &rm) |
| |
| bool | function_match (rvsdg::LambdaNode *ln, const std::string &function_name) |
| |
| const jlm::rvsdg::Output * | trace_call (jlm::rvsdg::Input *input) |
| |
| void | inline_calls (rvsdg::Region *region) |
| |
| rvsdg::DeltaNode * | rename_delta (rvsdg::DeltaNode *odn) |
| |
| rvsdg::LambdaNode * | change_linkage (rvsdg::LambdaNode *ln, llvm::Linkage link) |
| |
| std::unique_ptr< jlm::llvm::LlvmRvsdgModule > | split_hls_function (llvm::LlvmRvsdgModule &rm, const std::string &function_name) |
| |
| void | rvsdg2ref (llvm::LlvmRvsdgModule &rhls, const util::FilePath &path) |
| |
| std::unique_ptr< rvsdg::TransformationSequence > | createTransformationSequence (rvsdg::DotWriter &dotWriter, const bool dumpRvsdgGraphs) |
| |
| void | dump_ref (llvm::LlvmRvsdgModule &rhls, const util::FilePath &path) |
| |
| static bool | is_constant (const rvsdg::Node *node) |
| |
| void | ConnectStreamBuffer (rvsdg::SimpleNode *enq_call, rvsdg::SimpleNode *deq_call) |
| |
| static void | stream_conv (rvsdg::RvsdgModule &rm) |
| |
| static void | ConvertThetaNode (rvsdg::ThetaNode &theta) |
| |
| static void | ConvertThetaNodesInRegion (rvsdg::Region ®ion) |
| |
| static void | ConvertThetaNodesInStructuralNode (rvsdg::StructuralNode &structuralNode) |
| |
| static bool | IsPassthroughLoopVar (const rvsdg::ThetaNode::LoopVar &loopVar) |
| |
| static bool | IsPassthroughArgument (const rvsdg::Output &argument) |
| |
| static bool | IsPassthroughResult (const rvsdg::Input &result) |
| |
| static void | RemoveUnusedStatesFromLambda (rvsdg::LambdaNode &lambdaNode) |
| |
| static std::optional< rvsdg::GammaNode::ExitVar > | TryGetSingleUserExitVar (rvsdg::GammaNode &gammaNode, rvsdg::Output &argument) |
| |
| static void | RemoveUnusedStatesFromGammaNode (rvsdg::GammaNode &gammaNode) |
| |
| static void | RemoveUnusedStatesFromThetaNode (rvsdg::ThetaNode &thetaNode) |
| |
| static void | RemoveUnusedStatesInRegion (rvsdg::Region ®ion) |
| |
| static void | RemoveUnusedStatesInStructuralNode (rvsdg::StructuralNode &structuralNode) |
| |
| std::shared_ptr< const BundleType > | get_mem_req_type (std::shared_ptr< const rvsdg::Type > elementType, bool write) |
| |
| std::shared_ptr< const BundleType > | get_mem_res_type (std::shared_ptr< const jlm::rvsdg::Type > dataType) |
| |
| int | JlmSize (const jlm::rvsdg::Type *type) |
| |
| size_t | GetPointerSizeInBits () |
| |
| static bool | congruent (Output *o1, Output *o2, VisitorSet &vs, Context &ctx) |
| |
| static bool | congruent (jlm::rvsdg::Output *o1, jlm::rvsdg::Output *o2, Context &ctx) |
| |
| static void | mark_arguments (StructuralInput *i1, StructuralInput *i2, Context &ctx) |
| |
| static void | mark (jlm::rvsdg::Region *, Context &) |
| |
| static void | mark_gamma (const rvsdg::GammaNode *node, Context &ctx) |
| |
| static void | mark_theta (const rvsdg::ThetaNode *theta, Context &ctx) |
| |
| static void | mark_loop (const LoopNode *loop, Context &ctx) |
| |
| static void | mark_lambda (const rvsdg::LambdaNode *node, Context &ctx) |
| |
| static void | mark_phi (const rvsdg::PhiNode *phi, Context &ctx) |
| |
| static void | mark (const rvsdg::StructuralNode *node, Context &ctx) |
| |
| static void | mark (const jlm::rvsdg::SimpleNode *node, Context &ctx) |
| |
| static void | divert_users (jlm::rvsdg::Output *output, Context &ctx) |
| |
| static void | divert_outputs (Node *node, Context &ctx) |
| |
| static void | divert_arguments (rvsdg::Region *region, Context &ctx) |
| |
| static void | divert (rvsdg::Region *, Context &) |
| |
| static void | divert_gamma (rvsdg::GammaNode *gamma, Context &ctx) |
| |
| static void | divert_theta (rvsdg::ThetaNode *theta, Context &ctx) |
| |
| static void | divert_loop (LoopNode *node, Context &ctx) |
| |
| static void | divert_lambda (rvsdg::LambdaNode *node, Context &ctx) |
| |
| static void | divert_phi (rvsdg::PhiNode *phi, Context &ctx) |
| |
| static void | divert (rvsdg::StructuralNode *node, Context &ctx) |
| |
| std::string | ViewcolorToString (const ViewColors &color) |
| |
| static std::string | hex (size_t i) |
| |
| std::string | GetDotName (rvsdg::Node *node) |
| |
| std::string | GetDotName (rvsdg::Output *output) |
| |
| template<class T > |
| ViewColors | GetDefaultColor (std::unordered_map< T *, ViewColors > &map, T *elem, ViewColors def=BLACK) |
| |
| template<class T > |
| ViewColors | GetDefaultLabel (std::unordered_map< T *, ViewColors > &map, T *elem, ViewColors def=NONE) |
| |
| std::string | GetDotName (jlm::rvsdg::Input *input) |
| |
| std::string | PortToDot (const std::string &display_name, const std::string &dot_name, const ViewColors &color) |
| |
| std::string | ArgumentToDot (rvsdg::RegionArgument *argument, const ViewColors &color) |
| |
| std::string | ResultToDot (rvsdg::RegionResult *result, const ViewColors &color) |
| |
| std::string | StructuralInputToDot (rvsdg::StructuralInput *structuralInput, const ViewColors &color) |
| |
| std::string | StructuralOutputToDot (rvsdg::StructuralOutput *structuralOutput, const ViewColors &color) |
| |
| std::string | Edge (jlm::rvsdg::Output *output, jlm::rvsdg::Input *input, std::unordered_map< rvsdg::Output *, ViewColors > &tailLabel, bool back_edge=false) |
| |
| std::string | SymbolicEdge (rvsdg::Input *output, rvsdg::Output *input) |
| |
| std::string | StructuralNodeToDot (rvsdg::StructuralNode *structuralNode, std::unordered_map< rvsdg::Output *, ViewColors > &outputColor, std::unordered_map< rvsdg::Input *, ViewColors > &inputColor, std::unordered_map< rvsdg::Output *, ViewColors > &tailLabel) |
| |
| std::string | SimpleNodeToDot (rvsdg::SimpleNode *simpleNode, std::unordered_map< rvsdg::Output *, ViewColors > &outputColor, std::unordered_map< rvsdg::Input *, ViewColors > &inputColor) |
| |
| std::string | RegionToDot (rvsdg::Region *region, std::unordered_map< rvsdg::Output *, ViewColors > &outputColor, std::unordered_map< rvsdg::Input *, ViewColors > &inputColor, std::unordered_map< rvsdg::Output *, ViewColors > &tailLabel) |
| |
| std::string | ToDot (rvsdg::Region *region, std::unordered_map< rvsdg::Output *, ViewColors > &outputColor, std::unordered_map< rvsdg::Input *, ViewColors > &inputColor, std::unordered_map< rvsdg::Output *, ViewColors > &tailLabel) |
| |
| void | ViewDot (rvsdg::Region *region, FILE *out, std::unordered_map< rvsdg::Output *, ViewColors > &outputColor, std::unordered_map< rvsdg::Input *, ViewColors > &inputColor, std::unordered_map< rvsdg::Output *, ViewColors > &tailLabel) |
| |
| void | ViewDot (rvsdg::Region *region, FILE *out) |
| |
| void | DumpDot (llvm::LlvmRvsdgModule &rvsdgModule, const std::string &file_name) |
| |
| void | DumpDot (llvm::LlvmRvsdgModule &rvsdgModule, const std::string &file_name, std::unordered_map< rvsdg::Output *, ViewColors > outputColor, std::unordered_map< rvsdg::Input *, ViewColors > inputColor, std::unordered_map< rvsdg::Output *, ViewColors > tailLabel) |
| |
| void | DumpDot (rvsdg::Region *region, const std::string &file_name) |
| |
| void | DumpDot (rvsdg::Region *region, const std::string &file_name, std::unordered_map< rvsdg::Output *, ViewColors > outputColor, std::unordered_map< rvsdg::Input *, ViewColors > inputColor, std::unordered_map< rvsdg::Output *, ViewColors > tailLabel) |
| |
| void | DotToSvg (const std::string &file_name) |
| |