20 if (rvsdg::IsOwnerNodeOperation<BitConstantOperation>(tracedOperand))
32 auto [constantNode, constantOperation] =
33 rvsdg::TryGetSimpleNodeAndOptionalOp<BitConstantOperation>(tracedOperand);
35 *constantNode->region(),
47 const
jlm::rvsdg::
Output * arg2) const noexcept
52 if (rvsdg::IsOwnerNodeOperation<BitConstantOperation>(tracedOperand1)
53 && rvsdg::IsOwnerNodeOperation<BitConstantOperation>(tracedOperand2))
68 auto [constantNode1, constantOperation1] =
69 rvsdg::TryGetSimpleNodeAndOptionalOp<BitConstantOperation>(tracedOperand1);
72 auto [constantNode2, constantOperation2] =
73 rvsdg::TryGetSimpleNodeAndOptionalOp<BitConstantOperation>(tracedOperand2);
88 const
jlm::rvsdg::
Output * arg2) const noexcept
91 auto [constantNode1, constantOperation1] =
92 rvsdg::TryGetSimpleNodeAndOptionalOp<BitConstantOperation>(tracedOperand1);
94 auto [constantNode2, constantOperation2] =
95 rvsdg::TryGetSimpleNodeAndOptionalOp<BitConstantOperation>(tracedOperand2);
98 ? constantOperation1->value()
101 ? constantOperation2->value()
104 switch (reduce_constants(arg1_repr, arg2_repr))
~BitBinaryOperation() noexcept override
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
jlm::rvsdg::Output * reduce_operand_pair(binop_reduction_path_t path, jlm::rvsdg::Output *arg1, jlm::rvsdg::Output *arg2) const override
~BitCompareOperation() noexcept override
static Output & create(Region ®ion, BitValueRepresentation value)
~BitUnaryOperation() noexcept override
jlm::rvsdg::Output * reduce_operand(unop_reduction_path_t path, jlm::rvsdg::Output *arg) const override
virtual BitValueRepresentation reduce_constant(const BitValueRepresentation &arg) const =0
static BitValueRepresentation repeat(size_t nbits, char bit)
rvsdg::Region * region() const noexcept
size_t unop_reduction_path_t
static const binop_reduction_path_t binop_reduction_constants
static std::string type(const Node *n)
size_t binop_reduction_path_t
static const unop_reduction_path_t unop_reduction_constant
static const unop_reduction_path_t unop_reduction_none
Output & traceOutputIntraProcedurally(Output &output)
static const binop_reduction_path_t binop_reduction_none