[Mlir-commits] [mlir] Make createReadOrMaskedRead and isValidMaskedInputVector vector utilities (PR #89119)
Lubomir Litchev
llvmlistbot at llvm.org
Fri Apr 19 09:55:39 PDT 2024
================
@@ -322,3 +322,71 @@ bool vector::isLinearizableVector(VectorType type) {
auto numScalableDims = llvm::count(type.getScalableDims(), true);
return (type.getRank() > 1) && (numScalableDims <= 1);
}
+
+Value vector::createReadOrMaskedRead(OpBuilder &builder, Location loc,
+ Value source, ArrayRef<int64_t> readShape,
+ Value padValue, bool enableMasking) {
+ assert(llvm::none_of(readShape,
+ [](int64_t s) { return s == ShapedType::kDynamic; }) &&
+ "expected static shape");
+ auto sourceShape = cast<ShapedType>(source.getType()).getShape();
+ assert(sourceShape.size() == readShape.size() && "expected same ranks.");
+ auto maskType = VectorType::get(readShape, builder.getI1Type());
+ auto vectorType = VectorType::get(readShape, padValue.getType());
+ assert(padValue.getType() == sourceShape.getElementType() &&
+ "expected same pad element type to match source element type")
+ int64_t readRank = readShape.size();
+ auto zero = builder.create<arith::ConstantIndexOp>(loc, 0);
+ SmallVector<bool> inBoundsVal(readRank, true);
+ if (!enableMasking) {
+ // Update the inBounds attribute.
+ for (unsigned i = 0; i < readRank; i++)
+ inBoundsVal[i] = (sourceShape[i] == readShape[i]) &&
+ !ShapedType::isDynamic(sourceShape[] i);
----------------
LLITCHEV wrote:
> inBoundsVal[i] = (sourceShape[i] == readShape[i]) &&
> !ShapedType::isDynamic(sourceShape[i]);
Yes... Fixed... That was a typo... :)
https://github.com/llvm/llvm-project/pull/89119
More information about the Mlir-commits
mailing list