xref: /aosp_15_r20/external/llvm/test/CodeGen/AArch64/arm64-vmovn.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 <8 x i8> @xtn8b(<8 x i16> %A) nounwind {
4*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: xtn8b:
5*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
6*9880d681SAndroid Build Coastguard Worker;CHECK: xtn.8b v0, v0
7*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
8*9880d681SAndroid Build Coastguard Worker  %tmp3 = trunc <8 x i16> %A to <8 x i8>
9*9880d681SAndroid Build Coastguard Worker        ret <8 x i8> %tmp3
10*9880d681SAndroid Build Coastguard Worker}
11*9880d681SAndroid Build Coastguard Worker
12*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @xtn4h(<4 x i32> %A) nounwind {
13*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: xtn4h:
14*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
15*9880d681SAndroid Build Coastguard Worker;CHECK: xtn.4h v0, v0
16*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
17*9880d681SAndroid Build Coastguard Worker  %tmp3 = trunc <4 x i32> %A to <4 x i16>
18*9880d681SAndroid Build Coastguard Worker        ret <4 x i16> %tmp3
19*9880d681SAndroid Build Coastguard Worker}
20*9880d681SAndroid Build Coastguard Worker
21*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @xtn2s(<2 x i64> %A) nounwind {
22*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: xtn2s:
23*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
24*9880d681SAndroid Build Coastguard Worker;CHECK: xtn.2s v0, v0
25*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
26*9880d681SAndroid Build Coastguard Worker  %tmp3 = trunc <2 x i64> %A to <2 x i32>
27*9880d681SAndroid Build Coastguard Worker        ret <2 x i32> %tmp3
28*9880d681SAndroid Build Coastguard Worker}
29*9880d681SAndroid Build Coastguard Worker
30*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @xtn2_16b(<8 x i8> %ret, <8 x i16> %A) nounwind {
31*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: xtn2_16b:
32*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
33*9880d681SAndroid Build Coastguard Worker;CHECK: xtn2.16b v0, v1
34*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
35*9880d681SAndroid Build Coastguard Worker        %tmp3 = trunc <8 x i16> %A to <8 x i8>
36*9880d681SAndroid Build Coastguard Worker        %res = shufflevector <8 x i8> %ret, <8 x i8> %tmp3, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
37*9880d681SAndroid Build Coastguard Worker        ret <16 x i8> %res
38*9880d681SAndroid Build Coastguard Worker}
39*9880d681SAndroid Build Coastguard Worker
40*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @xtn2_8h(<4 x i16> %ret, <4 x i32> %A) nounwind {
41*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: xtn2_8h:
42*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
43*9880d681SAndroid Build Coastguard Worker;CHECK: xtn2.8h v0, v1
44*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
45*9880d681SAndroid Build Coastguard Worker        %tmp3 = trunc <4 x i32> %A to <4 x i16>
46*9880d681SAndroid Build Coastguard Worker        %res = shufflevector <4 x i16> %ret, <4 x i16> %tmp3, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
47*9880d681SAndroid Build Coastguard Worker        ret <8 x i16> %res
48*9880d681SAndroid Build Coastguard Worker}
49*9880d681SAndroid Build Coastguard Worker
50*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @xtn2_4s(<2 x i32> %ret, <2 x i64> %A) nounwind {
51*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: xtn2_4s:
52*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
53*9880d681SAndroid Build Coastguard Worker;CHECK: xtn2.4s v0, v1
54*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
55*9880d681SAndroid Build Coastguard Worker        %tmp3 = trunc <2 x i64> %A to <2 x i32>
56*9880d681SAndroid Build Coastguard Worker        %res = shufflevector <2 x i32> %ret, <2 x i32> %tmp3, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
57*9880d681SAndroid Build Coastguard Worker        ret <4 x i32> %res
58*9880d681SAndroid Build Coastguard Worker}
59*9880d681SAndroid Build Coastguard Worker
60*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @sqxtn8b(<8 x i16> %A) nounwind {
61*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqxtn8b:
62*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
63*9880d681SAndroid Build Coastguard Worker;CHECK: sqxtn.8b v0, v0
64*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
65*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i8> @llvm.aarch64.neon.sqxtn.v8i8(<8 x i16> %A)
66*9880d681SAndroid Build Coastguard Worker        ret <8 x i8> %tmp3
67*9880d681SAndroid Build Coastguard Worker}
68*9880d681SAndroid Build Coastguard Worker
69*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @sqxtn4h(<4 x i32> %A) nounwind {
70*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqxtn4h:
71*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
72*9880d681SAndroid Build Coastguard Worker;CHECK: sqxtn.4h v0, v0
73*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
74*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i16> @llvm.aarch64.neon.sqxtn.v4i16(<4 x i32> %A)
75*9880d681SAndroid Build Coastguard Worker        ret <4 x i16> %tmp3
76*9880d681SAndroid Build Coastguard Worker}
77*9880d681SAndroid Build Coastguard Worker
78*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @sqxtn2s(<2 x i64> %A) nounwind {
79*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqxtn2s:
80*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
81*9880d681SAndroid Build Coastguard Worker;CHECK: sqxtn.2s v0, v0
82*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
83*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i32> @llvm.aarch64.neon.sqxtn.v2i32(<2 x i64> %A)
84*9880d681SAndroid Build Coastguard Worker        ret <2 x i32> %tmp3
85*9880d681SAndroid Build Coastguard Worker}
86*9880d681SAndroid Build Coastguard Worker
87*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @sqxtn2_16b(<8 x i8> %ret, <8 x i16> %A) nounwind {
88*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqxtn2_16b:
89*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
90*9880d681SAndroid Build Coastguard Worker;CHECK: sqxtn2.16b v0, v1
91*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
92*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i8> @llvm.aarch64.neon.sqxtn.v8i8(<8 x i16> %A)
93*9880d681SAndroid Build Coastguard Worker        %res = shufflevector <8 x i8> %ret, <8 x i8> %tmp3, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
94*9880d681SAndroid Build Coastguard Worker        ret <16 x i8> %res
95*9880d681SAndroid Build Coastguard Worker}
96*9880d681SAndroid Build Coastguard Worker
97*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @sqxtn2_8h(<4 x i16> %ret, <4 x i32> %A) nounwind {
98*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqxtn2_8h:
99*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
100*9880d681SAndroid Build Coastguard Worker;CHECK: sqxtn2.8h v0, v1
101*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
102*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i16> @llvm.aarch64.neon.sqxtn.v4i16(<4 x i32> %A)
103*9880d681SAndroid Build Coastguard Worker        %res = shufflevector <4 x i16> %ret, <4 x i16> %tmp3, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
104*9880d681SAndroid Build Coastguard Worker        ret <8 x i16> %res
105*9880d681SAndroid Build Coastguard Worker}
106*9880d681SAndroid Build Coastguard Worker
107*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @sqxtn2_4s(<2 x i32> %ret, <2 x i64> %A) nounwind {
108*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqxtn2_4s:
109*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
110*9880d681SAndroid Build Coastguard Worker;CHECK: sqxtn2.4s v0, v1
111*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
112*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i32> @llvm.aarch64.neon.sqxtn.v2i32(<2 x i64> %A)
113*9880d681SAndroid Build Coastguard Worker        %res = shufflevector <2 x i32> %ret, <2 x i32> %tmp3, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
114*9880d681SAndroid Build Coastguard Worker        ret <4 x i32> %res
115*9880d681SAndroid Build Coastguard Worker}
116*9880d681SAndroid Build Coastguard Worker
117*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8>  @llvm.aarch64.neon.sqxtn.v8i8(<8 x i16>) nounwind readnone
118*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @llvm.aarch64.neon.sqxtn.v4i16(<4 x i32>) nounwind readnone
119*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.sqxtn.v2i32(<2 x i64>) nounwind readnone
120*9880d681SAndroid Build Coastguard Worker
121*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @uqxtn8b(<8 x i16> %A) nounwind {
122*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqxtn8b:
123*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
124*9880d681SAndroid Build Coastguard Worker;CHECK: uqxtn.8b v0, v0
125*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
126*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i8> @llvm.aarch64.neon.uqxtn.v8i8(<8 x i16> %A)
127*9880d681SAndroid Build Coastguard Worker        ret <8 x i8> %tmp3
128*9880d681SAndroid Build Coastguard Worker}
129*9880d681SAndroid Build Coastguard Worker
130*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @uqxtn4h(<4 x i32> %A) nounwind {
131*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqxtn4h:
132*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
133*9880d681SAndroid Build Coastguard Worker;CHECK: uqxtn.4h v0, v0
134*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
135*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i16> @llvm.aarch64.neon.uqxtn.v4i16(<4 x i32> %A)
136*9880d681SAndroid Build Coastguard Worker        ret <4 x i16> %tmp3
137*9880d681SAndroid Build Coastguard Worker}
138*9880d681SAndroid Build Coastguard Worker
139*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @uqxtn2s(<2 x i64> %A) nounwind {
140*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqxtn2s:
141*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
142*9880d681SAndroid Build Coastguard Worker;CHECK: uqxtn.2s v0, v0
143*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
144*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i32> @llvm.aarch64.neon.uqxtn.v2i32(<2 x i64> %A)
145*9880d681SAndroid Build Coastguard Worker        ret <2 x i32> %tmp3
146*9880d681SAndroid Build Coastguard Worker}
147*9880d681SAndroid Build Coastguard Worker
148*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @uqxtn2_16b(<8 x i8> %ret, <8 x i16> %A) nounwind {
149*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqxtn2_16b:
150*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
151*9880d681SAndroid Build Coastguard Worker;CHECK: uqxtn2.16b v0, v1
152*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
153*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i8> @llvm.aarch64.neon.uqxtn.v8i8(<8 x i16> %A)
154*9880d681SAndroid Build Coastguard Worker        %res = shufflevector <8 x i8> %ret, <8 x i8> %tmp3, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
155*9880d681SAndroid Build Coastguard Worker        ret <16 x i8> %res
156*9880d681SAndroid Build Coastguard Worker}
157*9880d681SAndroid Build Coastguard Worker
158*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @uqxtn2_8h(<4 x i16> %ret, <4 x i32> %A) nounwind {
159*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqxtn2_8h:
160*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
161*9880d681SAndroid Build Coastguard Worker;CHECK: uqxtn2.8h v0, v1
162*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
163*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i16> @llvm.aarch64.neon.uqxtn.v4i16(<4 x i32> %A)
164*9880d681SAndroid Build Coastguard Worker        %res = shufflevector <4 x i16> %ret, <4 x i16> %tmp3, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
165*9880d681SAndroid Build Coastguard Worker        ret <8 x i16> %res
166*9880d681SAndroid Build Coastguard Worker}
167*9880d681SAndroid Build Coastguard Worker
168*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @uqxtn2_4s(<2 x i32> %ret, <2 x i64> %A) nounwind {
169*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqxtn2_4s:
170*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
171*9880d681SAndroid Build Coastguard Worker;CHECK: uqxtn2.4s v0, v1
172*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
173*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i32> @llvm.aarch64.neon.uqxtn.v2i32(<2 x i64> %A)
174*9880d681SAndroid Build Coastguard Worker        %res = shufflevector <2 x i32> %ret, <2 x i32> %tmp3, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
175*9880d681SAndroid Build Coastguard Worker        ret <4 x i32> %res
176*9880d681SAndroid Build Coastguard Worker}
177*9880d681SAndroid Build Coastguard Worker
178*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8>  @llvm.aarch64.neon.uqxtn.v8i8(<8 x i16>) nounwind readnone
179*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @llvm.aarch64.neon.uqxtn.v4i16(<4 x i32>) nounwind readnone
180*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.uqxtn.v2i32(<2 x i64>) nounwind readnone
181*9880d681SAndroid Build Coastguard Worker
182*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @sqxtun8b(<8 x i16> %A) nounwind {
183*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqxtun8b:
184*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
185*9880d681SAndroid Build Coastguard Worker;CHECK: sqxtun.8b v0, v0
186*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
187*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i8> @llvm.aarch64.neon.sqxtun.v8i8(<8 x i16> %A)
188*9880d681SAndroid Build Coastguard Worker        ret <8 x i8> %tmp3
189*9880d681SAndroid Build Coastguard Worker}
190*9880d681SAndroid Build Coastguard Worker
191*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @sqxtun4h(<4 x i32> %A) nounwind {
192*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqxtun4h:
193*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
194*9880d681SAndroid Build Coastguard Worker;CHECK: sqxtun.4h v0, v0
195*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
196*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i16> @llvm.aarch64.neon.sqxtun.v4i16(<4 x i32> %A)
197*9880d681SAndroid Build Coastguard Worker        ret <4 x i16> %tmp3
198*9880d681SAndroid Build Coastguard Worker}
199*9880d681SAndroid Build Coastguard Worker
200*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @sqxtun2s(<2 x i64> %A) nounwind {
201*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqxtun2s:
202*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
203*9880d681SAndroid Build Coastguard Worker;CHECK: sqxtun.2s v0, v0
204*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
205*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i32> @llvm.aarch64.neon.sqxtun.v2i32(<2 x i64> %A)
206*9880d681SAndroid Build Coastguard Worker        ret <2 x i32> %tmp3
207*9880d681SAndroid Build Coastguard Worker}
208*9880d681SAndroid Build Coastguard Worker
209*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @sqxtun2_16b(<8 x i8> %ret, <8 x i16> %A) nounwind {
210*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqxtun2_16b:
211*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
212*9880d681SAndroid Build Coastguard Worker;CHECK: sqxtun2.16b v0, v1
213*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
214*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i8> @llvm.aarch64.neon.sqxtun.v8i8(<8 x i16> %A)
215*9880d681SAndroid Build Coastguard Worker        %res = shufflevector <8 x i8> %ret, <8 x i8> %tmp3, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
216*9880d681SAndroid Build Coastguard Worker        ret <16 x i8> %res
217*9880d681SAndroid Build Coastguard Worker}
218*9880d681SAndroid Build Coastguard Worker
219*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @sqxtun2_8h(<4 x i16> %ret, <4 x i32> %A) nounwind {
220*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqxtun2_8h:
221*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
222*9880d681SAndroid Build Coastguard Worker;CHECK: sqxtun2.8h v0, v1
223*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
224*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i16> @llvm.aarch64.neon.sqxtun.v4i16(<4 x i32> %A)
225*9880d681SAndroid Build Coastguard Worker        %res = shufflevector <4 x i16> %ret, <4 x i16> %tmp3, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
226*9880d681SAndroid Build Coastguard Worker        ret <8 x i16> %res
227*9880d681SAndroid Build Coastguard Worker}
228*9880d681SAndroid Build Coastguard Worker
229*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @sqxtun2_4s(<2 x i32> %ret, <2 x i64> %A) nounwind {
230*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqxtun2_4s:
231*9880d681SAndroid Build Coastguard Worker;CHECK-NOT: ld1
232*9880d681SAndroid Build Coastguard Worker;CHECK: sqxtun2.4s v0, v1
233*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
234*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i32> @llvm.aarch64.neon.sqxtun.v2i32(<2 x i64> %A)
235*9880d681SAndroid Build Coastguard Worker        %res = shufflevector <2 x i32> %ret, <2 x i32> %tmp3, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
236*9880d681SAndroid Build Coastguard Worker        ret <4 x i32> %res
237*9880d681SAndroid Build Coastguard Worker}
238*9880d681SAndroid Build Coastguard Worker
239*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8>  @llvm.aarch64.neon.sqxtun.v8i8(<8 x i16>) nounwind readnone
240*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @llvm.aarch64.neon.sqxtun.v4i16(<4 x i32>) nounwind readnone
241*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.sqxtun.v2i32(<2 x i64>) nounwind readnone
242*9880d681SAndroid Build Coastguard Worker
243