6 #ifndef JLM_LLVM_IR_OPERATORS_LAMBDA_HPP
7 #define JLM_LLVM_IR_OPERATORS_LAMBDA_HPP
35 std::shared_ptr<const jlm::rvsdg::FunctionType>
type,
40 [[nodiscard]]
const std::string &
58 [[nodiscard]] std::string
62 operator==(
const Operation & other)
const noexcept
override;
64 [[nodiscard]] std::unique_ptr<Operation>
65 copy()
const override;
76 static std::unique_ptr<LlvmLambdaOperation>
78 std::shared_ptr<const jlm::rvsdg::FunctionType>
type,
83 return std::make_unique<LlvmLambdaOperation>(
90 static std::unique_ptr<LlvmLambdaOperation>
92 std::shared_ptr<const jlm::rvsdg::FunctionType>
type,
96 return std::make_unique<LlvmLambdaOperation>(
LlvmLambdaOperation(std::shared_ptr< const jlm::rvsdg::FunctionType > type, std::string name, const jlm::llvm::Linkage &linkage, jlm::llvm::AttributeSet attributes)
std::unique_ptr< Operation > copy() const override
std::vector< jlm::llvm::AttributeSet > ArgumentAttributes_
static std::unique_ptr< LlvmLambdaOperation > Create(std::shared_ptr< const jlm::rvsdg::FunctionType > type, std::string name, const jlm::llvm::Linkage &linkage)
const jlm::llvm::Linkage & linkage() const noexcept
static rvsdg::Output & getIOStateArgument(const rvsdg::LambdaNode &lambdaNode) noexcept
static std::unique_ptr< LlvmLambdaOperation > Create(std::shared_ptr< const jlm::rvsdg::FunctionType > type, std::string name, const jlm::llvm::Linkage &linkage, jlm::llvm::AttributeSet attributes)
~LlvmLambdaOperation() override
std::string debug_string() const override
jlm::llvm::AttributeSet attributes_
void SetArgumentAttributes(std::size_t index, const jlm::llvm::AttributeSet &attributes)
bool operator==(const Operation &other) const noexcept override
const std::string & name() const noexcept
const jlm::llvm::AttributeSet & GetArgumentAttributes(std::size_t index) const noexcept
const jlm::llvm::AttributeSet & attributes() const noexcept
jlm::llvm::Linkage linkage_
const FunctionType & type() const noexcept
Global memory state passed between functions.