Skip to content

Commit c9997ff

Browse files
author
Lily Orth-Smith
committed
Fix how we get alignment for memrefs
1 parent d1c7fa8 commit c9997ff

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

mlir/lib/Conversion/VectorToLLVM/ConvertVectorToLLVM.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,15 +70,19 @@ static Value extractOne(ConversionPatternRewriter &rewriter,
7070
// Helper that returns data layout alignment of a memref.
7171
LogicalResult getMemRefAlignment(const LLVMTypeConverter &typeConverter,
7272
MemRefType memrefType, unsigned &align) {
73-
Type elementTy = typeConverter.convertType(memrefType.getElementType());
74-
if (!elementTy)
73+
// Align MemRefTypes to the alignment of a VectorType with the same
74+
// size and dtype.
75+
Type convertedVecType = typeConverter.convertType(
76+
VectorType::get(memrefType.getNumElements(), memrefType.getElementType()));
77+
if (!convertedVecType)
7578
return failure();
7679

7780
// TODO: this should use the MLIR data layout when it becomes available and
7881
// stop depending on translation.
7982
llvm::LLVMContext llvmContext;
8083
align = LLVM::TypeToLLVMIRTranslator(llvmContext)
81-
.getPreferredAlignment(elementTy, typeConverter.getDataLayout());
84+
.getPreferredAlignment(convertedVecType,
85+
typeConverter.getDataLayout());
8286
return success();
8387
}
8488

0 commit comments

Comments
 (0)