28 uint64_t udiv = intVal.getZExtValue();
29 uint64_t sdiv = std::abs(intVal.getSExtValue());
36template <
typename OpTy>
42 setResultDivs(op.getResult(), lhsDiv.getUnion(rhsDiv));
47 auto constAttr = dyn_cast_if_present<IntegerAttr>(getValue());
50 const APInt &value = constAttr.getValue();
51 uint64_t udiv = value.getZExtValue();
52 uint64_t sdiv = std::abs(value.getSExtValue());
91 uint64_t mulUDiv = lhsDivisibility.udiv() * rhsDivisibility.udiv();
92 uint64_t mulSDiv = lhsDivisibility.sdiv() * rhsDivisibility.sdiv();
105 uint64_t divUDiv = lhsDivisibility.udiv() % intVal.getZExtValue() == 0
106 ? lhsDivisibility.udiv() / intVal.getZExtValue()
109 lhsDivisibility.sdiv() % std::abs(intVal.getSExtValue()) == 0
110 ? lhsDivisibility.sdiv() / std::abs(intVal.getSExtValue())
121 setResultDivs(getResult(), trueDiv.getUnion(falseDiv));
static ConstantIntDivisibility getDivisibilityOfOperand(Value v, IntegerDivisibility divisibility)
static void inferBinaryGCDResultDivisibility(OpTy op, ArrayRef< IntegerDivisibility > argDivs, SetIntDivisibilityFn setResultDivs)
Statically known divisibility information for an integer SSA value.
This lattice value represents the integer divisibility of an SSA value.
bool isUninitialized() const
const ConstantIntDivisibility & getValue() const
This class represents an instance of an SSA value in the MLIR system, representing a computable value...
Include the generated interface declarations.
bool matchPattern(Value value, const Pattern &pattern)
Entry point for matching a pattern over a Value.
detail::constant_int_value_binder m_ConstantInt(IntegerAttr::ValueType *bind_value)
Matches a constant holding a scalar/vector/tensor integer (splat) and writes the integer value to bin...
llvm::function_ref< void(Value, const ConstantIntDivisibility &)> SetIntDivisibilityFn
The type of the setResultDivs callback provided to ops implementing InferIntDivisibilityOpInterface.