[Mlir-commits] [mlir] [MLIR] [AMX] Fix strides used by AMX lowering for tile loads and stores. (PR #113476)
Renato Golin
llvmlistbot at llvm.org
Mon Oct 28 11:53:23 PDT 2024
================
@@ -55,21 +55,25 @@ Value getStride(ConversionPatternRewriter &rewriter,
const LLVMTypeConverter &typeConverter, MemRefType mType,
Value base, Location loc) {
assert(mType.getRank() >= 2);
- int64_t last = mType.getRank() - 1;
+ int64_t preLast = mType.getRank() - 2;
Type llvmInt64Type = IntegerType::get(&typeConverter.getContext(), 64);
unsigned width = mType.getElementType().getIntOrFloatBitWidth();
assert(llvm::isPowerOf2_64(width) && width >= 8);
unsigned bytes = width >> 3;
- if (mType.isDynamicDim(last)) {
- // Dynamic size needs code to compute the stride at runtime.
+ int64_t offset;
+ SmallVector<int64_t, 4> strides;
+ getStridesAndOffset(mType, strides, offset);
----------------
rengolin wrote:
I see what you mean. `getStridesAndOffset` will get the actual strides, regardless if they're implicit or explicit. There's a lot of afine computations in that function, so we should avoid calling it too many times, and fuse the two utility functions as described above.
https://github.com/llvm/llvm-project/pull/113476
More information about the Mlir-commits
mailing list