32 op.callingConvention(),
37 for (
const auto &
cv :
ln->GetContextVars())
39 auto origin =
cv.input->origin();
40 auto newcv = lambda->AddContextVar(*origin);
44 auto args =
ln->GetFunctionArguments();
45 auto newArgs = lambda->GetFunctionArguments();
47 for (std::size_t
n = 0;
n <
args.size(); ++
n)
56 std::vector<jlm::rvsdg::Output *> results;
57 for (
auto result :
ln->GetFunctionResults())
58 results.push_back(&
subregionmap.lookup(*result->origin()));
61 lambda->finalize(results);
72 auto & graph =
rm.Rvsdg();
73 auto root = &graph.GetRootRegion();
178 auto addr = node->input(0)->origin();
189 auto memstate = node->input(1)->origin();
195 node->input(1)->divert_to(
callOp[1]);
220 std::vector<jlm::rvsdg::Input *>
old_users;
221 for (
auto &
user : node->output(1)->Users())
238 auto addr = node->input(0)->origin();
250 std::vector<jlm::rvsdg::Input *>
oldUsers;
static int JlmSize(const jlm::rvsdg::Type *type)
static jlm::rvsdg::Output * create(jlm::rvsdg::Output *operand, std::shared_ptr< const jlm::rvsdg::Type > rtype)
static std::vector< rvsdg::Output * > Create(rvsdg::Output *function, std::shared_ptr< const rvsdg::FunctionType > functionType, const std::vector< rvsdg::Output * > &arguments)
static std::shared_ptr< const IOStateType > Create()
static rvsdg::Node & Create(rvsdg::Region ®ion, IntegerValueRepresentation representation)
static LlvmGraphImport & createFunctionImport(rvsdg::Graph &graph, std::shared_ptr< const rvsdg::FunctionType > functionType, std::string name, Linkage linkage, CallingConvention callingConvention)
static std::unique_ptr< LlvmLambdaOperation > Create(std::shared_ptr< const jlm::rvsdg::FunctionType > type, std::string name, const jlm::llvm::Linkage &linkage, jlm::llvm::CallingConvention callingConvention, jlm::llvm::AttributeSet attributes)
static std::shared_ptr< const MemoryStateType > Create()
static std::shared_ptr< const PointerType > Create()
static std::shared_ptr< const BitType > Create(std::size_t nbits)
Creates bit type of specified width.
static std::shared_ptr< const FunctionType > Create(std::vector< std::shared_ptr< const jlm::rvsdg::Type > > argumentTypes, std::vector< std::shared_ptr< const jlm::rvsdg::Type > > resultTypes)
static LambdaNode * Create(rvsdg::Region &parent, std::unique_ptr< LambdaOperation > operation)
Represent acyclic RVSDG subgraphs.
void insert(const Output *original, Output *substitute)
rvsdg::LambdaNode * change_function_name(rvsdg::LambdaNode *ln, const std::string &name)
int JlmSize(const jlm::rvsdg::Type *type)
static void divert_users(jlm::rvsdg::Output *output, Context &ctx)
void instrument_ref(llvm::LlvmRvsdgModule &rm)
static void remove(Node *node)
static std::vector< jlm::rvsdg::Output * > outputs(const Node *node)
Output & RouteToRegion(Output &output, Region ®ion)
NodeType * TryGetOwnerNode(const rvsdg::Input &input) noexcept
Checks if this is an input to a node of specified type.
detail::TopDownTraverserGeneric< false > TopDownTraverser
Traverser for visiting every node in a region in a top down order.