13 std::unique_ptr<rvsdg::Operation>
16 return std::make_unique<IntegerConstantOperation>(*
this);
43 return addOperation && addOperation->
Type() == Type();
52 std::unique_ptr<rvsdg::Operation>
55 return std::make_unique<IntegerAddOperation>(*
this);
86 return subOperation && subOperation->
Type() == Type();
95 std::unique_ptr<rvsdg::Operation>
98 return std::make_unique<IntegerSubOperation>(*
this);
129 return mulOperation && mulOperation->
Type() == Type();
138 std::unique_ptr<rvsdg::Operation>
141 return std::make_unique<IntegerMulOperation>(*
this);
172 return sdivOperation && sdivOperation->
Type() == Type();
181 std::unique_ptr<rvsdg::Operation>
184 return std::make_unique<IntegerSDivOperation>(*
this);
215 return udivOperation && udivOperation->
Type() == Type();
224 std::unique_ptr<rvsdg::Operation>
227 return std::make_unique<IntegerUDivOperation>(*
this);
258 return smodOperation && smodOperation->
Type() == Type();
267 std::unique_ptr<rvsdg::Operation>
270 return std::make_unique<IntegerSRemOperation>(*
this);
301 return umodOperation && umodOperation->
Type() == Type();
310 std::unique_ptr<rvsdg::Operation>
313 return std::make_unique<IntegerURemOperation>(*
this);
344 return ashrOperation && ashrOperation->
Type() == Type();
353 std::unique_ptr<rvsdg::Operation>
356 return std::make_unique<IntegerAShrOperation>(*
this);
387 return shlOperation && shlOperation->
Type() == Type();
396 std::unique_ptr<rvsdg::Operation>
399 return std::make_unique<IntegerShlOperation>(*
this);
430 return shrOperation && shrOperation->
Type() == Type();
439 std::unique_ptr<rvsdg::Operation>
442 return std::make_unique<IntegerLShrOperation>(*
this);
473 return andOperation && andOperation->
Type() == Type();
482 std::unique_ptr<rvsdg::Operation>
485 return std::make_unique<IntegerAndOperation>(*
this);
516 return orOperation && orOperation->
Type() == Type();
525 std::unique_ptr<rvsdg::Operation>
528 return std::make_unique<IntegerOrOperation>(*
this);
559 return xorOperation && xorOperation->
Type() == Type();
568 std::unique_ptr<rvsdg::Operation>
571 return std::make_unique<IntegerXorOperation>(*
this);
602 return eqOperation && eqOperation->
result(0) == result(0);
611 std::unique_ptr<rvsdg::Operation>
614 return std::make_unique<IntegerEqOperation>(*
this);
645 return neOperation && neOperation->
result(0) == result(0);
654 std::unique_ptr<rvsdg::Operation>
657 return std::make_unique<IntegerNeOperation>(*
this);
688 return sgeOperation && sgeOperation->
result(0) == result(0);
697 std::unique_ptr<rvsdg::Operation>
700 return std::make_unique<IntegerSgeOperation>(*
this);
731 return sgtOperation && sgtOperation->
result(0) == result(0);
740 std::unique_ptr<rvsdg::Operation>
743 return std::make_unique<IntegerSgtOperation>(*
this);
774 return sleOperation && sleOperation->
result(0) == result(0);
783 std::unique_ptr<rvsdg::Operation>
786 return std::make_unique<IntegerSleOperation>(*
this);
817 return sltOperation && sltOperation->
result(0) == result(0);
826 std::unique_ptr<rvsdg::Operation>
829 return std::make_unique<IntegerSltOperation>(*
this);
860 return ugeOperation && ugeOperation->
result(0) == result(0);
869 std::unique_ptr<rvsdg::Operation>
872 return std::make_unique<IntegerUgeOperation>(*
this);
903 return ugtOperation && ugtOperation->
result(0) == result(0);
912 std::unique_ptr<rvsdg::Operation>
915 return std::make_unique<IntegerUgtOperation>(*
this);
946 return uleOperation && uleOperation->
result(0) == result(0);
955 std::unique_ptr<rvsdg::Operation>
958 return std::make_unique<IntegerUleOperation>(*
this);
989 return ultOperation && ultOperation->
result(0) == result(0);
998 std::unique_ptr<rvsdg::Operation>
1001 return std::make_unique<IntegerUltOperation>(*
this);
std::unique_ptr< Operation > copy() const override
rvsdg::binop_reduction_path_t can_reduce_operand_pair(const rvsdg::Output *op1, const rvsdg::Output *op2) const noexcept override
std::string debug_string() const override
enum flags flags() const noexcept override
rvsdg::Output * reduce_operand_pair(rvsdg::binop_reduction_path_t path, rvsdg::Output *op1, rvsdg::Output *op2) const override
~IntegerAShrOperation() noexcept override
rvsdg::Output * reduce_operand_pair(rvsdg::binop_reduction_path_t path, rvsdg::Output *op1, rvsdg::Output *op2) const 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
std::string debug_string() const override
std::unique_ptr< Operation > copy() const override
rvsdg::Output * reduce_operand_pair(rvsdg::binop_reduction_path_t path, rvsdg::Output *op1, rvsdg::Output *op2) const override
std::unique_ptr< Operation > copy() const override
enum flags flags() const noexcept override
std::string debug_string() const override
rvsdg::binop_reduction_path_t can_reduce_operand_pair(const rvsdg::Output *op1, const rvsdg::Output *op2) const noexcept override
~IntegerAndOperation() noexcept override
const rvsdg::BitType & Type() const noexcept
~IntegerBinaryOperation() noexcept override
~IntegerConstantOperation() override
bool operator==(const Operation &other) const noexcept override
std::unique_ptr< Operation > copy() const override
const IntegerValueRepresentation & Representation() const noexcept
std::string debug_string() const override
enum flags flags() const noexcept override
std::string debug_string() const override
std::unique_ptr< Operation > copy() const override
rvsdg::binop_reduction_path_t can_reduce_operand_pair(const rvsdg::Output *op1, const rvsdg::Output *op2) const noexcept override
rvsdg::Output * reduce_operand_pair(rvsdg::binop_reduction_path_t path, rvsdg::Output *op1, rvsdg::Output *op2) const override
~IntegerEqOperation() noexcept override
~IntegerLShrOperation() noexcept override
std::string debug_string() const override
std::unique_ptr< Operation > copy() const override
enum flags flags() const noexcept override
rvsdg::binop_reduction_path_t can_reduce_operand_pair(const rvsdg::Output *op1, const rvsdg::Output *op2) const noexcept override
rvsdg::Output * reduce_operand_pair(rvsdg::binop_reduction_path_t path, rvsdg::Output *op1, rvsdg::Output *op2) const override
~IntegerMulOperation() noexcept override
std::string debug_string() const override
rvsdg::Output * reduce_operand_pair(rvsdg::binop_reduction_path_t path, rvsdg::Output *op1, rvsdg::Output *op2) const override
std::unique_ptr< Operation > copy() const 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
std::string debug_string() const override
std::unique_ptr< Operation > copy() const override
rvsdg::Output * reduce_operand_pair(rvsdg::binop_reduction_path_t path, rvsdg::Output *op1, rvsdg::Output *op2) const override
enum flags flags() const noexcept override
~IntegerNeOperation() noexcept override
rvsdg::binop_reduction_path_t can_reduce_operand_pair(const rvsdg::Output *op1, const rvsdg::Output *op2) const noexcept override
std::unique_ptr< Operation > copy() const override
rvsdg::Output * reduce_operand_pair(rvsdg::binop_reduction_path_t path, rvsdg::Output *op1, rvsdg::Output *op2) const override
~IntegerOrOperation() noexcept override
enum flags flags() const noexcept override
std::string debug_string() const override
rvsdg::binop_reduction_path_t can_reduce_operand_pair(const rvsdg::Output *op1, const rvsdg::Output *op2) const noexcept override
std::string debug_string() const override
rvsdg::binop_reduction_path_t can_reduce_operand_pair(const rvsdg::Output *op1, const rvsdg::Output *op2) const noexcept override
~IntegerSDivOperation() noexcept override
rvsdg::Output * reduce_operand_pair(rvsdg::binop_reduction_path_t path, rvsdg::Output *op1, rvsdg::Output *op2) const override
std::unique_ptr< Operation > copy() const override
enum flags flags() const noexcept override
rvsdg::binop_reduction_path_t can_reduce_operand_pair(const rvsdg::Output *op1, const rvsdg::Output *op2) const noexcept override
std::string debug_string() const override
rvsdg::Output * reduce_operand_pair(rvsdg::binop_reduction_path_t path, rvsdg::Output *op1, rvsdg::Output *op2) const override
~IntegerSRemOperation() noexcept override
std::unique_ptr< Operation > copy() const override
enum flags flags() const noexcept override
rvsdg::Output * reduce_operand_pair(rvsdg::binop_reduction_path_t path, rvsdg::Output *op1, rvsdg::Output *op2) const 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
std::unique_ptr< Operation > copy() const override
std::string debug_string() const override
~IntegerSgeOperation() noexcept override
rvsdg::Output * reduce_operand_pair(rvsdg::binop_reduction_path_t path, rvsdg::Output *op1, rvsdg::Output *op2) const override
std::string debug_string() const override
std::unique_ptr< Operation > copy() const override
enum flags flags() const noexcept override
rvsdg::binop_reduction_path_t can_reduce_operand_pair(const rvsdg::Output *op1, const rvsdg::Output *op2) const noexcept override
~IntegerSgtOperation() noexcept override
std::unique_ptr< Operation > copy() const override
~IntegerShlOperation() noexcept override
enum flags flags() const noexcept override
rvsdg::binop_reduction_path_t can_reduce_operand_pair(const rvsdg::Output *op1, const rvsdg::Output *op2) const noexcept override
std::string debug_string() const override
rvsdg::Output * reduce_operand_pair(rvsdg::binop_reduction_path_t path, rvsdg::Output *op1, rvsdg::Output *op2) const override
std::string debug_string() const override
enum flags flags() const noexcept override
~IntegerSleOperation() noexcept override
std::unique_ptr< Operation > copy() const override
rvsdg::binop_reduction_path_t can_reduce_operand_pair(const rvsdg::Output *op1, const rvsdg::Output *op2) const noexcept override
rvsdg::Output * reduce_operand_pair(rvsdg::binop_reduction_path_t path, rvsdg::Output *op1, rvsdg::Output *op2) const override
std::unique_ptr< Operation > copy() const override
rvsdg::binop_reduction_path_t can_reduce_operand_pair(const rvsdg::Output *op1, const rvsdg::Output *op2) const noexcept override
rvsdg::Output * reduce_operand_pair(rvsdg::binop_reduction_path_t path, rvsdg::Output *op1, rvsdg::Output *op2) const override
std::string debug_string() const override
enum flags flags() const noexcept override
~IntegerSltOperation() noexcept override
~IntegerSubOperation() noexcept override
rvsdg::binop_reduction_path_t can_reduce_operand_pair(const rvsdg::Output *op1, const rvsdg::Output *op2) const noexcept override
rvsdg::Output * reduce_operand_pair(rvsdg::binop_reduction_path_t path, rvsdg::Output *op1, rvsdg::Output *op2) const override
std::string debug_string() const override
enum flags flags() const noexcept override
std::unique_ptr< Operation > copy() const override
std::string debug_string() const override
~IntegerUDivOperation() 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
std::unique_ptr< Operation > copy() const override
rvsdg::Output * reduce_operand_pair(rvsdg::binop_reduction_path_t path, rvsdg::Output *op1, rvsdg::Output *op2) const override
std::unique_ptr< Operation > copy() const override
std::string debug_string() const override
rvsdg::Output * reduce_operand_pair(rvsdg::binop_reduction_path_t path, rvsdg::Output *op1, rvsdg::Output *op2) const override
enum flags flags() const noexcept override
~IntegerURemOperation() noexcept override
rvsdg::binop_reduction_path_t can_reduce_operand_pair(const rvsdg::Output *op1, const rvsdg::Output *op2) const noexcept override
std::string debug_string() const override
std::unique_ptr< Operation > copy() const override
rvsdg::binop_reduction_path_t can_reduce_operand_pair(const rvsdg::Output *op1, const rvsdg::Output *op2) const noexcept override
rvsdg::Output * reduce_operand_pair(rvsdg::binop_reduction_path_t path, rvsdg::Output *op1, rvsdg::Output *op2) const override
~IntegerUgeOperation() noexcept override
enum flags flags() const noexcept override
enum flags flags() const noexcept override
rvsdg::Output * reduce_operand_pair(rvsdg::binop_reduction_path_t path, rvsdg::Output *op1, rvsdg::Output *op2) const override
rvsdg::binop_reduction_path_t can_reduce_operand_pair(const rvsdg::Output *op1, const rvsdg::Output *op2) const noexcept override
std::string debug_string() const override
std::unique_ptr< Operation > copy() const override
~IntegerUgtOperation() noexcept override
rvsdg::Output * reduce_operand_pair(rvsdg::binop_reduction_path_t path, rvsdg::Output *op1, rvsdg::Output *op2) const override
enum flags flags() const noexcept override
std::string debug_string() const override
~IntegerUleOperation() noexcept override
std::unique_ptr< Operation > copy() const override
rvsdg::binop_reduction_path_t can_reduce_operand_pair(const rvsdg::Output *op1, const rvsdg::Output *op2) const noexcept override
std::unique_ptr< Operation > copy() const override
enum flags flags() const noexcept override
std::string debug_string() const override
~IntegerUltOperation() noexcept override
rvsdg::binop_reduction_path_t can_reduce_operand_pair(const rvsdg::Output *op1, const rvsdg::Output *op2) const noexcept override
rvsdg::Output * reduce_operand_pair(rvsdg::binop_reduction_path_t path, rvsdg::Output *op1, rvsdg::Output *op2) const override
std::string debug_string() const override
rvsdg::Output * reduce_operand_pair(rvsdg::binop_reduction_path_t path, rvsdg::Output *op1, rvsdg::Output *op2) const override
~IntegerXorOperation() noexcept override
enum flags flags() const noexcept override
std::unique_ptr< Operation > copy() const override
rvsdg::binop_reduction_path_t can_reduce_operand_pair(const rvsdg::Output *op1, const rvsdg::Output *op2) const noexcept override
const std::shared_ptr< const rvsdg::Type > & result(size_t index) const noexcept
Global memory state passed between functions.
size_t binop_reduction_path_t
static const binop_reduction_path_t binop_reduction_none
static std::string strfmt(Args... args)