[Mlir-commits] [mlir] [mlir][llvmir] Added extra builders for CallInstrinsicOp (PR #111664)

llvmlistbot at llvm.org llvmlistbot at llvm.org
Wed Oct 9 09:17:06 PDT 2024


https://github.com/FMarno updated https://github.com/llvm/llvm-project/pull/111664

>From 6be01c87f62d4ee08295004b143be6e2e061a8b1 Mon Sep 17 00:00:00 2001
From: Finlay Marno <finlay.marno at codeplay.com>
Date: Wed, 9 Oct 2024 11:56:59 +0100
Subject: [PATCH 1/4] [mlir][llvmir] Added extra builders for CallInstrinsicOp

---
 mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td |  5 +++++
 mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp  | 19 +++++++++++++++++++
 2 files changed, 24 insertions(+)

diff --git a/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td b/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td
index 88e82ce48959b0..ff5199fe40d124 100644
--- a/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td
+++ b/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td
@@ -1943,6 +1943,11 @@ def LLVM_CallIntrinsicOp
     attr-dict
   }];
 
+  let builders = [
+    OpBuilder<(ins "Type": $results, "StringAttr":$intrin, "ValueRange":$args)>,
+    OpBuilder<(ins "TypeRange": $results, "StringAttr":$intrin, "ValueRange":$args, "FastmathFlagsAttr":$fastMathFlags)>
+    ];
+
   let hasVerifier = 1;
 }
 
diff --git a/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp b/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
index fb7024a14f8d4e..27cbd77f110326 100644
--- a/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
+++ b/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
@@ -3353,6 +3353,25 @@ struct LLVMOpAsmDialectInterface : public OpAsmDialectInterface {
 };
 } // namespace
 
+//===----------------------------------------------------------------------===//
+// CallIntrinsicOp
+//===----------------------------------------------------------------------===//
+
+void CallIntrinsicOp::build(OpBuilder &builder, OperationState &state,
+                            mlir::TypeRange results, mlir::StringAttr intrin,
+                            mlir::ValueRange args,
+                            mlir::LLVM::FastmathFlagsAttr fastMathFlags) {
+
+  build(builder, state, results, intrin, args, fastMathFlags,
+        llvm::ArrayRef<mlir::ValueRange>{});
+}
+void CallIntrinsicOp::build(OpBuilder &builder, OperationState &state,
+                            mlir::Type results, mlir::StringAttr intrin,
+                            mlir::ValueRange args) {
+  build(builder, state, {results}, intrin, args, FastmathFlagsAttr{},
+        llvm::ArrayRef<mlir::ValueRange>{});
+}
+
 //===----------------------------------------------------------------------===//
 // LinkerOptionsOp
 //===----------------------------------------------------------------------===//

>From a5d76f19279810434c2703af2947b161aa0796bf Mon Sep 17 00:00:00 2001
From: Finlay Marno <finlay.marno at codeplay.com>
Date: Wed, 9 Oct 2024 17:05:52 +0100
Subject: [PATCH 2/4] fixup! [mlir][llvmir] Added extra builders for
 CallInstrinsicOp

---
 mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td |  6 +++---
 mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp  | 15 +++++++--------
 2 files changed, 10 insertions(+), 11 deletions(-)

diff --git a/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td b/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td
index ff5199fe40d124..d59c02fa25f867 100644
--- a/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td
+++ b/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td
@@ -1944,9 +1944,9 @@ def LLVM_CallIntrinsicOp
   }];
 
   let builders = [
-    OpBuilder<(ins "Type": $results, "StringAttr":$intrin, "ValueRange":$args)>,
-    OpBuilder<(ins "TypeRange": $results, "StringAttr":$intrin, "ValueRange":$args, "FastmathFlagsAttr":$fastMathFlags)>
-    ];
+    OpBuilder<(ins "Type": $resultType, "StringAttr":$intrin, "ValueRange":$args)>,
+    OpBuilder<(ins "TypeRange": $resultTypes, "StringAttr":$intrin, "ValueRange":$args, "FastmathFlagsAttr":$fastMathFlags)>
+  ];
 
   let hasVerifier = 1;
 }
