|
MLIR 22.0.0git
|
Namespaces | |
| namespace | detail |
Typedefs | |
| using | InferRangeFn |
| Function that performs inference on an array of ConstantIntRanges, abstracted away here to permit writing the function that handles both 64- and 32-bit index types. | |
| using | InferIntegerValueRangeFn |
| Function that performs inferrence on an array of IntegerValueRange. | |
| using | InferRangeWithOvfFlagsFn |
| Function that performs inference on an array of ConstantIntRanges while taking special overflow behavior into account. | |
Enumerations | |
| enum class | CmpMode : uint32_t { Both , Signed , Unsigned } |
| enum class | OverflowFlags : uint32_t { None = 0 , Nsw = 1 , Nuw = 2 } |
| enum class | CmpPredicate : uint64_t { eq , ne , slt , sle , sgt , sge , ult , ule , ugt , uge } |
| Copy of the enum from arith and index to allow the common integer range infrastructure to not depend on either dialect. More... | |
Variables | |
| static constexpr unsigned | indexMinWidth = 32 |
| static constexpr unsigned | indexMaxWidth = 64 |
Function that performs inferrence on an array of IntegerValueRange.
Definition at line 33 of file InferIntRangeCommon.h.
Function that performs inference on an array of ConstantIntRanges, abstracted away here to permit writing the function that handles both 64- and 32-bit index types.
Definition at line 29 of file InferIntRangeCommon.h.
Function that performs inference on an array of ConstantIntRanges while taking special overflow behavior into account.
Definition at line 50 of file InferIntRangeCommon.h.
|
strong |
| Enumerator | |
|---|---|
| Both | |
| Signed | |
| Unsigned | |
Definition at line 39 of file InferIntRangeCommon.h.
|
strong |
Copy of the enum from arith and index to allow the common integer range infrastructure to not depend on either dialect.
| Enumerator | |
|---|---|
| eq | |
| ne | |
| slt | |
| sle | |
| sgt | |
| sge | |
| ult | |
| ule | |
| ugt | |
| uge | |
Definition at line 128 of file InferIntRangeCommon.h.
|
strong |
| Enumerator | |
|---|---|
| None | |
| Nsw | |
| Nuw | |
Definition at line 41 of file InferIntRangeCommon.h.
| std::optional< bool > mlir::intrange::evaluatePred | ( | CmpPredicate | pred, |
| const ConstantIntRanges & | lhs, | ||
| const ConstantIntRanges & | rhs ) |
Returns a boolean value if pred is statically true or false for anypossible inputs falling within lhs and rhs, and std::nullopt if the value of the predicate cannot be determined.
Definition at line 719 of file InferIntRangeCommon.cpp.
References invertPredicate(), isStaticallyTrue(), lhs, and rhs.
Referenced by foldCmpOfMaxOrMin().
| ConstantIntRanges mlir::intrange::extRange | ( | const ConstantIntRanges & | range, |
| unsigned | destWidth ) |
Independently zero-extend the unsigned values and sign-extend the signed values in range to destWidth bits, returning the resulting range.
Referenced by inferIndexCast(), and inferIndexOp().
| ConstantIntRanges mlir::intrange::extSIRange | ( | const ConstantIntRanges & | range, |
| unsigned | destWidth ) |
Use the signed values in range to sign-extend it to destWidth.
Definition at line 136 of file InferIntRangeCommon.cpp.
References mlir::ConstantIntRanges::fromSigned(), mlir::ConstantIntRanges::smax(), and mlir::ConstantIntRanges::smin().
Referenced by makeLikeDest().
| ConstantIntRanges mlir::intrange::extUIRange | ( | const ConstantIntRanges & | range, |
| unsigned | destWidth ) |
Use the unsigned values in range to zero-extend it to destWidth.
Definition at line 129 of file InferIntRangeCommon.cpp.
References mlir::ConstantIntRanges::fromUnsigned(), mlir::ConstantIntRanges::umax(), and mlir::ConstantIntRanges::umin().
Referenced by makeLikeDest().
| ConstantIntRanges mlir::intrange::inferAdd | ( | ArrayRef< ConstantIntRanges > | argRanges, |
| OverflowFlags | ovfFlags = OverflowFlags::None ) |
Definition at line 184 of file InferIntRangeCommon.cpp.
References b, computeBoundsBy(), mlir::ConstantIntRanges::intersection(), lhs, Nsw, Nuw, result, and rhs.
| ConstantIntRanges mlir::intrange::inferAnd | ( | ArrayRef< ConstantIntRanges > | argRanges | ) |
Definition at line 546 of file InferIntRangeCommon.cpp.
References b, minMaxBy(), and widenBitwiseBounds().
| ConstantIntRanges mlir::intrange::inferCeilDivS | ( | ArrayRef< ConstantIntRanges > | argRanges | ) |
Definition at line 367 of file InferIntRangeCommon.cpp.
References mlir::ConstantIntRanges::fromSigned(), inferDivSRange(), lhs, result, and rhs.
| ConstantIntRanges mlir::intrange::inferCeilDivU | ( | ArrayRef< ConstantIntRanges > | argRanges | ) |
Definition at line 319 of file InferIntRangeCommon.cpp.
References inferDivURange(), lhs, result, and rhs.
| ConstantIntRanges mlir::intrange::inferDivS | ( | ArrayRef< ConstantIntRanges > | argRanges | ) |
Definition at line 360 of file InferIntRangeCommon.cpp.
References inferDivSRange(), lhs, result, and rhs.
| ConstantIntRanges mlir::intrange::inferDivU | ( | ArrayRef< ConstantIntRanges > | argRanges | ) |
Definition at line 312 of file InferIntRangeCommon.cpp.
References inferDivURange(), lhs, result, and rhs.
| ConstantIntRanges mlir::intrange::inferFloorDivS | ( | ArrayRef< ConstantIntRanges > | argRanges | ) |
Definition at line 401 of file InferIntRangeCommon.cpp.
References inferDivSRange(), lhs, result, and rhs.
| ConstantIntRanges mlir::intrange::inferIndexOp | ( | const InferRangeFn & | inferFn, |
| ArrayRef< ConstantIntRanges > | argRanges, | ||
| intrange::CmpMode | mode ) |
Compute inferFn on ranges, whose size should be the index storage bitwidth.
Then, compute the function on argRanges again after truncating the ranges to 32 bits. Finally, if the truncation of the 64-bit result is equal to the 32-bit result, use it (to preserve compatibility with folders and inference precision), and take the union of the results otherwise.
The mode argument specifies if the unsigned, signed, or both results of the inference computation should be used when comparing the results.
Definition at line 82 of file InferIntRangeCommon.cpp.
References Both, extRange(), indexMaxWidth, indexMinWidth, mlir::ConstantIntRanges::rangeUnion(), Signed, mlir::ConstantIntRanges::smax(), mlir::ConstantIntRanges::smin(), truncRange(), mlir::ConstantIntRanges::umax(), mlir::ConstantIntRanges::umin(), and Unsigned.
| ConstantIntRanges mlir::intrange::inferMaxS | ( | ArrayRef< ConstantIntRanges > | argRanges | ) |
Definition at line 492 of file InferIntRangeCommon.cpp.
References mlir::ConstantIntRanges::fromSigned(), lhs, and rhs.
| ConstantIntRanges mlir::intrange::inferMaxU | ( | ArrayRef< ConstantIntRanges > | argRanges | ) |
Definition at line 501 of file InferIntRangeCommon.cpp.
References mlir::ConstantIntRanges::fromUnsigned(), lhs, and rhs.
| ConstantIntRanges mlir::intrange::inferMinS | ( | ArrayRef< ConstantIntRanges > | argRanges | ) |
Definition at line 510 of file InferIntRangeCommon.cpp.
References mlir::ConstantIntRanges::fromSigned(), lhs, and rhs.
| ConstantIntRanges mlir::intrange::inferMinU | ( | ArrayRef< ConstantIntRanges > | argRanges | ) |
Definition at line 519 of file InferIntRangeCommon.cpp.
References mlir::ConstantIntRanges::fromUnsigned(), lhs, and rhs.
| ConstantIntRanges mlir::intrange::inferMul | ( | ArrayRef< ConstantIntRanges > | argRanges, |
| OverflowFlags | ovfFlags = OverflowFlags::None ) |
Definition at line 249 of file InferIntRangeCommon.cpp.
References b, mlir::ConstantIntRanges::intersection(), lhs, minMaxBy(), Nsw, Nuw, result, and rhs.
| ConstantIntRanges mlir::intrange::inferOr | ( | ArrayRef< ConstantIntRanges > | argRanges | ) |
Definition at line 557 of file InferIntRangeCommon.cpp.
References b, minMaxBy(), and widenBitwiseBounds().
| ConstantIntRanges mlir::intrange::inferRemS | ( | ArrayRef< ConstantIntRanges > | argRanges | ) |
Definition at line 422 of file InferIntRangeCommon.cpp.
References mlir::ConstantIntRanges::fromSigned(), lhs, rhs, and ult.
| ConstantIntRanges mlir::intrange::inferRemU | ( | ArrayRef< ConstantIntRanges > | argRanges | ) |
Definition at line 461 of file InferIntRangeCommon.cpp.
References mlir::ConstantIntRanges::fromUnsigned(), lhs, rhs, and ult.
| ConstantIntRanges mlir::intrange::inferShapedDimOpInterface | ( | ShapedDimOpInterface | op, |
| const IntegerValueRange & | maybeDim ) |
Returns the integer range for the result of a ShapedDimOpInterface given the optional inferred ranges for the dimension index maybeDim.
When a dynamic dimension is encountered, returns [0, signed_max(type(result))].
Definition at line 734 of file InferIntRangeCommon.cpp.
References mlir::ConstantIntRanges::constant(), mlir::ConstantIntRanges::fromSigned(), mlir::ConstantIntRanges::getStorageBitwidth(), mlir::IntegerValueRange::getValue(), mlir::IntegerValueRange::isUninitialized(), result, mlir::ConstantIntRanges::smax(), and mlir::ConstantIntRanges::smin().
| ConstantIntRanges mlir::intrange::inferShl | ( | ArrayRef< ConstantIntRanges > | argRanges, |
| OverflowFlags | ovfFlags = OverflowFlags::None ) |
Definition at line 593 of file InferIntRangeCommon.cpp.
References mlir::ConstantIntRanges::intersection(), lhs, minMaxBy(), Nsw, Nuw, result, and rhs.
| ConstantIntRanges mlir::intrange::inferShrS | ( | ArrayRef< ConstantIntRanges > | argRanges | ) |
Definition at line 627 of file InferIntRangeCommon.cpp.
References lhs, minMaxBy(), and rhs.
| ConstantIntRanges mlir::intrange::inferShrU | ( | ArrayRef< ConstantIntRanges > | argRanges | ) |
Definition at line 639 of file InferIntRangeCommon.cpp.
References lhs, minMaxBy(), and rhs.
| ConstantIntRanges mlir::intrange::inferSub | ( | ArrayRef< ConstantIntRanges > | argRanges, |
| OverflowFlags | ovfFlags = OverflowFlags::None ) |
Definition at line 217 of file InferIntRangeCommon.cpp.
References b, computeBoundsBy(), mlir::ConstantIntRanges::intersection(), lhs, Nsw, Nuw, result, and rhs.
| ConstantIntRanges mlir::intrange::inferXor | ( | ArrayRef< ConstantIntRanges > | argRanges | ) |
Definition at line 577 of file InferIntRangeCommon.cpp.
References mlir::ConstantIntRanges::fromUnsigned(), getVaryingBitsMask(), lhs, max(), min(), and rhs.
| ConstantIntRanges mlir::intrange::truncRange | ( | const ConstantIntRanges & | range, |
| unsigned | destWidth ) |
Truncate range to destWidth bits, taking care to handle cases such as the truncation of [255, 256] to i8 not being a uniform range.
References None.
Referenced by inferIndexOp(), and makeLikeDest().
|
staticconstexpr |
Definition at line 37 of file InferIntRangeCommon.h.
Referenced by inferIndexOp().
|
staticconstexpr |
Definition at line 36 of file InferIntRangeCommon.h.
Referenced by inferIndexCast(), and inferIndexOp().