Skip to content

Commit 7f4dbd8

Browse files
[mlir][GPU][NFC] Remove type converter hack
Remove `dangerousSetOptions` and call `promoteOperands` with the correct arguments directly. Differential Revision: https://reviews.llvm.org/D158175
1 parent 05a6b94 commit 7f4dbd8

File tree

2 files changed

+11
-42
lines changed

2 files changed

+11
-42
lines changed

mlir/include/mlir/Conversion/LLVMCommon/TypeConverter.h

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -92,13 +92,6 @@ class LLVMTypeConverter : public TypeConverter {
9292

9393
const LowerToLLVMOptions &getOptions() const { return options; }
9494

95-
/// Set the lowering options to `newOptions`. Note: using this after some
96-
/// some conversions have been performed can lead to inconsistencies in the
97-
/// IR.
98-
void dangerousSetOptions(LowerToLLVMOptions newOptions) {
99-
options = std::move(newOptions);
100-
}
101-
10295
/// Promote the LLVM representation of all operands including promoting MemRef
10396
/// descriptors to stack and use pointers to struct to avoid the complexity
10497
/// of the platform-specific C/C++ ABI lowering related to struct argument

mlir/lib/Conversion/GPUCommon/GPUToLLVMConversion.cpp

Lines changed: 11 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -981,24 +981,12 @@ Value ConvertLaunchFuncOpToGpuRuntimeCallPattern::generateParamsArray(
981981
gpu::LaunchFuncOp launchOp, OpAdaptor adaptor, OpBuilder &builder) const {
982982
auto loc = launchOp.getLoc();
983983
auto numKernelOperands = launchOp.getNumKernelOperands();
984-
SmallVector<Value, 4> arguments;
985-
if (kernelBarePtrCallConv) {
986-
// Hack the bare pointer value on just for the argument promotion
987-
const LLVMTypeConverter *converter = getTypeConverter();
988-
LowerToLLVMOptions options = converter->getOptions();
989-
LowerToLLVMOptions overrideToMatchKernelOpts = options;
990-
overrideToMatchKernelOpts.useBarePtrCallConv = true;
991-
LLVMTypeConverter newConverter = *converter;
992-
newConverter.dangerousSetOptions(overrideToMatchKernelOpts);
993-
arguments = newConverter.promoteOperands(
994-
loc, launchOp.getOperands().take_back(numKernelOperands),
995-
adaptor.getOperands().take_back(numKernelOperands), builder);
996-
} else {
997-
arguments = getTypeConverter()->promoteOperands(
998-
loc, launchOp.getOperands().take_back(numKernelOperands),
999-
adaptor.getOperands().take_back(numKernelOperands), builder);
1000-
}
1001-
984+
// Note: If `useBarePtrCallConv` is set in the type converter's options,
985+
// the value of `kernelBarePtrCallConv` will be ignored.
986+
SmallVector<Value, 4> arguments = getTypeConverter()->promoteOperands(
987+
loc, launchOp.getOperands().take_back(numKernelOperands),
988+
adaptor.getOperands().take_back(numKernelOperands), builder,
989+
/*useBarePtrCallConv=*/kernelBarePtrCallConv);
1002990
auto numArguments = arguments.size();
1003991
SmallVector<Type, 4> argumentTypes;
1004992
argumentTypes.reserve(numArguments);
@@ -1112,23 +1100,11 @@ LogicalResult ConvertLaunchFuncOpToGpuRuntimeCallPattern::matchAndRewrite(
11121100
stream = streamCreateCallBuilder.create(loc, rewriter, {}).getResult();
11131101

11141102
// Lower the kernel operands to match kernel parameters.
1115-
SmallVector<Value, 4> arguments;
1116-
if (kernelBarePtrCallConv) {
1117-
// Hack the bare pointer value on just for the argument promotion
1118-
const LLVMTypeConverter *converter = getTypeConverter();
1119-
LowerToLLVMOptions options = converter->getOptions();
1120-
LowerToLLVMOptions overrideToMatchKernelOpts = options;
1121-
overrideToMatchKernelOpts.useBarePtrCallConv = true;
1122-
LLVMTypeConverter newConverter = *converter;
1123-
newConverter.dangerousSetOptions(overrideToMatchKernelOpts);
1124-
arguments =
1125-
newConverter.promoteOperands(loc, launchOp.getKernelOperands(),
1126-
adaptor.getKernelOperands(), rewriter);
1127-
} else {
1128-
arguments = getTypeConverter()->promoteOperands(
1129-
loc, launchOp.getKernelOperands(), adaptor.getKernelOperands(),
1130-
rewriter);
1131-
}
1103+
// Note: If `useBarePtrCallConv` is set in the type converter's options,
1104+
// the value of `kernelBarePtrCallConv` will be ignored.
1105+
SmallVector<Value, 4> arguments = getTypeConverter()->promoteOperands(
1106+
loc, launchOp.getKernelOperands(), adaptor.getKernelOperands(),
1107+
rewriter, /*useBarePtrCallConv=*/kernelBarePtrCallConv);
11321108

11331109
rewriter.create<gpu::LaunchFuncOp>(
11341110
launchOp.getLoc(), launchOp.getKernelAttr(),

0 commit comments

Comments
 (0)