diff --git a/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp b/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
index 27cbd77f110326..efdf75bc6fb101 100644
--- a/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
+++ b/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
@@ -3358,18 +3358,17 @@ struct LLVMOpAsmDialectInterface : public OpAsmDialectInterface {
 //===----------------------------------------------------------------------===//
 
 void CallIntrinsicOp::build(OpBuilder &builder, OperationState &state,
-                            mlir::TypeRange results, mlir::StringAttr intrin,
-                            mlir::ValueRange args,
+                            mlir::TypeRange resultTypes,
+                            mlir::StringAttr intrin, mlir::ValueRange args,
                             mlir::LLVM::FastmathFlagsAttr fastMathFlags) {
-
-  build(builder, state, results, intrin, args, fastMathFlags,
-        llvm::ArrayRef<mlir::ValueRange>{});
+  build(builder, state, resultTypes, intrin, args, fastMathFlags,
+        /*op_bundle_operands=*/{});
 }
 void CallIntrinsicOp::build(OpBuilder &builder, OperationState &state,
-                            mlir::Type results, mlir::StringAttr intrin,
+                            mlir::Type resultType, mlir::StringAttr intrin,
                             mlir::ValueRange args) {
-  build(builder, state, {results}, intrin, args, FastmathFlagsAttr{},
-        llvm::ArrayRef<mlir::ValueRange>{});
+  build(builder, state, {resultType}, intrin, args, FastmathFlagsAttr{},
+        /*op_bundle_operands=*/{});
 }
 
 //===----------------------------------------------------------------------===//

>From f9c3cf468a4ab91ac9863b917a476491bb07dc95 Mon Sep 17 00:00:00 2001
From: Finlay Marno <finlay.marno at codeplay.com>
Date: Wed, 9 Oct 2024 17:08:49 +0100
Subject: [PATCH 3/4] fixup! [mlir][llvmir] Added extra builders for
 CallInstrinsicOp

---
 mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp | 32 ++++++++++------------
 1 file changed, 14 insertions(+), 18 deletions(-)

diff --git a/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp b/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
index efdf75bc6fb101..ab923e89e2d255 100644
--- a/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
+++ b/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
@@ -3324,6 +3324,20 @@ LogicalResult CallIntrinsicOp::verify() {
   return success();
 }
 
+void CallIntrinsicOp::build(OpBuilder &builder, OperationState &state,
+                            mlir::TypeRange resultTypes,
+                            mlir::StringAttr intrin, mlir::ValueRange args,
+                            mlir::LLVM::FastmathFlagsAttr fastMathFlags) {
+  build(builder, state, resultTypes, intrin, args, fastMathFlags,
+        /*op_bundle_operands=*/{});
+}
+void CallIntrinsicOp::build(OpBuilder &builder, OperationState &state,
+                            mlir::Type resultType, mlir::StringAttr intrin,
+                            mlir::ValueRange args) {
+  build(builder, state, {resultType}, intrin, args, FastmathFlagsAttr{},
+        /*op_bundle_operands=*/{});
+}
+
 //===----------------------------------------------------------------------===//
 // OpAsmDialectInterface
 //===----------------------------------------------------------------------===//
@@ -3353,24 +3367,6 @@ struct LLVMOpAsmDialectInterface : public OpAsmDialectInterface {
 };
 } // namespace
 
