6 #ifndef JLM_RVSDG_BITSTRING_ARITHMETIC_IMPL_HPP
7 #define JLM_RVSDG_BITSTRING_ARITHMETIC_IMPL_HPP
15 template<
typename reduction, const
char * name>
19 template<
typename reduction, const
char * name>
27 template<
typename reduction, const
char * name>
31 return reduction{}(arg);
34 template<
typename reduction, const
char * name>
41 template<
typename reduction, const
char * name>
42 std::unique_ptr<Operation>
45 return std::make_unique<MakeBitUnaryOperation>(*
this);
48 template<
typename reduction, const
char * name>
49 std::unique_ptr<BitUnaryOperation>
52 return std::make_unique<MakeBitUnaryOperation>(nbits);
55 template<
typename reduction, const
char * name, enum BinaryOperation::flags opflags>
59 template<
typename reduction, const
char * name, enum BinaryOperation::flags opflags>
67 template<
typename reduction, const
char * name, enum BinaryOperation::flags opflags>
73 return reduction{}(arg1, arg2);
76 template<
typename reduction, const
char * name, enum BinaryOperation::flags opflags>
83 template<
typename reduction, const
char * name, enum BinaryOperation::flags opflags>
90 template<
typename reduction, const
char * name, enum BinaryOperation::flags opflags>
91 std::unique_ptr<Operation>
94 return std::make_unique<MakeBitBinaryOperation>(*
this);
97 template<
typename reduction, const
char * name, enum BinaryOperation::flags opflags>
98 std::unique_ptr<BitBinaryOperation>
101 return std::make_unique<MakeBitBinaryOperation>(nbits);
const BitType & type() const noexcept
const BitType & type() const noexcept
std::unique_ptr< Operation > copy() const override
std::string debug_string() const override
bool operator==(const Operation &other) const noexcept override
~MakeBitBinaryOperation() noexcept override
BitValueRepresentation reduce_constants(const BitValueRepresentation &arg1, const BitValueRepresentation &arg2) const override
enum BinaryOperation::flags flags() const noexcept override
std::unique_ptr< BitBinaryOperation > create(size_t nbits) const override
~MakeBitUnaryOperation() noexcept override
BitValueRepresentation reduce_constant(const BitValueRepresentation &arg) const override
std::unique_ptr< BitUnaryOperation > create(size_t nbits) const override
bool operator==(const Operation &other) const noexcept override
std::unique_ptr< Operation > copy() const override
std::string debug_string() const override
static std::string type(const Node *n)
static std::string strfmt(Args... args)