[Mlir-commits] [mlir] d0613c1 - [mlir][LLVMIR] Add lowering support for vp.muladd intrinsic
Diego Caballero
llvmlistbot at llvm.org
Tue Feb 7 12:17:36 PST 2023
Author: Diego Caballero
Date: 2023-02-07T20:15:59Z
New Revision: d0613c1d7d0b4123d4d31ce4abb3a50b33f698ba
URL: https://github.com/llvm/llvm-project/commit/d0613c1d7d0b4123d4d31ce4abb3a50b33f698ba
DIFF: https://github.com/llvm/llvm-project/commit/d0613c1d7d0b4123d4d31ce4abb3a50b33f698ba.diff
LOG: [mlir][LLVMIR] Add lowering support for vp.muladd intrinsic
Reviewed By: gysit
Differential Revision: https://reviews.llvm.org/D143449
Added:
Modified:
mlir/include/mlir/Dialect/LLVMIR/LLVMIntrinsicOps.td
mlir/test/Target/LLVMIR/Import/intrinsic.ll
mlir/test/Target/LLVMIR/llvmir-intrinsics.mlir
Removed:
################################################################################
diff --git a/mlir/include/mlir/Dialect/LLVMIR/LLVMIntrinsicOps.td b/mlir/include/mlir/Dialect/LLVMIR/LLVMIntrinsicOps.td
index c1b82b91c110f..227a1920069a1 100644
--- a/mlir/include/mlir/Dialect/LLVMIR/LLVMIntrinsicOps.td
+++ b/mlir/include/mlir/Dialect/LLVMIR/LLVMIntrinsicOps.td
@@ -825,7 +825,8 @@ def LLVM_VPFRemOp : LLVM_VPBinaryF<"frem">;
def LLVM_VPFNegOp : LLVM_VPUnaryF<"fneg">;
// Float Ternary
-def LLVM_VPFmaOp : LLVM_VPTernaryF<"fma">;
+def LLVM_VPFMulAddOp : LLVM_VPTernaryF<"fmuladd">;
+def LLVM_VPFmaOp : LLVM_VPTernaryF<"fma">;
// Integer Reduction
def LLVM_VPReduceAddOp : LLVM_VPReductionI<"add">;
diff --git a/mlir/test/Target/LLVMIR/Import/intrinsic.ll b/mlir/test/Target/LLVMIR/Import/intrinsic.ll
index 1bcafb7d5c23a..821a0272e8d6a 100644
--- a/mlir/test/Target/LLVMIR/Import/intrinsic.ll
+++ b/mlir/test/Target/LLVMIR/Import/intrinsic.ll
@@ -629,6 +629,8 @@ define void @vector_predication_intrinsics(<8 x i32> %0, <8 x i32> %1, <8 x floa
%58 = call <8 x i64> @llvm.vp.ptrtoint.v8i64.v8p0(<8 x ptr> %6, <8 x i1> %11, i32 %12)
; CHECK: "llvm.intr.vp.inttoptr"(%{{.*}}, %{{.*}}, %{{.*}}) : (vector<8xi64>, vector<8xi1>, i32) -> !llvm.vec<8 x ptr>
%59 = call <8 x ptr> @llvm.vp.inttoptr.v8p0.v8i64(<8 x i64> %4, <8 x i1> %11, i32 %12)
+ ; CHECK: "llvm.intr.vp.fmuladd"(%{{.*}}, %{{.*}}, %{{.*}}, %{{.*}}, %{{.*}}) : (vector<8xf32>, vector<8xf32>, vector<8xf32>, vector<8xi1>, i32) -> vector<8xf32>
+ %60 = call <8 x float> @llvm.vp.fmuladd.v8f32(<8 x float> %2, <8 x float> %3, <8 x float> %3, <8 x i1> %11, i32 %12)
ret void
}
@@ -762,6 +764,7 @@ declare <8 x float> @llvm.vp.fdiv.v8f32(<8 x float>, <8 x float>, <8 x i1>, i32)
declare <8 x float> @llvm.vp.frem.v8f32(<8 x float>, <8 x float>, <8 x i1>, i32)
declare <8 x float> @llvm.vp.fneg.v8f32(<8 x float>, <8 x i1>, i32)
declare <8 x float> @llvm.vp.fma.v8f32(<8 x float>, <8 x float>, <8 x float>, <8 x i1>, i32)
+declare <8 x float> @llvm.vp.fmuladd.v8f32(<8 x float>, <8 x float>, <8 x float>, <8 x i1>, i32)
declare i32 @llvm.vp.reduce.add.v8i32(i32, <8 x i32>, <8 x i1>, i32)
declare i32 @llvm.vp.reduce.mul.v8i32(i32, <8 x i32>, <8 x i1>, i32)
declare i32 @llvm.vp.reduce.and.v8i32(i32, <8 x i32>, <8 x i1>, i32)
diff --git a/mlir/test/Target/LLVMIR/llvmir-intrinsics.mlir b/mlir/test/Target/LLVMIR/llvmir-intrinsics.mlir
index e6ff83f15ba79..3dfb0574b9075 100644
--- a/mlir/test/Target/LLVMIR/llvmir-intrinsics.mlir
+++ b/mlir/test/Target/LLVMIR/llvmir-intrinsics.mlir
@@ -593,6 +593,9 @@ llvm.func @vector_predication_intrinsics(%A: vector<8xi32>, %B: vector<8xi32>,
// CHECK: call <8 x float> @llvm.vp.fma.v8f32
"llvm.intr.vp.fma" (%C, %D, %D, %mask, %evl) :
(vector<8xf32>, vector<8xf32>, vector<8xf32>, vector<8xi1>, i32) -> vector<8xf32>
+ // CHECK: call <8 x float> @llvm.vp.fmuladd.v8f32
+ "llvm.intr.vp.fmuladd" (%C, %D, %D, %mask, %evl) :
+ (vector<8xf32>, vector<8xf32>, vector<8xf32>, vector<8xi1>, i32) -> vector<8xf32>
// CHECK: call i32 @llvm.vp.reduce.add.v8i32
"llvm.intr.vp.reduce.add" (%i, %A, %mask, %evl) :
More information about the Mlir-commits
mailing list