6 #ifndef JLM_LLVM_IR_OPERATORS_INTEGEROPERATIONS_HPP
7 #define JLM_LLVM_IR_OPERATORS_INTEGEROPERATIONS_HPP
34 std::unique_ptr<Operation>
35 copy()
const override;
41 operator==(
const Operation & other)
const noexcept
override;
52 return rvsdg::CreateOpNode<IntegerConstantOperation>(region, std::move(representation));
58 return Create(region, { numBits, value });
74 const std::
size_t numArgumentBits,
75 const std::
size_t numResultBits) noexcept
84 return *util::assertedCast<const rvsdg::BitType>(
argument(0).get());
103 operator==(
const Operation & other)
const noexcept
override;
108 [[nodiscard]] std::unique_ptr<Operation>
109 copy()
const override;
113 const noexcept
override;
120 flags() const noexcept override;
138 operator==(
const Operation & other)
const noexcept
override;
143 [[nodiscard]] std::unique_ptr<Operation>
144 copy()
const override;
148 const noexcept
override;
155 flags() const noexcept override;
173 operator==(
const Operation & other)
const noexcept
override;
178 [[nodiscard]] std::unique_ptr<Operation>
179 copy()
const override;
183 const noexcept
override;
190 flags() const noexcept override;
208 operator==(
const Operation & other)
const noexcept
override;
213 [[nodiscard]] std::unique_ptr<Operation>
214 copy()
const override;
218 const noexcept
override;
225 flags() const noexcept override;
243 operator==(
const Operation & other)
const noexcept
override;
248 [[nodiscard]] std::unique_ptr<Operation>
249 copy()
const override;
253 const noexcept
override;
260 flags() const noexcept override;
278 operator==(
const Operation & other)
const noexcept
override;
283 [[nodiscard]] std::unique_ptr<Operation>
284 copy()
const override;
288 const noexcept
override;
295 flags() const noexcept override;
313 operator==(
const Operation & other)
const noexcept
override;
318 [[nodiscard]] std::unique_ptr<Operation>
319 copy()
const override;
323 const noexcept
override;
330 flags() const noexcept override;
348 operator==(
const Operation & other)
const noexcept
override;
353 [[nodiscard]] std::unique_ptr<Operation>
354 copy()
const override;
358 const noexcept
override;
365 flags() const noexcept override;
383 operator==(
const Operation & other)
const noexcept
override;
388 [[nodiscard]] std::unique_ptr<Operation>
389 copy()
const override;
393 const noexcept
override;
400 flags() const noexcept override;
418 operator==(
const Operation & other)
const noexcept
override;
423 [[nodiscard]] std::unique_ptr<Operation>
424 copy()
const override;
428 const noexcept
override;
435 flags() const noexcept override;
453 operator==(
const Operation & other)
const noexcept
override;
458 [[nodiscard]] std::unique_ptr<Operation>
459 copy()
const override;
463 const noexcept
override;
470 flags() const noexcept override;
488 operator==(
const Operation & other)
const noexcept
override;
493 [[nodiscard]] std::unique_ptr<Operation>
494 copy()
const override;
498 const noexcept
override;
505 flags() const noexcept override;
523 operator==(
const Operation & other)
const noexcept
override;
528 [[nodiscard]] std::unique_ptr<Operation>
529 copy()
const override;
533 const noexcept
override;
540 flags() const noexcept override;
558 operator==(
const Operation & other)
const noexcept
override;
563 [[nodiscard]] std::unique_ptr<Operation>
564 copy()
const override;
568 const noexcept
override;
575 flags() const noexcept override;
593 operator==(
const Operation & other)
const noexcept
override;
598 [[nodiscard]] std::unique_ptr<Operation>
599 copy()
const override;
603 const noexcept
override;
610 flags() const noexcept override;
628 operator==(
const Operation & other)
const noexcept
override;
633 [[nodiscard]] std::unique_ptr<Operation>
634 copy()
const override;
638 const noexcept
override;
645 flags() const noexcept override;
663 operator==(
const Operation & other)
const noexcept
override;
668 [[nodiscard]] std::unique_ptr<Operation>
669 copy()
const override;
673 const noexcept
override;
680 flags() const noexcept override;
698 operator==(
const Operation & other)
const noexcept
override;
703 [[nodiscard]] std::unique_ptr<Operation>
704 copy()
const override;
708 const noexcept
override;
715 flags() const noexcept override;
733 operator==(
const Operation & other)
const noexcept
override;
738 [[nodiscard]] std::unique_ptr<Operation>
739 copy()
const override;
743 const noexcept
override;
750 flags() const noexcept override;
768 operator==(
const Operation & other)
const noexcept
override;
773 [[nodiscard]] std::unique_ptr<Operation>
774 copy()
const override;
778 const noexcept
override;
785 flags() const noexcept override;
803 operator==(
const Operation & other)
const noexcept
override;
808 [[nodiscard]] std::unique_ptr<Operation>
809 copy()
const override;
813 const noexcept
override;
820 flags() const noexcept override;
838 operator==(
const Operation & other)
const noexcept
override;
843 [[nodiscard]] std::unique_ptr<Operation>
844 copy()
const override;
848 const noexcept
override;
855 flags() const noexcept override;
873 operator==(
const Operation & other)
const noexcept
override;
878 [[nodiscard]] std::unique_ptr<Operation>
879 copy()
const override;
883 const noexcept
override;
890 flags() const noexcept override;
~IntegerAShrOperation() noexcept override
rvsdg::Output * reduce_operand_pair(rvsdg::binop_reduction_path_t path, rvsdg::Output *op1, rvsdg::Output *op2) const override
bool operator==(const Operation &other) const noexcept override
rvsdg::binop_reduction_path_t can_reduce_operand_pair(const rvsdg::Output *op1, const rvsdg::Output *op2) const noexcept override
enum flags flags() const noexcept override
~IntegerAddOperation() noexcept override
std::string debug_string() const override
std::unique_ptr< Operation > copy() const override
~IntegerAndOperation() noexcept override
const rvsdg::BitType & Type() const noexcept
~IntegerBinaryOperation() noexcept override
static rvsdg::Node & Create(rvsdg::Region ®ion, IntegerValueRepresentation representation)
~IntegerConstantOperation() override
bool operator==(const Operation &other) const noexcept override
IntegerValueRepresentation Representation_
IntegerConstantOperation(IntegerValueRepresentation representation)
std::unique_ptr< Operation > copy() const override
const IntegerValueRepresentation & Representation() const noexcept
static rvsdg::Node & Create(rvsdg::Region ®ion, std::size_t numBits, std::int64_t value)
std::string debug_string() const override
~IntegerEqOperation() noexcept override
~IntegerLShrOperation() noexcept override
~IntegerMulOperation() noexcept override
~IntegerNeOperation() noexcept override
~IntegerOrOperation() noexcept override
~IntegerSDivOperation() noexcept override
~IntegerSRemOperation() noexcept override
~IntegerSgeOperation() noexcept override
~IntegerSgtOperation() noexcept override
~IntegerShlOperation() noexcept override
~IntegerSleOperation() noexcept override
~IntegerSltOperation() noexcept override
~IntegerSubOperation() noexcept override
~IntegerUDivOperation() noexcept override
~IntegerURemOperation() noexcept override
~IntegerUgeOperation() noexcept override
~IntegerUgtOperation() noexcept override
~IntegerUleOperation() noexcept override
~IntegerUltOperation() noexcept override
~IntegerXorOperation() noexcept override
BinaryOperation(const std::vector< std::shared_ptr< const jlm::rvsdg::Type >> operands, std::shared_ptr< const jlm::rvsdg::Type > result)
static std::shared_ptr< const BitType > Create(std::size_t nbits)
Creates bit type of specified width.
Nullary operator (operator taking no formal arguments)
NullaryOperation(std::shared_ptr< const Type > resultType)
Represent acyclic RVSDG subgraphs.
const std::shared_ptr< const rvsdg::Type > & argument(size_t index) const noexcept
Global memory state passed between functions.
size_t binop_reduction_path_t