77std::optional<std::vector<Output *>>
80 const std::vector<Output *> &
operands)
105 return std::vector({ &
result });
122std::optional<std::vector<Output *>>
125 const std::vector<Output *> &
operands)
~BitBinaryOperation() noexcept override
static std::optional< std::vector< Output * > > foldConstants(const BitBinaryOperation &operation, const std::vector< Output * > &operands)
virtual BitValueRepresentation reduce_constants(const BitValueRepresentation &arg1, const BitValueRepresentation &arg2) const =0
jlm::rvsdg::Output * reduce_operand_pair(binop_reduction_path_t path, jlm::rvsdg::Output *arg1, jlm::rvsdg::Output *arg2) const override
static std::optional< std::vector< Output * > > foldConstants(const BitCompareOperation &operation, const std::vector< Output * > &operands)
jlm::rvsdg::Output * reduce_operand_pair(binop_reduction_path_t path, jlm::rvsdg::Output *arg1, jlm::rvsdg::Output *arg2) const override
const BitType & type() const noexcept
virtual compare_result reduce_constants(const BitValueRepresentation &arg1, const BitValueRepresentation &arg2) const =0
~BitCompareOperation() noexcept override
static Output & create(Region ®ion, BitValueRepresentation value)
size_t nbits() const noexcept
~BitUnaryOperation() noexcept override
static BitValueRepresentation repeat(size_t nbits, char bit)
const std::shared_ptr< const rvsdg::Type > & result(size_t index) const noexcept
static const binop_reduction_path_t binop_reduction_constants
static std::vector< jlm::rvsdg::Output * > operands(const Node *node)
size_t binop_reduction_path_t
NodeType * TryGetOwnerNode(const rvsdg::Input &input) noexcept
Checks if this is an input to a node of specified type.
Output & traceOutputIntraProcedurally(Output &output)
static const binop_reduction_path_t binop_reduction_none