-//===----------------------------------------------------------------------===//
-// CallIntrinsicOp
-//===----------------------------------------------------------------------===//
-
-void CallIntrinsicOp::build(OpBuilder &builder, OperationState &state,
-                            mlir::TypeRange resultTypes,
-                            mlir::StringAttr intrin, mlir::ValueRange args,
-                            mlir::LLVM::FastmathFlagsAttr fastMathFlags) {
-  build(builder, state, resultTypes, intrin, args, fastMathFlags,
-        /*op_bundle_operands=*/{});
-}
-void CallIntrinsicOp::build(OpBuilder &builder, OperationState &state,
-                            mlir::Type resultType, mlir::StringAttr intrin,
-                            mlir::ValueRange args) {
-  build(builder, state, {resultType}, intrin, args, FastmathFlagsAttr{},
-        /*op_bundle_operands=*/{});
-}
-
 //===----------------------------------------------------------------------===//
 // LinkerOptionsOp
 //===----------------------------------------------------------------------===//

>From 01987e904a05f002d16fd34c659d183fcf4e8ca9 Mon Sep 17 00:00:00 2001
From: Finlay Marno <finlay.marno at codeplay.com>
Date: Wed, 9 Oct 2024 17:16:35 +0100
Subject: [PATCH 4/4] Added a couple more builders for call instrinsic op

---
 mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td |  2 ++
 mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp  | 18 ++++++++++++++++--
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td b/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td
index d59c02fa25f867..97b8dae79a2f2f 100644
--- a/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td
+++ b/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td
@@ -1944,6 +1944,8 @@ def LLVM_CallIntrinsicOp
   }];
 
   let builders = [
+    OpBuilder<(ins "StringAttr":$intrin, "ValueRange":$args)>,
+    OpBuilder<(ins "StringAttr":$intrin, "ValueRange":$args, "FastmathFlagsAttr":$fastMathFlags)>,
     OpBuilder<(ins "Type": $resultType, "StringAttr":$intrin, "ValueRange":$args)>,
     OpBuilder<(ins "TypeRange": $resultTypes, "StringAttr":$intrin, "ValueRange":$args, "FastmathFlagsAttr":$fastMathFlags)>
   ];
diff --git a/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp b/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
index ab923e89e2d255..8e6b72eb0ce5e8 100644
--- a/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
+++ b/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
@@ -3325,12 +3325,18 @@ LogicalResult CallIntrinsicOp::verify() {
 }
 
 void CallIntrinsicOp::build(OpBuilder &builder, OperationState &state,
-                            mlir::TypeRange resultTypes,
+                            mlir::StringAttr intrin, mlir::ValueRange args) {
+  build(builder, state, /*results=*/Type{}, intrin, args, FastmathFlagsAttr{},
+        /*op_bundle_operands=*/{});
+}
+
+void CallIntrinsicOp::build(OpBuilder &builder, OperationState &state,
                             mlir::StringAttr intrin, mlir::ValueRange args,
                             mlir::LLVM::FastmathFlagsAttr fastMathFlags) {
-  build(builder, state, resultTypes, intrin, args, fastMathFlags,
+  build(builder, state, /*results=*/Type{}, intrin, args, fastMathFlags,
         /*op_bundle_operands=*/{});
 }
+
 void CallIntrinsicOp::build(OpBuilder &builder, OperationState &state,
                             mlir::Type resultType, mlir::StringAttr intrin,
                             mlir::ValueRange args) {
@@ -3338,6 +3344,14 @@ void CallIntrinsicOp::build(OpBuilder &builder, OperationState &state,
         /*op_bundle_operands=*/{});
 }
 
+void CallIntrinsicOp::build(OpBuilder &builder, OperationState &state,
+                            mlir::TypeRange resultTypes,
+                            mlir::StringAttr intrin, mlir::ValueRange args,
+                            mlir::LLVM::FastmathFlagsAttr fastMathFlags) {
+  build(builder, state, resultTypes, intrin, args, fastMathFlags,
+        /*op_bundle_operands=*/{});
+}
+
 //===----------------------------------------------------------------------===//
 // OpAsmDialectInterface
 //===----------------------------------------------------------------------===//



More information about the Mlir-commits mailing list