[Mlir-commits] [mlir] [MLIR][LLVMIR] Import unregistered intrinsics via llvm.intrinsic_call (PR #128626)

Tobias Gysi llvmlistbot at llvm.org
Tue Feb 25 12:54:57 PST 2025


================
@@ -155,7 +165,19 @@ class LLVMImportInterface
   LogicalResult convertIntrinsic(OpBuilder &builder, llvm::CallInst *inst,
                                  LLVM::ModuleImport &moduleImport) const {
     // Lookup the dialect interface for the given intrinsic.
-    Dialect *dialect = intrinsicToDialect.lookup(inst->getIntrinsicID());
+    llvm::Intrinsic::ID intrinId = inst->getIntrinsicID();
+    if (intrinId == llvm::Intrinsic::not_intrinsic)
+      return failure();
+
+    // First lookup intrinsic across different dialects for known
+    // supported converstions, examples include arm-neon, nvm-sve, etc
+    Dialect *dialect = intrinsicToDialect.lookup(intrinId);
+
+    // No specialized (supported) intrinsics, attempt to generate a generic
+    // version via llvm.call_intrinsic (if available).
+    if (!dialect)
+      dialect = unregisteredIntrinscToDialect;
----------------
gysit wrote:

Can you call `convertUnregisteredIntrinsicImpl` directly here? Then there is not need for the `unregisteredIntrinscToDialect` variable `getUnregisteredIntrinsics` function? Maybe I am missing something though.

https://github.com/llvm/llvm-project/pull/128626


More information about the Mlir-commits mailing list