diff options
author | Quentin Colombet <quentin.colombet@gmail.com> | 2023-05-16 10:54:25 +0200 |
---|---|---|
committer | Quentin Colombet <quentin.colombet@gmail.com> | 2023-05-16 10:54:25 +0200 |
commit | bba9209f1d198efc7e492f0e273fff0b0a5ef060 (patch) | |
tree | c9009f5f7b3990b6631b4323f5bc10341910317a /mlir | |
parent | ead8e9d7953e817c52fdfaf7196dfeb2199dab26 (diff) | |
download | llvm-bba9209f1d198efc7e492f0e273fff0b0a5ef060.tar.gz |
[MemRefToLLVM][NFC] Use early exit for the getter of the buffer ptr
Address review comment from https://reviews.llvm.org/D148947
Diffstat (limited to 'mlir')
-rw-r--r-- | mlir/lib/Conversion/LLVMCommon/MemRefBuilder.cpp | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/mlir/lib/Conversion/LLVMCommon/MemRefBuilder.cpp b/mlir/lib/Conversion/LLVMCommon/MemRefBuilder.cpp index df9dafc2d696..2c9580e42134 100644 --- a/mlir/lib/Conversion/LLVMCommon/MemRefBuilder.cpp +++ b/mlir/lib/Conversion/LLVMCommon/MemRefBuilder.cpp @@ -205,17 +205,19 @@ Value MemRefDescriptor::bufferPtr(OpBuilder &builder, Location loc, auto [strides, offsetCst] = getStridesAndOffset(type); Value ptr = alignedPtr(builder, loc); - // Skip if offset is zero. - if (offsetCst != 0) { - Type indexType = converter.getIndexType(); - Value offsetVal = - ShapedType::isDynamic(offsetCst) - ? offset(builder, loc) - : createIndexAttrConstant(builder, loc, indexType, offsetCst); - Type elementType = converter.convertType(type.getElementType()); - ptr = builder.create<LLVM::GEPOp>(loc, ptr.getType(), elementType, ptr, - offsetVal); - } + // For zero offsets, we already have the base pointer. + if (offsetCst == 0) + return ptr; + + // Otherwise add the offset to the aligned base. + Type indexType = converter.getIndexType(); + Value offsetVal = + ShapedType::isDynamic(offsetCst) + ? offset(builder, loc) + : createIndexAttrConstant(builder, loc, indexType, offsetCst); + Type elementType = converter.convertType(type.getElementType()); + ptr = builder.create<LLVM::GEPOp>(loc, ptr.getType(), elementType, ptr, + offsetVal); return ptr; } |