xref: /aosp_15_r20/external/llvm/test/CodeGen/AArch64/arm64-vcvt.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=arm64 -aarch64-neon-syntax=apple | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcvtas_2s(<2 x float> %A) nounwind {
4*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: fcvtas_2s:
5*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
6*9880d681SAndroid Build Coastguard Worker;CHECK: fcvtas.2s v0, v0
7*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
8*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x i32> @llvm.aarch64.neon.fcvtas.v2i32.v2f32(<2 x float> %A)
9*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp3
10*9880d681SAndroid Build Coastguard Worker}
11*9880d681SAndroid Build Coastguard Worker
12*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcvtas_4s(<4 x float> %A) nounwind {
13*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: fcvtas_4s:
14*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
15*9880d681SAndroid Build Coastguard Worker;CHECK: fcvtas.4s v0, v0
16*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
17*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <4 x i32> @llvm.aarch64.neon.fcvtas.v4i32.v4f32(<4 x float> %A)
18*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp3
19*9880d681SAndroid Build Coastguard Worker}
20*9880d681SAndroid Build Coastguard Worker
21*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcvtas_2d(<2 x double> %A) nounwind {
22*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: fcvtas_2d:
23*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
24*9880d681SAndroid Build Coastguard Worker;CHECK: fcvtas.2d v0, v0
25*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
26*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x i64> @llvm.aarch64.neon.fcvtas.v2i64.v2f64(<2 x double> %A)
27*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp3
28*9880d681SAndroid Build Coastguard Worker}
29*9880d681SAndroid Build Coastguard Worker
30*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.fcvtas.v2i32.v2f32(<2 x float>) nounwind readnone
31*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.aarch64.neon.fcvtas.v4i32.v4f32(<4 x float>) nounwind readnone
32*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.aarch64.neon.fcvtas.v2i64.v2f64(<2 x double>) nounwind readnone
33*9880d681SAndroid Build Coastguard Worker
34*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcvtau_2s(<2 x float> %A) nounwind {
35*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: fcvtau_2s:
36*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
37*9880d681SAndroid Build Coastguard Worker;CHECK: fcvtau.2s v0, v0
38*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
39*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x i32> @llvm.aarch64.neon.fcvtau.v2i32.v2f32(<2 x float> %A)
40*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp3
41*9880d681SAndroid Build Coastguard Worker}
42*9880d681SAndroid Build Coastguard Worker
43*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcvtau_4s(<4 x float> %A) nounwind {
44*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: fcvtau_4s:
45*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
46*9880d681SAndroid Build Coastguard Worker;CHECK: fcvtau.4s v0, v0
47*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
48*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <4 x i32> @llvm.aarch64.neon.fcvtau.v4i32.v4f32(<4 x float> %A)
49*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp3
50*9880d681SAndroid Build Coastguard Worker}
51*9880d681SAndroid Build Coastguard Worker
52*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcvtau_2d(<2 x double> %A) nounwind {
53*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: fcvtau_2d:
54*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
55*9880d681SAndroid Build Coastguard Worker;CHECK: fcvtau.2d v0, v0
56*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
57*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x i64> @llvm.aarch64.neon.fcvtau.v2i64.v2f64(<2 x double> %A)
58*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp3
59*9880d681SAndroid Build Coastguard Worker}
60*9880d681SAndroid Build Coastguard Worker
61*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.fcvtau.v2i32.v2f32(<2 x float>) nounwind readnone
62*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.aarch64.neon.fcvtau.v4i32.v4f32(<4 x float>) nounwind readnone
63*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.aarch64.neon.fcvtau.v2i64.v2f64(<2 x double>) nounwind readnone
64*9880d681SAndroid Build Coastguard Worker
65*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcvtms_2s(<2 x float> %A) nounwind {
66*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: fcvtms_2s:
67*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
68*9880d681SAndroid Build Coastguard Worker;CHECK: fcvtms.2s v0, v0
69*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
70*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x i32> @llvm.aarch64.neon.fcvtms.v2i32.v2f32(<2 x float> %A)
71*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp3
72*9880d681SAndroid Build Coastguard Worker}
73*9880d681SAndroid Build Coastguard Worker
74*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcvtms_4s(<4 x float> %A) nounwind {
75*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: fcvtms_4s:
76*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
77*9880d681SAndroid Build Coastguard Worker;CHECK: fcvtms.4s v0, v0
78*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
79*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <4 x i32> @llvm.aarch64.neon.fcvtms.v4i32.v4f32(<4 x float> %A)
80*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp3
81*9880d681SAndroid Build Coastguard Worker}
82*9880d681SAndroid Build Coastguard Worker
83*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcvtms_2d(<2 x double> %A) nounwind {
84*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: fcvtms_2d:
85*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
86*9880d681SAndroid Build Coastguard Worker;CHECK: fcvtms.2d v0, v0
87*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
88*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x i64> @llvm.aarch64.neon.fcvtms.v2i64.v2f64(<2 x double> %A)
89*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp3
90*9880d681SAndroid Build Coastguard Worker}
91*9880d681SAndroid Build Coastguard Worker
92*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.fcvtms.v2i32.v2f32(<2 x float>) nounwind readnone
93*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.aarch64.neon.fcvtms.v4i32.v4f32(<4 x float>) nounwind readnone
94*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.aarch64.neon.fcvtms.v2i64.v2f64(<2 x double>) nounwind readnone
95*9880d681SAndroid Build Coastguard Worker
96*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcvtmu_2s(<2 x float> %A) nounwind {
97*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: fcvtmu_2s:
98*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
99*9880d681SAndroid Build Coastguard Worker;CHECK: fcvtmu.2s v0, v0
100*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
101*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x i32> @llvm.aarch64.neon.fcvtmu.v2i32.v2f32(<2 x float> %A)
102*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp3
103*9880d681SAndroid Build Coastguard Worker}
104*9880d681SAndroid Build Coastguard Worker
105*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcvtmu_4s(<4 x float> %A) nounwind {
106*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: fcvtmu_4s:
107*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
108*9880d681SAndroid Build Coastguard Worker;CHECK: fcvtmu.4s v0, v0
109*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
110*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <4 x i32> @llvm.aarch64.neon.fcvtmu.v4i32.v4f32(<4 x float> %A)
111*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp3
112*9880d681SAndroid Build Coastguard Worker}
113*9880d681SAndroid Build Coastguard Worker
114*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcvtmu_2d(<2 x double> %A) nounwind {
115*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: fcvtmu_2d:
116*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
117*9880d681SAndroid Build Coastguard Worker;CHECK: fcvtmu.2d v0, v0
118*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
119*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x i64> @llvm.aarch64.neon.fcvtmu.v2i64.v2f64(<2 x double> %A)
120*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp3
121*9880d681SAndroid Build Coastguard Worker}
122*9880d681SAndroid Build Coastguard Worker
123*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.fcvtmu.v2i32.v2f32(<2 x float>) nounwind readnone
124*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.aarch64.neon.fcvtmu.v4i32.v4f32(<4 x float>) nounwind readnone
125*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.aarch64.neon.fcvtmu.v2i64.v2f64(<2 x double>) nounwind readnone
126*9880d681SAndroid Build Coastguard Worker
127*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcvtps_2s(<2 x float> %A) nounwind {
128*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: fcvtps_2s:
129*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
130*9880d681SAndroid Build Coastguard Worker;CHECK: fcvtps.2s v0, v0
131*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
132*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x i32> @llvm.aarch64.neon.fcvtps.v2i32.v2f32(<2 x float> %A)
133*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp3
134*9880d681SAndroid Build Coastguard Worker}
135*9880d681SAndroid Build Coastguard Worker
136*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcvtps_4s(<4 x float> %A) nounwind {
137*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: fcvtps_4s:
138*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
139*9880d681SAndroid Build Coastguard Worker;CHECK: fcvtps.4s v0, v0
140*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
141*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <4 x i32> @llvm.aarch64.neon.fcvtps.v4i32.v4f32(<4 x float> %A)
142*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp3
143*9880d681SAndroid Build Coastguard Worker}
144*9880d681SAndroid Build Coastguard Worker
145*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcvtps_2d(<2 x double> %A) nounwind {
146*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: fcvtps_2d:
147*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
148*9880d681SAndroid Build Coastguard Worker;CHECK: fcvtps.2d v0, v0
149*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
150*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x i64> @llvm.aarch64.neon.fcvtps.v2i64.v2f64(<2 x double> %A)
151*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp3
152*9880d681SAndroid Build Coastguard Worker}
153*9880d681SAndroid Build Coastguard Worker
154*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.fcvtps.v2i32.v2f32(<2 x float>) nounwind readnone
155*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.aarch64.neon.fcvtps.v4i32.v4f32(<4 x float>) nounwind readnone
156*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.aarch64.neon.fcvtps.v2i64.v2f64(<2 x double>) nounwind readnone
157*9880d681SAndroid Build Coastguard Worker
158*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcvtpu_2s(<2 x float> %A) nounwind {
159*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: fcvtpu_2s:
160*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
161*9880d681SAndroid Build Coastguard Worker;CHECK: fcvtpu.2s v0, v0
162*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
163*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x i32> @llvm.aarch64.neon.fcvtpu.v2i32.v2f32(<2 x float> %A)
164*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp3
165*9880d681SAndroid Build Coastguard Worker}
166*9880d681SAndroid Build Coastguard Worker
167*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcvtpu_4s(<4 x float> %A) nounwind {
168*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: fcvtpu_4s:
169*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
170*9880d681SAndroid Build Coastguard Worker;CHECK: fcvtpu.4s v0, v0
171*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
172*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <4 x i32> @llvm.aarch64.neon.fcvtpu.v4i32.v4f32(<4 x float> %A)
173*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp3
174*9880d681SAndroid Build Coastguard Worker}
175*9880d681SAndroid Build Coastguard Worker
176*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcvtpu_2d(<2 x double> %A) nounwind {
177*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: fcvtpu_2d:
178*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
179*9880d681SAndroid Build Coastguard Worker;CHECK: fcvtpu.2d v0, v0
180*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
181*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x i64> @llvm.aarch64.neon.fcvtpu.v2i64.v2f64(<2 x double> %A)
182*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp3
183*9880d681SAndroid Build Coastguard Worker}
184*9880d681SAndroid Build Coastguard Worker
185*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.fcvtpu.v2i32.v2f32(<2 x float>) nounwind readnone
186*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.aarch64.neon.fcvtpu.v4i32.v4f32(<4 x float>) nounwind readnone
187*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.aarch64.neon.fcvtpu.v2i64.v2f64(<2 x double>) nounwind readnone
188*9880d681SAndroid Build Coastguard Worker
189*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcvtns_2s(<2 x float> %A) nounwind {
190*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: fcvtns_2s:
191*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
192*9880d681SAndroid Build Coastguard Worker;CHECK: fcvtns.2s v0, v0
193*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
194*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x i32> @llvm.aarch64.neon.fcvtns.v2i32.v2f32(<2 x float> %A)
195*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp3
196*9880d681SAndroid Build Coastguard Worker}
197*9880d681SAndroid Build Coastguard Worker
198*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcvtns_4s(<4 x float> %A) nounwind {
199*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: fcvtns_4s:
200*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
201*9880d681SAndroid Build Coastguard Worker;CHECK: fcvtns.4s v0, v0
202*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
203*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <4 x i32> @llvm.aarch64.neon.fcvtns.v4i32.v4f32(<4 x float> %A)
204*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp3
205*9880d681SAndroid Build Coastguard Worker}
206*9880d681SAndroid Build Coastguard Worker
207*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcvtns_2d(<2 x double> %A) nounwind {
208*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: fcvtns_2d:
209*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
210*9880d681SAndroid Build Coastguard Worker;CHECK: fcvtns.2d v0, v0
211*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
212*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x i64> @llvm.aarch64.neon.fcvtns.v2i64.v2f64(<2 x double> %A)
213*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp3
214*9880d681SAndroid Build Coastguard Worker}
215*9880d681SAndroid Build Coastguard Worker
216*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.fcvtns.v2i32.v2f32(<2 x float>) nounwind readnone
217*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.aarch64.neon.fcvtns.v4i32.v4f32(<4 x float>) nounwind readnone
218*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.aarch64.neon.fcvtns.v2i64.v2f64(<2 x double>) nounwind readnone
219*9880d681SAndroid Build Coastguard Worker
220*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcvtnu_2s(<2 x float> %A) nounwind {
221*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: fcvtnu_2s:
222*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
223*9880d681SAndroid Build Coastguard Worker;CHECK: fcvtnu.2s v0, v0
224*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
225*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x i32> @llvm.aarch64.neon.fcvtnu.v2i32.v2f32(<2 x float> %A)
226*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp3
227*9880d681SAndroid Build Coastguard Worker}
228*9880d681SAndroid Build Coastguard Worker
229*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcvtnu_4s(<4 x float> %A) nounwind {
230*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: fcvtnu_4s:
231*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
232*9880d681SAndroid Build Coastguard Worker;CHECK: fcvtnu.4s v0, v0
233*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
234*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <4 x i32> @llvm.aarch64.neon.fcvtnu.v4i32.v4f32(<4 x float> %A)
235*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp3
236*9880d681SAndroid Build Coastguard Worker}
237*9880d681SAndroid Build Coastguard Worker
238*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcvtnu_2d(<2 x double> %A) nounwind {
239*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: fcvtnu_2d:
240*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
241*9880d681SAndroid Build Coastguard Worker;CHECK: fcvtnu.2d v0, v0
242*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
243*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x i64> @llvm.aarch64.neon.fcvtnu.v2i64.v2f64(<2 x double> %A)
244*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp3
245*9880d681SAndroid Build Coastguard Worker}
246*9880d681SAndroid Build Coastguard Worker
247*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.fcvtnu.v2i32.v2f32(<2 x float>) nounwind readnone
248*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.aarch64.neon.fcvtnu.v4i32.v4f32(<4 x float>) nounwind readnone
249*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.aarch64.neon.fcvtnu.v2i64.v2f64(<2 x double>) nounwind readnone
250*9880d681SAndroid Build Coastguard Worker
251*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcvtzs_2s(<2 x float> %A) nounwind {
252*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: fcvtzs_2s:
253*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
254*9880d681SAndroid Build Coastguard Worker;CHECK: fcvtzs.2s v0, v0
255*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
256*9880d681SAndroid Build Coastguard Worker	%tmp3 = fptosi <2 x float> %A to <2 x i32>
257*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp3
258*9880d681SAndroid Build Coastguard Worker}
259*9880d681SAndroid Build Coastguard Worker
260*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcvtzs_4s(<4 x float> %A) nounwind {
261*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: fcvtzs_4s:
262*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
263*9880d681SAndroid Build Coastguard Worker;CHECK: fcvtzs.4s v0, v0
264*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
265*9880d681SAndroid Build Coastguard Worker	%tmp3 = fptosi <4 x float> %A to <4 x i32>
266*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp3
267*9880d681SAndroid Build Coastguard Worker}
268*9880d681SAndroid Build Coastguard Worker
269*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcvtzs_2d(<2 x double> %A) nounwind {
270*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: fcvtzs_2d:
271*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
272*9880d681SAndroid Build Coastguard Worker;CHECK: fcvtzs.2d v0, v0
273*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
274*9880d681SAndroid Build Coastguard Worker	%tmp3 = fptosi <2 x double> %A to <2 x i64>
275*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp3
276*9880d681SAndroid Build Coastguard Worker}
277*9880d681SAndroid Build Coastguard Worker
278*9880d681SAndroid Build Coastguard Worker
279*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcvtzu_2s(<2 x float> %A) nounwind {
280*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: fcvtzu_2s:
281*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
282*9880d681SAndroid Build Coastguard Worker;CHECK: fcvtzu.2s v0, v0
283*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
284*9880d681SAndroid Build Coastguard Worker	%tmp3 = fptoui <2 x float> %A to <2 x i32>
285*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp3
286*9880d681SAndroid Build Coastguard Worker}
287*9880d681SAndroid Build Coastguard Worker
288*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcvtzu_4s(<4 x float> %A) nounwind {
289*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: fcvtzu_4s:
290*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
291*9880d681SAndroid Build Coastguard Worker;CHECK: fcvtzu.4s v0, v0
292*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
293*9880d681SAndroid Build Coastguard Worker	%tmp3 = fptoui <4 x float> %A to <4 x i32>
294*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp3
295*9880d681SAndroid Build Coastguard Worker}
296*9880d681SAndroid Build Coastguard Worker
297*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcvtzu_2d(<2 x double> %A) nounwind {
298*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: fcvtzu_2d:
299*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
300*9880d681SAndroid Build Coastguard Worker;CHECK: fcvtzu.2d v0, v0
301*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
302*9880d681SAndroid Build Coastguard Worker	%tmp3 = fptoui <2 x double> %A to <2 x i64>
303*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp3
304*9880d681SAndroid Build Coastguard Worker}
305*9880d681SAndroid Build Coastguard Worker
306*9880d681SAndroid Build Coastguard Workerdefine <2 x float> @frinta_2s(<2 x float> %A) nounwind {
307*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: frinta_2s:
308*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
309*9880d681SAndroid Build Coastguard Worker;CHECK: frinta.2s v0, v0
310*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
311*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x float> @llvm.round.v2f32(<2 x float> %A)
312*9880d681SAndroid Build Coastguard Worker	ret <2 x float> %tmp3
313*9880d681SAndroid Build Coastguard Worker}
314*9880d681SAndroid Build Coastguard Worker
315*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @frinta_4s(<4 x float> %A) nounwind {
316*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: frinta_4s:
317*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
318*9880d681SAndroid Build Coastguard Worker;CHECK: frinta.4s v0, v0
319*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
320*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <4 x float> @llvm.round.v4f32(<4 x float> %A)
321*9880d681SAndroid Build Coastguard Worker	ret <4 x float> %tmp3
322*9880d681SAndroid Build Coastguard Worker}
323*9880d681SAndroid Build Coastguard Worker
324*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @frinta_2d(<2 x double> %A) nounwind {
325*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: frinta_2d:
326*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
327*9880d681SAndroid Build Coastguard Worker;CHECK: frinta.2d v0, v0
328*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
329*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x double> @llvm.round.v2f64(<2 x double> %A)
330*9880d681SAndroid Build Coastguard Worker	ret <2 x double> %tmp3
331*9880d681SAndroid Build Coastguard Worker}
332*9880d681SAndroid Build Coastguard Worker
333*9880d681SAndroid Build Coastguard Workerdeclare <2 x float> @llvm.round.v2f32(<2 x float>) nounwind readnone
334*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.round.v4f32(<4 x float>) nounwind readnone
335*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.round.v2f64(<2 x double>) nounwind readnone
336*9880d681SAndroid Build Coastguard Worker
337*9880d681SAndroid Build Coastguard Workerdefine <2 x float> @frinti_2s(<2 x float> %A) nounwind {
338*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: frinti_2s:
339*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
340*9880d681SAndroid Build Coastguard Worker;CHECK: frinti.2s v0, v0
341*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
342*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x float> @llvm.nearbyint.v2f32(<2 x float> %A)
343*9880d681SAndroid Build Coastguard Worker	ret <2 x float> %tmp3
344*9880d681SAndroid Build Coastguard Worker}
345*9880d681SAndroid Build Coastguard Worker
346*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @frinti_4s(<4 x float> %A) nounwind {
347*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: frinti_4s:
348*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
349*9880d681SAndroid Build Coastguard Worker;CHECK: frinti.4s v0, v0
350*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
351*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <4 x float> @llvm.nearbyint.v4f32(<4 x float> %A)
352*9880d681SAndroid Build Coastguard Worker	ret <4 x float> %tmp3
353*9880d681SAndroid Build Coastguard Worker}
354*9880d681SAndroid Build Coastguard Worker
355*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @frinti_2d(<2 x double> %A) nounwind {
356*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: frinti_2d:
357*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
358*9880d681SAndroid Build Coastguard Worker;CHECK: frinti.2d v0, v0
359*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
360*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x double> @llvm.nearbyint.v2f64(<2 x double> %A)
361*9880d681SAndroid Build Coastguard Worker	ret <2 x double> %tmp3
362*9880d681SAndroid Build Coastguard Worker}
363*9880d681SAndroid Build Coastguard Worker
364*9880d681SAndroid Build Coastguard Workerdeclare <2 x float> @llvm.nearbyint.v2f32(<2 x float>) nounwind readnone
365*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.nearbyint.v4f32(<4 x float>) nounwind readnone
366*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.nearbyint.v2f64(<2 x double>) nounwind readnone
367*9880d681SAndroid Build Coastguard Worker
368*9880d681SAndroid Build Coastguard Workerdefine <2 x float> @frintm_2s(<2 x float> %A) nounwind {
369*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: frintm_2s:
370*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
371*9880d681SAndroid Build Coastguard Worker;CHECK: frintm.2s v0, v0
372*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
373*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x float> @llvm.floor.v2f32(<2 x float> %A)
374*9880d681SAndroid Build Coastguard Worker	ret <2 x float> %tmp3
375*9880d681SAndroid Build Coastguard Worker}
376*9880d681SAndroid Build Coastguard Worker
377*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @frintm_4s(<4 x float> %A) nounwind {
378*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: frintm_4s:
379*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
380*9880d681SAndroid Build Coastguard Worker;CHECK: frintm.4s v0, v0
381*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
382*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <4 x float> @llvm.floor.v4f32(<4 x float> %A)
383*9880d681SAndroid Build Coastguard Worker	ret <4 x float> %tmp3
384*9880d681SAndroid Build Coastguard Worker}
385*9880d681SAndroid Build Coastguard Worker
386*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @frintm_2d(<2 x double> %A) nounwind {
387*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: frintm_2d:
388*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
389*9880d681SAndroid Build Coastguard Worker;CHECK: frintm.2d v0, v0
390*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
391*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x double> @llvm.floor.v2f64(<2 x double> %A)
392*9880d681SAndroid Build Coastguard Worker	ret <2 x double> %tmp3
393*9880d681SAndroid Build Coastguard Worker}
394*9880d681SAndroid Build Coastguard Worker
395*9880d681SAndroid Build Coastguard Workerdeclare <2 x float> @llvm.floor.v2f32(<2 x float>) nounwind readnone
396*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.floor.v4f32(<4 x float>) nounwind readnone
397*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.floor.v2f64(<2 x double>) nounwind readnone
398*9880d681SAndroid Build Coastguard Worker
399*9880d681SAndroid Build Coastguard Workerdefine <2 x float> @frintn_2s(<2 x float> %A) nounwind {
400*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: frintn_2s:
401*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
402*9880d681SAndroid Build Coastguard Worker;CHECK: frintn.2s v0, v0
403*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
404*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x float> @llvm.aarch64.neon.frintn.v2f32(<2 x float> %A)
405*9880d681SAndroid Build Coastguard Worker	ret <2 x float> %tmp3
406*9880d681SAndroid Build Coastguard Worker}
407*9880d681SAndroid Build Coastguard Worker
408*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @frintn_4s(<4 x float> %A) nounwind {
409*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: frintn_4s:
410*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
411*9880d681SAndroid Build Coastguard Worker;CHECK: frintn.4s v0, v0
412*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
413*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <4 x float> @llvm.aarch64.neon.frintn.v4f32(<4 x float> %A)
414*9880d681SAndroid Build Coastguard Worker	ret <4 x float> %tmp3
415*9880d681SAndroid Build Coastguard Worker}
416*9880d681SAndroid Build Coastguard Worker
417*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @frintn_2d(<2 x double> %A) nounwind {
418*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: frintn_2d:
419*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
420*9880d681SAndroid Build Coastguard Worker;CHECK: frintn.2d v0, v0
421*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
422*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x double> @llvm.aarch64.neon.frintn.v2f64(<2 x double> %A)
423*9880d681SAndroid Build Coastguard Worker	ret <2 x double> %tmp3
424*9880d681SAndroid Build Coastguard Worker}
425*9880d681SAndroid Build Coastguard Worker
426*9880d681SAndroid Build Coastguard Workerdeclare <2 x float> @llvm.aarch64.neon.frintn.v2f32(<2 x float>) nounwind readnone
427*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.aarch64.neon.frintn.v4f32(<4 x float>) nounwind readnone
428*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.aarch64.neon.frintn.v2f64(<2 x double>) nounwind readnone
429*9880d681SAndroid Build Coastguard Worker
430*9880d681SAndroid Build Coastguard Workerdefine <2 x float> @frintp_2s(<2 x float> %A) nounwind {
431*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: frintp_2s:
432*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
433*9880d681SAndroid Build Coastguard Worker;CHECK: frintp.2s v0, v0
434*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
435*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x float> @llvm.ceil.v2f32(<2 x float> %A)
436*9880d681SAndroid Build Coastguard Worker	ret <2 x float> %tmp3
437*9880d681SAndroid Build Coastguard Worker}
438*9880d681SAndroid Build Coastguard Worker
439*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @frintp_4s(<4 x float> %A) nounwind {
440*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: frintp_4s:
441*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
442*9880d681SAndroid Build Coastguard Worker;CHECK: frintp.4s v0, v0
443*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
444*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <4 x float> @llvm.ceil.v4f32(<4 x float> %A)
445*9880d681SAndroid Build Coastguard Worker	ret <4 x float> %tmp3
446*9880d681SAndroid Build Coastguard Worker}
447*9880d681SAndroid Build Coastguard Worker
448*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @frintp_2d(<2 x double> %A) nounwind {
449*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: frintp_2d:
450*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
451*9880d681SAndroid Build Coastguard Worker;CHECK: frintp.2d v0, v0
452*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
453*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x double> @llvm.ceil.v2f64(<2 x double> %A)
454*9880d681SAndroid Build Coastguard Worker	ret <2 x double> %tmp3
455*9880d681SAndroid Build Coastguard Worker}
456*9880d681SAndroid Build Coastguard Worker
457*9880d681SAndroid Build Coastguard Workerdeclare <2 x float> @llvm.ceil.v2f32(<2 x float>) nounwind readnone
458*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.ceil.v4f32(<4 x float>) nounwind readnone
459*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.ceil.v2f64(<2 x double>) nounwind readnone
460*9880d681SAndroid Build Coastguard Worker
461*9880d681SAndroid Build Coastguard Workerdefine <2 x float> @frintx_2s(<2 x float> %A) nounwind {
462*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: frintx_2s:
463*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
464*9880d681SAndroid Build Coastguard Worker;CHECK: frintx.2s v0, v0
465*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
466*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x float> @llvm.rint.v2f32(<2 x float> %A)
467*9880d681SAndroid Build Coastguard Worker	ret <2 x float> %tmp3
468*9880d681SAndroid Build Coastguard Worker}
469*9880d681SAndroid Build Coastguard Worker
470*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @frintx_4s(<4 x float> %A) nounwind {
471*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: frintx_4s:
472*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
473*9880d681SAndroid Build Coastguard Worker;CHECK: frintx.4s v0, v0
474*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
475*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <4 x float> @llvm.rint.v4f32(<4 x float> %A)
476*9880d681SAndroid Build Coastguard Worker	ret <4 x float> %tmp3
477*9880d681SAndroid Build Coastguard Worker}
478*9880d681SAndroid Build Coastguard Worker
479*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @frintx_2d(<2 x double> %A) nounwind {
480*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: frintx_2d:
481*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
482*9880d681SAndroid Build Coastguard Worker;CHECK: frintx.2d v0, v0
483*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
484*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x double> @llvm.rint.v2f64(<2 x double> %A)
485*9880d681SAndroid Build Coastguard Worker	ret <2 x double> %tmp3
486*9880d681SAndroid Build Coastguard Worker}
487*9880d681SAndroid Build Coastguard Worker
488*9880d681SAndroid Build Coastguard Workerdeclare <2 x float> @llvm.rint.v2f32(<2 x float>) nounwind readnone
489*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.rint.v4f32(<4 x float>) nounwind readnone
490*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.rint.v2f64(<2 x double>) nounwind readnone
491*9880d681SAndroid Build Coastguard Worker
492*9880d681SAndroid Build Coastguard Workerdefine <2 x float> @frintz_2s(<2 x float> %A) nounwind {
493*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: frintz_2s:
494*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
495*9880d681SAndroid Build Coastguard Worker;CHECK: frintz.2s v0, v0
496*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
497*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x float> @llvm.trunc.v2f32(<2 x float> %A)
498*9880d681SAndroid Build Coastguard Worker	ret <2 x float> %tmp3
499*9880d681SAndroid Build Coastguard Worker}
500*9880d681SAndroid Build Coastguard Worker
501*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @frintz_4s(<4 x float> %A) nounwind {
502*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: frintz_4s:
503*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
504*9880d681SAndroid Build Coastguard Worker;CHECK: frintz.4s v0, v0
505*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
506*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <4 x float> @llvm.trunc.v4f32(<4 x float> %A)
507*9880d681SAndroid Build Coastguard Worker	ret <4 x float> %tmp3
508*9880d681SAndroid Build Coastguard Worker}
509*9880d681SAndroid Build Coastguard Worker
510*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @frintz_2d(<2 x double> %A) nounwind {
511*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: frintz_2d:
512*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
513*9880d681SAndroid Build Coastguard Worker;CHECK: frintz.2d v0, v0
514*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
515*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x double> @llvm.trunc.v2f64(<2 x double> %A)
516*9880d681SAndroid Build Coastguard Worker	ret <2 x double> %tmp3
517*9880d681SAndroid Build Coastguard Worker}
518*9880d681SAndroid Build Coastguard Worker
519*9880d681SAndroid Build Coastguard Workerdeclare <2 x float> @llvm.trunc.v2f32(<2 x float>) nounwind readnone
520*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.trunc.v4f32(<4 x float>) nounwind readnone
521*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.trunc.v2f64(<2 x double>) nounwind readnone
522*9880d681SAndroid Build Coastguard Worker
523*9880d681SAndroid Build Coastguard Workerdefine <2 x float> @fcvtxn_2s(<2 x double> %A) nounwind {
524*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: fcvtxn_2s:
525*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
526*9880d681SAndroid Build Coastguard Worker;CHECK: fcvtxn v0.2s, v0.2d
527*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
528*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x float> @llvm.aarch64.neon.fcvtxn.v2f32.v2f64(<2 x double> %A)
529*9880d681SAndroid Build Coastguard Worker	ret <2 x float> %tmp3
530*9880d681SAndroid Build Coastguard Worker}
531*9880d681SAndroid Build Coastguard Worker
532*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @fcvtxn_4s(<2 x float> %ret, <2 x double> %A) nounwind {
533*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: fcvtxn_4s:
534*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
535*9880d681SAndroid Build Coastguard Worker;CHECK: fcvtxn2 v0.4s, v1.2d
536*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
537*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x float> @llvm.aarch64.neon.fcvtxn.v2f32.v2f64(<2 x double> %A)
538*9880d681SAndroid Build Coastguard Worker        %res = shufflevector <2 x float> %ret, <2 x float> %tmp3, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
539*9880d681SAndroid Build Coastguard Worker	ret <4 x float> %res
540*9880d681SAndroid Build Coastguard Worker}
541*9880d681SAndroid Build Coastguard Worker
542*9880d681SAndroid Build Coastguard Workerdeclare <2 x float> @llvm.aarch64.neon.fcvtxn.v2f32.v2f64(<2 x double>) nounwind readnone
543*9880d681SAndroid Build Coastguard Worker
544*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcvtzsc_2s(<2 x float> %A) nounwind {
545*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: fcvtzsc_2s:
546*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
547*9880d681SAndroid Build Coastguard Worker;CHECK: fcvtzs.2s v0, v0, #1
548*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
549*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x i32> @llvm.aarch64.neon.vcvtfp2fxs.v2i32.v2f32(<2 x float> %A, i32 1)
550*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp3
551*9880d681SAndroid Build Coastguard Worker}
552*9880d681SAndroid Build Coastguard Worker
553*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcvtzsc_4s(<4 x float> %A) nounwind {
554*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: fcvtzsc_4s:
555*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
556*9880d681SAndroid Build Coastguard Worker;CHECK: fcvtzs.4s v0, v0, #1
557*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
558*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <4 x i32> @llvm.aarch64.neon.vcvtfp2fxs.v4i32.v4f32(<4 x float> %A, i32 1)
559*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp3
560*9880d681SAndroid Build Coastguard Worker}
561*9880d681SAndroid Build Coastguard Worker
562*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcvtzsc_2d(<2 x double> %A) nounwind {
563*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: fcvtzsc_2d:
564*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
565*9880d681SAndroid Build Coastguard Worker;CHECK: fcvtzs.2d v0, v0, #1
566*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
567*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x i64> @llvm.aarch64.neon.vcvtfp2fxs.v2i64.v2f64(<2 x double> %A, i32 1)
568*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp3
569*9880d681SAndroid Build Coastguard Worker}
570*9880d681SAndroid Build Coastguard Worker
571*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.vcvtfp2fxs.v2i32.v2f32(<2 x float>, i32) nounwind readnone
572*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.aarch64.neon.vcvtfp2fxs.v4i32.v4f32(<4 x float>, i32) nounwind readnone
573*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.aarch64.neon.vcvtfp2fxs.v2i64.v2f64(<2 x double>, i32) nounwind readnone
574*9880d681SAndroid Build Coastguard Worker
575*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @fcvtzuc_2s(<2 x float> %A) nounwind {
576*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: fcvtzuc_2s:
577*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
578*9880d681SAndroid Build Coastguard Worker;CHECK: fcvtzu.2s v0, v0, #1
579*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
580*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x i32> @llvm.aarch64.neon.vcvtfp2fxu.v2i32.v2f32(<2 x float> %A, i32 1)
581*9880d681SAndroid Build Coastguard Worker	ret <2 x i32> %tmp3
582*9880d681SAndroid Build Coastguard Worker}
583*9880d681SAndroid Build Coastguard Worker
584*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @fcvtzuc_4s(<4 x float> %A) nounwind {
585*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: fcvtzuc_4s:
586*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
587*9880d681SAndroid Build Coastguard Worker;CHECK: fcvtzu.4s v0, v0, #1
588*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
589*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <4 x i32> @llvm.aarch64.neon.vcvtfp2fxu.v4i32.v4f32(<4 x float> %A, i32 1)
590*9880d681SAndroid Build Coastguard Worker	ret <4 x i32> %tmp3
591*9880d681SAndroid Build Coastguard Worker}
592*9880d681SAndroid Build Coastguard Worker
593*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @fcvtzuc_2d(<2 x double> %A) nounwind {
594*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: fcvtzuc_2d:
595*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
596*9880d681SAndroid Build Coastguard Worker;CHECK: fcvtzu.2d v0, v0, #1
597*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
598*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x i64> @llvm.aarch64.neon.vcvtfp2fxu.v2i64.v2f64(<2 x double> %A, i32 1)
599*9880d681SAndroid Build Coastguard Worker	ret <2 x i64> %tmp3
600*9880d681SAndroid Build Coastguard Worker}
601*9880d681SAndroid Build Coastguard Worker
602*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.vcvtfp2fxu.v2i32.v2f32(<2 x float>, i32) nounwind readnone
603*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.aarch64.neon.vcvtfp2fxu.v4i32.v4f32(<4 x float>, i32) nounwind readnone
604*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.aarch64.neon.vcvtfp2fxu.v2i64.v2f64(<2 x double>, i32) nounwind readnone
605*9880d681SAndroid Build Coastguard Worker
606*9880d681SAndroid Build Coastguard Workerdefine <2 x float> @scvtf_2sc(<2 x i32> %A) nounwind {
607*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: scvtf_2sc:
608*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
609*9880d681SAndroid Build Coastguard Worker;CHECK: scvtf.2s v0, v0, #1
610*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
611*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x float> @llvm.aarch64.neon.vcvtfxs2fp.v2f32.v2i32(<2 x i32> %A, i32 1)
612*9880d681SAndroid Build Coastguard Worker	ret <2 x float> %tmp3
613*9880d681SAndroid Build Coastguard Worker}
614*9880d681SAndroid Build Coastguard Worker
615*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @scvtf_4sc(<4 x i32> %A) nounwind {
616*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: scvtf_4sc:
617*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
618*9880d681SAndroid Build Coastguard Worker;CHECK: scvtf.4s v0, v0, #1
619*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
620*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <4 x float> @llvm.aarch64.neon.vcvtfxs2fp.v4f32.v4i32(<4 x i32> %A, i32 1)
621*9880d681SAndroid Build Coastguard Worker	ret <4 x float> %tmp3
622*9880d681SAndroid Build Coastguard Worker}
623*9880d681SAndroid Build Coastguard Worker
624*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @scvtf_2dc(<2 x i64> %A) nounwind {
625*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: scvtf_2dc:
626*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
627*9880d681SAndroid Build Coastguard Worker;CHECK: scvtf.2d v0, v0, #1
628*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
629*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x double> @llvm.aarch64.neon.vcvtfxs2fp.v2f64.v2i64(<2 x i64> %A, i32 1)
630*9880d681SAndroid Build Coastguard Worker	ret <2 x double> %tmp3
631*9880d681SAndroid Build Coastguard Worker}
632*9880d681SAndroid Build Coastguard Worker
633*9880d681SAndroid Build Coastguard Workerdeclare <2 x float> @llvm.aarch64.neon.vcvtfxs2fp.v2f32.v2i32(<2 x i32>, i32) nounwind readnone
634*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.aarch64.neon.vcvtfxs2fp.v4f32.v4i32(<4 x i32>, i32) nounwind readnone
635*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.aarch64.neon.vcvtfxs2fp.v2f64.v2i64(<2 x i64>, i32) nounwind readnone
636*9880d681SAndroid Build Coastguard Worker
637*9880d681SAndroid Build Coastguard Workerdefine <2 x float> @ucvtf_2sc(<2 x i32> %A) nounwind {
638*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ucvtf_2sc:
639*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
640*9880d681SAndroid Build Coastguard Worker;CHECK: ucvtf.2s v0, v0, #1
641*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
642*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x float> @llvm.aarch64.neon.vcvtfxu2fp.v2f32.v2i32(<2 x i32> %A, i32 1)
643*9880d681SAndroid Build Coastguard Worker	ret <2 x float> %tmp3
644*9880d681SAndroid Build Coastguard Worker}
645*9880d681SAndroid Build Coastguard Worker
646*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @ucvtf_4sc(<4 x i32> %A) nounwind {
647*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ucvtf_4sc:
648*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
649*9880d681SAndroid Build Coastguard Worker;CHECK: ucvtf.4s v0, v0, #1
650*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
651*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <4 x float> @llvm.aarch64.neon.vcvtfxu2fp.v4f32.v4i32(<4 x i32> %A, i32 1)
652*9880d681SAndroid Build Coastguard Worker	ret <4 x float> %tmp3
653*9880d681SAndroid Build Coastguard Worker}
654*9880d681SAndroid Build Coastguard Worker
655*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @ucvtf_2dc(<2 x i64> %A) nounwind {
656*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ucvtf_2dc:
657*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
658*9880d681SAndroid Build Coastguard Worker;CHECK: ucvtf.2d v0, v0, #1
659*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
660*9880d681SAndroid Build Coastguard Worker	%tmp3 = call <2 x double> @llvm.aarch64.neon.vcvtfxu2fp.v2f64.v2i64(<2 x i64> %A, i32 1)
661*9880d681SAndroid Build Coastguard Worker	ret <2 x double> %tmp3
662*9880d681SAndroid Build Coastguard Worker}
663*9880d681SAndroid Build Coastguard Worker
664*9880d681SAndroid Build Coastguard Worker
665*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: autogen_SD28458:
666*9880d681SAndroid Build Coastguard Worker;CHECK: fcvt
667*9880d681SAndroid Build Coastguard Worker;CHECK: ret
668*9880d681SAndroid Build Coastguard Workerdefine void @autogen_SD28458(<8 x double> %val.f64, <8 x float>* %addr.f32) {
669*9880d681SAndroid Build Coastguard Worker  %Tr53 = fptrunc <8 x double> %val.f64 to <8 x float>
670*9880d681SAndroid Build Coastguard Worker  store <8 x float> %Tr53, <8 x float>* %addr.f32
671*9880d681SAndroid Build Coastguard Worker  ret void
672*9880d681SAndroid Build Coastguard Worker}
673*9880d681SAndroid Build Coastguard Worker
674*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: autogen_SD19225:
675*9880d681SAndroid Build Coastguard Worker;CHECK: fcvt
676*9880d681SAndroid Build Coastguard Worker;CHECK: ret
677*9880d681SAndroid Build Coastguard Workerdefine void @autogen_SD19225(<8 x double>* %addr.f64, <8 x float>* %addr.f32) {
678*9880d681SAndroid Build Coastguard Worker  %A = load <8 x float>, <8 x float>* %addr.f32
679*9880d681SAndroid Build Coastguard Worker  %Tr53 = fpext <8 x float> %A to <8 x double>
680*9880d681SAndroid Build Coastguard Worker  store <8 x double> %Tr53, <8 x double>* %addr.f64
681*9880d681SAndroid Build Coastguard Worker  ret void
682*9880d681SAndroid Build Coastguard Worker}
683*9880d681SAndroid Build Coastguard Worker
684*9880d681SAndroid Build Coastguard Workerdeclare <2 x float> @llvm.aarch64.neon.vcvtfxu2fp.v2f32.v2i32(<2 x i32>, i32) nounwind readnone
685*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.aarch64.neon.vcvtfxu2fp.v4f32.v4i32(<4 x i32>, i32) nounwind readnone
686*9880d681SAndroid Build Coastguard Workerdeclare <2 x double> @llvm.aarch64.neon.vcvtfxu2fp.v2f64.v2i64(<2 x i64>, i32) nounwind readnone
687