|
Jlm
|
#include <slice.hpp>


Static Public Member Functions | |
| static std::optional< std::vector< Output * > > | normalizeIdempotent (const BitSliceOperation &operation, const std::vector< Output * > &operands) |
| static std::optional< std::vector< Output * > > | distributeSlice (const BitSliceOperation &operation, const std::vector< Output * > &operands) |
| static std::optional< std::vector< Output * > > | narrowSlice (const BitSliceOperation &operation, const std::vector< Output * > &operands) |
| static std::optional< std::vector< Output * > > | foldConstant (const BitSliceOperation &operation, const std::vector< Output * > &operands) |
Private Attributes | |
| size_t | low_ |
|
overridedefaultnoexcept |
|
overridevirtual |
Implements jlm::rvsdg::Operation.
|
overridevirtual |
Implements jlm::rvsdg::Operation.
|
static |
Distribute a BitSliceOperation node over a BitConcatOperation node:
c = BitConcatOperation x1[8] x2[8] s = BitSliceOperation[4:12] c => s1 = BitSliceOperation[4:8] x1 s2 = BitSliceOperation[0:4] x2 s = BitConcatOperation s1 s2
| operation | The BitSliceOperation on which the transformation is performed. |
| operands | The operands of the BitSliceOperation node. |
|
static |
Performs constant folding by statically evaluating the constant operand and replacing the operations result with the resulting constant.
| operation | The BitSliceOperation on which the transformation is performed. |
| operands | The operand of the BitSliceOperation node. |
|
inlinenoexcept |
|
inlinenoexcept |
|
static |
Narrow a BitSliceOperation node preceded by another BitSliceOperation node:
b1 = BitSliceOperation[3:10] x b2 = BitSliceOperation[1:4] b1 => b2 = BitSliceOperation[4:7] x
| operation | The BitSliceOperation on which the transformation is performed. |
| operands | The operands of the BitSliceOperation node. |
|
static |
Removes the BitSliceOperation if its slicing boundaries align with the size of the operand, i.e., low == 0 and high = numBits.
| operation | The BitSliceOperation on which the transformation is performed. |
| operands | The operands of the BitSliceOperation node. |
|
overridevirtualnoexcept |
Implements jlm::rvsdg::Operation.