|
Jlm
|
Typedefs | |
| typedef std::unordered_set< jlm::rvsdg::Output * > | congruence_set |
Enumerations | |
| enum | ViewColors { NONE , BLACK , RED } |
Functions | |
| 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) |
| 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) |
| void | dump_xml (llvm::LlvmRvsdgModule &rvsdgModule, const std::string &file_name) |
| 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) |
| void | convert_alloca (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 dumpRvsdgDotGraphs) |
| 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) |
Variables | |
| static constexpr int | MEMORY_RESPONSE_LATENCY = 10 |
| static size_t | MemoryLatency = 10 |
| const size_t | UnlimitedBufferCapacity = std::numeric_limits<uint32_t>::max() |
| const size_t | MaximumBufferSize = 512 |
| size_t | alloca_cnt = 0 |
| const int | DefaultBufferCapacity = 10 |
| typedef std::unordered_set<jlm::rvsdg::Output *> jlm::hls::congruence_set |
| enum jlm::hls::ViewColors |
| void jlm::hls::add_prints | ( | llvm::LlvmRvsdgModule & | rm | ) |
Definition at line 47 of file add-prints.cpp.
| void jlm::hls::add_prints | ( | rvsdg::Region * | region | ) |
Definition at line 18 of file add-prints.cpp.
|
static |
Definition at line 201 of file add-buffers.cpp.
|
static |
Definition at line 723 of file add-buffers.cpp.
|
static |
Definition at line 118 of file alloca-conv.cpp.
| std::string jlm::hls::ArgumentToDot | ( | rvsdg::RegionArgument * | argument, |
| const ViewColors & | color | ||
| ) |
|
static |
Definition at line 601 of file add-buffers.cpp.
|
static |
Definition at line 937 of file add-buffers.cpp.
|
static |
Definition at line 376 of file mem-conv.cpp.
|
static |
Definition at line 94 of file GammaConversion.cpp.
| rvsdg::LambdaNode* jlm::hls::change_function_name | ( | rvsdg::LambdaNode * | ln, |
| const std::string & | name | ||
| ) |
Definition at line 20 of file instrument-ref.cpp.
| rvsdg::LambdaNode* jlm::hls::change_linkage | ( | rvsdg::LambdaNode * | ln, |
| llvm::Linkage | link | ||
| ) |
Definition at line 302 of file rvsdg2rhls.cpp.
| void jlm::hls::check_may_not_depend_on | ( | mlir::Value | value, |
| ::llvm::SmallPtrSet< mlir::Value, 16 > & | forbiddenDependencies, | ||
| ::llvm::SmallPtrSet< mlir::Value, 16 > & | visited | ||
| ) |
Definition at line 3471 of file RhlsToFirrtlConverter.cpp.
| void jlm::hls::check_oValids | ( | ::llvm::SmallVector< mlir::Value > & | oReadys, |
| ::llvm::SmallVector< mlir::Value > & | oValids | ||
| ) |
Definition at line 3524 of file RhlsToFirrtlConverter.cpp.
|
static |
Definition at line 34 of file check-rhls.cpp.
|
static |
Definition at line 68 of file check-rhls.cpp.
|
static |
Definition at line 17 of file check-rhls.cpp.
|
static |
|
static |
|
static |
Definition at line 484 of file mem-conv.cpp.
| void jlm::hls::ConnectStreamBuffer | ( | rvsdg::SimpleNode * | enq_call, |
| rvsdg::SimpleNode * | deq_call | ||
| ) |
Definition at line 20 of file stream-conv.cpp.
| void jlm::hls::convert_alloca | ( | rvsdg::Region * | region | ) |
Definition at line 192 of file rvsdg2rhls.cpp.
| void jlm::hls::convert_loop_state_to_lcb | ( | rvsdg::Input * | loop_state_input | ) |
Definition at line 438 of file decouple-mem-state.cpp.
| void jlm::hls::convert_prints | ( | llvm::LlvmRvsdgModule & | rm | ) |
Definition at line 55 of file add-prints.cpp.
| void jlm::hls::convert_prints | ( | rvsdg::Region * | region, |
| jlm::rvsdg::Output * | printf, | ||
| const std::shared_ptr< const rvsdg::FunctionType > & | functionType | ||
| ) |
Definition at line 68 of file add-prints.cpp.
|
static |
Definition at line 158 of file GammaConversion.cpp.
|
static |
Definition at line 137 of file GammaConversion.cpp.
|
static |
Definition at line 17 of file GammaConversion.cpp.
|
static |
Definition at line 58 of file GammaConversion.cpp.
|
static |
Definition at line 603 of file mem-conv.cpp.
|
static |
Definition at line 16 of file ThetaConversion.cpp.
|
static |
Definition at line 85 of file ThetaConversion.cpp.
|
static |
Definition at line 71 of file ThetaConversion.cpp.
| std::string jlm::hls::ConvertToCType | ( | const rvsdg::Type * | type | ) |
Definition at line 19 of file verilator-harness-hls.cpp.
|
static |
Definition at line 392 of file add-buffers.cpp.
| std::unique_ptr< rvsdg::TransformationSequence > jlm::hls::createTransformationSequence | ( | rvsdg::DotWriter & | dotWriter, |
| const bool | dumpRvsdgDotGraphs | ||
| ) |
Definition at line 446 of file rvsdg2rhls.cpp.
|
static |
Definition at line 194 of file rhls-dne.cpp.
|
static |
Definition at line 272 of file rhls-dne.cpp.
|
static |
Definition at line 153 of file rhls-dne.cpp.
|
static |
Definition at line 128 of file rhls-dne.cpp.
|
static |
Definition at line 457 of file decouple-mem-state.cpp.
| bool jlm::hls::depends_on | ( | jlm::rvsdg::Output * | output, |
| rvsdg::Node * | node | ||
| ) |
Definition at line 27 of file merge-gamma.cpp.
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
| void jlm::hls::dump_ref | ( | llvm::LlvmRvsdgModule & | rhls, |
| const util::FilePath & | path | ||
| ) |
Definition at line 527 of file rvsdg2rhls.cpp.
| void jlm::hls::dump_xml | ( | llvm::LlvmRvsdgModule & | rvsdgModule, |
| const std::string & | file_name | ||
| ) |
Definition at line 97 of file rvsdg2rhls.cpp.
| void jlm::hls::DumpDot | ( | llvm::LlvmRvsdgModule & | rvsdgModule, |
| const std::string & | file_name | ||
| ) |
| void jlm::hls::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 jlm::hls::DumpDot | ( | rvsdg::Region * | region, |
| const std::string & | file_name | ||
| ) |
| void jlm::hls::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 | ||
| ) |
| std::string jlm::hls::Edge | ( | jlm::rvsdg::Output * | output, |
| jlm::rvsdg::Input * | input, | ||
| std::unordered_map< rvsdg::Output *, ViewColors > & | tailLabel, | ||
| bool | back_edge = false |
||
| ) |
| void jlm::hls::EliminateDeadNodes | ( | llvm::LlvmRvsdgModule & | rvsdgModule | ) |
Removes dead loop nodes and their outputs and inputs.
| rvsdgModule | The RVSDG module the transformation is performed on. |
FIXME: This code should be incorporated into llvm::DeadNodeElimination. However, before this can happen, llvm::DeadNodeElimination needs to be moved into the rvsdg namespace and made extensible such that transformation users can register clean up functions for structural nodes.
Definition at line 108 of file DeadNodeElimination.cpp.
|
static |
Definition at line 78 of file DeadNodeElimination.cpp.
| rvsdg::LambdaNode* jlm::hls::find_containing_lambda | ( | rvsdg::Region * | region | ) |
Definition at line 366 of file mem-conv.cpp.
| jlm::rvsdg::SimpleNode * jlm::hls::find_decouple_response | ( | const rvsdg::LambdaNode * | lambda, |
| const llvm::IntegerConstantOperation * | request_constant | ||
| ) |
Definition at line 27 of file mem-conv.cpp.
| std::vector< rvsdg::LambdaNode::ContextVar > jlm::hls::find_function_arguments | ( | const rvsdg::LambdaNode * | lambda, |
| std::string | name_contains | ||
| ) |
Definition at line 23 of file hls-function-util.cpp.
|
static |
Definition at line 27 of file mem-queue.cpp.
|
static |
Definition at line 87 of file mem-queue.cpp.
| rvsdg::Output * jlm::hls::FindSourceNode | ( | rvsdg::Output * | out | ) |
Traces the origin of the given RVSDG output to find the original source of the value, which is either the output of a SimpleNode, or a function argument.
Assumes no gamma or theta nodes are present.
| out | The output to be traced to its source |
Definition at line 313 of file hls-function-util.cpp.
|
static |
Definition at line 17 of file add-buffers.cpp.
|
static |
Definition at line 371 of file rhls-dne.cpp.
|
static |
Definition at line 326 of file rhls-dne.cpp.
|
static |
Definition at line 281 of file decouple-mem-state.cpp.
| bool jlm::hls::function_match | ( | rvsdg::LambdaNode * | ln, |
| const std::string & | function_name | ||
| ) |
Definition at line 105 of file rvsdg2rhls.cpp.
| void jlm::hls::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 | ||
| ) |
Definition at line 225 of file mem-conv.cpp.
|
static |
Definition at line 106 of file alloca-conv.cpp.
| rvsdg::GammaNode::EntryVar jlm::hls::get_entryvar | ( | jlm::rvsdg::Output * | origin, |
| rvsdg::GammaNode * | gamma | ||
| ) |
Definition at line 51 of file merge-gamma.cpp.
| std::string jlm::hls::get_function_name | ( | jlm::rvsdg::Input * | input | ) |
Definition at line 271 of file hls-function-util.cpp.
| std::shared_ptr< const BundleType > jlm::hls::get_mem_req_type | ( | std::shared_ptr< const rvsdg::Type > | elementType, |
| bool | write | ||
| ) |
| std::shared_ptr< const BundleType > jlm::hls::get_mem_res_type | ( | std::shared_ptr< const jlm::rvsdg::Type > | dataType | ) |
| rvsdg::Input * jlm::hls::get_mem_state_user | ( | rvsdg::Output * | state_edge | ) |
Definition at line 304 of file hls-function-util.cpp.
| std::deque< rvsdg::Region * > jlm::hls::get_parent_regions | ( | rvsdg::Region * | region | ) |
Definition at line 191 of file hls-function-util.cpp.
| ViewColors jlm::hls::GetDefaultColor | ( | std::unordered_map< T *, ViewColors > & | map, |
| T * | elem, | ||
| ViewColors | def = BLACK |
||
| ) |
| ViewColors jlm::hls::GetDefaultLabel | ( | std::unordered_map< T *, ViewColors > & | map, |
| T * | elem, | ||
| ViewColors | def = NONE |
||
| ) |
| std::string jlm::hls::GetDotName | ( | jlm::rvsdg::Input * | input | ) |
| std::string jlm::hls::GetDotName | ( | rvsdg::Node * | node | ) |
| std::string jlm::hls::GetDotName | ( | rvsdg::Output * | output | ) |
| std::tuple< size_t, std::string, std::string > jlm::hls::GetParameterListAsC | ( | const rvsdg::LambdaNode & | kernel | ) |
Takes an HLS kernel and determines the parameters of the original C function. Returns a tuple, the first element of which is the number of parameters. The second element is a string defining the C parameters, like "int32_t a0, void* a1, void* a2". The third element is a string for calling the C function, like "a0, a1, a2".
| kernel | the lambda node representing the kernel |
Definition at line 87 of file verilator-harness-hls.cpp.
| size_t jlm::hls::GetPointerSizeInBits | ( | ) |
| std::optional< std::string > jlm::hls::GetReturnTypeAsC | ( | const rvsdg::LambdaNode & | kernel | ) |
Takes an HLS kernel and determines the return type of the original C function. If the function did not have a return value, i.e., returns "void", nullopt is returned.
| kernel | the lambda node representing the kernel |
Definition at line 63 of file verilator-harness-hls.cpp.
|
static |
Definition at line 205 of file decouple-mem-state.cpp.
| void jlm::hls::inline_calls | ( | rvsdg::Region * | region | ) |
Definition at line 145 of file rvsdg2rhls.cpp.
| void jlm::hls::instrument_ref | ( | llvm::LlvmRvsdgModule & | rm | ) |
Definition at line 62 of file instrument-ref.cpp.
| void jlm::hls::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 | ||
| ) |
Definition at line 133 of file instrument-ref.cpp.
| void jlm::hls::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 | ||
| ) |
|
inlinestatic |
Definition at line 20 of file rvsdg2rhls.hpp.
| bool jlm::hls::is_dec_req | ( | rvsdg::SimpleNode * | node | ) |
Definition at line 280 of file hls-function-util.cpp.
| bool jlm::hls::is_dec_res | ( | rvsdg::SimpleNode * | node | ) |
Definition at line 292 of file hls-function-util.cpp.
| bool jlm::hls::is_function_argument | ( | const rvsdg::LambdaNode::ContextVar & | cv | ) |
Definition at line 261 of file hls-function-util.cpp.
| bool jlm::hls::is_output_of | ( | jlm::rvsdg::Output * | output, |
| rvsdg::Node * | node | ||
| ) |
Definition at line 20 of file merge-gamma.cpp.
| static bool jlm::hls::isForbiddenChar | ( | char | c | ) |
Definition at line 16 of file base-hls.cpp.
|
static |
Definition at line 26 of file UnusedStateRemoval.cpp.
|
static |
Definition at line 20 of file UnusedStateRemoval.cpp.
|
static |
Definition at line 37 of file UnusedStateRemoval.cpp.
| int jlm::hls::JlmSize | ( | const jlm::rvsdg::Type * | type | ) |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
Definition at line 258 of file add-buffers.cpp.
|
static |
Definition at line 475 of file mem-queue.cpp.
| bool jlm::hls::merge_gamma | ( | rvsdg::GammaNode * | gamma | ) |
Definition at line 68 of file merge-gamma.cpp.
| void jlm::hls::merge_gamma | ( | rvsdg::Region * | region | ) |
Definition at line 138 of file merge-gamma.cpp.
|
static |
Definition at line 352 of file add-buffers.cpp.
|
static |
Definition at line 305 of file add-buffers.cpp.
|
static |
Definition at line 257 of file decouple-mem-state.cpp.
|
static |
Definition at line 92 of file add-buffers.cpp.
|
static |
Definition at line 101 of file add-buffers.cpp.
|
static |
Definition at line 124 of file add-buffers.cpp.
| void jlm::hls::OptimizeReqMemState | ( | rvsdg::Output * | req_mem_state | ) |
Definition at line 119 of file mem-conv.cpp.
| void jlm::hls::OptimizeResMemState | ( | rvsdg::Output * | res_mem_state | ) |
Definition at line 99 of file mem-conv.cpp.
|
static |
Definition at line 52 of file add-buffers.cpp.
|
static |
Definition at line 662 of file add-buffers.cpp.
| std::string jlm::hls::PortToDot | ( | const std::string & | display_name, |
| const std::string & | dot_name, | ||
| const ViewColors & | color | ||
| ) |
| void jlm::hls::pre_opt | ( | jlm::llvm::LlvmRvsdgModule & | rm | ) |
Definition at line 79 of file rvsdg2rhls.cpp.
| jlm::rvsdg::Output* jlm::hls::process_loops | ( | jlm::rvsdg::Output * | state_edge | ) |
Definition at line 358 of file mem-queue.cpp.
|
static |
Definition at line 463 of file add-buffers.cpp.
| std::string jlm::hls::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 | ||
| ) |
|
static |
Definition at line 63 of file rhls-dne.cpp.
|
static |
Definition at line 17 of file rhls-dne.cpp.
|
static |
Definition at line 88 of file rhls-dne.cpp.
|
static |
Definition at line 46 of file rhls-dne.cpp.
|
static |
Definition at line 32 of file DeadNodeElimination.cpp.
|
static |
Definition at line 14 of file DeadNodeElimination.cpp.
|
static |
Definition at line 142 of file UnusedStateRemoval.cpp.
|
static |
Definition at line 44 of file UnusedStateRemoval.cpp.
|
static |
Definition at line 175 of file UnusedStateRemoval.cpp.
|
static |
Definition at line 217 of file UnusedStateRemoval.cpp.
|
static |
Definition at line 194 of file UnusedStateRemoval.cpp.
| rvsdg::DeltaNode* jlm::hls::rename_delta | ( | rvsdg::DeltaNode * | odn | ) |
Definition at line 260 of file rvsdg2rhls.cpp.
| rvsdg::SimpleNode* jlm::hls::ReplaceDecouple | ( | const rvsdg::LambdaNode * | lambda, |
| rvsdg::SimpleNode * | decouple_request, | ||
| rvsdg::Output * | resp | ||
| ) |
Definition at line 141 of file mem-conv.cpp.
|
static |
Definition at line 405 of file mem-conv.cpp.
|
static |
Definition at line 447 of file mem-conv.cpp.
| std::string jlm::hls::ResultToDot | ( | rvsdg::RegionResult * | result, |
| const ViewColors & | color | ||
| ) |
|
staticconstexpr |
Definition at line 244 of file add-buffers.cpp.
| rvsdg::Output * jlm::hls::route_request_rhls | ( | rvsdg::Region * | target, |
| rvsdg::Output * | request | ||
| ) |
Definition at line 177 of file hls-function-util.cpp.
| rvsdg::Output * jlm::hls::route_response_rhls | ( | rvsdg::Region * | target, |
| rvsdg::Output * | response | ||
| ) |
Definition at line 162 of file hls-function-util.cpp.
| rvsdg::Output * jlm::hls::route_to_region_rhls | ( | rvsdg::Region * | target, |
| rvsdg::Output * | out | ||
| ) |
Definition at line 124 of file hls-function-util.cpp.
| void jlm::hls::rvsdg2ref | ( | llvm::LlvmRvsdgModule & | rhls, |
| const util::FilePath & | path | ||
| ) |
Definition at line 440 of file rvsdg2rhls.cpp.
|
static |
Definition at line 125 of file mem-queue.cpp.
| void jlm::hls::setMemoryLatency | ( | size_t | memoryLatency | ) |
Definition at line 654 of file add-buffers.cpp.
| std::string jlm::hls::SimpleNodeToDot | ( | rvsdg::SimpleNode * | simpleNode, |
| std::unordered_map< rvsdg::Output *, ViewColors > & | outputColor, | ||
| std::unordered_map< rvsdg::Input *, ViewColors > & | inputColor | ||
| ) |
| std::unique_ptr< llvm::LlvmRvsdgModule > jlm::hls::split_hls_function | ( | llvm::LlvmRvsdgModule & | rm, |
| const std::string & | function_name | ||
| ) |
Definition at line 344 of file rvsdg2rhls.cpp.
| void jlm::hls::split_opt | ( | llvm::LlvmRvsdgModule & | rm | ) |
Definition at line 61 of file rvsdg2rhls.cpp.
|
static |
Definition at line 55 of file stream-conv.cpp.
| std::string jlm::hls::StructuralInputToDot | ( | rvsdg::StructuralInput * | structuralInput, |
| const ViewColors & | color | ||
| ) |
| std::string jlm::hls::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 jlm::hls::StructuralOutputToDot | ( | rvsdg::StructuralOutput * | structuralOutput, |
| const ViewColors & | color | ||
| ) |
| std::string jlm::hls::SymbolicEdge | ( | rvsdg::Input * | output, |
| rvsdg::Output * | input | ||
| ) |
| std::string jlm::hls::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 | ||
| ) |
| const jlm::rvsdg::Output * jlm::hls::trace_call | ( | jlm::rvsdg::Input * | input | ) |
Definition at line 118 of file rvsdg2rhls.cpp.
| const rvsdg::Output * jlm::hls::trace_call_rhls | ( | const rvsdg::Input * | input | ) |
Definition at line 254 of file hls-function-util.cpp.
| const rvsdg::Output * jlm::hls::trace_call_rhls | ( | const rvsdg::Output * | output | ) |
Definition at line 205 of file hls-function-util.cpp.
| const llvm::IntegerConstantOperation * jlm::hls::trace_constant | ( | const rvsdg::Output * | dst | ) |
Definition at line 96 of file hls-function-util.cpp.
|
static |
Definition at line 29 of file mem-sep.cpp.
|
static |
Definition at line 38 of file decouple-mem-state.cpp.
| void jlm::hls::trace_function_calls | ( | rvsdg::Output * | output, |
| std::vector< rvsdg::SimpleNode * > & | calls, | ||
| std::unordered_set< rvsdg::Output * > & | visited | ||
| ) |
Definition at line 42 of file hls-function-util.cpp.
|
static |
Definition at line 50 of file mem-conv.cpp.
|
static |
If the output is a pointer, it traces it to all memory operations it reaches. Pointers read from memory is not traced, i.e., the output of load operations is not traced.
| output | The output to trace |
| visited | A set of already visited outputs |
| tracedPointerNodes | All nodes that are reached |
Definition at line 271 of file mem-conv.cpp.
| std::vector< TracedPointerNodes > jlm::hls::TracePointerArguments | ( | const rvsdg::LambdaNode * | lambda | ) |
Traces all pointer arguments of a lambda node and finds all memory operations. Pointers read from memory is not traced, i.e., the output of load operations is not traced.
| lambda | The lambda node for which to trace all pointer arguments |
Definition at line 339 of file mem-conv.cpp.
|
static |
Definition at line 128 of file UnusedStateRemoval.cpp.
| std::string jlm::hls::ViewcolorToString | ( | const ViewColors & | color | ) |
| void jlm::hls::ViewDot | ( | rvsdg::Region * | region, |
| FILE * | out | ||
| ) |
| void jlm::hls::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 | ||
| ) |
| size_t jlm::hls::alloca_cnt = 0 |
Definition at line 189 of file rvsdg2rhls.cpp.
| const int jlm::hls::DefaultBufferCapacity = 10 |
Definition at line 17 of file stream-conv.cpp.
| const size_t jlm::hls::MaximumBufferSize = 512 |
Definition at line 659 of file add-buffers.cpp.
|
staticconstexpr |
Definition at line 16 of file verilator-harness-hls.cpp.
|
static |
Definition at line 241 of file add-buffers.cpp.
| const size_t jlm::hls::UnlimitedBufferCapacity = std::numeric_limits<uint32_t>::max() |
Definition at line 349 of file add-buffers.cpp.