[Mlir-commits] [mlir] d431951 - [MLIR][SPIRVToLLVM] SPIRV function fix and nits
George Mitenkov
llvmlistbot at llvm.org
Wed Jul 15 00:30:54 PDT 2020
Author: George Mitenkov
Date: 2020-07-15T10:29:46+03:00
New Revision: d431951343cdaa301cbd72743fde8114b93f9d33
URL: https://github.com/llvm/llvm-project/commit/d431951343cdaa301cbd72743fde8114b93f9d33
DIFF: https://github.com/llvm/llvm-project/commit/d431951343cdaa301cbd72743fde8114b93f9d33.diff
LOG: [MLIR][SPIRVToLLVM] SPIRV function fix and nits
This patch addresses the comments from https://reviews.llvm.org/D83030 and
https://reviews.llvm.org/D82639. `this->` is removed when not inside the
template. Also, type conversion for `spv.func` takes `convertRegionTypes()`
in order to apply type conversion on all blocks within the function.
Reviewed By: rriddle
Differential Revision: https://reviews.llvm.org/D83786
Added:
Modified:
mlir/lib/Conversion/SPIRVToLLVM/ConvertSPIRVToLLVM.cpp
Removed:
################################################################################
diff --git a/mlir/lib/Conversion/SPIRVToLLVM/ConvertSPIRVToLLVM.cpp b/mlir/lib/Conversion/SPIRVToLLVM/ConvertSPIRVToLLVM.cpp
index 5820d9022ae1..b0702912c0fd 100644
--- a/mlir/lib/Conversion/SPIRVToLLVM/ConvertSPIRVToLLVM.cpp
+++ b/mlir/lib/Conversion/SPIRVToLLVM/ConvertSPIRVToLLVM.cpp
@@ -83,11 +83,12 @@ static IntegerAttr minusOneIntegerAttribute(Type type, Builder builder) {
/// Creates `llvm.mlir.constant` with all bits set for the given type.
static Value createConstantAllBitsSet(Location loc, Type srcType, Type dstType,
PatternRewriter &rewriter) {
- if (srcType.isa<VectorType>())
+ if (srcType.isa<VectorType>()) {
return rewriter.create<LLVM::ConstantOp>(
loc, dstType,
SplatElementsAttr::get(srcType.cast<ShapedType>(),
minusOneIntegerAttribute(srcType, rewriter)));
+ }
return rewriter.create<LLVM::ConstantOp>(
loc, dstType, minusOneIntegerAttribute(srcType, rewriter));
}
@@ -239,7 +240,7 @@ class BitFieldInsertPattern
matchAndRewrite(spirv::BitFieldInsertOp op, ArrayRef<Value> operands,
ConversionPatternRewriter &rewriter) const override {
auto srcType = op.getType();
- auto dstType = this->typeConverter.convertType(srcType);
+ auto dstType = typeConverter.convertType(srcType);
if (!dstType)
return failure();
Location loc = op.getLoc();
@@ -328,7 +329,7 @@ class BitFieldSExtractPattern
matchAndRewrite(spirv::BitFieldSExtractOp op, ArrayRef<Value> operands,
ConversionPatternRewriter &rewriter) const override {
auto srcType = op.getType();
- auto dstType = this->typeConverter.convertType(srcType);
+ auto dstType = typeConverter.convertType(srcType);
if (!dstType)
return failure();
Location loc = op.getLoc();
@@ -381,7 +382,7 @@ class BitFieldUExtractPattern
matchAndRewrite(spirv::BitFieldUExtractOp op, ArrayRef<Value> operands,
ConversionPatternRewriter &rewriter) const override {
auto srcType = op.getType();
- auto dstType = this->typeConverter.convertType(srcType);
+ auto dstType = typeConverter.convertType(srcType);
if (!dstType)
return failure();
Location loc = op.getLoc();
@@ -473,7 +474,7 @@ class FunctionCallPattern
}
// Function returns a single result.
- auto dstType = this->typeConverter.convertType(callOp.getType(0));
+ auto dstType = typeConverter.convertType(callOp.getType(0));
rewriter.replaceOpWithNewOp<LLVM::CallOp>(callOp, dstType, operands,
callOp.getAttrs());
return success();
@@ -638,7 +639,7 @@ class FuncConversionPattern : public SPIRVToLLVMConversion<spirv::FuncOp> {
auto funcType = funcOp.getType();
TypeConverter::SignatureConversion signatureConverter(
funcType.getNumInputs());
- auto llvmType = this->typeConverter.convertFunctionSignature(
+ auto llvmType = typeConverter.convertFunctionSignature(
funcOp.getType(), /*isVariadic=*/false, signatureConverter);
if (!llvmType)
return failure();
@@ -675,7 +676,10 @@ class FuncConversionPattern : public SPIRVToLLVMConversion<spirv::FuncOp> {
rewriter.inlineRegionBefore(funcOp.getBody(), newFuncOp.getBody(),
newFuncOp.end());
- rewriter.applySignatureConversion(&newFuncOp.getBody(), signatureConverter);
+ if (failed(rewriter.convertRegionTypes(&newFuncOp.getBody(), typeConverter,
+ &signatureConverter))) {
+ return failure();
+ }
rewriter.eraseOp(funcOp);
return success();
}
More information about the Mlir-commits
mailing list