6#ifndef JLM_RVSDG_BITSTRING_ARITHMETIC_IMPL_HPP
7#define JLM_RVSDG_BITSTRING_ARITHMETIC_IMPL_HPP
15template<
typename reduction, const
char * name>
19template<
typename reduction, const
char * name>
27template<
typename reduction, const
char * name>
31 return reduction{}(arg);
34template<
typename reduction, const
char * name>
41template<
typename reduction, const
char * name>
42std::unique_ptr<Operation>
45 return std::make_unique<MakeBitUnaryOperation>(*
this);
48template<
typename reduction, const
char * name>
49std::unique_ptr<BitUnaryOperation>
52 return std::make_unique<MakeBitUnaryOperation>(nbits);
55template<
typename reduction, const
char * name, enum BinaryOperation::flags opflags>
59template<
typename reduction, const
char * name, enum BinaryOperation::flags opflags>
67template<
typename reduction, const
char * name, enum BinaryOperation::flags opflags>
76template<
typename reduction, const
char * name, enum BinaryOperation::flags opflags>
83template<
typename reduction, const
char * name, enum BinaryOperation::flags opflags>
90template<
typename reduction, const
char * name, enum BinaryOperation::flags opflags>
91std::unique_ptr<Operation>
94 return std::make_unique<MakeBitBinaryOperation>(*
this);
97template<
typename reduction, const
char * name, enum BinaryOperation::flags opflags>
98std::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
NodeType * TryGetOwnerNode(const rvsdg::Input &input) noexcept
Checks if this is an input to a node of specified type.
static std::string strfmt(Args... args)