Skip to content

Commit 9e88bf5

Browse files
committed
MSP430: Add test for llvm.exp10 intrinsic
1 parent d4516c7 commit 9e88bf5

File tree

1 file changed

+198
-0
lines changed

1 file changed

+198
-0
lines changed
Lines changed: 198 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,198 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2+
; RUN: llc -mtriple=msp430-unknown-unknown < %s | FileCheck %s
3+
; RUN: llc -mtriple=msp430-unknown-linux < %s | FileCheck %s
4+
; RUN: llc -mtriple=msp430-unknown-linux-gnu < %s | FileCheck %s
5+
6+
define half @exp10_f16(half %x) #0 {
7+
; CHECK-LABEL: exp10_f16:
8+
; CHECK: ; %bb.0:
9+
; CHECK-NEXT: call #__extendhfsf2
10+
; CHECK-NEXT: call #exp10f
11+
; CHECK-NEXT: call #__truncsfhf2
12+
; CHECK-NEXT: ret
13+
%r = call half @llvm.exp10.f16(half %x)
14+
ret half %r
15+
}
16+
17+
define <2 x half> @exp10_v2f16(<2 x half> %x) #0 {
18+
; CHECK-LABEL: exp10_v2f16:
19+
; CHECK: ; %bb.0:
20+
; CHECK-NEXT: push r9
21+
; CHECK-NEXT: push r10
22+
; CHECK-NEXT: mov r13, r10
23+
; CHECK-NEXT: call #__extendhfsf2
24+
; CHECK-NEXT: call #exp10f
25+
; CHECK-NEXT: call #__truncsfhf2
26+
; CHECK-NEXT: mov r12, r9
27+
; CHECK-NEXT: mov r10, r12
28+
; CHECK-NEXT: call #__extendhfsf2
29+
; CHECK-NEXT: call #exp10f
30+
; CHECK-NEXT: call #__truncsfhf2
31+
; CHECK-NEXT: mov r12, r13
32+
; CHECK-NEXT: mov r9, r12
33+
; CHECK-NEXT: pop r10
34+
; CHECK-NEXT: pop r9
35+
; CHECK-NEXT: ret
36+
%r = call <2 x half> @llvm.exp10.v2f16(<2 x half> %x)
37+
ret <2 x half> %r
38+
}
39+
40+
define float @exp10_f32(float %x) #0 {
41+
; CHECK-LABEL: exp10_f32:
42+
; CHECK: ; %bb.0:
43+
; CHECK-NEXT: call #exp10f
44+
; CHECK-NEXT: ret
45+
%r = call float @llvm.exp10.f32(float %x)
46+
ret float %r
47+
}
48+
49+
define <2 x float> @exp10_v2f32(<2 x float> %x) #0 {
50+
; CHECK-LABEL: exp10_v2f32:
51+
; CHECK: ; %bb.0:
52+
; CHECK-NEXT: push r7
53+
; CHECK-NEXT: push r8
54+
; CHECK-NEXT: push r9
55+
; CHECK-NEXT: push r10
56+
; CHECK-NEXT: mov r15, r10
57+
; CHECK-NEXT: mov r14, r9
58+
; CHECK-NEXT: call #exp10f
59+
; CHECK-NEXT: mov r12, r8
60+
; CHECK-NEXT: mov r13, r7
61+
; CHECK-NEXT: mov r9, r12
62+
; CHECK-NEXT: mov r10, r13
63+
; CHECK-NEXT: call #exp10f
64+
; CHECK-NEXT: mov r12, r14
65+
; CHECK-NEXT: mov r13, r15
66+
; CHECK-NEXT: mov r8, r12
67+
; CHECK-NEXT: mov r7, r13
68+
; CHECK-NEXT: pop r10
69+
; CHECK-NEXT: pop r9
70+
; CHECK-NEXT: pop r8
71+
; CHECK-NEXT: pop r7
72+
; CHECK-NEXT: ret
73+
%r = call <2 x float> @llvm.exp10.v2f32(<2 x float> %x)
74+
ret <2 x float> %r
75+
}
76+
77+
define double @exp10_f64(double %x) #0 {
78+
; CHECK-LABEL: exp10_f64:
79+
; CHECK: ; %bb.0:
80+
; CHECK-NEXT: call #exp10
81+
; CHECK-NEXT: ret
82+
%r = call double @llvm.exp10.f64(double %x)
83+
ret double %r
84+
}
85+
86+
define <2 x double> @exp10_v2f64(<2 x double> %x) #0 {
87+
; CHECK-LABEL: exp10_v2f64:
88+
; CHECK: ; %bb.0:
89+
; CHECK-NEXT: push r10
90+
; CHECK-NEXT: mov r12, r10
91+
; CHECK-NEXT: mov 12(r1), r12
92+
; CHECK-NEXT: mov 14(r1), r13
93+
; CHECK-NEXT: mov 16(r1), r14
94+
; CHECK-NEXT: mov 18(r1), r15
95+
; CHECK-NEXT: call #exp10
96+
; CHECK-NEXT: mov r15, 14(r10)
97+
; CHECK-NEXT: mov r14, 12(r10)
98+
; CHECK-NEXT: mov r13, 10(r10)
99+
; CHECK-NEXT: mov r12, 8(r10)
100+
; CHECK-NEXT: mov 4(r1), r12
101+
; CHECK-NEXT: mov 6(r1), r13
102+
; CHECK-NEXT: mov 8(r1), r14
103+
; CHECK-NEXT: mov 10(r1), r15
104+
; CHECK-NEXT: call #exp10
105+
; CHECK-NEXT: mov r15, 6(r10)
106+
; CHECK-NEXT: mov r14, 4(r10)
107+
; CHECK-NEXT: mov r13, 2(r10)
108+
; CHECK-NEXT: mov r12, 0(r10)
109+
; CHECK-NEXT: pop r10
110+
; CHECK-NEXT: ret
111+
%r = call <2 x double> @llvm.exp10.v2f64(<2 x double> %x)
112+
ret <2 x double> %r
113+
}
114+
115+
define fp128 @exp10_f128(fp128 %x) #0 {
116+
; CHECK-LABEL: exp10_f128:
117+
; CHECK: ; %bb.0:
118+
; CHECK-NEXT: push r10
119+
; CHECK-NEXT: sub #32, r1
120+
; CHECK-NEXT: mov r12, r10
121+
; CHECK-NEXT: mov 50(r1), 14(r1)
122+
; CHECK-NEXT: mov 48(r1), 12(r1)
123+
; CHECK-NEXT: mov 46(r1), 10(r1)
124+
; CHECK-NEXT: mov 44(r1), 8(r1)
125+
; CHECK-NEXT: mov 42(r1), 6(r1)
126+
; CHECK-NEXT: mov 40(r1), 4(r1)
127+
; CHECK-NEXT: mov 38(r1), 2(r1)
128+
; CHECK-NEXT: mov 36(r1), 0(r1)
129+
; CHECK-NEXT: mov r1, r12
130+
; CHECK-NEXT: add #16, r12
131+
; CHECK-NEXT: call #exp10l
132+
; CHECK-NEXT: mov 30(r1), 14(r10)
133+
; CHECK-NEXT: mov 28(r1), 12(r10)
134+
; CHECK-NEXT: mov 26(r1), 10(r10)
135+
; CHECK-NEXT: mov 24(r1), 8(r10)
136+
; CHECK-NEXT: mov 22(r1), 6(r10)
137+
; CHECK-NEXT: mov 20(r1), 4(r10)
138+
; CHECK-NEXT: mov 18(r1), 2(r10)
139+
; CHECK-NEXT: mov 16(r1), 0(r10)
140+
; CHECK-NEXT: add #32, r1
141+
; CHECK-NEXT: pop r10
142+
; CHECK-NEXT: ret
143+
%r = call fp128 @llvm.exp10.f128(fp128 %x)
144+
ret fp128 %r
145+
}
146+
147+
define <2 x fp128> @exp10_v2f128(<2 x fp128> %x) #0 {
148+
; CHECK-LABEL: exp10_v2f128:
149+
; CHECK: ; %bb.0:
150+
; CHECK-NEXT: push r10
151+
; CHECK-NEXT: sub #48, r1
152+
; CHECK-NEXT: mov r12, r10
153+
; CHECK-NEXT: mov 82(r1), 14(r1)
154+
; CHECK-NEXT: mov 80(r1), 12(r1)
155+
; CHECK-NEXT: mov 78(r1), 10(r1)
156+
; CHECK-NEXT: mov 76(r1), 8(r1)
157+
; CHECK-NEXT: mov 74(r1), 6(r1)
158+
; CHECK-NEXT: mov 72(r1), 4(r1)
159+
; CHECK-NEXT: mov 70(r1), 2(r1)
160+
; CHECK-NEXT: mov 68(r1), 0(r1)
161+
; CHECK-NEXT: mov r1, r12
162+
; CHECK-NEXT: add #32, r12
163+
; CHECK-NEXT: call #exp10l
164+
; CHECK-NEXT: mov 66(r1), 14(r1)
165+
; CHECK-NEXT: mov 64(r1), 12(r1)
166+
; CHECK-NEXT: mov 62(r1), 10(r1)
167+
; CHECK-NEXT: mov 60(r1), 8(r1)
168+
; CHECK-NEXT: mov 58(r1), 6(r1)
169+
; CHECK-NEXT: mov 56(r1), 4(r1)
170+
; CHECK-NEXT: mov 54(r1), 2(r1)
171+
; CHECK-NEXT: mov 52(r1), 0(r1)
172+
; CHECK-NEXT: mov r1, r12
173+
; CHECK-NEXT: add #16, r12
174+
; CHECK-NEXT: call #exp10l
175+
; CHECK-NEXT: mov 46(r1), 30(r10)
176+
; CHECK-NEXT: mov 44(r1), 28(r10)
177+
; CHECK-NEXT: mov 42(r1), 26(r10)
178+
; CHECK-NEXT: mov 40(r1), 24(r10)
179+
; CHECK-NEXT: mov 38(r1), 22(r10)
180+
; CHECK-NEXT: mov 36(r1), 20(r10)
181+
; CHECK-NEXT: mov 34(r1), 18(r10)
182+
; CHECK-NEXT: mov 32(r1), 16(r10)
183+
; CHECK-NEXT: mov 30(r1), 14(r10)
184+
; CHECK-NEXT: mov 28(r1), 12(r10)
185+
; CHECK-NEXT: mov 26(r1), 10(r10)
186+
; CHECK-NEXT: mov 24(r1), 8(r10)
187+
; CHECK-NEXT: mov 22(r1), 6(r10)
188+
; CHECK-NEXT: mov 20(r1), 4(r10)
189+
; CHECK-NEXT: mov 18(r1), 2(r10)
190+
; CHECK-NEXT: mov 16(r1), 0(r10)
191+
; CHECK-NEXT: add #48, r1
192+
; CHECK-NEXT: pop r10
193+
; CHECK-NEXT: ret
194+
%r = call <2 x fp128> @llvm.exp10.v2f128(<2 x fp128> %x)
195+
ret <2 x fp128> %r
196+
}
197+
198+
attributes #0 = { nounwind }

0 commit comments

Comments
 (0)