Skip to content

Commit d367695

Browse files
authored
XCore: Add test for sincos and exp10 intrinsics (#148621)
1 parent 2eb733b commit d367695

File tree

2 files changed

+150
-0
lines changed

2 files changed

+150
-0
lines changed

llvm/test/CodeGen/XCore/llvm.exp10.ll

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
; RUN: llc -mtriple=xcore-unknown-unknown < %s | FileCheck %s
2+
3+
; CHECK-LABEL: exp10_f16:
4+
; CHECK: bl __extendhfsf2
5+
; CHECK: bl exp10f
6+
; CHECK: bl __truncsfhf2
7+
define half @exp10_f16(half %x) #0 {
8+
%r = call half @llvm.exp10.f16(half %x)
9+
ret half %r
10+
}
11+
12+
; CHECK-LABEL: exp10_v2f16:
13+
; CHECK: bl __extendhfsf2
14+
; CHECK: bl __extendhfsf2
15+
; CHECK: bl exp10f
16+
; CHECK: bl exp10f
17+
; CHECK: bl __truncsfhf2
18+
; CHECK: bl __truncsfhf2
19+
define <2 x half> @exp10_v2f16(<2 x half> %x) #0 {
20+
%r = call <2 x half> @llvm.exp10.v2f16(<2 x half> %x)
21+
ret <2 x half> %r
22+
}
23+
24+
; CHECK-LABEL: exp10_f32:
25+
; CHECK: bl exp10f
26+
define float @exp10_f32(float %x) #0 {
27+
%r = call float @llvm.exp10.f32(float %x)
28+
ret float %r
29+
}
30+
31+
; CHECK-LABEL: exp10_v2f32:
32+
; CHECK: bl exp10f
33+
; CHECK: bl exp10f
34+
define <2 x float> @exp10_v2f32(<2 x float> %x) #0 {
35+
%r = call <2 x float> @llvm.exp10.v2f32(<2 x float> %x)
36+
ret <2 x float> %r
37+
}
38+
39+
; CHECK-LABEL: exp10_f64:
40+
; CHECK: bl exp10
41+
define double @exp10_f64(double %x) #0 {
42+
%r = call double @llvm.exp10.f64(double %x)
43+
ret double %r
44+
}
45+
46+
; CHECK-LABEL: exp10_v2f64:
47+
; CHECK: bl exp10
48+
; CHECK: bl exp10
49+
define <2 x double> @exp10_v2f64(<2 x double> %x) #0 {
50+
%r = call <2 x double> @llvm.exp10.v2f64(<2 x double> %x)
51+
ret <2 x double> %r
52+
}
53+
54+
; CHECK-LABEL: exp10_f128:
55+
; CHECK: bl exp10l
56+
define fp128 @exp10_f128(fp128 %x) #0 {
57+
%r = call fp128 @llvm.exp10.f128(fp128 %x)
58+
ret fp128 %r
59+
}
60+
61+
; CHECK-LABEL: exp10_v2f128:
62+
; CHECK: bl exp10l
63+
; CHECK: bl exp10l
64+
define <2 x fp128> @exp10_v2f128(<2 x fp128> %x) #0 {
65+
%r = call <2 x fp128> @llvm.exp10.v2f128(<2 x fp128> %x)
66+
ret <2 x fp128> %r
67+
}
68+
69+
attributes #0 = { nounwind }
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
; RUN: llc -mtriple=xcore-unknown-unknown < %s | FileCheck %s
2+
3+
; CHECK-LABEL: test_sincos_f16:
4+
; CHECK: bl __extendhfsf2
5+
; CHECK: bl cosf
6+
; CHECK: bl sinf
7+
; CHECK: bl __truncsfhf2
8+
; CHECK: bl __truncsfhf2
9+
define { half, half } @test_sincos_f16(half %a) nounwind {
10+
%result = call { half, half } @llvm.sincos.f16(half %a)
11+
ret { half, half } %result
12+
}
13+
14+
; CHECK-LABEL: test_sincos_v2f16:
15+
; CHECK: bl __extendhfsf2
16+
; CHECK: bl __extendhfsf2
17+
; CHECK: bl cosf
18+
; CHECK: bl cosf
19+
; CHECK: bl sinf
20+
; CHECK: bl sinf
21+
; CHECK: bl __truncsfhf2
22+
; CHECK: bl __truncsfhf2
23+
define { <2 x half>, <2 x half> } @test_sincos_v2f16(<2 x half> %a) nounwind {
24+
%result = call { <2 x half>, <2 x half> } @llvm.sincos.v2f16(<2 x half> %a)
25+
ret { <2 x half>, <2 x half> } %result
26+
}
27+
28+
; CHECK-LABEL: test_sincos_f32:
29+
; OTHER: bl sinf
30+
; OTHER: bl cosf
31+
; GNU: bl sincosf
32+
define { float, float } @test_sincos_f32(float %a) nounwind {
33+
%result = call { float, float } @llvm.sincos.f32(float %a)
34+
ret { float, float } %result
35+
}
36+
37+
; CHECK-LABEL: test_sincos_v2f32:
38+
; CHECK: bl sinf
39+
; CHECK: bl sinf
40+
; CHECK: bl cosf
41+
; CHECK: bl cosf
42+
define { <2 x float>, <2 x float> } @test_sincos_v2f32(<2 x float> %a) nounwind {
43+
%result = call { <2 x float>, <2 x float> } @llvm.sincos.v2f32(<2 x float> %a)
44+
ret { <2 x float>, <2 x float> } %result
45+
}
46+
47+
; CHECK-LABEL: test_sincos_f64:
48+
; CHECK: bl sin
49+
; CHECK: bl cos
50+
define { double, double } @test_sincos_f64(double %a) nounwind {
51+
%result = call { double, double } @llvm.sincos.f64(double %a)
52+
ret { double, double } %result
53+
}
54+
55+
; CHECK-LABEL: test_sincos_v2f64:
56+
; CHECK: bl sin
57+
; CHECK: bl sin
58+
; CHECK: bl cos
59+
; CHECK: bl cos
60+
define { <2 x double>, <2 x double> } @test_sincos_v2f64(<2 x double> %a) nounwind {
61+
%result = call { <2 x double>, <2 x double> } @llvm.sincos.v2f64(<2 x double> %a)
62+
ret { <2 x double>, <2 x double> } %result
63+
}
64+
65+
; CHECK-LABEL: test_sincos_f128:
66+
; CHECK: bl sinl
67+
; CHECK: bl cosl
68+
define { fp128, fp128 } @test_sincos_f128(fp128 %a) nounwind {
69+
%result = call { fp128, fp128 } @llvm.sincos.f128(fp128 %a)
70+
ret { fp128, fp128 } %result
71+
}
72+
73+
; CHECK-LABEL: test_sincos_v2f128:
74+
; CHECK: bl sinl
75+
; CHECK: bl cosl
76+
; CHECK: bl cosl
77+
; CHECK: bl sinl
78+
define { <2 x fp128>, <2 x fp128> } @test_sincos_v2f128(<2 x fp128> %a) nounwind {
79+
%result = call { <2 x fp128>, <2 x fp128> } @llvm.sincos.v2f128(<2 x fp128> %a)
80+
ret { <2 x fp128>, <2 x fp128> } %result
81+
}

0 commit comments

Comments
 (0)