6 #ifndef JLM_LLVM_IR_OPERATORS_SPECIALIZEDARITHMETICINTRINSICOPERATIONS_HPP
7 #define JLM_LLVM_IR_OPERATORS_SPECIALIZEDARITHMETICINTRINSICOPERATIONS_HPP
34 operator==(
const Operation & other)
const noexcept
override;
39 [[nodiscard]] std::unique_ptr<Operation>
40 copy()
const override;
42 static rvsdg::SimpleNode &
45 return rvsdg::CreateOpNode<FMulAddIntrinsicOperation>(
46 { &multiplier, &multiplicand, &summand },
50 static std::unique_ptr<ThreeAddressCode>
53 auto operation = std::make_unique<FMulAddIntrinsicOperation>(multiplier.
Type());
std::unique_ptr< Operation > copy() const override
static std::unique_ptr< ThreeAddressCode > CreateTac(const Variable &multiplier, const Variable &multiplicand, const Variable &summand)
static rvsdg::SimpleNode & CreateNode(rvsdg::Output &multiplier, rvsdg::Output &multiplicand, rvsdg::Output &summand)
std::string debug_string() const override
static void CheckType(const std::shared_ptr< const rvsdg::Type > &type)
bool operator==(const Operation &other) const noexcept override
~FMulAddIntrinsicOperation() noexcept override
static std::unique_ptr< llvm::ThreeAddressCode > create(std::unique_ptr< rvsdg::SimpleOperation > operation, const std::vector< const Variable * > &operands)
const std::shared_ptr< const jlm::rvsdg::Type > Type() const noexcept
const std::shared_ptr< const rvsdg::Type > & Type() const noexcept
SimpleOperation(std::vector< std::shared_ptr< const jlm::rvsdg::Type >> operands, std::vector< std::shared_ptr< const jlm::rvsdg::Type >> results)
Global memory state passed between functions.
static std::string type(const Node *n)