17 return operation && *operation->
getOperandType() == *getOperandType();
26std::unique_ptr<rvsdg::Operation>
29 return std::make_unique<SAddWithOverflowOperation>(*
this);
35 if (!is<const rvsdg::BitType>(type) && !isVectorOf<const rvsdg::BitType>(*type))
37 throw std::runtime_error(
"SAddWithOverflowOperation::checkType: Expected integer type.");
47 return operation && *operation->
getOperandType() == *getOperandType();
56std::unique_ptr<rvsdg::Operation>
59 return std::make_unique<UAddWithOverflowOperation>(*
this);
65 if (!is<const rvsdg::BitType>(type) && !isVectorOf<const rvsdg::BitType>(*type))
67 throw std::runtime_error(
"UAddWithOverflowOperation::checkType: Expected integer type.");
77 return operation && *operation->
getOperandType() == *getOperandType();
86std::unique_ptr<rvsdg::Operation>
89 return std::make_unique<SSubWithOverflowOperation>(*
this);
95 if (!is<const rvsdg::BitType>(type) && !isVectorOf<const rvsdg::BitType>(*type))
97 throw std::runtime_error(
"SSubWithOverflowOperation::checkType: Expected integer type.");
107 return operation && *operation->
getOperandType() == *getOperandType();
116std::unique_ptr<rvsdg::Operation>
119 return std::make_unique<SMulWithOverflowOperation>(*
this);
125 if (!is<const rvsdg::BitType>(type) && !isVectorOf<const rvsdg::BitType>(*type))
127 throw std::runtime_error(
"SMulWithOverflowOperation::checkType: Expected integer type.");
137 return operation && *operation->
getOperandType() == *getOperandType();
146std::unique_ptr<rvsdg::Operation>
149 return std::make_unique<UMulWithOverflowOperation>(*
this);
155 if (!is<const rvsdg::BitType>(type) && !isVectorOf<const rvsdg::BitType>(*type))
157 throw std::runtime_error(
"UMulWithOverflowOperation::checkType: Expected integer type.");
static void checkOperandType(const std::shared_ptr< const rvsdg::Type > &type)
std::string debug_string() const override
~SAddWithOverflowOperation() noexcept override
std::shared_ptr< const rvsdg::Type > getOperandType() const noexcept
std::unique_ptr< Operation > copy() const override
std::unique_ptr< Operation > copy() const override
std::shared_ptr< const rvsdg::Type > getOperandType() const noexcept
std::string debug_string() const override
~SMulWithOverflowOperation() noexcept override
static void checkOperandType(const std::shared_ptr< const rvsdg::Type > &type)
std::unique_ptr< Operation > copy() const override
~SSubWithOverflowOperation() noexcept override
static void checkOperandType(const std::shared_ptr< const rvsdg::Type > &type)
std::shared_ptr< const rvsdg::Type > getOperandType() const noexcept
std::string debug_string() const override
static void checkOperandType(const std::shared_ptr< const rvsdg::Type > &type)
std::string debug_string() const override
std::shared_ptr< const rvsdg::Type > getOperandType() const noexcept
~UAddWithOverflowOperation() noexcept override
std::unique_ptr< Operation > copy() const override
std::shared_ptr< const rvsdg::Type > getOperandType() const noexcept
std::string debug_string() const override
static void checkOperandType(const std::shared_ptr< const rvsdg::Type > &type)
std::unique_ptr< Operation > copy() const override
~UMulWithOverflowOperation() noexcept override
Global memory state passed between functions.
static std::string strfmt(Args... args)