[Mlir-commits] [mlir] [mlir][fix] Add callback functions for ModuleToObject (PR #116916)
Zichen Lu
llvmlistbot at llvm.org
Wed Nov 20 04:01:49 PST 2024
================
@@ -156,3 +156,65 @@ TEST_F(MLIRTargetLLVMNVVM, SKIP_WITHOUT_NVPTX(SerializeNVVMToBinary)) {
ASSERT_TRUE(!object->empty());
}
}
+
+// Test callback functions invoked with LLVM IR and ISA.
+TEST_F(MLIRTargetLLVMNVVM,
+ SKIP_WITHOUT_NVPTX(CallbackInvokedWithLLVMIRAndISA)) {
+ if (!hasPtxas())
+ GTEST_SKIP() << "PTXAS compiler not found, skipping test.";
+
+ MLIRContext context(registry);
+
+ OwningOpRef<ModuleOp> module =
+ parseSourceString<ModuleOp>(moduleStr, &context);
+ ASSERT_TRUE(!!module);
+
+ NVVM::NVVMTargetAttr target = NVVM::NVVMTargetAttr::get(&context);
+
+ auto serializer = dyn_cast<gpu::TargetAttrInterface>(target);
+ ASSERT_TRUE(!!serializer);
+
+ std::string initialLLVMIR;
+ auto initialCallback = [&initialLLVMIR](llvm::Module &module) {
+ llvm::raw_string_ostream ros(initialLLVMIR);
+ module.print(ros, nullptr);
+ };
+
+ std::string linkedLLVMIR;
+ auto linkedCallback = [&linkedLLVMIR](llvm::Module &module) {
+ llvm::raw_string_ostream ros(linkedLLVMIR);
+ module.print(ros, nullptr);
+ };
+
+ std::string optimizedLLVMIR;
+ auto optimizedCallback = [&optimizedLLVMIR](llvm::Module &module) {
+ llvm::raw_string_ostream ros(optimizedLLVMIR);
+ module.print(ros, nullptr);
+ };
+
+ std::string isaResult;
+ auto isaCallback = [&isaResult](llvm::StringRef isa) {
+ isaResult = isa.str();
+ };
+
+ gpu::TargetOptions options({}, {}, {}, gpu::CompilationTarget::Binary, {},
----------------
MikaOvO wrote:
Should we replace `SKIP_WITHOUT_NVPTX()` with `SKIP_WITHOUT_NATIVE()`?
https://github.com/llvm/llvm-project/pull/116916
More information about the Mlir-commits
mailing list