Skip to content

Commit 5caefe2

Browse files
authored
[MLIR][LLVMIR] Add support for asin acos atan intrinsics op (#127317)
This is similar to #125748
1 parent 1c762c2 commit 5caefe2

File tree

3 files changed

+43
-0
lines changed

3 files changed

+43
-0
lines changed

mlir/include/mlir/Dialect/LLVMIR/LLVMIntrinsicOps.td

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,10 @@ def LLVM_SinOp : LLVM_UnaryIntrOpF<"sin">;
170170
def LLVM_CosOp : LLVM_UnaryIntrOpF<"cos">;
171171
def LLVM_TanOp : LLVM_UnaryIntrOpF<"tan">;
172172

173+
def LLVM_ASinOp : LLVM_UnaryIntrOpF<"asin">;
174+
def LLVM_ACosOp : LLVM_UnaryIntrOpF<"acos">;
175+
def LLVM_ATanOp : LLVM_UnaryIntrOpF<"atan">;
176+
173177
def LLVM_SinhOp : LLVM_UnaryIntrOpF<"sinh">;
174178
def LLVM_CoshOp : LLVM_UnaryIntrOpF<"cosh">;
175179
def LLVM_TanhOp : LLVM_UnaryIntrOpF<"tanh">;

mlir/test/Target/LLVMIR/Import/intrinsic.ll

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,25 @@ define void @trig_test(float %0, <8 x float> %1) {
120120

121121
ret void
122122
}
123+
; CHECK-LABEL: llvm.func @inv_trig_test
124+
define void @inv_trig_test(float %0, <8 x float> %1) {
125+
; CHECK: llvm.intr.asin(%{{.*}}) : (f32) -> f32
126+
%3 = call float @llvm.asin.f32(float %0)
127+
; CHECK: llvm.intr.asin(%{{.*}}) : (vector<8xf32>) -> vector<8xf32>
128+
%4 = call <8 x float> @llvm.asin.v8f32(<8 x float> %1)
129+
130+
; CHECK: llvm.intr.acos(%{{.*}}) : (f32) -> f32
131+
%5 = call float @llvm.acos.f32(float %0)
132+
; CHECK: llvm.intr.acos(%{{.*}}) : (vector<8xf32>) -> vector<8xf32>
133+
%6 = call <8 x float> @llvm.acos.v8f32(<8 x float> %1)
134+
135+
; CHECK: llvm.intr.atan(%{{.*}}) : (f32) -> f32
136+
%7 = call float @llvm.atan.f32(float %0)
137+
; CHECK: llvm.intr.atan(%{{.*}}) : (vector<8xf32>) -> vector<8xf32>
138+
%8 = call <8 x float> @llvm.atan.v8f32(<8 x float> %1)
139+
140+
ret void
141+
}
123142
; CHECK-LABEL: llvm.func @hyperbolic_trig_test
124143
define void @hyperbolic_trig_test(float %0, <8 x float> %1) {
125144
; CHECK: llvm.intr.sinh(%{{.*}}) : (f32) -> f32

mlir/test/Target/LLVMIR/llvmir-intrinsics.mlir

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,26 @@ llvm.func @trig_test(%arg0: f32, %arg1: vector<8xf32>) {
122122
llvm.return
123123
}
124124

125+
// CHECK-LABEL: @inv_trig_test
126+
llvm.func @inv_trig_test(%arg0: f32, %arg1: vector<8xf32>) {
127+
// CHECK: call float @llvm.asin.f32
128+
llvm.intr.asin(%arg0) : (f32) -> f32
129+
// CHECK: call <8 x float> @llvm.asin.v8f32
130+
llvm.intr.asin(%arg1) : (vector<8xf32>) -> vector<8xf32>
131+
132+
// CHECK: call float @llvm.acos.f32
133+
llvm.intr.acos(%arg0) : (f32) -> f32
134+
// CHECK: call <8 x float> @llvm.acos.v8f32
135+
llvm.intr.acos(%arg1) : (vector<8xf32>) -> vector<8xf32>
136+
137+
// CHECK: call float @llvm.atan.f32
138+
llvm.intr.atan(%arg0) : (f32) -> f32
139+
// CHECK: call <8 x float> @llvm.atan.v8f32
140+
llvm.intr.atan(%arg1) : (vector<8xf32>) -> vector<8xf32>
141+
142+
llvm.return
143+
}
144+
125145
// CHECK-LABEL: @hyperbolic_trig_test
126146
llvm.func @hyperbolic_trig_test(%arg0: f32, %arg1: vector<8xf32>) {
127147
// CHECK: call float @llvm.sinh.f32

0 commit comments

Comments
 (0)