Skip to content

Commit af41c55

Browse files
authored
Revert "[MLIR] Add callback functions for ModuleToObject" (#116811)
Reverts #116007 Bot is broken.
1 parent 26a89d2 commit af41c55

File tree

6 files changed

+11
-185
lines changed

6 files changed

+11
-185
lines changed

mlir/include/mlir/Dialect/GPU/IR/CompilationInterfaces.h

Lines changed: 2 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
#define MLIR_DIALECT_GPU_IR_COMPILATIONINTERFACES_H
1515

1616
#include "mlir/IR/Attributes.h"
17-
#include "llvm/IR/Module.h"
1817

1918
namespace llvm {
2019
class IRBuilderBase;
@@ -53,11 +52,7 @@ class TargetOptions {
5352
StringRef toolkitPath = {}, ArrayRef<std::string> linkFiles = {},
5453
StringRef cmdOptions = {},
5554
CompilationTarget compilationTarget = getDefaultCompilationTarget(),
56-
function_ref<SymbolTable *()> getSymbolTableCallback = {},
57-
function_ref<void(llvm::Module &)> initialLlvmIRCallback = {},
58-
function_ref<void(llvm::Module &)> linkedLlvmIRCallback = {},
59-
function_ref<void(llvm::Module &)> optimizedLlvmIRCallback = {},
60-
function_ref<void(StringRef)> isaCallback = {});
55+
function_ref<SymbolTable *()> getSymbolTableCallback = {});
6156

6257
/// Returns the typeID.
6358
TypeID getTypeID() const;
@@ -85,22 +80,6 @@ class TargetOptions {
8580
/// table.
8681
SymbolTable *getSymbolTable() const;
8782

88-
/// Returns the callback invoked with the initial LLVM IR for the device
89-
/// module.
90-
function_ref<void(llvm::Module &)> getInitialLlvmIRCallback() const;
91-
92-
/// Returns the callback invoked with LLVM IR for the device module
93-
/// after linking the device libraries.
94-
function_ref<void(llvm::Module &)> getLinkedLlvmIRCallback() const;
95-
96-
/// Returns the callback invoked with LLVM IR for the device module after
97-
/// LLVM optimizations but before codegen.
98-
function_ref<void(llvm::Module &)> getOptimizedLlvmIRCallback() const;
99-
100-
/// Returns the callback invoked with the target ISA for the device,
101-
/// for example PTX assembly.
102-
function_ref<void(StringRef)> getISACallback() const;
103-
10483
/// Returns the default compilation target: `CompilationTarget::Fatbin`.
10584
static CompilationTarget getDefaultCompilationTarget();
10685

@@ -111,11 +90,7 @@ class TargetOptions {
11190
TypeID typeID, StringRef toolkitPath = {},
11291
ArrayRef<std::string> linkFiles = {}, StringRef cmdOptions = {},
11392
CompilationTarget compilationTarget = getDefaultCompilationTarget(),
114-
function_ref<SymbolTable *()> getSymbolTableCallback = {},
115-
function_ref<void(llvm::Module &)> initialLlvmIRCallback = {},
116-
function_ref<void(llvm::Module &)> linkedLlvmIRCallback = {},
117-
function_ref<void(llvm::Module &)> optimizedLlvmIRCallback = {},
118-
function_ref<void(StringRef)> isaCallback = {});
93+
function_ref<SymbolTable *()> getSymbolTableCallback = {});
11994

12095
/// Path to the target toolkit.
12196
std::string toolkitPath;
@@ -134,21 +109,6 @@ class TargetOptions {
134109
/// being serialized.
135110
function_ref<SymbolTable *()> getSymbolTableCallback;
136111

137-
/// Callback invoked with the initial LLVM IR for the device module.
138-
function_ref<void(llvm::Module &)> initialLlvmIRCallback;
139-
140-
/// Callback invoked with LLVM IR for the device module after
141-
/// linking the device libraries.
142-
function_ref<void(llvm::Module &)> linkedLlvmIRCallback;
143-
144-
/// Callback invoked with LLVM IR for the device module after
145-
/// LLVM optimizations but before codegen.
146-
function_ref<void(llvm::Module &)> optimizedLlvmIRCallback;
147-
148-
/// Callback invoked with the target ISA for the device,
149-
/// for example PTX assembly.
150-
function_ref<void(StringRef)> isaCallback;
151-
152112
private:
153113
TypeID typeID;
154114
};

mlir/include/mlir/Target/LLVM/ModuleToObject.h

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,8 @@ class ModuleTranslation;
2929
/// operations being transformed must be translatable into LLVM IR.
3030
class ModuleToObject {
3131
public:
32-
ModuleToObject(
33-
Operation &module, StringRef triple, StringRef chip,
34-
StringRef features = {}, int optLevel = 3,
35-
function_ref<void(llvm::Module &)> initialLlvmIRCallback = {},
36-
function_ref<void(llvm::Module &)> linkedLlvmIRCallback = {},
37-
function_ref<void(llvm::Module &)> optimizedLlvmIRCallback = {},
38-
function_ref<void(StringRef)> isaCallback = {});
32+
ModuleToObject(Operation &module, StringRef triple, StringRef chip,
33+
StringRef features = {}, int optLevel = 3);
3934
virtual ~ModuleToObject();
4035

4136
/// Returns the operation being serialized.
@@ -119,21 +114,6 @@ class ModuleToObject {
119114
/// Optimization level.
120115
int optLevel;
121116

122-
/// Callback invoked with the initial LLVM IR for the device module.
123-
function_ref<void(llvm::Module &)> initialLlvmIRCallback;
124-
125-
/// Callback invoked with LLVM IR for the device module after
126-
/// linking the device libraries.
127-
function_ref<void(llvm::Module &)> linkedLlvmIRCallback;
128-
129-
/// Callback invoked with LLVM IR for the device module after
130-
/// LLVM optimizations but before codegen.
131-
function_ref<void(llvm::Module &)> optimizedLlvmIRCallback;
132-
133-
/// Callback invoked with the target ISA for the device,
134-
/// for example PTX assembly.
135-
function_ref<void(StringRef)> isaCallback;
136-
137117
private:
138118
/// The TargetMachine created for the given Triple, if available.
139119
/// Accessible through `getOrCreateTargetMachine()`.

mlir/lib/Dialect/GPU/IR/GPUDialect.cpp

Lines changed: 4 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -2302,31 +2302,17 @@ KernelMetadataAttr KernelTableAttr::lookup(StringAttr key) const {
23022302
TargetOptions::TargetOptions(
23032303
StringRef toolkitPath, ArrayRef<std::string> linkFiles,
23042304
StringRef cmdOptions, CompilationTarget compilationTarget,
2305-
function_ref<SymbolTable *()> getSymbolTableCallback,
2306-
function_ref<void(llvm::Module &)> initialLlvmIRCallback,
2307-
function_ref<void(llvm::Module &)> linkedLlvmIRCallback,
2308-
function_ref<void(llvm::Module &)> optimizedLlvmIRCallback,
2309-
function_ref<void(StringRef)> isaCallback)
2305+
function_ref<SymbolTable *()> getSymbolTableCallback)
23102306
: TargetOptions(TypeID::get<TargetOptions>(), toolkitPath, linkFiles,
2311-
cmdOptions, compilationTarget, getSymbolTableCallback,
2312-
initialLlvmIRCallback, linkedLlvmIRCallback,
2313-
optimizedLlvmIRCallback, isaCallback) {}
2307+
cmdOptions, compilationTarget, getSymbolTableCallback) {}
23142308

23152309
TargetOptions::TargetOptions(
23162310
TypeID typeID, StringRef toolkitPath, ArrayRef<std::string> linkFiles,
23172311
StringRef cmdOptions, CompilationTarget compilationTarget,
2318-
function_ref<SymbolTable *()> getSymbolTableCallback,
2319-
function_ref<void(llvm::Module &)> initialLlvmIRCallback,
2320-
function_ref<void(llvm::Module &)> linkedLlvmIRCallback,
2321-
function_ref<void(llvm::Module &)> optimizedLlvmIRCallback,
2322-
function_ref<void(StringRef)> isaCallback)
2312+
function_ref<SymbolTable *()> getSymbolTableCallback)
23232313
: toolkitPath(toolkitPath.str()), linkFiles(linkFiles),
23242314
cmdOptions(cmdOptions.str()), compilationTarget(compilationTarget),
2325-
getSymbolTableCallback(getSymbolTableCallback),
2326-
initialLlvmIRCallback(initialLlvmIRCallback),
2327-
linkedLlvmIRCallback(linkedLlvmIRCallback),
2328-
optimizedLlvmIRCallback(optimizedLlvmIRCallback),
2329-
isaCallback(isaCallback), typeID(typeID) {}
2315+
getSymbolTableCallback(getSymbolTableCallback), typeID(typeID) {}
23302316

23312317
TypeID TargetOptions::getTypeID() const { return typeID; }
23322318

@@ -2340,25 +2326,6 @@ SymbolTable *TargetOptions::getSymbolTable() const {
23402326
return getSymbolTableCallback ? getSymbolTableCallback() : nullptr;
23412327
}
23422328

2343-
function_ref<void(llvm::Module &)>
2344-
TargetOptions::getInitialLlvmIRCallback() const {
2345-
return initialLlvmIRCallback;
2346-
}
2347-
2348-
function_ref<void(llvm::Module &)>
2349-
TargetOptions::getLinkedLlvmIRCallback() const {
2350-
return linkedLlvmIRCallback;
2351-
}
2352-
2353-
function_ref<void(llvm::Module &)>
2354-
TargetOptions::getOptimizedLlvmIRCallback() const {
2355-
return optimizedLlvmIRCallback;
2356-
}
2357-
2358-
function_ref<void(StringRef)> TargetOptions::getISACallback() const {
2359-
return isaCallback;
2360-
}
2361-
23622329
CompilationTarget TargetOptions::getCompilationTarget() const {
23632330
return compilationTarget;
23642331
}

mlir/lib/Target/LLVM/ModuleToObject.cpp

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -34,17 +34,10 @@
3434
using namespace mlir;
3535
using namespace mlir::LLVM;
3636

37-
ModuleToObject::ModuleToObject(
38-
Operation &module, StringRef triple, StringRef chip, StringRef features,
39-
int optLevel, function_ref<void(llvm::Module &)> initialLlvmIRCallback,
40-
function_ref<void(llvm::Module &)> linkedLlvmIRCallback,
41-
function_ref<void(llvm::Module &)> optimizedLlvmIRCallback,
42-
function_ref<void(StringRef)> isaCallback)
37+
ModuleToObject::ModuleToObject(Operation &module, StringRef triple,
38+
StringRef chip, StringRef features, int optLevel)
4339
: module(module), triple(triple), chip(chip), features(features),
44-
optLevel(optLevel), initialLlvmIRCallback(initialLlvmIRCallback),
45-
linkedLlvmIRCallback(linkedLlvmIRCallback),
46-
optimizedLlvmIRCallback(optimizedLlvmIRCallback),
47-
isaCallback(isaCallback) {}
40+
optLevel(optLevel) {}
4841

4942
ModuleToObject::~ModuleToObject() = default;
5043

@@ -222,9 +215,6 @@ std::optional<SmallVector<char, 0>> ModuleToObject::run() {
222215
}
223216
setDataLayoutAndTriple(*llvmModule);
224217

225-
if (initialLlvmIRCallback)
226-
initialLlvmIRCallback(*llvmModule);
227-
228218
// Link bitcode files.
229219
handleModulePreLink(*llvmModule);
230220
{
@@ -237,16 +227,10 @@ std::optional<SmallVector<char, 0>> ModuleToObject::run() {
237227
handleModulePostLink(*llvmModule);
238228
}
239229

240-
if (linkedLlvmIRCallback)
241-
linkedLlvmIRCallback(*llvmModule);
242-
243230
// Optimize the module.
244231
if (failed(optimizeModule(*llvmModule, optLevel)))
245232
return std::nullopt;
246233

247-
if (optimizedLlvmIRCallback)
248-
optimizedLlvmIRCallback(*llvmModule);
249-
250234
// Return the serialized object.
251235
return moduleToObject(*llvmModule);
252236
}

mlir/lib/Target/LLVM/NVVM/Target.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -572,9 +572,6 @@ NVPTXSerializer::moduleToObject(llvm::Module &llvmModule) {
572572
getOperation().emitError() << "Failed translating the module to ISA.";
573573
return std::nullopt;
574574
}
575-
if (isaCallback)
576-
isaCallback(serializedISA.value());
577-
578575
#define DEBUG_TYPE "serialize-to-isa"
579576
LLVM_DEBUG({
580577
llvm::dbgs() << "PTX for module: " << getOperation().getNameAttr() << "\n";

mlir/unittests/Target/LLVM/SerializeNVVMTarget.cpp

Lines changed: 0 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -156,65 +156,3 @@ TEST_F(MLIRTargetLLVMNVVM, SKIP_WITHOUT_NVPTX(SerializeNVVMToBinary)) {
156156
ASSERT_TRUE(!object->empty());
157157
}
158158
}
159-
160-
// Test callback functions invoked with LLVM IR and ISA.
161-
TEST_F(MLIRTargetLLVMNVVM,
162-
SKIP_WITHOUT_NVPTX(CallbackInvokedWithLLVMIRAndISA)) {
163-
if (!hasPtxas())
164-
GTEST_SKIP() << "PTXAS compiler not found, skipping test.";
165-
166-
MLIRContext context(registry);
167-
168-
OwningOpRef<ModuleOp> module =
169-
parseSourceString<ModuleOp>(moduleStr, &context);
170-
ASSERT_TRUE(!!module);
171-
172-
NVVM::NVVMTargetAttr target = NVVM::NVVMTargetAttr::get(&context);
173-
174-
auto serializer = dyn_cast<gpu::TargetAttrInterface>(target);
175-
ASSERT_TRUE(!!serializer);
176-
177-
std::string initialLLVMIR;
178-
auto initialCallback = [&initialLLVMIR](llvm::Module &module) {
179-
llvm::raw_string_ostream ros(initialLLVMIR);
180-
module.print(ros, nullptr);
181-
};
182-
183-
std::string linkedLLVMIR;
184-
auto linkedCallback = [&linkedLLVMIR](llvm::Module &module) {
185-
llvm::raw_string_ostream ros(linkedLLVMIR);
186-
module.print(ros, nullptr);
187-
};
188-
189-
std::string optimizedLLVMIR;
190-
auto optimizedCallback = [&optimizedLLVMIR](llvm::Module &module) {
191-
llvm::raw_string_ostream ros(optimizedLLVMIR);
192-
module.print(ros, nullptr);
193-
};
194-
195-
std::string isaResult;
196-
auto isaCallback = [&isaResult](llvm::StringRef isa) {
197-
isaResult = isa.str();
198-
};
199-
200-
gpu::TargetOptions options({}, {}, {}, gpu::CompilationTarget::Binary, {},
201-
initialCallback, linkedCallback, optimizedCallback,
202-
isaCallback);
203-
204-
for (auto gpuModule : (*module).getBody()->getOps<gpu::GPUModuleOp>()) {
205-
std::optional<SmallVector<char, 0>> object =
206-
serializer.serializeToObject(gpuModule, options);
207-
208-
ASSERT_TRUE(object != std::nullopt);
209-
ASSERT_TRUE(!object->empty());
210-
ASSERT_TRUE(!initialLLVMIR.empty());
211-
ASSERT_TRUE(!linkedLLVMIR.empty());
212-
ASSERT_TRUE(!optimizedLLVMIR.empty());
213-
ASSERT_TRUE(!isaResult.empty());
214-
215-
initialLLVMIR.clear();
216-
linkedLLVMIR.clear();
217-
optimizedLLVMIR.clear();
218-
isaResult.clear();
219-
}
220-
}

0 commit comments

Comments
 (0)