Skip to content

Commit c2d0d5e

Browse files
authored
[BACKEND] Avoid using getStrides (#7674)
I want to kill these methods as they are rather error-prone. In general, we should work with linear layouts rather than performing these computations manually. In particular, this offset will only be non-zero when it comes from a `memdesc_slice`. Do we want to support this case, or would it be better to assert that this is not the case?
1 parent 2a9e85e commit c2d0d5e

File tree

1 file changed

+3
-6
lines changed

1 file changed

+3
-6
lines changed

lib/Conversion/TritonInstrumentToLLVM/InstrumentationToLLVM.cpp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,20 +41,17 @@ Value createCmpIntTensorScalar(
4141
Value createMemDescToI64(RewriterBase &rewriter, Location loc,
4242
const LLVMTypeConverter *typeConverter,
4343
ttg::MemDescType memDescTy, Value sharedMemStruct) {
44+
TritonLLVMOpBuilder b(loc, rewriter);
4445
if (isa<ttng::TensorMemoryEncodingAttr>(memDescTy.getEncoding())) {
45-
TritonLLVMOpBuilder b(loc, rewriter);
4646
return b.ptrtoint(rewriter.getIntegerType(64), sharedMemStruct);
4747
}
4848
assert(isa<ttg::SharedEncodingTrait>(memDescTy.getEncoding()) &&
4949
"Unsupported memory encoding");
5050
Type srcElemTy = typeConverter->convertType(memDescTy.getElementType());
51-
int elemSize = srcElemTy.getIntOrFloatBitWidth() / 8;
5251
auto smemObj = LLVM::getSharedMemoryObjectFromStruct(loc, sharedMemStruct,
5352
srcElemTy, rewriter);
54-
auto offsets = smemObj.getOffsets();
55-
auto strides = smemObj.getStrides(memDescTy, loc, rewriter);
56-
Value offset = dot(rewriter, loc, offsets, strides);
57-
TritonLLVMOpBuilder b(loc, rewriter);
53+
auto offset = smemObj.getShmemOffset(loc, rewriter, memDescTy);
54+
auto elemSize = srcElemTy.getIntOrFloatBitWidth() / 8;
5855
offset = b.mul(offset, b.i32_val(elemSize));
5956
auto i64Ty = rewriter.getIntegerType(64);
6057
offset = b.zext(i64Ty, offset);

0 commit comments

Comments
 (0)