xref: /aosp_15_r20/external/llvm/test/CodeGen/AArch64/arm64-vshift.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=arm64 -aarch64-neon-syntax=apple -enable-misched=false | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @sqshl8b(<8 x i8>* %A, <8 x i8>* %B) nounwind {
4*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshl8b:
5*9880d681SAndroid Build Coastguard Worker;CHECK: sqshl.8b
6*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i8>, <8 x i8>* %A
7*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <8 x i8>, <8 x i8>* %B
8*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i8> @llvm.aarch64.neon.sqshl.v8i8(<8 x i8> %tmp1, <8 x i8> %tmp2)
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> @sqshl4h(<4 x i16>* %A, <4 x i16>* %B) nounwind {
13*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshl4h:
14*9880d681SAndroid Build Coastguard Worker;CHECK: sqshl.4h
15*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i16>, <4 x i16>* %A
16*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <4 x i16>, <4 x i16>* %B
17*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i16> @llvm.aarch64.neon.sqshl.v4i16(<4 x i16> %tmp1, <4 x i16> %tmp2)
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> @sqshl2s(<2 x i32>* %A, <2 x i32>* %B) nounwind {
22*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshl2s:
23*9880d681SAndroid Build Coastguard Worker;CHECK: sqshl.2s
24*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i32>, <2 x i32>* %A
25*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <2 x i32>, <2 x i32>* %B
26*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i32> @llvm.aarch64.neon.sqshl.v2i32(<2 x i32> %tmp1, <2 x i32> %tmp2)
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 <8 x i8> @uqshl8b(<8 x i8>* %A, <8 x i8>* %B) nounwind {
31*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshl8b:
32*9880d681SAndroid Build Coastguard Worker;CHECK: uqshl.8b
33*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i8>, <8 x i8>* %A
34*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <8 x i8>, <8 x i8>* %B
35*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i8> @llvm.aarch64.neon.uqshl.v8i8(<8 x i8> %tmp1, <8 x i8> %tmp2)
36*9880d681SAndroid Build Coastguard Worker        ret <8 x i8> %tmp3
37*9880d681SAndroid Build Coastguard Worker}
38*9880d681SAndroid Build Coastguard Worker
39*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @uqshl4h(<4 x i16>* %A, <4 x i16>* %B) nounwind {
40*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshl4h:
41*9880d681SAndroid Build Coastguard Worker;CHECK: uqshl.4h
42*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i16>, <4 x i16>* %A
43*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <4 x i16>, <4 x i16>* %B
44*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i16> @llvm.aarch64.neon.uqshl.v4i16(<4 x i16> %tmp1, <4 x i16> %tmp2)
45*9880d681SAndroid Build Coastguard Worker        ret <4 x i16> %tmp3
46*9880d681SAndroid Build Coastguard Worker}
47*9880d681SAndroid Build Coastguard Worker
48*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @uqshl2s(<2 x i32>* %A, <2 x i32>* %B) nounwind {
49*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshl2s:
50*9880d681SAndroid Build Coastguard Worker;CHECK: uqshl.2s
51*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i32>, <2 x i32>* %A
52*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <2 x i32>, <2 x i32>* %B
53*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i32> @llvm.aarch64.neon.uqshl.v2i32(<2 x i32> %tmp1, <2 x i32> %tmp2)
54*9880d681SAndroid Build Coastguard Worker        ret <2 x i32> %tmp3
55*9880d681SAndroid Build Coastguard Worker}
56*9880d681SAndroid Build Coastguard Worker
57*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @sqshl16b(<16 x i8>* %A, <16 x i8>* %B) nounwind {
58*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshl16b:
59*9880d681SAndroid Build Coastguard Worker;CHECK: sqshl.16b
60*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <16 x i8>, <16 x i8>* %A
61*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <16 x i8>, <16 x i8>* %B
62*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <16 x i8> @llvm.aarch64.neon.sqshl.v16i8(<16 x i8> %tmp1, <16 x i8> %tmp2)
63*9880d681SAndroid Build Coastguard Worker        ret <16 x i8> %tmp3
64*9880d681SAndroid Build Coastguard Worker}
65*9880d681SAndroid Build Coastguard Worker
66*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @sqshl8h(<8 x i16>* %A, <8 x i16>* %B) nounwind {
67*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshl8h:
68*9880d681SAndroid Build Coastguard Worker;CHECK: sqshl.8h
69*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i16>, <8 x i16>* %A
70*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <8 x i16>, <8 x i16>* %B
71*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i16> @llvm.aarch64.neon.sqshl.v8i16(<8 x i16> %tmp1, <8 x i16> %tmp2)
72*9880d681SAndroid Build Coastguard Worker        ret <8 x i16> %tmp3
73*9880d681SAndroid Build Coastguard Worker}
74*9880d681SAndroid Build Coastguard Worker
75*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @sqshl4s(<4 x i32>* %A, <4 x i32>* %B) nounwind {
76*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshl4s:
77*9880d681SAndroid Build Coastguard Worker;CHECK: sqshl.4s
78*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i32>, <4 x i32>* %A
79*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <4 x i32>, <4 x i32>* %B
80*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i32> @llvm.aarch64.neon.sqshl.v4i32(<4 x i32> %tmp1, <4 x i32> %tmp2)
81*9880d681SAndroid Build Coastguard Worker        ret <4 x i32> %tmp3
82*9880d681SAndroid Build Coastguard Worker}
83*9880d681SAndroid Build Coastguard Worker
84*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @sqshl2d(<2 x i64>* %A, <2 x i64>* %B) nounwind {
85*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshl2d:
86*9880d681SAndroid Build Coastguard Worker;CHECK: sqshl.2d
87*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i64>, <2 x i64>* %A
88*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <2 x i64>, <2 x i64>* %B
89*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i64> @llvm.aarch64.neon.sqshl.v2i64(<2 x i64> %tmp1, <2 x i64> %tmp2)
90*9880d681SAndroid Build Coastguard Worker        ret <2 x i64> %tmp3
91*9880d681SAndroid Build Coastguard Worker}
92*9880d681SAndroid Build Coastguard Worker
93*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @uqshl16b(<16 x i8>* %A, <16 x i8>* %B) nounwind {
94*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshl16b:
95*9880d681SAndroid Build Coastguard Worker;CHECK: uqshl.16b
96*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <16 x i8>, <16 x i8>* %A
97*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <16 x i8>, <16 x i8>* %B
98*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <16 x i8> @llvm.aarch64.neon.uqshl.v16i8(<16 x i8> %tmp1, <16 x i8> %tmp2)
99*9880d681SAndroid Build Coastguard Worker        ret <16 x i8> %tmp3
100*9880d681SAndroid Build Coastguard Worker}
101*9880d681SAndroid Build Coastguard Worker
102*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @uqshl8h(<8 x i16>* %A, <8 x i16>* %B) nounwind {
103*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshl8h:
104*9880d681SAndroid Build Coastguard Worker;CHECK: uqshl.8h
105*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i16>, <8 x i16>* %A
106*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <8 x i16>, <8 x i16>* %B
107*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i16> @llvm.aarch64.neon.uqshl.v8i16(<8 x i16> %tmp1, <8 x i16> %tmp2)
108*9880d681SAndroid Build Coastguard Worker        ret <8 x i16> %tmp3
109*9880d681SAndroid Build Coastguard Worker}
110*9880d681SAndroid Build Coastguard Worker
111*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @uqshl4s(<4 x i32>* %A, <4 x i32>* %B) nounwind {
112*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshl4s:
113*9880d681SAndroid Build Coastguard Worker;CHECK: uqshl.4s
114*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i32>, <4 x i32>* %A
115*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <4 x i32>, <4 x i32>* %B
116*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i32> @llvm.aarch64.neon.uqshl.v4i32(<4 x i32> %tmp1, <4 x i32> %tmp2)
117*9880d681SAndroid Build Coastguard Worker        ret <4 x i32> %tmp3
118*9880d681SAndroid Build Coastguard Worker}
119*9880d681SAndroid Build Coastguard Worker
120*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @uqshl2d(<2 x i64>* %A, <2 x i64>* %B) nounwind {
121*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshl2d:
122*9880d681SAndroid Build Coastguard Worker;CHECK: uqshl.2d
123*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i64>, <2 x i64>* %A
124*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <2 x i64>, <2 x i64>* %B
125*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i64> @llvm.aarch64.neon.uqshl.v2i64(<2 x i64> %tmp1, <2 x i64> %tmp2)
126*9880d681SAndroid Build Coastguard Worker        ret <2 x i64> %tmp3
127*9880d681SAndroid Build Coastguard Worker}
128*9880d681SAndroid Build Coastguard Worker
129*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8>  @llvm.aarch64.neon.sqshl.v8i8(<8 x i8>, <8 x i8>) nounwind readnone
130*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @llvm.aarch64.neon.sqshl.v4i16(<4 x i16>, <4 x i16>) nounwind readnone
131*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.sqshl.v2i32(<2 x i32>, <2 x i32>) nounwind readnone
132*9880d681SAndroid Build Coastguard Workerdeclare <1 x i64> @llvm.aarch64.neon.sqshl.v1i64(<1 x i64>, <1 x i64>) nounwind readnone
133*9880d681SAndroid Build Coastguard Worker
134*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8>  @llvm.aarch64.neon.uqshl.v8i8(<8 x i8>, <8 x i8>) nounwind readnone
135*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @llvm.aarch64.neon.uqshl.v4i16(<4 x i16>, <4 x i16>) nounwind readnone
136*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.uqshl.v2i32(<2 x i32>, <2 x i32>) nounwind readnone
137*9880d681SAndroid Build Coastguard Workerdeclare <1 x i64> @llvm.aarch64.neon.uqshl.v1i64(<1 x i64>, <1 x i64>) nounwind readnone
138*9880d681SAndroid Build Coastguard Worker
139*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.aarch64.neon.sqshl.v16i8(<16 x i8>, <16 x i8>) nounwind readnone
140*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.aarch64.neon.sqshl.v8i16(<8 x i16>, <8 x i16>) nounwind readnone
141*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.aarch64.neon.sqshl.v4i32(<4 x i32>, <4 x i32>) nounwind readnone
142*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.aarch64.neon.sqshl.v2i64(<2 x i64>, <2 x i64>) nounwind readnone
143*9880d681SAndroid Build Coastguard Worker
144*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.aarch64.neon.uqshl.v16i8(<16 x i8>, <16 x i8>) nounwind readnone
145*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.aarch64.neon.uqshl.v8i16(<8 x i16>, <8 x i16>) nounwind readnone
146*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.aarch64.neon.uqshl.v4i32(<4 x i32>, <4 x i32>) nounwind readnone
147*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.aarch64.neon.uqshl.v2i64(<2 x i64>, <2 x i64>) nounwind readnone
148*9880d681SAndroid Build Coastguard Worker
149*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @srshl8b(<8 x i8>* %A, <8 x i8>* %B) nounwind {
150*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srshl8b:
151*9880d681SAndroid Build Coastguard Worker;CHECK: srshl.8b
152*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i8>, <8 x i8>* %A
153*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <8 x i8>, <8 x i8>* %B
154*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i8> @llvm.aarch64.neon.srshl.v8i8(<8 x i8> %tmp1, <8 x i8> %tmp2)
155*9880d681SAndroid Build Coastguard Worker        ret <8 x i8> %tmp3
156*9880d681SAndroid Build Coastguard Worker}
157*9880d681SAndroid Build Coastguard Worker
158*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @srshl4h(<4 x i16>* %A, <4 x i16>* %B) nounwind {
159*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srshl4h:
160*9880d681SAndroid Build Coastguard Worker;CHECK: srshl.4h
161*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i16>, <4 x i16>* %A
162*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <4 x i16>, <4 x i16>* %B
163*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i16> @llvm.aarch64.neon.srshl.v4i16(<4 x i16> %tmp1, <4 x i16> %tmp2)
164*9880d681SAndroid Build Coastguard Worker        ret <4 x i16> %tmp3
165*9880d681SAndroid Build Coastguard Worker}
166*9880d681SAndroid Build Coastguard Worker
167*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @srshl2s(<2 x i32>* %A, <2 x i32>* %B) nounwind {
168*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srshl2s:
169*9880d681SAndroid Build Coastguard Worker;CHECK: srshl.2s
170*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i32>, <2 x i32>* %A
171*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <2 x i32>, <2 x i32>* %B
172*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i32> @llvm.aarch64.neon.srshl.v2i32(<2 x i32> %tmp1, <2 x i32> %tmp2)
173*9880d681SAndroid Build Coastguard Worker        ret <2 x i32> %tmp3
174*9880d681SAndroid Build Coastguard Worker}
175*9880d681SAndroid Build Coastguard Worker
176*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @urshl8b(<8 x i8>* %A, <8 x i8>* %B) nounwind {
177*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: urshl8b:
178*9880d681SAndroid Build Coastguard Worker;CHECK: urshl.8b
179*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i8>, <8 x i8>* %A
180*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <8 x i8>, <8 x i8>* %B
181*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i8> @llvm.aarch64.neon.urshl.v8i8(<8 x i8> %tmp1, <8 x i8> %tmp2)
182*9880d681SAndroid Build Coastguard Worker        ret <8 x i8> %tmp3
183*9880d681SAndroid Build Coastguard Worker}
184*9880d681SAndroid Build Coastguard Worker
185*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @urshl4h(<4 x i16>* %A, <4 x i16>* %B) nounwind {
186*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: urshl4h:
187*9880d681SAndroid Build Coastguard Worker;CHECK: urshl.4h
188*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i16>, <4 x i16>* %A
189*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <4 x i16>, <4 x i16>* %B
190*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i16> @llvm.aarch64.neon.urshl.v4i16(<4 x i16> %tmp1, <4 x i16> %tmp2)
191*9880d681SAndroid Build Coastguard Worker        ret <4 x i16> %tmp3
192*9880d681SAndroid Build Coastguard Worker}
193*9880d681SAndroid Build Coastguard Worker
194*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @urshl2s(<2 x i32>* %A, <2 x i32>* %B) nounwind {
195*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: urshl2s:
196*9880d681SAndroid Build Coastguard Worker;CHECK: urshl.2s
197*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i32>, <2 x i32>* %A
198*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <2 x i32>, <2 x i32>* %B
199*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i32> @llvm.aarch64.neon.urshl.v2i32(<2 x i32> %tmp1, <2 x i32> %tmp2)
200*9880d681SAndroid Build Coastguard Worker        ret <2 x i32> %tmp3
201*9880d681SAndroid Build Coastguard Worker}
202*9880d681SAndroid Build Coastguard Worker
203*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @srshl16b(<16 x i8>* %A, <16 x i8>* %B) nounwind {
204*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srshl16b:
205*9880d681SAndroid Build Coastguard Worker;CHECK: srshl.16b
206*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <16 x i8>, <16 x i8>* %A
207*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <16 x i8>, <16 x i8>* %B
208*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <16 x i8> @llvm.aarch64.neon.srshl.v16i8(<16 x i8> %tmp1, <16 x i8> %tmp2)
209*9880d681SAndroid Build Coastguard Worker        ret <16 x i8> %tmp3
210*9880d681SAndroid Build Coastguard Worker}
211*9880d681SAndroid Build Coastguard Worker
212*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @srshl8h(<8 x i16>* %A, <8 x i16>* %B) nounwind {
213*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srshl8h:
214*9880d681SAndroid Build Coastguard Worker;CHECK: srshl.8h
215*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i16>, <8 x i16>* %A
216*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <8 x i16>, <8 x i16>* %B
217*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i16> @llvm.aarch64.neon.srshl.v8i16(<8 x i16> %tmp1, <8 x i16> %tmp2)
218*9880d681SAndroid Build Coastguard Worker        ret <8 x i16> %tmp3
219*9880d681SAndroid Build Coastguard Worker}
220*9880d681SAndroid Build Coastguard Worker
221*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @srshl4s(<4 x i32>* %A, <4 x i32>* %B) nounwind {
222*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srshl4s:
223*9880d681SAndroid Build Coastguard Worker;CHECK: srshl.4s
224*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i32>, <4 x i32>* %A
225*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <4 x i32>, <4 x i32>* %B
226*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i32> @llvm.aarch64.neon.srshl.v4i32(<4 x i32> %tmp1, <4 x i32> %tmp2)
227*9880d681SAndroid Build Coastguard Worker        ret <4 x i32> %tmp3
228*9880d681SAndroid Build Coastguard Worker}
229*9880d681SAndroid Build Coastguard Worker
230*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @srshl2d(<2 x i64>* %A, <2 x i64>* %B) nounwind {
231*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srshl2d:
232*9880d681SAndroid Build Coastguard Worker;CHECK: srshl.2d
233*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i64>, <2 x i64>* %A
234*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <2 x i64>, <2 x i64>* %B
235*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i64> @llvm.aarch64.neon.srshl.v2i64(<2 x i64> %tmp1, <2 x i64> %tmp2)
236*9880d681SAndroid Build Coastguard Worker        ret <2 x i64> %tmp3
237*9880d681SAndroid Build Coastguard Worker}
238*9880d681SAndroid Build Coastguard Worker
239*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @urshl16b(<16 x i8>* %A, <16 x i8>* %B) nounwind {
240*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: urshl16b:
241*9880d681SAndroid Build Coastguard Worker;CHECK: urshl.16b
242*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <16 x i8>, <16 x i8>* %A
243*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <16 x i8>, <16 x i8>* %B
244*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <16 x i8> @llvm.aarch64.neon.urshl.v16i8(<16 x i8> %tmp1, <16 x i8> %tmp2)
245*9880d681SAndroid Build Coastguard Worker        ret <16 x i8> %tmp3
246*9880d681SAndroid Build Coastguard Worker}
247*9880d681SAndroid Build Coastguard Worker
248*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @urshl8h(<8 x i16>* %A, <8 x i16>* %B) nounwind {
249*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: urshl8h:
250*9880d681SAndroid Build Coastguard Worker;CHECK: urshl.8h
251*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i16>, <8 x i16>* %A
252*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <8 x i16>, <8 x i16>* %B
253*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i16> @llvm.aarch64.neon.urshl.v8i16(<8 x i16> %tmp1, <8 x i16> %tmp2)
254*9880d681SAndroid Build Coastguard Worker        ret <8 x i16> %tmp3
255*9880d681SAndroid Build Coastguard Worker}
256*9880d681SAndroid Build Coastguard Worker
257*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @urshl4s(<4 x i32>* %A, <4 x i32>* %B) nounwind {
258*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: urshl4s:
259*9880d681SAndroid Build Coastguard Worker;CHECK: urshl.4s
260*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i32>, <4 x i32>* %A
261*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <4 x i32>, <4 x i32>* %B
262*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i32> @llvm.aarch64.neon.urshl.v4i32(<4 x i32> %tmp1, <4 x i32> %tmp2)
263*9880d681SAndroid Build Coastguard Worker        ret <4 x i32> %tmp3
264*9880d681SAndroid Build Coastguard Worker}
265*9880d681SAndroid Build Coastguard Worker
266*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @urshl2d(<2 x i64>* %A, <2 x i64>* %B) nounwind {
267*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: urshl2d:
268*9880d681SAndroid Build Coastguard Worker;CHECK: urshl.2d
269*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i64>, <2 x i64>* %A
270*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <2 x i64>, <2 x i64>* %B
271*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i64> @llvm.aarch64.neon.urshl.v2i64(<2 x i64> %tmp1, <2 x i64> %tmp2)
272*9880d681SAndroid Build Coastguard Worker        ret <2 x i64> %tmp3
273*9880d681SAndroid Build Coastguard Worker}
274*9880d681SAndroid Build Coastguard Worker
275*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8>  @llvm.aarch64.neon.srshl.v8i8(<8 x i8>, <8 x i8>) nounwind readnone
276*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @llvm.aarch64.neon.srshl.v4i16(<4 x i16>, <4 x i16>) nounwind readnone
277*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.srshl.v2i32(<2 x i32>, <2 x i32>) nounwind readnone
278*9880d681SAndroid Build Coastguard Workerdeclare <1 x i64> @llvm.aarch64.neon.srshl.v1i64(<1 x i64>, <1 x i64>) nounwind readnone
279*9880d681SAndroid Build Coastguard Worker
280*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8>  @llvm.aarch64.neon.urshl.v8i8(<8 x i8>, <8 x i8>) nounwind readnone
281*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @llvm.aarch64.neon.urshl.v4i16(<4 x i16>, <4 x i16>) nounwind readnone
282*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.urshl.v2i32(<2 x i32>, <2 x i32>) nounwind readnone
283*9880d681SAndroid Build Coastguard Workerdeclare <1 x i64> @llvm.aarch64.neon.urshl.v1i64(<1 x i64>, <1 x i64>) nounwind readnone
284*9880d681SAndroid Build Coastguard Worker
285*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.aarch64.neon.srshl.v16i8(<16 x i8>, <16 x i8>) nounwind readnone
286*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.aarch64.neon.srshl.v8i16(<8 x i16>, <8 x i16>) nounwind readnone
287*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.aarch64.neon.srshl.v4i32(<4 x i32>, <4 x i32>) nounwind readnone
288*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.aarch64.neon.srshl.v2i64(<2 x i64>, <2 x i64>) nounwind readnone
289*9880d681SAndroid Build Coastguard Worker
290*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.aarch64.neon.urshl.v16i8(<16 x i8>, <16 x i8>) nounwind readnone
291*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.aarch64.neon.urshl.v8i16(<8 x i16>, <8 x i16>) nounwind readnone
292*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.aarch64.neon.urshl.v4i32(<4 x i32>, <4 x i32>) nounwind readnone
293*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.aarch64.neon.urshl.v2i64(<2 x i64>, <2 x i64>) nounwind readnone
294*9880d681SAndroid Build Coastguard Worker
295*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @sqrshl8b(<8 x i8>* %A, <8 x i8>* %B) nounwind {
296*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqrshl8b:
297*9880d681SAndroid Build Coastguard Worker;CHECK: sqrshl.8b
298*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i8>, <8 x i8>* %A
299*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <8 x i8>, <8 x i8>* %B
300*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i8> @llvm.aarch64.neon.sqrshl.v8i8(<8 x i8> %tmp1, <8 x i8> %tmp2)
301*9880d681SAndroid Build Coastguard Worker        ret <8 x i8> %tmp3
302*9880d681SAndroid Build Coastguard Worker}
303*9880d681SAndroid Build Coastguard Worker
304*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @sqrshl4h(<4 x i16>* %A, <4 x i16>* %B) nounwind {
305*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqrshl4h:
306*9880d681SAndroid Build Coastguard Worker;CHECK: sqrshl.4h
307*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i16>, <4 x i16>* %A
308*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <4 x i16>, <4 x i16>* %B
309*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i16> @llvm.aarch64.neon.sqrshl.v4i16(<4 x i16> %tmp1, <4 x i16> %tmp2)
310*9880d681SAndroid Build Coastguard Worker        ret <4 x i16> %tmp3
311*9880d681SAndroid Build Coastguard Worker}
312*9880d681SAndroid Build Coastguard Worker
313*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @sqrshl2s(<2 x i32>* %A, <2 x i32>* %B) nounwind {
314*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqrshl2s:
315*9880d681SAndroid Build Coastguard Worker;CHECK: sqrshl.2s
316*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i32>, <2 x i32>* %A
317*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <2 x i32>, <2 x i32>* %B
318*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i32> @llvm.aarch64.neon.sqrshl.v2i32(<2 x i32> %tmp1, <2 x i32> %tmp2)
319*9880d681SAndroid Build Coastguard Worker        ret <2 x i32> %tmp3
320*9880d681SAndroid Build Coastguard Worker}
321*9880d681SAndroid Build Coastguard Worker
322*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @uqrshl8b(<8 x i8>* %A, <8 x i8>* %B) nounwind {
323*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqrshl8b:
324*9880d681SAndroid Build Coastguard Worker;CHECK: uqrshl.8b
325*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i8>, <8 x i8>* %A
326*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <8 x i8>, <8 x i8>* %B
327*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i8> @llvm.aarch64.neon.uqrshl.v8i8(<8 x i8> %tmp1, <8 x i8> %tmp2)
328*9880d681SAndroid Build Coastguard Worker        ret <8 x i8> %tmp3
329*9880d681SAndroid Build Coastguard Worker}
330*9880d681SAndroid Build Coastguard Worker
331*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @uqrshl4h(<4 x i16>* %A, <4 x i16>* %B) nounwind {
332*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqrshl4h:
333*9880d681SAndroid Build Coastguard Worker;CHECK: uqrshl.4h
334*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i16>, <4 x i16>* %A
335*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <4 x i16>, <4 x i16>* %B
336*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i16> @llvm.aarch64.neon.uqrshl.v4i16(<4 x i16> %tmp1, <4 x i16> %tmp2)
337*9880d681SAndroid Build Coastguard Worker        ret <4 x i16> %tmp3
338*9880d681SAndroid Build Coastguard Worker}
339*9880d681SAndroid Build Coastguard Worker
340*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @uqrshl2s(<2 x i32>* %A, <2 x i32>* %B) nounwind {
341*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqrshl2s:
342*9880d681SAndroid Build Coastguard Worker;CHECK: uqrshl.2s
343*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i32>, <2 x i32>* %A
344*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <2 x i32>, <2 x i32>* %B
345*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i32> @llvm.aarch64.neon.uqrshl.v2i32(<2 x i32> %tmp1, <2 x i32> %tmp2)
346*9880d681SAndroid Build Coastguard Worker        ret <2 x i32> %tmp3
347*9880d681SAndroid Build Coastguard Worker}
348*9880d681SAndroid Build Coastguard Worker
349*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @sqrshl16b(<16 x i8>* %A, <16 x i8>* %B) nounwind {
350*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqrshl16b:
351*9880d681SAndroid Build Coastguard Worker;CHECK: sqrshl.16b
352*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <16 x i8>, <16 x i8>* %A
353*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <16 x i8>, <16 x i8>* %B
354*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <16 x i8> @llvm.aarch64.neon.sqrshl.v16i8(<16 x i8> %tmp1, <16 x i8> %tmp2)
355*9880d681SAndroid Build Coastguard Worker        ret <16 x i8> %tmp3
356*9880d681SAndroid Build Coastguard Worker}
357*9880d681SAndroid Build Coastguard Worker
358*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @sqrshl8h(<8 x i16>* %A, <8 x i16>* %B) nounwind {
359*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqrshl8h:
360*9880d681SAndroid Build Coastguard Worker;CHECK: sqrshl.8h
361*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i16>, <8 x i16>* %A
362*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <8 x i16>, <8 x i16>* %B
363*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i16> @llvm.aarch64.neon.sqrshl.v8i16(<8 x i16> %tmp1, <8 x i16> %tmp2)
364*9880d681SAndroid Build Coastguard Worker        ret <8 x i16> %tmp3
365*9880d681SAndroid Build Coastguard Worker}
366*9880d681SAndroid Build Coastguard Worker
367*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @sqrshl4s(<4 x i32>* %A, <4 x i32>* %B) nounwind {
368*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqrshl4s:
369*9880d681SAndroid Build Coastguard Worker;CHECK: sqrshl.4s
370*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i32>, <4 x i32>* %A
371*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <4 x i32>, <4 x i32>* %B
372*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i32> @llvm.aarch64.neon.sqrshl.v4i32(<4 x i32> %tmp1, <4 x i32> %tmp2)
373*9880d681SAndroid Build Coastguard Worker        ret <4 x i32> %tmp3
374*9880d681SAndroid Build Coastguard Worker}
375*9880d681SAndroid Build Coastguard Worker
376*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @sqrshl2d(<2 x i64>* %A, <2 x i64>* %B) nounwind {
377*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqrshl2d:
378*9880d681SAndroid Build Coastguard Worker;CHECK: sqrshl.2d
379*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i64>, <2 x i64>* %A
380*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <2 x i64>, <2 x i64>* %B
381*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i64> @llvm.aarch64.neon.sqrshl.v2i64(<2 x i64> %tmp1, <2 x i64> %tmp2)
382*9880d681SAndroid Build Coastguard Worker        ret <2 x i64> %tmp3
383*9880d681SAndroid Build Coastguard Worker}
384*9880d681SAndroid Build Coastguard Worker
385*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @uqrshl16b(<16 x i8>* %A, <16 x i8>* %B) nounwind {
386*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqrshl16b:
387*9880d681SAndroid Build Coastguard Worker;CHECK: uqrshl.16b
388*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <16 x i8>, <16 x i8>* %A
389*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <16 x i8>, <16 x i8>* %B
390*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <16 x i8> @llvm.aarch64.neon.uqrshl.v16i8(<16 x i8> %tmp1, <16 x i8> %tmp2)
391*9880d681SAndroid Build Coastguard Worker        ret <16 x i8> %tmp3
392*9880d681SAndroid Build Coastguard Worker}
393*9880d681SAndroid Build Coastguard Worker
394*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @uqrshl8h(<8 x i16>* %A, <8 x i16>* %B) nounwind {
395*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqrshl8h:
396*9880d681SAndroid Build Coastguard Worker;CHECK: uqrshl.8h
397*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i16>, <8 x i16>* %A
398*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <8 x i16>, <8 x i16>* %B
399*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i16> @llvm.aarch64.neon.uqrshl.v8i16(<8 x i16> %tmp1, <8 x i16> %tmp2)
400*9880d681SAndroid Build Coastguard Worker        ret <8 x i16> %tmp3
401*9880d681SAndroid Build Coastguard Worker}
402*9880d681SAndroid Build Coastguard Worker
403*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @uqrshl4s(<4 x i32>* %A, <4 x i32>* %B) nounwind {
404*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqrshl4s:
405*9880d681SAndroid Build Coastguard Worker;CHECK: uqrshl.4s
406*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i32>, <4 x i32>* %A
407*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <4 x i32>, <4 x i32>* %B
408*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i32> @llvm.aarch64.neon.uqrshl.v4i32(<4 x i32> %tmp1, <4 x i32> %tmp2)
409*9880d681SAndroid Build Coastguard Worker        ret <4 x i32> %tmp3
410*9880d681SAndroid Build Coastguard Worker}
411*9880d681SAndroid Build Coastguard Worker
412*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @uqrshl2d(<2 x i64>* %A, <2 x i64>* %B) nounwind {
413*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqrshl2d:
414*9880d681SAndroid Build Coastguard Worker;CHECK: uqrshl.2d
415*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i64>, <2 x i64>* %A
416*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <2 x i64>, <2 x i64>* %B
417*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i64> @llvm.aarch64.neon.uqrshl.v2i64(<2 x i64> %tmp1, <2 x i64> %tmp2)
418*9880d681SAndroid Build Coastguard Worker        ret <2 x i64> %tmp3
419*9880d681SAndroid Build Coastguard Worker}
420*9880d681SAndroid Build Coastguard Worker
421*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8>  @llvm.aarch64.neon.sqrshl.v8i8(<8 x i8>, <8 x i8>) nounwind readnone
422*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @llvm.aarch64.neon.sqrshl.v4i16(<4 x i16>, <4 x i16>) nounwind readnone
423*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.sqrshl.v2i32(<2 x i32>, <2 x i32>) nounwind readnone
424*9880d681SAndroid Build Coastguard Workerdeclare <1 x i64> @llvm.aarch64.neon.sqrshl.v1i64(<1 x i64>, <1 x i64>) nounwind readnone
425*9880d681SAndroid Build Coastguard Worker
426*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8>  @llvm.aarch64.neon.uqrshl.v8i8(<8 x i8>, <8 x i8>) nounwind readnone
427*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @llvm.aarch64.neon.uqrshl.v4i16(<4 x i16>, <4 x i16>) nounwind readnone
428*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.uqrshl.v2i32(<2 x i32>, <2 x i32>) nounwind readnone
429*9880d681SAndroid Build Coastguard Workerdeclare <1 x i64> @llvm.aarch64.neon.uqrshl.v1i64(<1 x i64>, <1 x i64>) nounwind readnone
430*9880d681SAndroid Build Coastguard Worker
431*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.aarch64.neon.sqrshl.v16i8(<16 x i8>, <16 x i8>) nounwind readnone
432*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.aarch64.neon.sqrshl.v8i16(<8 x i16>, <8 x i16>) nounwind readnone
433*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.aarch64.neon.sqrshl.v4i32(<4 x i32>, <4 x i32>) nounwind readnone
434*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.aarch64.neon.sqrshl.v2i64(<2 x i64>, <2 x i64>) nounwind readnone
435*9880d681SAndroid Build Coastguard Worker
436*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.aarch64.neon.uqrshl.v16i8(<16 x i8>, <16 x i8>) nounwind readnone
437*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.aarch64.neon.uqrshl.v8i16(<8 x i16>, <8 x i16>) nounwind readnone
438*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.aarch64.neon.uqrshl.v4i32(<4 x i32>, <4 x i32>) nounwind readnone
439*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.aarch64.neon.uqrshl.v2i64(<2 x i64>, <2 x i64>) nounwind readnone
440*9880d681SAndroid Build Coastguard Worker
441*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @urshr8b(<8 x i8>* %A) nounwind {
442*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: urshr8b:
443*9880d681SAndroid Build Coastguard Worker;CHECK: urshr.8b
444*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i8>, <8 x i8>* %A
445*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i8> @llvm.aarch64.neon.urshl.v8i8(<8 x i8> %tmp1, <8 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>)
446*9880d681SAndroid Build Coastguard Worker        ret <8 x i8> %tmp3
447*9880d681SAndroid Build Coastguard Worker}
448*9880d681SAndroid Build Coastguard Worker
449*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @urshr4h(<4 x i16>* %A) nounwind {
450*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: urshr4h:
451*9880d681SAndroid Build Coastguard Worker;CHECK: urshr.4h
452*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i16>, <4 x i16>* %A
453*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i16> @llvm.aarch64.neon.urshl.v4i16(<4 x i16> %tmp1, <4 x i16> <i16 -1, i16 -1, i16 -1, i16 -1>)
454*9880d681SAndroid Build Coastguard Worker        ret <4 x i16> %tmp3
455*9880d681SAndroid Build Coastguard Worker}
456*9880d681SAndroid Build Coastguard Worker
457*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @urshr2s(<2 x i32>* %A) nounwind {
458*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: urshr2s:
459*9880d681SAndroid Build Coastguard Worker;CHECK: urshr.2s
460*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i32>, <2 x i32>* %A
461*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i32> @llvm.aarch64.neon.urshl.v2i32(<2 x i32> %tmp1, <2 x i32> <i32 -1, i32 -1>)
462*9880d681SAndroid Build Coastguard Worker        ret <2 x i32> %tmp3
463*9880d681SAndroid Build Coastguard Worker}
464*9880d681SAndroid Build Coastguard Worker
465*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @urshr16b(<16 x i8>* %A) nounwind {
466*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: urshr16b:
467*9880d681SAndroid Build Coastguard Worker;CHECK: urshr.16b
468*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <16 x i8>, <16 x i8>* %A
469*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <16 x i8> @llvm.aarch64.neon.urshl.v16i8(<16 x i8> %tmp1, <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>)
470*9880d681SAndroid Build Coastguard Worker        ret <16 x i8> %tmp3
471*9880d681SAndroid Build Coastguard Worker}
472*9880d681SAndroid Build Coastguard Worker
473*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @urshr8h(<8 x i16>* %A) nounwind {
474*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: urshr8h:
475*9880d681SAndroid Build Coastguard Worker;CHECK: urshr.8h
476*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i16>, <8 x i16>* %A
477*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i16> @llvm.aarch64.neon.urshl.v8i16(<8 x i16> %tmp1, <8 x i16> <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>)
478*9880d681SAndroid Build Coastguard Worker        ret <8 x i16> %tmp3
479*9880d681SAndroid Build Coastguard Worker}
480*9880d681SAndroid Build Coastguard Worker
481*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @urshr4s(<4 x i32>* %A) nounwind {
482*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: urshr4s:
483*9880d681SAndroid Build Coastguard Worker;CHECK: urshr.4s
484*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i32>, <4 x i32>* %A
485*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i32> @llvm.aarch64.neon.urshl.v4i32(<4 x i32> %tmp1, <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>)
486*9880d681SAndroid Build Coastguard Worker        ret <4 x i32> %tmp3
487*9880d681SAndroid Build Coastguard Worker}
488*9880d681SAndroid Build Coastguard Worker
489*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @urshr2d(<2 x i64>* %A) nounwind {
490*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: urshr2d:
491*9880d681SAndroid Build Coastguard Worker;CHECK: urshr.2d
492*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i64>, <2 x i64>* %A
493*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i64> @llvm.aarch64.neon.urshl.v2i64(<2 x i64> %tmp1, <2 x i64> <i64 -1, i64 -1>)
494*9880d681SAndroid Build Coastguard Worker        ret <2 x i64> %tmp3
495*9880d681SAndroid Build Coastguard Worker}
496*9880d681SAndroid Build Coastguard Worker
497*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @srshr8b(<8 x i8>* %A) nounwind {
498*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srshr8b:
499*9880d681SAndroid Build Coastguard Worker;CHECK: srshr.8b
500*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i8>, <8 x i8>* %A
501*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i8> @llvm.aarch64.neon.srshl.v8i8(<8 x i8> %tmp1, <8 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>)
502*9880d681SAndroid Build Coastguard Worker        ret <8 x i8> %tmp3
503*9880d681SAndroid Build Coastguard Worker}
504*9880d681SAndroid Build Coastguard Worker
505*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @srshr4h(<4 x i16>* %A) nounwind {
506*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srshr4h:
507*9880d681SAndroid Build Coastguard Worker;CHECK: srshr.4h
508*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i16>, <4 x i16>* %A
509*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i16> @llvm.aarch64.neon.srshl.v4i16(<4 x i16> %tmp1, <4 x i16> <i16 -1, i16 -1, i16 -1, i16 -1>)
510*9880d681SAndroid Build Coastguard Worker        ret <4 x i16> %tmp3
511*9880d681SAndroid Build Coastguard Worker}
512*9880d681SAndroid Build Coastguard Worker
513*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @srshr2s(<2 x i32>* %A) nounwind {
514*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srshr2s:
515*9880d681SAndroid Build Coastguard Worker;CHECK: srshr.2s
516*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i32>, <2 x i32>* %A
517*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i32> @llvm.aarch64.neon.srshl.v2i32(<2 x i32> %tmp1, <2 x i32> <i32 -1, i32 -1>)
518*9880d681SAndroid Build Coastguard Worker        ret <2 x i32> %tmp3
519*9880d681SAndroid Build Coastguard Worker}
520*9880d681SAndroid Build Coastguard Worker
521*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @srshr16b(<16 x i8>* %A) nounwind {
522*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srshr16b:
523*9880d681SAndroid Build Coastguard Worker;CHECK: srshr.16b
524*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <16 x i8>, <16 x i8>* %A
525*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <16 x i8> @llvm.aarch64.neon.srshl.v16i8(<16 x i8> %tmp1, <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>)
526*9880d681SAndroid Build Coastguard Worker        ret <16 x i8> %tmp3
527*9880d681SAndroid Build Coastguard Worker}
528*9880d681SAndroid Build Coastguard Worker
529*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @srshr8h(<8 x i16>* %A) nounwind {
530*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srshr8h:
531*9880d681SAndroid Build Coastguard Worker;CHECK: srshr.8h
532*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i16>, <8 x i16>* %A
533*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i16> @llvm.aarch64.neon.srshl.v8i16(<8 x i16> %tmp1, <8 x i16> <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>)
534*9880d681SAndroid Build Coastguard Worker        ret <8 x i16> %tmp3
535*9880d681SAndroid Build Coastguard Worker}
536*9880d681SAndroid Build Coastguard Worker
537*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @srshr4s(<4 x i32>* %A) nounwind {
538*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srshr4s:
539*9880d681SAndroid Build Coastguard Worker;CHECK: srshr.4s
540*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i32>, <4 x i32>* %A
541*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i32> @llvm.aarch64.neon.srshl.v4i32(<4 x i32> %tmp1, <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>)
542*9880d681SAndroid Build Coastguard Worker        ret <4 x i32> %tmp3
543*9880d681SAndroid Build Coastguard Worker}
544*9880d681SAndroid Build Coastguard Worker
545*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @srshr2d(<2 x i64>* %A) nounwind {
546*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srshr2d:
547*9880d681SAndroid Build Coastguard Worker;CHECK: srshr.2d
548*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i64>, <2 x i64>* %A
549*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i64> @llvm.aarch64.neon.srshl.v2i64(<2 x i64> %tmp1, <2 x i64> <i64 -1, i64 -1>)
550*9880d681SAndroid Build Coastguard Worker        ret <2 x i64> %tmp3
551*9880d681SAndroid Build Coastguard Worker}
552*9880d681SAndroid Build Coastguard Worker
553*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @sqshlu8b(<8 x i8>* %A) nounwind {
554*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshlu8b:
555*9880d681SAndroid Build Coastguard Worker;CHECK: sqshlu.8b v0, {{v[0-9]+}}, #1
556*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i8>, <8 x i8>* %A
557*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i8> @llvm.aarch64.neon.sqshlu.v8i8(<8 x i8> %tmp1, <8 x i8> <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>)
558*9880d681SAndroid Build Coastguard Worker        ret <8 x i8> %tmp3
559*9880d681SAndroid Build Coastguard Worker}
560*9880d681SAndroid Build Coastguard Worker
561*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @sqshlu4h(<4 x i16>* %A) nounwind {
562*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshlu4h:
563*9880d681SAndroid Build Coastguard Worker;CHECK: sqshlu.4h v0, {{v[0-9]+}}, #1
564*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i16>, <4 x i16>* %A
565*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i16> @llvm.aarch64.neon.sqshlu.v4i16(<4 x i16> %tmp1, <4 x i16> <i16 1, i16 1, i16 1, i16 1>)
566*9880d681SAndroid Build Coastguard Worker        ret <4 x i16> %tmp3
567*9880d681SAndroid Build Coastguard Worker}
568*9880d681SAndroid Build Coastguard Worker
569*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @sqshlu2s(<2 x i32>* %A) nounwind {
570*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshlu2s:
571*9880d681SAndroid Build Coastguard Worker;CHECK: sqshlu.2s v0, {{v[0-9]+}}, #1
572*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i32>, <2 x i32>* %A
573*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i32> @llvm.aarch64.neon.sqshlu.v2i32(<2 x i32> %tmp1, <2 x i32> <i32 1, i32 1>)
574*9880d681SAndroid Build Coastguard Worker        ret <2 x i32> %tmp3
575*9880d681SAndroid Build Coastguard Worker}
576*9880d681SAndroid Build Coastguard Worker
577*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @sqshlu16b(<16 x i8>* %A) nounwind {
578*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshlu16b:
579*9880d681SAndroid Build Coastguard Worker;CHECK: sqshlu.16b v0, {{v[0-9]+}}, #1
580*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <16 x i8>, <16 x i8>* %A
581*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <16 x i8> @llvm.aarch64.neon.sqshlu.v16i8(<16 x i8> %tmp1, <16 x i8> <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>)
582*9880d681SAndroid Build Coastguard Worker        ret <16 x i8> %tmp3
583*9880d681SAndroid Build Coastguard Worker}
584*9880d681SAndroid Build Coastguard Worker
585*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @sqshlu8h(<8 x i16>* %A) nounwind {
586*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshlu8h:
587*9880d681SAndroid Build Coastguard Worker;CHECK: sqshlu.8h v0, {{v[0-9]+}}, #1
588*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i16>, <8 x i16>* %A
589*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i16> @llvm.aarch64.neon.sqshlu.v8i16(<8 x i16> %tmp1, <8 x i16> <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>)
590*9880d681SAndroid Build Coastguard Worker        ret <8 x i16> %tmp3
591*9880d681SAndroid Build Coastguard Worker}
592*9880d681SAndroid Build Coastguard Worker
593*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @sqshlu4s(<4 x i32>* %A) nounwind {
594*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshlu4s:
595*9880d681SAndroid Build Coastguard Worker;CHECK: sqshlu.4s v0, {{v[0-9]+}}, #1
596*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i32>, <4 x i32>* %A
597*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i32> @llvm.aarch64.neon.sqshlu.v4i32(<4 x i32> %tmp1, <4 x i32> <i32 1, i32 1, i32 1, i32 1>)
598*9880d681SAndroid Build Coastguard Worker        ret <4 x i32> %tmp3
599*9880d681SAndroid Build Coastguard Worker}
600*9880d681SAndroid Build Coastguard Worker
601*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @sqshlu2d(<2 x i64>* %A) nounwind {
602*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshlu2d:
603*9880d681SAndroid Build Coastguard Worker;CHECK: sqshlu.2d v0, {{v[0-9]+}}, #1
604*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i64>, <2 x i64>* %A
605*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i64> @llvm.aarch64.neon.sqshlu.v2i64(<2 x i64> %tmp1, <2 x i64> <i64 1, i64 1>)
606*9880d681SAndroid Build Coastguard Worker        ret <2 x i64> %tmp3
607*9880d681SAndroid Build Coastguard Worker}
608*9880d681SAndroid Build Coastguard Worker
609*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8>  @llvm.aarch64.neon.sqshlu.v8i8(<8 x i8>, <8 x i8>) nounwind readnone
610*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @llvm.aarch64.neon.sqshlu.v4i16(<4 x i16>, <4 x i16>) nounwind readnone
611*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.sqshlu.v2i32(<2 x i32>, <2 x i32>) nounwind readnone
612*9880d681SAndroid Build Coastguard Workerdeclare <1 x i64> @llvm.aarch64.neon.sqshlu.v1i64(<1 x i64>, <1 x i64>) nounwind readnone
613*9880d681SAndroid Build Coastguard Worker
614*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.aarch64.neon.sqshlu.v16i8(<16 x i8>, <16 x i8>) nounwind readnone
615*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.aarch64.neon.sqshlu.v8i16(<8 x i16>, <8 x i16>) nounwind readnone
616*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.aarch64.neon.sqshlu.v4i32(<4 x i32>, <4 x i32>) nounwind readnone
617*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.aarch64.neon.sqshlu.v2i64(<2 x i64>, <2 x i64>) nounwind readnone
618*9880d681SAndroid Build Coastguard Worker
619*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @rshrn8b(<8 x i16>* %A) nounwind {
620*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: rshrn8b:
621*9880d681SAndroid Build Coastguard Worker;CHECK: rshrn.8b v0, {{v[0-9]+}}, #1
622*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i16>, <8 x i16>* %A
623*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i8> @llvm.aarch64.neon.rshrn.v8i8(<8 x i16> %tmp1, i32 1)
624*9880d681SAndroid Build Coastguard Worker        ret <8 x i8> %tmp3
625*9880d681SAndroid Build Coastguard Worker}
626*9880d681SAndroid Build Coastguard Worker
627*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @rshrn4h(<4 x i32>* %A) nounwind {
628*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: rshrn4h:
629*9880d681SAndroid Build Coastguard Worker;CHECK: rshrn.4h v0, {{v[0-9]+}}, #1
630*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i32>, <4 x i32>* %A
631*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i16> @llvm.aarch64.neon.rshrn.v4i16(<4 x i32> %tmp1, i32 1)
632*9880d681SAndroid Build Coastguard Worker        ret <4 x i16> %tmp3
633*9880d681SAndroid Build Coastguard Worker}
634*9880d681SAndroid Build Coastguard Worker
635*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @rshrn2s(<2 x i64>* %A) nounwind {
636*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: rshrn2s:
637*9880d681SAndroid Build Coastguard Worker;CHECK: rshrn.2s v0, {{v[0-9]+}}, #1
638*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i64>, <2 x i64>* %A
639*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i32> @llvm.aarch64.neon.rshrn.v2i32(<2 x i64> %tmp1, i32 1)
640*9880d681SAndroid Build Coastguard Worker        ret <2 x i32> %tmp3
641*9880d681SAndroid Build Coastguard Worker}
642*9880d681SAndroid Build Coastguard Worker
643*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @rshrn16b(<8 x i8> *%ret, <8 x i16>* %A) nounwind {
644*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: rshrn16b:
645*9880d681SAndroid Build Coastguard Worker;CHECK: rshrn2.16b v0, {{v[0-9]+}}, #1
646*9880d681SAndroid Build Coastguard Worker        %out = load <8 x i8>, <8 x i8>* %ret
647*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i16>, <8 x i16>* %A
648*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i8> @llvm.aarch64.neon.rshrn.v8i8(<8 x i16> %tmp1, i32 1)
649*9880d681SAndroid Build Coastguard Worker        %tmp4 = shufflevector <8 x i8> %out, <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>
650*9880d681SAndroid Build Coastguard Worker        ret <16 x i8> %tmp4
651*9880d681SAndroid Build Coastguard Worker}
652*9880d681SAndroid Build Coastguard Worker
653*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @rshrn8h(<4 x i16>* %ret, <4 x i32>* %A) nounwind {
654*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: rshrn8h:
655*9880d681SAndroid Build Coastguard Worker;CHECK: rshrn2.8h v0, {{v[0-9]+}}, #1
656*9880d681SAndroid Build Coastguard Worker        %out = load <4 x i16>, <4 x i16>* %ret
657*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i32>, <4 x i32>* %A
658*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i16> @llvm.aarch64.neon.rshrn.v4i16(<4 x i32> %tmp1, i32 1)
659*9880d681SAndroid Build Coastguard Worker        %tmp4 = shufflevector <4 x i16> %out, <4 x i16> %tmp3, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
660*9880d681SAndroid Build Coastguard Worker        ret <8 x i16> %tmp4
661*9880d681SAndroid Build Coastguard Worker}
662*9880d681SAndroid Build Coastguard Worker
663*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @rshrn4s(<2 x i32>* %ret, <2 x i64>* %A) nounwind {
664*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: rshrn4s:
665*9880d681SAndroid Build Coastguard Worker;CHECK: rshrn2.4s v0, {{v[0-9]+}}, #1
666*9880d681SAndroid Build Coastguard Worker        %out = load <2 x i32>, <2 x i32>* %ret
667*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i64>, <2 x i64>* %A
668*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i32> @llvm.aarch64.neon.rshrn.v2i32(<2 x i64> %tmp1, i32 1)
669*9880d681SAndroid Build Coastguard Worker        %tmp4 = shufflevector <2 x i32> %out, <2 x i32> %tmp3, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
670*9880d681SAndroid Build Coastguard Worker        ret <4 x i32> %tmp4
671*9880d681SAndroid Build Coastguard Worker}
672*9880d681SAndroid Build Coastguard Worker
673*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8>  @llvm.aarch64.neon.rshrn.v8i8(<8 x i16>, i32) nounwind readnone
674*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @llvm.aarch64.neon.rshrn.v4i16(<4 x i32>, i32) nounwind readnone
675*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.rshrn.v2i32(<2 x i64>, i32) nounwind readnone
676*9880d681SAndroid Build Coastguard Worker
677*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @shrn8b(<8 x i16>* %A) nounwind {
678*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shrn8b:
679*9880d681SAndroid Build Coastguard Worker;CHECK: shrn.8b v0, {{v[0-9]+}}, #1
680*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i16>, <8 x i16>* %A
681*9880d681SAndroid Build Coastguard Worker        %tmp2 = lshr <8 x i16> %tmp1, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
682*9880d681SAndroid Build Coastguard Worker        %tmp3 = trunc <8 x i16> %tmp2 to <8 x i8>
683*9880d681SAndroid Build Coastguard Worker        ret <8 x i8> %tmp3
684*9880d681SAndroid Build Coastguard Worker}
685*9880d681SAndroid Build Coastguard Worker
686*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @shrn4h(<4 x i32>* %A) nounwind {
687*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shrn4h:
688*9880d681SAndroid Build Coastguard Worker;CHECK: shrn.4h v0, {{v[0-9]+}}, #1
689*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i32>, <4 x i32>* %A
690*9880d681SAndroid Build Coastguard Worker        %tmp2 = lshr <4 x i32> %tmp1, <i32 1, i32 1, i32 1, i32 1>
691*9880d681SAndroid Build Coastguard Worker        %tmp3 = trunc <4 x i32> %tmp2 to <4 x i16>
692*9880d681SAndroid Build Coastguard Worker        ret <4 x i16> %tmp3
693*9880d681SAndroid Build Coastguard Worker}
694*9880d681SAndroid Build Coastguard Worker
695*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @shrn2s(<2 x i64>* %A) nounwind {
696*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shrn2s:
697*9880d681SAndroid Build Coastguard Worker;CHECK: shrn.2s v0, {{v[0-9]+}}, #1
698*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i64>, <2 x i64>* %A
699*9880d681SAndroid Build Coastguard Worker        %tmp2 = lshr <2 x i64> %tmp1, <i64 1, i64 1>
700*9880d681SAndroid Build Coastguard Worker        %tmp3 = trunc <2 x i64> %tmp2 to <2 x i32>
701*9880d681SAndroid Build Coastguard Worker        ret <2 x i32> %tmp3
702*9880d681SAndroid Build Coastguard Worker}
703*9880d681SAndroid Build Coastguard Worker
704*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @shrn16b(<8 x i8>* %ret, <8 x i16>* %A) nounwind {
705*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shrn16b:
706*9880d681SAndroid Build Coastguard Worker;CHECK: shrn2.16b v0, {{v[0-9]+}}, #1
707*9880d681SAndroid Build Coastguard Worker        %out = load <8 x i8>, <8 x i8>* %ret
708*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i16>, <8 x i16>* %A
709*9880d681SAndroid Build Coastguard Worker        %tmp2 = lshr <8 x i16> %tmp1, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
710*9880d681SAndroid Build Coastguard Worker        %tmp3 = trunc <8 x i16> %tmp2 to <8 x i8>
711*9880d681SAndroid Build Coastguard Worker        %tmp4 = shufflevector <8 x i8> %out, <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>
712*9880d681SAndroid Build Coastguard Worker        ret <16 x i8> %tmp4
713*9880d681SAndroid Build Coastguard Worker}
714*9880d681SAndroid Build Coastguard Worker
715*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shrn8h(<4 x i16>* %ret, <4 x i32>* %A) nounwind {
716*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shrn8h:
717*9880d681SAndroid Build Coastguard Worker;CHECK: shrn2.8h v0, {{v[0-9]+}}, #1
718*9880d681SAndroid Build Coastguard Worker        %out = load <4 x i16>, <4 x i16>* %ret
719*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i32>, <4 x i32>* %A
720*9880d681SAndroid Build Coastguard Worker        %tmp2 = lshr <4 x i32> %tmp1, <i32 1, i32 1, i32 1, i32 1>
721*9880d681SAndroid Build Coastguard Worker        %tmp3 = trunc <4 x i32> %tmp2 to <4 x i16>
722*9880d681SAndroid Build Coastguard Worker        %tmp4 = shufflevector <4 x i16> %out, <4 x i16> %tmp3, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
723*9880d681SAndroid Build Coastguard Worker        ret <8 x i16> %tmp4
724*9880d681SAndroid Build Coastguard Worker}
725*9880d681SAndroid Build Coastguard Worker
726*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @shrn4s(<2 x i32>* %ret, <2 x i64>* %A) nounwind {
727*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shrn4s:
728*9880d681SAndroid Build Coastguard Worker;CHECK: shrn2.4s v0, {{v[0-9]+}}, #1
729*9880d681SAndroid Build Coastguard Worker        %out = load <2 x i32>, <2 x i32>* %ret
730*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i64>, <2 x i64>* %A
731*9880d681SAndroid Build Coastguard Worker        %tmp2 = lshr <2 x i64> %tmp1, <i64 1, i64 1>
732*9880d681SAndroid Build Coastguard Worker        %tmp3 = trunc <2 x i64> %tmp2 to <2 x i32>
733*9880d681SAndroid Build Coastguard Worker        %tmp4 = shufflevector <2 x i32> %out, <2 x i32> %tmp3, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
734*9880d681SAndroid Build Coastguard Worker        ret <4 x i32> %tmp4
735*9880d681SAndroid Build Coastguard Worker}
736*9880d681SAndroid Build Coastguard Worker
737*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8>  @llvm.aarch64.neon.shrn.v8i8(<8 x i16>, i32) nounwind readnone
738*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @llvm.aarch64.neon.shrn.v4i16(<4 x i32>, i32) nounwind readnone
739*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.shrn.v2i32(<2 x i64>, i32) nounwind readnone
740*9880d681SAndroid Build Coastguard Worker
741*9880d681SAndroid Build Coastguard Workerdefine i32 @sqshrn1s(i64 %A) nounwind {
742*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: sqshrn1s:
743*9880d681SAndroid Build Coastguard Worker; CHECK: sqshrn {{s[0-9]+}}, d0, #1
744*9880d681SAndroid Build Coastguard Worker  %tmp = call i32 @llvm.aarch64.neon.sqshrn.i32(i64 %A, i32 1)
745*9880d681SAndroid Build Coastguard Worker  ret i32 %tmp
746*9880d681SAndroid Build Coastguard Worker}
747*9880d681SAndroid Build Coastguard Worker
748*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @sqshrn8b(<8 x i16>* %A) nounwind {
749*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshrn8b:
750*9880d681SAndroid Build Coastguard Worker;CHECK: sqshrn.8b v0, {{v[0-9]+}}, #1
751*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i16>, <8 x i16>* %A
752*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i8> @llvm.aarch64.neon.sqshrn.v8i8(<8 x i16> %tmp1, i32 1)
753*9880d681SAndroid Build Coastguard Worker        ret <8 x i8> %tmp3
754*9880d681SAndroid Build Coastguard Worker}
755*9880d681SAndroid Build Coastguard Worker
756*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @sqshrn4h(<4 x i32>* %A) nounwind {
757*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshrn4h:
758*9880d681SAndroid Build Coastguard Worker;CHECK: sqshrn.4h v0, {{v[0-9]+}}, #1
759*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i32>, <4 x i32>* %A
760*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i16> @llvm.aarch64.neon.sqshrn.v4i16(<4 x i32> %tmp1, i32 1)
761*9880d681SAndroid Build Coastguard Worker        ret <4 x i16> %tmp3
762*9880d681SAndroid Build Coastguard Worker}
763*9880d681SAndroid Build Coastguard Worker
764*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @sqshrn2s(<2 x i64>* %A) nounwind {
765*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshrn2s:
766*9880d681SAndroid Build Coastguard Worker;CHECK: sqshrn.2s v0, {{v[0-9]+}}, #1
767*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i64>, <2 x i64>* %A
768*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i32> @llvm.aarch64.neon.sqshrn.v2i32(<2 x i64> %tmp1, i32 1)
769*9880d681SAndroid Build Coastguard Worker        ret <2 x i32> %tmp3
770*9880d681SAndroid Build Coastguard Worker}
771*9880d681SAndroid Build Coastguard Worker
772*9880d681SAndroid Build Coastguard Worker
773*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @sqshrn16b(<8 x i8>* %ret, <8 x i16>* %A) nounwind {
774*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshrn16b:
775*9880d681SAndroid Build Coastguard Worker;CHECK: sqshrn2.16b v0, {{v[0-9]+}}, #1
776*9880d681SAndroid Build Coastguard Worker        %out = load <8 x i8>, <8 x i8>* %ret
777*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i16>, <8 x i16>* %A
778*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i8> @llvm.aarch64.neon.sqshrn.v8i8(<8 x i16> %tmp1, i32 1)
779*9880d681SAndroid Build Coastguard Worker        %tmp4 = shufflevector <8 x i8> %out, <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>
780*9880d681SAndroid Build Coastguard Worker        ret <16 x i8> %tmp4
781*9880d681SAndroid Build Coastguard Worker}
782*9880d681SAndroid Build Coastguard Worker
783*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @sqshrn8h(<4 x i16>* %ret, <4 x i32>* %A) nounwind {
784*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshrn8h:
785*9880d681SAndroid Build Coastguard Worker;CHECK: sqshrn2.8h v0, {{v[0-9]+}}, #1
786*9880d681SAndroid Build Coastguard Worker        %out = load <4 x i16>, <4 x i16>* %ret
787*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i32>, <4 x i32>* %A
788*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i16> @llvm.aarch64.neon.sqshrn.v4i16(<4 x i32> %tmp1, i32 1)
789*9880d681SAndroid Build Coastguard Worker        %tmp4 = shufflevector <4 x i16> %out, <4 x i16> %tmp3, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
790*9880d681SAndroid Build Coastguard Worker        ret <8 x i16> %tmp4
791*9880d681SAndroid Build Coastguard Worker}
792*9880d681SAndroid Build Coastguard Worker
793*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @sqshrn4s(<2 x i32>* %ret, <2 x i64>* %A) nounwind {
794*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshrn4s:
795*9880d681SAndroid Build Coastguard Worker;CHECK: sqshrn2.4s v0, {{v[0-9]+}}, #1
796*9880d681SAndroid Build Coastguard Worker        %out = load <2 x i32>, <2 x i32>* %ret
797*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i64>, <2 x i64>* %A
798*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i32> @llvm.aarch64.neon.sqshrn.v2i32(<2 x i64> %tmp1, i32 1)
799*9880d681SAndroid Build Coastguard Worker        %tmp4 = shufflevector <2 x i32> %out, <2 x i32> %tmp3, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
800*9880d681SAndroid Build Coastguard Worker        ret <4 x i32> %tmp4
801*9880d681SAndroid Build Coastguard Worker}
802*9880d681SAndroid Build Coastguard Worker
803*9880d681SAndroid Build Coastguard Workerdeclare i32  @llvm.aarch64.neon.sqshrn.i32(i64, i32) nounwind readnone
804*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8>  @llvm.aarch64.neon.sqshrn.v8i8(<8 x i16>, i32) nounwind readnone
805*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @llvm.aarch64.neon.sqshrn.v4i16(<4 x i32>, i32) nounwind readnone
806*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.sqshrn.v2i32(<2 x i64>, i32) nounwind readnone
807*9880d681SAndroid Build Coastguard Worker
808*9880d681SAndroid Build Coastguard Workerdefine i32 @sqshrun1s(i64 %A) nounwind {
809*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: sqshrun1s:
810*9880d681SAndroid Build Coastguard Worker; CHECK: sqshrun {{s[0-9]+}}, d0, #1
811*9880d681SAndroid Build Coastguard Worker  %tmp = call i32 @llvm.aarch64.neon.sqshrun.i32(i64 %A, i32 1)
812*9880d681SAndroid Build Coastguard Worker  ret i32 %tmp
813*9880d681SAndroid Build Coastguard Worker}
814*9880d681SAndroid Build Coastguard Worker
815*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @sqshrun8b(<8 x i16>* %A) nounwind {
816*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshrun8b:
817*9880d681SAndroid Build Coastguard Worker;CHECK: sqshrun.8b v0, {{v[0-9]+}}, #1
818*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i16>, <8 x i16>* %A
819*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i8> @llvm.aarch64.neon.sqshrun.v8i8(<8 x i16> %tmp1, i32 1)
820*9880d681SAndroid Build Coastguard Worker        ret <8 x i8> %tmp3
821*9880d681SAndroid Build Coastguard Worker}
822*9880d681SAndroid Build Coastguard Worker
823*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @sqshrun4h(<4 x i32>* %A) nounwind {
824*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshrun4h:
825*9880d681SAndroid Build Coastguard Worker;CHECK: sqshrun.4h v0, {{v[0-9]+}}, #1
826*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i32>, <4 x i32>* %A
827*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i16> @llvm.aarch64.neon.sqshrun.v4i16(<4 x i32> %tmp1, i32 1)
828*9880d681SAndroid Build Coastguard Worker        ret <4 x i16> %tmp3
829*9880d681SAndroid Build Coastguard Worker}
830*9880d681SAndroid Build Coastguard Worker
831*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @sqshrun2s(<2 x i64>* %A) nounwind {
832*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshrun2s:
833*9880d681SAndroid Build Coastguard Worker;CHECK: sqshrun.2s v0, {{v[0-9]+}}, #1
834*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i64>, <2 x i64>* %A
835*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i32> @llvm.aarch64.neon.sqshrun.v2i32(<2 x i64> %tmp1, i32 1)
836*9880d681SAndroid Build Coastguard Worker        ret <2 x i32> %tmp3
837*9880d681SAndroid Build Coastguard Worker}
838*9880d681SAndroid Build Coastguard Worker
839*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @sqshrun16b(<8 x i8>* %ret, <8 x i16>* %A) nounwind {
840*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshrun16b:
841*9880d681SAndroid Build Coastguard Worker;CHECK: sqshrun2.16b v0, {{v[0-9]+}}, #1
842*9880d681SAndroid Build Coastguard Worker        %out = load <8 x i8>, <8 x i8>* %ret
843*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i16>, <8 x i16>* %A
844*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i8> @llvm.aarch64.neon.sqshrun.v8i8(<8 x i16> %tmp1, i32 1)
845*9880d681SAndroid Build Coastguard Worker        %tmp4 = shufflevector <8 x i8> %out, <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>
846*9880d681SAndroid Build Coastguard Worker        ret <16 x i8> %tmp4
847*9880d681SAndroid Build Coastguard Worker}
848*9880d681SAndroid Build Coastguard Worker
849*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @sqshrun8h(<4 x i16>* %ret, <4 x i32>* %A) nounwind {
850*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshrun8h:
851*9880d681SAndroid Build Coastguard Worker;CHECK: sqshrun2.8h v0, {{v[0-9]+}}, #1
852*9880d681SAndroid Build Coastguard Worker        %out = load <4 x i16>, <4 x i16>* %ret
853*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i32>, <4 x i32>* %A
854*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i16> @llvm.aarch64.neon.sqshrun.v4i16(<4 x i32> %tmp1, i32 1)
855*9880d681SAndroid Build Coastguard Worker        %tmp4 = shufflevector <4 x i16> %out, <4 x i16> %tmp3, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
856*9880d681SAndroid Build Coastguard Worker        ret <8 x i16> %tmp4
857*9880d681SAndroid Build Coastguard Worker}
858*9880d681SAndroid Build Coastguard Worker
859*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @sqshrun4s(<2 x i32>* %ret, <2 x i64>* %A) nounwind {
860*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshrun4s:
861*9880d681SAndroid Build Coastguard Worker;CHECK: sqshrun2.4s v0, {{v[0-9]+}}, #1
862*9880d681SAndroid Build Coastguard Worker        %out = load <2 x i32>, <2 x i32>* %ret
863*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i64>, <2 x i64>* %A
864*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i32> @llvm.aarch64.neon.sqshrun.v2i32(<2 x i64> %tmp1, i32 1)
865*9880d681SAndroid Build Coastguard Worker        %tmp4 = shufflevector <2 x i32> %out, <2 x i32> %tmp3, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
866*9880d681SAndroid Build Coastguard Worker        ret <4 x i32> %tmp4
867*9880d681SAndroid Build Coastguard Worker}
868*9880d681SAndroid Build Coastguard Worker
869*9880d681SAndroid Build Coastguard Workerdeclare i32  @llvm.aarch64.neon.sqshrun.i32(i64, i32) nounwind readnone
870*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8>  @llvm.aarch64.neon.sqshrun.v8i8(<8 x i16>, i32) nounwind readnone
871*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @llvm.aarch64.neon.sqshrun.v4i16(<4 x i32>, i32) nounwind readnone
872*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.sqshrun.v2i32(<2 x i64>, i32) nounwind readnone
873*9880d681SAndroid Build Coastguard Worker
874*9880d681SAndroid Build Coastguard Workerdefine i32 @sqrshrn1s(i64 %A) nounwind {
875*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: sqrshrn1s:
876*9880d681SAndroid Build Coastguard Worker; CHECK: sqrshrn {{s[0-9]+}}, d0, #1
877*9880d681SAndroid Build Coastguard Worker  %tmp = call i32 @llvm.aarch64.neon.sqrshrn.i32(i64 %A, i32 1)
878*9880d681SAndroid Build Coastguard Worker  ret i32 %tmp
879*9880d681SAndroid Build Coastguard Worker}
880*9880d681SAndroid Build Coastguard Worker
881*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @sqrshrn8b(<8 x i16>* %A) nounwind {
882*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqrshrn8b:
883*9880d681SAndroid Build Coastguard Worker;CHECK: sqrshrn.8b v0, {{v[0-9]+}}, #1
884*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i16>, <8 x i16>* %A
885*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i8> @llvm.aarch64.neon.sqrshrn.v8i8(<8 x i16> %tmp1, i32 1)
886*9880d681SAndroid Build Coastguard Worker        ret <8 x i8> %tmp3
887*9880d681SAndroid Build Coastguard Worker}
888*9880d681SAndroid Build Coastguard Worker
889*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @sqrshrn4h(<4 x i32>* %A) nounwind {
890*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqrshrn4h:
891*9880d681SAndroid Build Coastguard Worker;CHECK: sqrshrn.4h v0, {{v[0-9]+}}, #1
892*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i32>, <4 x i32>* %A
893*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i16> @llvm.aarch64.neon.sqrshrn.v4i16(<4 x i32> %tmp1, i32 1)
894*9880d681SAndroid Build Coastguard Worker        ret <4 x i16> %tmp3
895*9880d681SAndroid Build Coastguard Worker}
896*9880d681SAndroid Build Coastguard Worker
897*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @sqrshrn2s(<2 x i64>* %A) nounwind {
898*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqrshrn2s:
899*9880d681SAndroid Build Coastguard Worker;CHECK: sqrshrn.2s v0, {{v[0-9]+}}, #1
900*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i64>, <2 x i64>* %A
901*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i32> @llvm.aarch64.neon.sqrshrn.v2i32(<2 x i64> %tmp1, i32 1)
902*9880d681SAndroid Build Coastguard Worker        ret <2 x i32> %tmp3
903*9880d681SAndroid Build Coastguard Worker}
904*9880d681SAndroid Build Coastguard Worker
905*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @sqrshrn16b(<8 x i8>* %ret, <8 x i16>* %A) nounwind {
906*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqrshrn16b:
907*9880d681SAndroid Build Coastguard Worker;CHECK: sqrshrn2.16b v0, {{v[0-9]+}}, #1
908*9880d681SAndroid Build Coastguard Worker        %out = load <8 x i8>, <8 x i8>* %ret
909*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i16>, <8 x i16>* %A
910*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i8> @llvm.aarch64.neon.sqrshrn.v8i8(<8 x i16> %tmp1, i32 1)
911*9880d681SAndroid Build Coastguard Worker        %tmp4 = shufflevector <8 x i8> %out, <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>
912*9880d681SAndroid Build Coastguard Worker        ret <16 x i8> %tmp4
913*9880d681SAndroid Build Coastguard Worker}
914*9880d681SAndroid Build Coastguard Worker
915*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @sqrshrn8h(<4 x i16>* %ret, <4 x i32>* %A) nounwind {
916*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqrshrn8h:
917*9880d681SAndroid Build Coastguard Worker;CHECK: sqrshrn2.8h v0, {{v[0-9]+}}, #1
918*9880d681SAndroid Build Coastguard Worker        %out = load <4 x i16>, <4 x i16>* %ret
919*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i32>, <4 x i32>* %A
920*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i16> @llvm.aarch64.neon.sqrshrn.v4i16(<4 x i32> %tmp1, i32 1)
921*9880d681SAndroid Build Coastguard Worker        %tmp4 = shufflevector <4 x i16> %out, <4 x i16> %tmp3, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
922*9880d681SAndroid Build Coastguard Worker        ret <8 x i16> %tmp4
923*9880d681SAndroid Build Coastguard Worker}
924*9880d681SAndroid Build Coastguard Worker
925*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @sqrshrn4s(<2 x i32>* %ret, <2 x i64>* %A) nounwind {
926*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqrshrn4s:
927*9880d681SAndroid Build Coastguard Worker;CHECK: sqrshrn2.4s v0, {{v[0-9]+}}, #1
928*9880d681SAndroid Build Coastguard Worker        %out = load <2 x i32>, <2 x i32>* %ret
929*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i64>, <2 x i64>* %A
930*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i32> @llvm.aarch64.neon.sqrshrn.v2i32(<2 x i64> %tmp1, i32 1)
931*9880d681SAndroid Build Coastguard Worker        %tmp4 = shufflevector <2 x i32> %out, <2 x i32> %tmp3, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
932*9880d681SAndroid Build Coastguard Worker        ret <4 x i32> %tmp4
933*9880d681SAndroid Build Coastguard Worker}
934*9880d681SAndroid Build Coastguard Worker
935*9880d681SAndroid Build Coastguard Workerdeclare i32  @llvm.aarch64.neon.sqrshrn.i32(i64, i32) nounwind readnone
936*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8>  @llvm.aarch64.neon.sqrshrn.v8i8(<8 x i16>, i32) nounwind readnone
937*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @llvm.aarch64.neon.sqrshrn.v4i16(<4 x i32>, i32) nounwind readnone
938*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.sqrshrn.v2i32(<2 x i64>, i32) nounwind readnone
939*9880d681SAndroid Build Coastguard Worker
940*9880d681SAndroid Build Coastguard Workerdefine i32 @sqrshrun1s(i64 %A) nounwind {
941*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: sqrshrun1s:
942*9880d681SAndroid Build Coastguard Worker; CHECK: sqrshrun {{s[0-9]+}}, d0, #1
943*9880d681SAndroid Build Coastguard Worker  %tmp = call i32 @llvm.aarch64.neon.sqrshrun.i32(i64 %A, i32 1)
944*9880d681SAndroid Build Coastguard Worker  ret i32 %tmp
945*9880d681SAndroid Build Coastguard Worker}
946*9880d681SAndroid Build Coastguard Worker
947*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @sqrshrun8b(<8 x i16>* %A) nounwind {
948*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqrshrun8b:
949*9880d681SAndroid Build Coastguard Worker;CHECK: sqrshrun.8b v0, {{v[0-9]+}}, #1
950*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i16>, <8 x i16>* %A
951*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i8> @llvm.aarch64.neon.sqrshrun.v8i8(<8 x i16> %tmp1, i32 1)
952*9880d681SAndroid Build Coastguard Worker        ret <8 x i8> %tmp3
953*9880d681SAndroid Build Coastguard Worker}
954*9880d681SAndroid Build Coastguard Worker
955*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @sqrshrun4h(<4 x i32>* %A) nounwind {
956*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqrshrun4h:
957*9880d681SAndroid Build Coastguard Worker;CHECK: sqrshrun.4h v0, {{v[0-9]+}}, #1
958*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i32>, <4 x i32>* %A
959*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i16> @llvm.aarch64.neon.sqrshrun.v4i16(<4 x i32> %tmp1, i32 1)
960*9880d681SAndroid Build Coastguard Worker        ret <4 x i16> %tmp3
961*9880d681SAndroid Build Coastguard Worker}
962*9880d681SAndroid Build Coastguard Worker
963*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @sqrshrun2s(<2 x i64>* %A) nounwind {
964*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqrshrun2s:
965*9880d681SAndroid Build Coastguard Worker;CHECK: sqrshrun.2s v0, {{v[0-9]+}}, #1
966*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i64>, <2 x i64>* %A
967*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i32> @llvm.aarch64.neon.sqrshrun.v2i32(<2 x i64> %tmp1, i32 1)
968*9880d681SAndroid Build Coastguard Worker        ret <2 x i32> %tmp3
969*9880d681SAndroid Build Coastguard Worker}
970*9880d681SAndroid Build Coastguard Worker
971*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @sqrshrun16b(<8 x i8>* %ret, <8 x i16>* %A) nounwind {
972*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqrshrun16b:
973*9880d681SAndroid Build Coastguard Worker;CHECK: sqrshrun2.16b v0, {{v[0-9]+}}, #1
974*9880d681SAndroid Build Coastguard Worker        %out = load <8 x i8>, <8 x i8>* %ret
975*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i16>, <8 x i16>* %A
976*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i8> @llvm.aarch64.neon.sqrshrun.v8i8(<8 x i16> %tmp1, i32 1)
977*9880d681SAndroid Build Coastguard Worker        %tmp4 = shufflevector <8 x i8> %out, <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>
978*9880d681SAndroid Build Coastguard Worker        ret <16 x i8> %tmp4
979*9880d681SAndroid Build Coastguard Worker}
980*9880d681SAndroid Build Coastguard Worker
981*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @sqrshrun8h(<4 x i16>* %ret, <4 x i32>* %A) nounwind {
982*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqrshrun8h:
983*9880d681SAndroid Build Coastguard Worker;CHECK: sqrshrun2.8h v0, {{v[0-9]+}}, #1
984*9880d681SAndroid Build Coastguard Worker        %out = load <4 x i16>, <4 x i16>* %ret
985*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i32>, <4 x i32>* %A
986*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i16> @llvm.aarch64.neon.sqrshrun.v4i16(<4 x i32> %tmp1, i32 1)
987*9880d681SAndroid Build Coastguard Worker        %tmp4 = shufflevector <4 x i16> %out, <4 x i16> %tmp3, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
988*9880d681SAndroid Build Coastguard Worker        ret <8 x i16> %tmp4
989*9880d681SAndroid Build Coastguard Worker}
990*9880d681SAndroid Build Coastguard Worker
991*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @sqrshrun4s(<2 x i32>* %ret, <2 x i64>* %A) nounwind {
992*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqrshrun4s:
993*9880d681SAndroid Build Coastguard Worker;CHECK: sqrshrun2.4s v0, {{v[0-9]+}}, #1
994*9880d681SAndroid Build Coastguard Worker        %out = load <2 x i32>, <2 x i32>* %ret
995*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i64>, <2 x i64>* %A
996*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i32> @llvm.aarch64.neon.sqrshrun.v2i32(<2 x i64> %tmp1, i32 1)
997*9880d681SAndroid Build Coastguard Worker        %tmp4 = shufflevector <2 x i32> %out, <2 x i32> %tmp3, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
998*9880d681SAndroid Build Coastguard Worker        ret <4 x i32> %tmp4
999*9880d681SAndroid Build Coastguard Worker}
1000*9880d681SAndroid Build Coastguard Worker
1001*9880d681SAndroid Build Coastguard Workerdeclare i32  @llvm.aarch64.neon.sqrshrun.i32(i64, i32) nounwind readnone
1002*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8>  @llvm.aarch64.neon.sqrshrun.v8i8(<8 x i16>, i32) nounwind readnone
1003*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @llvm.aarch64.neon.sqrshrun.v4i16(<4 x i32>, i32) nounwind readnone
1004*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.sqrshrun.v2i32(<2 x i64>, i32) nounwind readnone
1005*9880d681SAndroid Build Coastguard Worker
1006*9880d681SAndroid Build Coastguard Workerdefine i32 @uqrshrn1s(i64 %A) nounwind {
1007*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: uqrshrn1s:
1008*9880d681SAndroid Build Coastguard Worker; CHECK: uqrshrn {{s[0-9]+}}, d0, #1
1009*9880d681SAndroid Build Coastguard Worker  %tmp = call i32 @llvm.aarch64.neon.uqrshrn.i32(i64 %A, i32 1)
1010*9880d681SAndroid Build Coastguard Worker  ret i32 %tmp
1011*9880d681SAndroid Build Coastguard Worker}
1012*9880d681SAndroid Build Coastguard Worker
1013*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @uqrshrn8b(<8 x i16>* %A) nounwind {
1014*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqrshrn8b:
1015*9880d681SAndroid Build Coastguard Worker;CHECK: uqrshrn.8b v0, {{v[0-9]+}}, #1
1016*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i16>, <8 x i16>* %A
1017*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i8> @llvm.aarch64.neon.uqrshrn.v8i8(<8 x i16> %tmp1, i32 1)
1018*9880d681SAndroid Build Coastguard Worker        ret <8 x i8> %tmp3
1019*9880d681SAndroid Build Coastguard Worker}
1020*9880d681SAndroid Build Coastguard Worker
1021*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @uqrshrn4h(<4 x i32>* %A) nounwind {
1022*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqrshrn4h:
1023*9880d681SAndroid Build Coastguard Worker;CHECK: uqrshrn.4h v0, {{v[0-9]+}}, #1
1024*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i32>, <4 x i32>* %A
1025*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i16> @llvm.aarch64.neon.uqrshrn.v4i16(<4 x i32> %tmp1, i32 1)
1026*9880d681SAndroid Build Coastguard Worker        ret <4 x i16> %tmp3
1027*9880d681SAndroid Build Coastguard Worker}
1028*9880d681SAndroid Build Coastguard Worker
1029*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @uqrshrn2s(<2 x i64>* %A) nounwind {
1030*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqrshrn2s:
1031*9880d681SAndroid Build Coastguard Worker;CHECK: uqrshrn.2s v0, {{v[0-9]+}}, #1
1032*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i64>, <2 x i64>* %A
1033*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i32> @llvm.aarch64.neon.uqrshrn.v2i32(<2 x i64> %tmp1, i32 1)
1034*9880d681SAndroid Build Coastguard Worker        ret <2 x i32> %tmp3
1035*9880d681SAndroid Build Coastguard Worker}
1036*9880d681SAndroid Build Coastguard Worker
1037*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @uqrshrn16b(<8 x i8>* %ret, <8 x i16>* %A) nounwind {
1038*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqrshrn16b:
1039*9880d681SAndroid Build Coastguard Worker;CHECK: uqrshrn2.16b v0, {{v[0-9]+}}, #1
1040*9880d681SAndroid Build Coastguard Worker        %out = load <8 x i8>, <8 x i8>* %ret
1041*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i16>, <8 x i16>* %A
1042*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i8> @llvm.aarch64.neon.uqrshrn.v8i8(<8 x i16> %tmp1, i32 1)
1043*9880d681SAndroid Build Coastguard Worker        %tmp4 = shufflevector <8 x i8> %out, <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>
1044*9880d681SAndroid Build Coastguard Worker        ret <16 x i8> %tmp4
1045*9880d681SAndroid Build Coastguard Worker}
1046*9880d681SAndroid Build Coastguard Worker
1047*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @uqrshrn8h(<4 x i16>* %ret, <4 x i32>* %A) nounwind {
1048*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqrshrn8h:
1049*9880d681SAndroid Build Coastguard Worker;CHECK: uqrshrn2.8h v0, {{v[0-9]+}}, #1
1050*9880d681SAndroid Build Coastguard Worker        %out = load <4 x i16>, <4 x i16>* %ret
1051*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i32>, <4 x i32>* %A
1052*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i16> @llvm.aarch64.neon.uqrshrn.v4i16(<4 x i32> %tmp1, i32 1)
1053*9880d681SAndroid Build Coastguard Worker        %tmp4 = shufflevector <4 x i16> %out, <4 x i16> %tmp3, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
1054*9880d681SAndroid Build Coastguard Worker        ret <8 x i16> %tmp4
1055*9880d681SAndroid Build Coastguard Worker}
1056*9880d681SAndroid Build Coastguard Worker
1057*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @uqrshrn4s(<2 x i32>* %ret, <2 x i64>* %A) nounwind {
1058*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqrshrn4s:
1059*9880d681SAndroid Build Coastguard Worker;CHECK: uqrshrn2.4s v0, {{v[0-9]+}}, #1
1060*9880d681SAndroid Build Coastguard Worker        %out = load <2 x i32>, <2 x i32>* %ret
1061*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i64>, <2 x i64>* %A
1062*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i32> @llvm.aarch64.neon.uqrshrn.v2i32(<2 x i64> %tmp1, i32 1)
1063*9880d681SAndroid Build Coastguard Worker        %tmp4 = shufflevector <2 x i32> %out, <2 x i32> %tmp3, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
1064*9880d681SAndroid Build Coastguard Worker        ret <4 x i32> %tmp4
1065*9880d681SAndroid Build Coastguard Worker}
1066*9880d681SAndroid Build Coastguard Worker
1067*9880d681SAndroid Build Coastguard Workerdeclare i32  @llvm.aarch64.neon.uqrshrn.i32(i64, i32) nounwind readnone
1068*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8>  @llvm.aarch64.neon.uqrshrn.v8i8(<8 x i16>, i32) nounwind readnone
1069*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @llvm.aarch64.neon.uqrshrn.v4i16(<4 x i32>, i32) nounwind readnone
1070*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.uqrshrn.v2i32(<2 x i64>, i32) nounwind readnone
1071*9880d681SAndroid Build Coastguard Worker
1072*9880d681SAndroid Build Coastguard Workerdefine i32 @uqshrn1s(i64 %A) nounwind {
1073*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: uqshrn1s:
1074*9880d681SAndroid Build Coastguard Worker; CHECK: uqshrn {{s[0-9]+}}, d0, #1
1075*9880d681SAndroid Build Coastguard Worker  %tmp = call i32 @llvm.aarch64.neon.uqshrn.i32(i64 %A, i32 1)
1076*9880d681SAndroid Build Coastguard Worker  ret i32 %tmp
1077*9880d681SAndroid Build Coastguard Worker}
1078*9880d681SAndroid Build Coastguard Worker
1079*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @uqshrn8b(<8 x i16>* %A) nounwind {
1080*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshrn8b:
1081*9880d681SAndroid Build Coastguard Worker;CHECK: uqshrn.8b v0, {{v[0-9]+}}, #1
1082*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i16>, <8 x i16>* %A
1083*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i8> @llvm.aarch64.neon.uqshrn.v8i8(<8 x i16> %tmp1, i32 1)
1084*9880d681SAndroid Build Coastguard Worker        ret <8 x i8> %tmp3
1085*9880d681SAndroid Build Coastguard Worker}
1086*9880d681SAndroid Build Coastguard Worker
1087*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @uqshrn4h(<4 x i32>* %A) nounwind {
1088*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshrn4h:
1089*9880d681SAndroid Build Coastguard Worker;CHECK: uqshrn.4h v0, {{v[0-9]+}}, #1
1090*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i32>, <4 x i32>* %A
1091*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i16> @llvm.aarch64.neon.uqshrn.v4i16(<4 x i32> %tmp1, i32 1)
1092*9880d681SAndroid Build Coastguard Worker        ret <4 x i16> %tmp3
1093*9880d681SAndroid Build Coastguard Worker}
1094*9880d681SAndroid Build Coastguard Worker
1095*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @uqshrn2s(<2 x i64>* %A) nounwind {
1096*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshrn2s:
1097*9880d681SAndroid Build Coastguard Worker;CHECK: uqshrn.2s v0, {{v[0-9]+}}, #1
1098*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i64>, <2 x i64>* %A
1099*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i32> @llvm.aarch64.neon.uqshrn.v2i32(<2 x i64> %tmp1, i32 1)
1100*9880d681SAndroid Build Coastguard Worker        ret <2 x i32> %tmp3
1101*9880d681SAndroid Build Coastguard Worker}
1102*9880d681SAndroid Build Coastguard Worker
1103*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @uqshrn16b(<8 x i8>* %ret, <8 x i16>* %A) nounwind {
1104*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshrn16b:
1105*9880d681SAndroid Build Coastguard Worker;CHECK: uqshrn2.16b v0, {{v[0-9]+}}, #1
1106*9880d681SAndroid Build Coastguard Worker        %out = load <8 x i8>, <8 x i8>* %ret
1107*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i16>, <8 x i16>* %A
1108*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i8> @llvm.aarch64.neon.uqshrn.v8i8(<8 x i16> %tmp1, i32 1)
1109*9880d681SAndroid Build Coastguard Worker        %tmp4 = shufflevector <8 x i8> %out, <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>
1110*9880d681SAndroid Build Coastguard Worker        ret <16 x i8> %tmp4
1111*9880d681SAndroid Build Coastguard Worker}
1112*9880d681SAndroid Build Coastguard Worker
1113*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @uqshrn8h(<4 x i16>* %ret, <4 x i32>* %A) nounwind {
1114*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshrn8h:
1115*9880d681SAndroid Build Coastguard Worker;CHECK: uqshrn2.8h v0, {{v[0-9]+}}, #1
1116*9880d681SAndroid Build Coastguard Worker  %out = load <4 x i16>, <4 x i16>* %ret
1117*9880d681SAndroid Build Coastguard Worker  %tmp1 = load <4 x i32>, <4 x i32>* %A
1118*9880d681SAndroid Build Coastguard Worker  %tmp3 = call <4 x i16> @llvm.aarch64.neon.uqshrn.v4i16(<4 x i32> %tmp1, i32 1)
1119*9880d681SAndroid Build Coastguard Worker  %tmp4 = shufflevector <4 x i16> %out, <4 x i16> %tmp3, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
1120*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %tmp4
1121*9880d681SAndroid Build Coastguard Worker}
1122*9880d681SAndroid Build Coastguard Worker
1123*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @uqshrn4s(<2 x i32>* %ret, <2 x i64>* %A) nounwind {
1124*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshrn4s:
1125*9880d681SAndroid Build Coastguard Worker;CHECK: uqshrn2.4s v0, {{v[0-9]+}}, #1
1126*9880d681SAndroid Build Coastguard Worker  %out = load <2 x i32>, <2 x i32>* %ret
1127*9880d681SAndroid Build Coastguard Worker  %tmp1 = load <2 x i64>, <2 x i64>* %A
1128*9880d681SAndroid Build Coastguard Worker  %tmp3 = call <2 x i32> @llvm.aarch64.neon.uqshrn.v2i32(<2 x i64> %tmp1, i32 1)
1129*9880d681SAndroid Build Coastguard Worker  %tmp4 = shufflevector <2 x i32> %out, <2 x i32> %tmp3, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
1130*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %tmp4
1131*9880d681SAndroid Build Coastguard Worker}
1132*9880d681SAndroid Build Coastguard Worker
1133*9880d681SAndroid Build Coastguard Workerdeclare i32  @llvm.aarch64.neon.uqshrn.i32(i64, i32) nounwind readnone
1134*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8>  @llvm.aarch64.neon.uqshrn.v8i8(<8 x i16>, i32) nounwind readnone
1135*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @llvm.aarch64.neon.uqshrn.v4i16(<4 x i32>, i32) nounwind readnone
1136*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.uqshrn.v2i32(<2 x i64>, i32) nounwind readnone
1137*9880d681SAndroid Build Coastguard Worker
1138*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @ushll8h(<8 x i8>* %A) nounwind {
1139*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ushll8h:
1140*9880d681SAndroid Build Coastguard Worker;CHECK: ushll.8h v0, {{v[0-9]+}}, #1
1141*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i8>, <8 x i8>* %A
1142*9880d681SAndroid Build Coastguard Worker        %tmp2 = zext <8 x i8> %tmp1 to <8 x i16>
1143*9880d681SAndroid Build Coastguard Worker        %tmp3 = shl <8 x i16> %tmp2, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
1144*9880d681SAndroid Build Coastguard Worker        ret <8 x i16> %tmp3
1145*9880d681SAndroid Build Coastguard Worker}
1146*9880d681SAndroid Build Coastguard Worker
1147*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @ushll4s(<4 x i16>* %A) nounwind {
1148*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ushll4s:
1149*9880d681SAndroid Build Coastguard Worker;CHECK: ushll.4s v0, {{v[0-9]+}}, #1
1150*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i16>, <4 x i16>* %A
1151*9880d681SAndroid Build Coastguard Worker        %tmp2 = zext <4 x i16> %tmp1 to <4 x i32>
1152*9880d681SAndroid Build Coastguard Worker        %tmp3 = shl <4 x i32> %tmp2, <i32 1, i32 1, i32 1, i32 1>
1153*9880d681SAndroid Build Coastguard Worker        ret <4 x i32> %tmp3
1154*9880d681SAndroid Build Coastguard Worker}
1155*9880d681SAndroid Build Coastguard Worker
1156*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @ushll2d(<2 x i32>* %A) nounwind {
1157*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ushll2d:
1158*9880d681SAndroid Build Coastguard Worker;CHECK: ushll.2d v0, {{v[0-9]+}}, #1
1159*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i32>, <2 x i32>* %A
1160*9880d681SAndroid Build Coastguard Worker        %tmp2 = zext <2 x i32> %tmp1 to <2 x i64>
1161*9880d681SAndroid Build Coastguard Worker        %tmp3 = shl <2 x i64> %tmp2, <i64 1, i64 1>
1162*9880d681SAndroid Build Coastguard Worker        ret <2 x i64> %tmp3
1163*9880d681SAndroid Build Coastguard Worker}
1164*9880d681SAndroid Build Coastguard Worker
1165*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @ushll2_8h(<16 x i8>* %A) nounwind {
1166*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ushll2_8h:
1167*9880d681SAndroid Build Coastguard Worker;CHECK: ushll2.8h v0, {{v[0-9]+}}, #1
1168*9880d681SAndroid Build Coastguard Worker        %load1 = load <16 x i8>, <16 x i8>* %A
1169*9880d681SAndroid Build Coastguard Worker        %tmp1 = shufflevector <16 x i8> %load1, <16 x i8> undef, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
1170*9880d681SAndroid Build Coastguard Worker        %tmp2 = zext <8 x i8> %tmp1 to <8 x i16>
1171*9880d681SAndroid Build Coastguard Worker        %tmp3 = shl <8 x i16> %tmp2, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
1172*9880d681SAndroid Build Coastguard Worker        ret <8 x i16> %tmp3
1173*9880d681SAndroid Build Coastguard Worker}
1174*9880d681SAndroid Build Coastguard Worker
1175*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @ushll2_4s(<8 x i16>* %A) nounwind {
1176*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ushll2_4s:
1177*9880d681SAndroid Build Coastguard Worker;CHECK: ushll2.4s v0, {{v[0-9]+}}, #1
1178*9880d681SAndroid Build Coastguard Worker        %load1 = load <8 x i16>, <8 x i16>* %A
1179*9880d681SAndroid Build Coastguard Worker        %tmp1 = shufflevector <8 x i16> %load1, <8 x i16> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
1180*9880d681SAndroid Build Coastguard Worker        %tmp2 = zext <4 x i16> %tmp1 to <4 x i32>
1181*9880d681SAndroid Build Coastguard Worker        %tmp3 = shl <4 x i32> %tmp2, <i32 1, i32 1, i32 1, i32 1>
1182*9880d681SAndroid Build Coastguard Worker        ret <4 x i32> %tmp3
1183*9880d681SAndroid Build Coastguard Worker}
1184*9880d681SAndroid Build Coastguard Worker
1185*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @ushll2_2d(<4 x i32>* %A) nounwind {
1186*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ushll2_2d:
1187*9880d681SAndroid Build Coastguard Worker;CHECK: ushll2.2d v0, {{v[0-9]+}}, #1
1188*9880d681SAndroid Build Coastguard Worker        %load1 = load <4 x i32>, <4 x i32>* %A
1189*9880d681SAndroid Build Coastguard Worker        %tmp1 = shufflevector <4 x i32> %load1, <4 x i32> undef, <2 x i32> <i32 2, i32 3>
1190*9880d681SAndroid Build Coastguard Worker        %tmp2 = zext <2 x i32> %tmp1 to <2 x i64>
1191*9880d681SAndroid Build Coastguard Worker        %tmp3 = shl <2 x i64> %tmp2, <i64 1, i64 1>
1192*9880d681SAndroid Build Coastguard Worker        ret <2 x i64> %tmp3
1193*9880d681SAndroid Build Coastguard Worker}
1194*9880d681SAndroid Build Coastguard Worker
1195*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @sshll8h(<8 x i8>* %A) nounwind {
1196*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sshll8h:
1197*9880d681SAndroid Build Coastguard Worker;CHECK: sshll.8h v0, {{v[0-9]+}}, #1
1198*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i8>, <8 x i8>* %A
1199*9880d681SAndroid Build Coastguard Worker        %tmp2 = sext <8 x i8> %tmp1 to <8 x i16>
1200*9880d681SAndroid Build Coastguard Worker        %tmp3 = shl <8 x i16> %tmp2, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
1201*9880d681SAndroid Build Coastguard Worker        ret <8 x i16> %tmp3
1202*9880d681SAndroid Build Coastguard Worker}
1203*9880d681SAndroid Build Coastguard Worker
1204*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @sshll4s(<4 x i16>* %A) nounwind {
1205*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sshll4s:
1206*9880d681SAndroid Build Coastguard Worker;CHECK: sshll.4s v0, {{v[0-9]+}}, #1
1207*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i16>, <4 x i16>* %A
1208*9880d681SAndroid Build Coastguard Worker        %tmp2 = sext <4 x i16> %tmp1 to <4 x i32>
1209*9880d681SAndroid Build Coastguard Worker        %tmp3 = shl <4 x i32> %tmp2, <i32 1, i32 1, i32 1, i32 1>
1210*9880d681SAndroid Build Coastguard Worker        ret <4 x i32> %tmp3
1211*9880d681SAndroid Build Coastguard Worker}
1212*9880d681SAndroid Build Coastguard Worker
1213*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @sshll2d(<2 x i32>* %A) nounwind {
1214*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sshll2d:
1215*9880d681SAndroid Build Coastguard Worker;CHECK: sshll.2d v0, {{v[0-9]+}}, #1
1216*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i32>, <2 x i32>* %A
1217*9880d681SAndroid Build Coastguard Worker        %tmp2 = sext <2 x i32> %tmp1 to <2 x i64>
1218*9880d681SAndroid Build Coastguard Worker        %tmp3 = shl <2 x i64> %tmp2, <i64 1, i64 1>
1219*9880d681SAndroid Build Coastguard Worker        ret <2 x i64> %tmp3
1220*9880d681SAndroid Build Coastguard Worker}
1221*9880d681SAndroid Build Coastguard Worker
1222*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @sshll2_8h(<16 x i8>* %A) nounwind {
1223*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sshll2_8h:
1224*9880d681SAndroid Build Coastguard Worker;CHECK: sshll2.8h v0, {{v[0-9]+}}, #1
1225*9880d681SAndroid Build Coastguard Worker        %load1 = load <16 x i8>, <16 x i8>* %A
1226*9880d681SAndroid Build Coastguard Worker        %tmp1 = shufflevector <16 x i8> %load1, <16 x i8> undef, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
1227*9880d681SAndroid Build Coastguard Worker        %tmp2 = sext <8 x i8> %tmp1 to <8 x i16>
1228*9880d681SAndroid Build Coastguard Worker        %tmp3 = shl <8 x i16> %tmp2, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
1229*9880d681SAndroid Build Coastguard Worker        ret <8 x i16> %tmp3
1230*9880d681SAndroid Build Coastguard Worker}
1231*9880d681SAndroid Build Coastguard Worker
1232*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @sshll2_4s(<8 x i16>* %A) nounwind {
1233*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sshll2_4s:
1234*9880d681SAndroid Build Coastguard Worker;CHECK: sshll2.4s v0, {{v[0-9]+}}, #1
1235*9880d681SAndroid Build Coastguard Worker        %load1 = load <8 x i16>, <8 x i16>* %A
1236*9880d681SAndroid Build Coastguard Worker        %tmp1 = shufflevector <8 x i16> %load1, <8 x i16> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
1237*9880d681SAndroid Build Coastguard Worker        %tmp2 = sext <4 x i16> %tmp1 to <4 x i32>
1238*9880d681SAndroid Build Coastguard Worker        %tmp3 = shl <4 x i32> %tmp2, <i32 1, i32 1, i32 1, i32 1>
1239*9880d681SAndroid Build Coastguard Worker        ret <4 x i32> %tmp3
1240*9880d681SAndroid Build Coastguard Worker}
1241*9880d681SAndroid Build Coastguard Worker
1242*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @sshll2_2d(<4 x i32>* %A) nounwind {
1243*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sshll2_2d:
1244*9880d681SAndroid Build Coastguard Worker;CHECK: sshll2.2d v0, {{v[0-9]+}}, #1
1245*9880d681SAndroid Build Coastguard Worker        %load1 = load <4 x i32>, <4 x i32>* %A
1246*9880d681SAndroid Build Coastguard Worker        %tmp1 = shufflevector <4 x i32> %load1, <4 x i32> undef, <2 x i32> <i32 2, i32 3>
1247*9880d681SAndroid Build Coastguard Worker        %tmp2 = sext <2 x i32> %tmp1 to <2 x i64>
1248*9880d681SAndroid Build Coastguard Worker        %tmp3 = shl <2 x i64> %tmp2, <i64 1, i64 1>
1249*9880d681SAndroid Build Coastguard Worker        ret <2 x i64> %tmp3
1250*9880d681SAndroid Build Coastguard Worker}
1251*9880d681SAndroid Build Coastguard Worker
1252*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @sqshli8b(<8 x i8>* %A) nounwind {
1253*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshli8b:
1254*9880d681SAndroid Build Coastguard Worker;CHECK: sqshl.8b v0, {{v[0-9]+}}, #1
1255*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i8>, <8 x i8>* %A
1256*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i8> @llvm.aarch64.neon.sqshl.v8i8(<8 x i8> %tmp1, <8 x i8> <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>)
1257*9880d681SAndroid Build Coastguard Worker        ret <8 x i8> %tmp3
1258*9880d681SAndroid Build Coastguard Worker}
1259*9880d681SAndroid Build Coastguard Worker
1260*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @sqshli4h(<4 x i16>* %A) nounwind {
1261*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshli4h:
1262*9880d681SAndroid Build Coastguard Worker;CHECK: sqshl.4h v0, {{v[0-9]+}}, #1
1263*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i16>, <4 x i16>* %A
1264*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i16> @llvm.aarch64.neon.sqshl.v4i16(<4 x i16> %tmp1, <4 x i16> <i16 1, i16 1, i16 1, i16 1>)
1265*9880d681SAndroid Build Coastguard Worker        ret <4 x i16> %tmp3
1266*9880d681SAndroid Build Coastguard Worker}
1267*9880d681SAndroid Build Coastguard Worker
1268*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @sqshli2s(<2 x i32>* %A) nounwind {
1269*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshli2s:
1270*9880d681SAndroid Build Coastguard Worker;CHECK: sqshl.2s v0, {{v[0-9]+}}, #1
1271*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i32>, <2 x i32>* %A
1272*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i32> @llvm.aarch64.neon.sqshl.v2i32(<2 x i32> %tmp1, <2 x i32> <i32 1, i32 1>)
1273*9880d681SAndroid Build Coastguard Worker        ret <2 x i32> %tmp3
1274*9880d681SAndroid Build Coastguard Worker}
1275*9880d681SAndroid Build Coastguard Worker
1276*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @sqshli16b(<16 x i8>* %A) nounwind {
1277*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshli16b:
1278*9880d681SAndroid Build Coastguard Worker;CHECK: sqshl.16b v0, {{v[0-9]+}}, #1
1279*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <16 x i8>, <16 x i8>* %A
1280*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <16 x i8> @llvm.aarch64.neon.sqshl.v16i8(<16 x i8> %tmp1, <16 x i8> <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>)
1281*9880d681SAndroid Build Coastguard Worker        ret <16 x i8> %tmp3
1282*9880d681SAndroid Build Coastguard Worker}
1283*9880d681SAndroid Build Coastguard Worker
1284*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @sqshli8h(<8 x i16>* %A) nounwind {
1285*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshli8h:
1286*9880d681SAndroid Build Coastguard Worker;CHECK: sqshl.8h v0, {{v[0-9]+}}, #1
1287*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i16>, <8 x i16>* %A
1288*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i16> @llvm.aarch64.neon.sqshl.v8i16(<8 x i16> %tmp1, <8 x i16> <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>)
1289*9880d681SAndroid Build Coastguard Worker        ret <8 x i16> %tmp3
1290*9880d681SAndroid Build Coastguard Worker}
1291*9880d681SAndroid Build Coastguard Worker
1292*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @sqshli4s(<4 x i32>* %A) nounwind {
1293*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshli4s:
1294*9880d681SAndroid Build Coastguard Worker;CHECK: sqshl.4s v0, {{v[0-9]+}}, #1
1295*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i32>, <4 x i32>* %A
1296*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i32> @llvm.aarch64.neon.sqshl.v4i32(<4 x i32> %tmp1, <4 x i32> <i32 1, i32 1, i32 1, i32 1>)
1297*9880d681SAndroid Build Coastguard Worker        ret <4 x i32> %tmp3
1298*9880d681SAndroid Build Coastguard Worker}
1299*9880d681SAndroid Build Coastguard Worker
1300*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @sqshli2d(<2 x i64>* %A) nounwind {
1301*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sqshli2d:
1302*9880d681SAndroid Build Coastguard Worker;CHECK: sqshl.2d v0, {{v[0-9]+}}, #1
1303*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i64>, <2 x i64>* %A
1304*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i64> @llvm.aarch64.neon.sqshl.v2i64(<2 x i64> %tmp1, <2 x i64> <i64 1, i64 1>)
1305*9880d681SAndroid Build Coastguard Worker        ret <2 x i64> %tmp3
1306*9880d681SAndroid Build Coastguard Worker}
1307*9880d681SAndroid Build Coastguard Worker
1308*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @uqshli8b(<8 x i8>* %A) nounwind {
1309*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshli8b:
1310*9880d681SAndroid Build Coastguard Worker;CHECK: uqshl.8b v0, {{v[0-9]+}}, #1
1311*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i8>, <8 x i8>* %A
1312*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i8> @llvm.aarch64.neon.uqshl.v8i8(<8 x i8> %tmp1, <8 x i8> <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>)
1313*9880d681SAndroid Build Coastguard Worker        ret <8 x i8> %tmp3
1314*9880d681SAndroid Build Coastguard Worker}
1315*9880d681SAndroid Build Coastguard Worker
1316*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @uqshli8b_1(<8 x i8>* %A) nounwind {
1317*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshli8b_1:
1318*9880d681SAndroid Build Coastguard Worker;CHECK: movi.8b [[REG:v[0-9]+]], #8
1319*9880d681SAndroid Build Coastguard Worker;CHECK: uqshl.8b v0, v0, [[REG]]
1320*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i8>, <8 x i8>* %A
1321*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i8> @llvm.aarch64.neon.uqshl.v8i8(<8 x i8> %tmp1, <8 x i8> <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>)
1322*9880d681SAndroid Build Coastguard Worker        ret <8 x i8> %tmp3
1323*9880d681SAndroid Build Coastguard Worker}
1324*9880d681SAndroid Build Coastguard Worker
1325*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @uqshli4h(<4 x i16>* %A) nounwind {
1326*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshli4h:
1327*9880d681SAndroid Build Coastguard Worker;CHECK: uqshl.4h v0, {{v[0-9]+}}, #1
1328*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i16>, <4 x i16>* %A
1329*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i16> @llvm.aarch64.neon.uqshl.v4i16(<4 x i16> %tmp1, <4 x i16> <i16 1, i16 1, i16 1, i16 1>)
1330*9880d681SAndroid Build Coastguard Worker        ret <4 x i16> %tmp3
1331*9880d681SAndroid Build Coastguard Worker}
1332*9880d681SAndroid Build Coastguard Worker
1333*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @uqshli2s(<2 x i32>* %A) nounwind {
1334*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshli2s:
1335*9880d681SAndroid Build Coastguard Worker;CHECK: uqshl.2s v0, {{v[0-9]+}}, #1
1336*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i32>, <2 x i32>* %A
1337*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i32> @llvm.aarch64.neon.uqshl.v2i32(<2 x i32> %tmp1, <2 x i32> <i32 1, i32 1>)
1338*9880d681SAndroid Build Coastguard Worker        ret <2 x i32> %tmp3
1339*9880d681SAndroid Build Coastguard Worker}
1340*9880d681SAndroid Build Coastguard Worker
1341*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @uqshli16b(<16 x i8>* %A) nounwind {
1342*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshli16b:
1343*9880d681SAndroid Build Coastguard Worker;CHECK: uqshl.16b
1344*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <16 x i8>, <16 x i8>* %A
1345*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <16 x i8> @llvm.aarch64.neon.uqshl.v16i8(<16 x i8> %tmp1, <16 x i8> <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>)
1346*9880d681SAndroid Build Coastguard Worker        ret <16 x i8> %tmp3
1347*9880d681SAndroid Build Coastguard Worker}
1348*9880d681SAndroid Build Coastguard Worker
1349*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @uqshli8h(<8 x i16>* %A) nounwind {
1350*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshli8h:
1351*9880d681SAndroid Build Coastguard Worker;CHECK: uqshl.8h v0, {{v[0-9]+}}, #1
1352*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i16>, <8 x i16>* %A
1353*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i16> @llvm.aarch64.neon.uqshl.v8i16(<8 x i16> %tmp1, <8 x i16> <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>)
1354*9880d681SAndroid Build Coastguard Worker        ret <8 x i16> %tmp3
1355*9880d681SAndroid Build Coastguard Worker}
1356*9880d681SAndroid Build Coastguard Worker
1357*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @uqshli4s(<4 x i32>* %A) nounwind {
1358*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshli4s:
1359*9880d681SAndroid Build Coastguard Worker;CHECK: uqshl.4s v0, {{v[0-9]+}}, #1
1360*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i32>, <4 x i32>* %A
1361*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i32> @llvm.aarch64.neon.uqshl.v4i32(<4 x i32> %tmp1, <4 x i32> <i32 1, i32 1, i32 1, i32 1>)
1362*9880d681SAndroid Build Coastguard Worker        ret <4 x i32> %tmp3
1363*9880d681SAndroid Build Coastguard Worker}
1364*9880d681SAndroid Build Coastguard Worker
1365*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @uqshli2d(<2 x i64>* %A) nounwind {
1366*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: uqshli2d:
1367*9880d681SAndroid Build Coastguard Worker;CHECK: uqshl.2d v0, {{v[0-9]+}}, #1
1368*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i64>, <2 x i64>* %A
1369*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i64> @llvm.aarch64.neon.uqshl.v2i64(<2 x i64> %tmp1, <2 x i64> <i64 1, i64 1>)
1370*9880d681SAndroid Build Coastguard Worker        ret <2 x i64> %tmp3
1371*9880d681SAndroid Build Coastguard Worker}
1372*9880d681SAndroid Build Coastguard Worker
1373*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @ursra8b(<8 x i8>* %A, <8 x i8>* %B) nounwind {
1374*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ursra8b:
1375*9880d681SAndroid Build Coastguard Worker;CHECK: ursra.8b v0, {{v[0-9]+}}, #1
1376*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i8>, <8 x i8>* %A
1377*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i8> @llvm.aarch64.neon.urshl.v8i8(<8 x i8> %tmp1, <8 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>)
1378*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <8 x i8>, <8 x i8>* %B
1379*9880d681SAndroid Build Coastguard Worker        %tmp5 = add <8 x i8> %tmp3, %tmp4
1380*9880d681SAndroid Build Coastguard Worker        ret <8 x i8> %tmp5
1381*9880d681SAndroid Build Coastguard Worker}
1382*9880d681SAndroid Build Coastguard Worker
1383*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @ursra4h(<4 x i16>* %A, <4 x i16>* %B) nounwind {
1384*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ursra4h:
1385*9880d681SAndroid Build Coastguard Worker;CHECK: ursra.4h v0, {{v[0-9]+}}, #1
1386*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i16>, <4 x i16>* %A
1387*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i16> @llvm.aarch64.neon.urshl.v4i16(<4 x i16> %tmp1, <4 x i16> <i16 -1, i16 -1, i16 -1, i16 -1>)
1388*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <4 x i16>, <4 x i16>* %B
1389*9880d681SAndroid Build Coastguard Worker        %tmp5 = add <4 x i16> %tmp3, %tmp4
1390*9880d681SAndroid Build Coastguard Worker        ret <4 x i16> %tmp5
1391*9880d681SAndroid Build Coastguard Worker}
1392*9880d681SAndroid Build Coastguard Worker
1393*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @ursra2s(<2 x i32>* %A, <2 x i32>* %B) nounwind {
1394*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ursra2s:
1395*9880d681SAndroid Build Coastguard Worker;CHECK: ursra.2s v0, {{v[0-9]+}}, #1
1396*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i32>, <2 x i32>* %A
1397*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i32> @llvm.aarch64.neon.urshl.v2i32(<2 x i32> %tmp1, <2 x i32> <i32 -1, i32 -1>)
1398*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <2 x i32>, <2 x i32>* %B
1399*9880d681SAndroid Build Coastguard Worker        %tmp5 = add <2 x i32> %tmp3, %tmp4
1400*9880d681SAndroid Build Coastguard Worker        ret <2 x i32> %tmp5
1401*9880d681SAndroid Build Coastguard Worker}
1402*9880d681SAndroid Build Coastguard Worker
1403*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @ursra16b(<16 x i8>* %A, <16 x i8>* %B) nounwind {
1404*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ursra16b:
1405*9880d681SAndroid Build Coastguard Worker;CHECK: ursra.16b v0, {{v[0-9]+}}, #1
1406*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <16 x i8>, <16 x i8>* %A
1407*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <16 x i8> @llvm.aarch64.neon.urshl.v16i8(<16 x i8> %tmp1, <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>)
1408*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <16 x i8>, <16 x i8>* %B
1409*9880d681SAndroid Build Coastguard Worker        %tmp5 = add <16 x i8> %tmp3, %tmp4
1410*9880d681SAndroid Build Coastguard Worker         ret <16 x i8> %tmp5
1411*9880d681SAndroid Build Coastguard Worker}
1412*9880d681SAndroid Build Coastguard Worker
1413*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @ursra8h(<8 x i16>* %A, <8 x i16>* %B) nounwind {
1414*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ursra8h:
1415*9880d681SAndroid Build Coastguard Worker;CHECK: ursra.8h v0, {{v[0-9]+}}, #1
1416*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i16>, <8 x i16>* %A
1417*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i16> @llvm.aarch64.neon.urshl.v8i16(<8 x i16> %tmp1, <8 x i16> <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>)
1418*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <8 x i16>, <8 x i16>* %B
1419*9880d681SAndroid Build Coastguard Worker        %tmp5 = add <8 x i16> %tmp3, %tmp4
1420*9880d681SAndroid Build Coastguard Worker         ret <8 x i16> %tmp5
1421*9880d681SAndroid Build Coastguard Worker}
1422*9880d681SAndroid Build Coastguard Worker
1423*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @ursra4s(<4 x i32>* %A, <4 x i32>* %B) nounwind {
1424*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ursra4s:
1425*9880d681SAndroid Build Coastguard Worker;CHECK: ursra.4s v0, {{v[0-9]+}}, #1
1426*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i32>, <4 x i32>* %A
1427*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i32> @llvm.aarch64.neon.urshl.v4i32(<4 x i32> %tmp1, <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>)
1428*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <4 x i32>, <4 x i32>* %B
1429*9880d681SAndroid Build Coastguard Worker        %tmp5 = add <4 x i32> %tmp3, %tmp4
1430*9880d681SAndroid Build Coastguard Worker         ret <4 x i32> %tmp5
1431*9880d681SAndroid Build Coastguard Worker}
1432*9880d681SAndroid Build Coastguard Worker
1433*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @ursra2d(<2 x i64>* %A, <2 x i64>* %B) nounwind {
1434*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ursra2d:
1435*9880d681SAndroid Build Coastguard Worker;CHECK: ursra.2d v0, {{v[0-9]+}}, #1
1436*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i64>, <2 x i64>* %A
1437*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i64> @llvm.aarch64.neon.urshl.v2i64(<2 x i64> %tmp1, <2 x i64> <i64 -1, i64 -1>)
1438*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <2 x i64>, <2 x i64>* %B
1439*9880d681SAndroid Build Coastguard Worker        %tmp5 = add <2 x i64> %tmp3, %tmp4
1440*9880d681SAndroid Build Coastguard Worker         ret <2 x i64> %tmp5
1441*9880d681SAndroid Build Coastguard Worker}
1442*9880d681SAndroid Build Coastguard Worker
1443*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @srsra8b(<8 x i8>* %A, <8 x i8>* %B) nounwind {
1444*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srsra8b:
1445*9880d681SAndroid Build Coastguard Worker;CHECK: srsra.8b v0, {{v[0-9]+}}, #1
1446*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i8>, <8 x i8>* %A
1447*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i8> @llvm.aarch64.neon.srshl.v8i8(<8 x i8> %tmp1, <8 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>)
1448*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <8 x i8>, <8 x i8>* %B
1449*9880d681SAndroid Build Coastguard Worker        %tmp5 = add <8 x i8> %tmp3, %tmp4
1450*9880d681SAndroid Build Coastguard Worker        ret <8 x i8> %tmp5
1451*9880d681SAndroid Build Coastguard Worker}
1452*9880d681SAndroid Build Coastguard Worker
1453*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @srsra4h(<4 x i16>* %A, <4 x i16>* %B) nounwind {
1454*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srsra4h:
1455*9880d681SAndroid Build Coastguard Worker;CHECK: srsra.4h v0, {{v[0-9]+}}, #1
1456*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i16>, <4 x i16>* %A
1457*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i16> @llvm.aarch64.neon.srshl.v4i16(<4 x i16> %tmp1, <4 x i16> <i16 -1, i16 -1, i16 -1, i16 -1>)
1458*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <4 x i16>, <4 x i16>* %B
1459*9880d681SAndroid Build Coastguard Worker        %tmp5 = add <4 x i16> %tmp3, %tmp4
1460*9880d681SAndroid Build Coastguard Worker        ret <4 x i16> %tmp5
1461*9880d681SAndroid Build Coastguard Worker}
1462*9880d681SAndroid Build Coastguard Worker
1463*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @srsra2s(<2 x i32>* %A, <2 x i32>* %B) nounwind {
1464*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srsra2s:
1465*9880d681SAndroid Build Coastguard Worker;CHECK: srsra.2s v0, {{v[0-9]+}}, #1
1466*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i32>, <2 x i32>* %A
1467*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i32> @llvm.aarch64.neon.srshl.v2i32(<2 x i32> %tmp1, <2 x i32> <i32 -1, i32 -1>)
1468*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <2 x i32>, <2 x i32>* %B
1469*9880d681SAndroid Build Coastguard Worker        %tmp5 = add <2 x i32> %tmp3, %tmp4
1470*9880d681SAndroid Build Coastguard Worker        ret <2 x i32> %tmp5
1471*9880d681SAndroid Build Coastguard Worker}
1472*9880d681SAndroid Build Coastguard Worker
1473*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @srsra16b(<16 x i8>* %A, <16 x i8>* %B) nounwind {
1474*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srsra16b:
1475*9880d681SAndroid Build Coastguard Worker;CHECK: srsra.16b v0, {{v[0-9]+}}, #1
1476*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <16 x i8>, <16 x i8>* %A
1477*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <16 x i8> @llvm.aarch64.neon.srshl.v16i8(<16 x i8> %tmp1, <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>)
1478*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <16 x i8>, <16 x i8>* %B
1479*9880d681SAndroid Build Coastguard Worker        %tmp5 = add <16 x i8> %tmp3, %tmp4
1480*9880d681SAndroid Build Coastguard Worker         ret <16 x i8> %tmp5
1481*9880d681SAndroid Build Coastguard Worker}
1482*9880d681SAndroid Build Coastguard Worker
1483*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @srsra8h(<8 x i16>* %A, <8 x i16>* %B) nounwind {
1484*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srsra8h:
1485*9880d681SAndroid Build Coastguard Worker;CHECK: srsra.8h v0, {{v[0-9]+}}, #1
1486*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i16>, <8 x i16>* %A
1487*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i16> @llvm.aarch64.neon.srshl.v8i16(<8 x i16> %tmp1, <8 x i16> <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>)
1488*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <8 x i16>, <8 x i16>* %B
1489*9880d681SAndroid Build Coastguard Worker        %tmp5 = add <8 x i16> %tmp3, %tmp4
1490*9880d681SAndroid Build Coastguard Worker         ret <8 x i16> %tmp5
1491*9880d681SAndroid Build Coastguard Worker}
1492*9880d681SAndroid Build Coastguard Worker
1493*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @srsra4s(<4 x i32>* %A, <4 x i32>* %B) nounwind {
1494*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srsra4s:
1495*9880d681SAndroid Build Coastguard Worker;CHECK: srsra.4s v0, {{v[0-9]+}}, #1
1496*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i32>, <4 x i32>* %A
1497*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i32> @llvm.aarch64.neon.srshl.v4i32(<4 x i32> %tmp1, <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>)
1498*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <4 x i32>, <4 x i32>* %B
1499*9880d681SAndroid Build Coastguard Worker        %tmp5 = add <4 x i32> %tmp3, %tmp4
1500*9880d681SAndroid Build Coastguard Worker         ret <4 x i32> %tmp5
1501*9880d681SAndroid Build Coastguard Worker}
1502*9880d681SAndroid Build Coastguard Worker
1503*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @srsra2d(<2 x i64>* %A, <2 x i64>* %B) nounwind {
1504*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: srsra2d:
1505*9880d681SAndroid Build Coastguard Worker;CHECK: srsra.2d v0, {{v[0-9]+}}, #1
1506*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i64>, <2 x i64>* %A
1507*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i64> @llvm.aarch64.neon.srshl.v2i64(<2 x i64> %tmp1, <2 x i64> <i64 -1, i64 -1>)
1508*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <2 x i64>, <2 x i64>* %B
1509*9880d681SAndroid Build Coastguard Worker        %tmp5 = add <2 x i64> %tmp3, %tmp4
1510*9880d681SAndroid Build Coastguard Worker         ret <2 x i64> %tmp5
1511*9880d681SAndroid Build Coastguard Worker}
1512*9880d681SAndroid Build Coastguard Worker
1513*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @usra8b(<8 x i8>* %A, <8 x i8>* %B) nounwind {
1514*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: usra8b:
1515*9880d681SAndroid Build Coastguard Worker;CHECK: usra.8b v0, {{v[0-9]+}}, #1
1516*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i8>, <8 x i8>* %A
1517*9880d681SAndroid Build Coastguard Worker        %tmp3 = lshr <8 x i8> %tmp1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1518*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <8 x i8>, <8 x i8>* %B
1519*9880d681SAndroid Build Coastguard Worker        %tmp5 = add <8 x i8> %tmp3, %tmp4
1520*9880d681SAndroid Build Coastguard Worker        ret <8 x i8> %tmp5
1521*9880d681SAndroid Build Coastguard Worker}
1522*9880d681SAndroid Build Coastguard Worker
1523*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @usra4h(<4 x i16>* %A, <4 x i16>* %B) nounwind {
1524*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: usra4h:
1525*9880d681SAndroid Build Coastguard Worker;CHECK: usra.4h v0, {{v[0-9]+}}, #1
1526*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i16>, <4 x i16>* %A
1527*9880d681SAndroid Build Coastguard Worker        %tmp3 = lshr <4 x i16> %tmp1, <i16 1, i16 1, i16 1, i16 1>
1528*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <4 x i16>, <4 x i16>* %B
1529*9880d681SAndroid Build Coastguard Worker        %tmp5 = add <4 x i16> %tmp3, %tmp4
1530*9880d681SAndroid Build Coastguard Worker        ret <4 x i16> %tmp5
1531*9880d681SAndroid Build Coastguard Worker}
1532*9880d681SAndroid Build Coastguard Worker
1533*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @usra2s(<2 x i32>* %A, <2 x i32>* %B) nounwind {
1534*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: usra2s:
1535*9880d681SAndroid Build Coastguard Worker;CHECK: usra.2s v0, {{v[0-9]+}}, #1
1536*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i32>, <2 x i32>* %A
1537*9880d681SAndroid Build Coastguard Worker        %tmp3 = lshr <2 x i32> %tmp1, <i32 1, i32 1>
1538*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <2 x i32>, <2 x i32>* %B
1539*9880d681SAndroid Build Coastguard Worker        %tmp5 = add <2 x i32> %tmp3, %tmp4
1540*9880d681SAndroid Build Coastguard Worker        ret <2 x i32> %tmp5
1541*9880d681SAndroid Build Coastguard Worker}
1542*9880d681SAndroid Build Coastguard Worker
1543*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @usra16b(<16 x i8>* %A, <16 x i8>* %B) nounwind {
1544*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: usra16b:
1545*9880d681SAndroid Build Coastguard Worker;CHECK: usra.16b v0, {{v[0-9]+}}, #1
1546*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <16 x i8>, <16 x i8>* %A
1547*9880d681SAndroid Build Coastguard Worker        %tmp3 = lshr <16 x i8> %tmp1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1548*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <16 x i8>, <16 x i8>* %B
1549*9880d681SAndroid Build Coastguard Worker        %tmp5 = add <16 x i8> %tmp3, %tmp4
1550*9880d681SAndroid Build Coastguard Worker         ret <16 x i8> %tmp5
1551*9880d681SAndroid Build Coastguard Worker}
1552*9880d681SAndroid Build Coastguard Worker
1553*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @usra8h(<8 x i16>* %A, <8 x i16>* %B) nounwind {
1554*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: usra8h:
1555*9880d681SAndroid Build Coastguard Worker;CHECK: usra.8h v0, {{v[0-9]+}}, #1
1556*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i16>, <8 x i16>* %A
1557*9880d681SAndroid Build Coastguard Worker        %tmp3 = lshr <8 x i16> %tmp1, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
1558*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <8 x i16>, <8 x i16>* %B
1559*9880d681SAndroid Build Coastguard Worker        %tmp5 = add <8 x i16> %tmp3, %tmp4
1560*9880d681SAndroid Build Coastguard Worker         ret <8 x i16> %tmp5
1561*9880d681SAndroid Build Coastguard Worker}
1562*9880d681SAndroid Build Coastguard Worker
1563*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @usra4s(<4 x i32>* %A, <4 x i32>* %B) nounwind {
1564*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: usra4s:
1565*9880d681SAndroid Build Coastguard Worker;CHECK: usra.4s v0, {{v[0-9]+}}, #1
1566*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i32>, <4 x i32>* %A
1567*9880d681SAndroid Build Coastguard Worker        %tmp3 = lshr <4 x i32> %tmp1, <i32 1, i32 1, i32 1, i32 1>
1568*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <4 x i32>, <4 x i32>* %B
1569*9880d681SAndroid Build Coastguard Worker        %tmp5 = add <4 x i32> %tmp3, %tmp4
1570*9880d681SAndroid Build Coastguard Worker         ret <4 x i32> %tmp5
1571*9880d681SAndroid Build Coastguard Worker}
1572*9880d681SAndroid Build Coastguard Worker
1573*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @usra2d(<2 x i64>* %A, <2 x i64>* %B) nounwind {
1574*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: usra2d:
1575*9880d681SAndroid Build Coastguard Worker;CHECK: usra.2d v0, {{v[0-9]+}}, #1
1576*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i64>, <2 x i64>* %A
1577*9880d681SAndroid Build Coastguard Worker        %tmp3 = lshr <2 x i64> %tmp1, <i64 1, i64 1>
1578*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <2 x i64>, <2 x i64>* %B
1579*9880d681SAndroid Build Coastguard Worker        %tmp5 = add <2 x i64> %tmp3, %tmp4
1580*9880d681SAndroid Build Coastguard Worker         ret <2 x i64> %tmp5
1581*9880d681SAndroid Build Coastguard Worker}
1582*9880d681SAndroid Build Coastguard Worker
1583*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @ssra8b(<8 x i8>* %A, <8 x i8>* %B) nounwind {
1584*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ssra8b:
1585*9880d681SAndroid Build Coastguard Worker;CHECK: ssra.8b v0, {{v[0-9]+}}, #1
1586*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i8>, <8 x i8>* %A
1587*9880d681SAndroid Build Coastguard Worker        %tmp3 = ashr <8 x i8> %tmp1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1588*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <8 x i8>, <8 x i8>* %B
1589*9880d681SAndroid Build Coastguard Worker        %tmp5 = add <8 x i8> %tmp3, %tmp4
1590*9880d681SAndroid Build Coastguard Worker        ret <8 x i8> %tmp5
1591*9880d681SAndroid Build Coastguard Worker}
1592*9880d681SAndroid Build Coastguard Worker
1593*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @ssra4h(<4 x i16>* %A, <4 x i16>* %B) nounwind {
1594*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ssra4h:
1595*9880d681SAndroid Build Coastguard Worker;CHECK: ssra.4h v0, {{v[0-9]+}}, #1
1596*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i16>, <4 x i16>* %A
1597*9880d681SAndroid Build Coastguard Worker        %tmp3 = ashr <4 x i16> %tmp1, <i16 1, i16 1, i16 1, i16 1>
1598*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <4 x i16>, <4 x i16>* %B
1599*9880d681SAndroid Build Coastguard Worker        %tmp5 = add <4 x i16> %tmp3, %tmp4
1600*9880d681SAndroid Build Coastguard Worker        ret <4 x i16> %tmp5
1601*9880d681SAndroid Build Coastguard Worker}
1602*9880d681SAndroid Build Coastguard Worker
1603*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @ssra2s(<2 x i32>* %A, <2 x i32>* %B) nounwind {
1604*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ssra2s:
1605*9880d681SAndroid Build Coastguard Worker;CHECK: ssra.2s v0, {{v[0-9]+}}, #1
1606*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i32>, <2 x i32>* %A
1607*9880d681SAndroid Build Coastguard Worker        %tmp3 = ashr <2 x i32> %tmp1, <i32 1, i32 1>
1608*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <2 x i32>, <2 x i32>* %B
1609*9880d681SAndroid Build Coastguard Worker        %tmp5 = add <2 x i32> %tmp3, %tmp4
1610*9880d681SAndroid Build Coastguard Worker        ret <2 x i32> %tmp5
1611*9880d681SAndroid Build Coastguard Worker}
1612*9880d681SAndroid Build Coastguard Worker
1613*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @ssra16b(<16 x i8>* %A, <16 x i8>* %B) nounwind {
1614*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ssra16b:
1615*9880d681SAndroid Build Coastguard Worker;CHECK: ssra.16b v0, {{v[0-9]+}}, #1
1616*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <16 x i8>, <16 x i8>* %A
1617*9880d681SAndroid Build Coastguard Worker        %tmp3 = ashr <16 x i8> %tmp1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1618*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <16 x i8>, <16 x i8>* %B
1619*9880d681SAndroid Build Coastguard Worker        %tmp5 = add <16 x i8> %tmp3, %tmp4
1620*9880d681SAndroid Build Coastguard Worker         ret <16 x i8> %tmp5
1621*9880d681SAndroid Build Coastguard Worker}
1622*9880d681SAndroid Build Coastguard Worker
1623*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @ssra8h(<8 x i16>* %A, <8 x i16>* %B) nounwind {
1624*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ssra8h:
1625*9880d681SAndroid Build Coastguard Worker;CHECK: ssra.8h v0, {{v[0-9]+}}, #1
1626*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i16>, <8 x i16>* %A
1627*9880d681SAndroid Build Coastguard Worker        %tmp3 = ashr <8 x i16> %tmp1, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
1628*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <8 x i16>, <8 x i16>* %B
1629*9880d681SAndroid Build Coastguard Worker        %tmp5 = add <8 x i16> %tmp3, %tmp4
1630*9880d681SAndroid Build Coastguard Worker         ret <8 x i16> %tmp5
1631*9880d681SAndroid Build Coastguard Worker}
1632*9880d681SAndroid Build Coastguard Worker
1633*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @ssra4s(<4 x i32>* %A, <4 x i32>* %B) nounwind {
1634*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ssra4s:
1635*9880d681SAndroid Build Coastguard Worker;CHECK: ssra.4s v0, {{v[0-9]+}}, #1
1636*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i32>, <4 x i32>* %A
1637*9880d681SAndroid Build Coastguard Worker        %tmp3 = ashr <4 x i32> %tmp1, <i32 1, i32 1, i32 1, i32 1>
1638*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <4 x i32>, <4 x i32>* %B
1639*9880d681SAndroid Build Coastguard Worker        %tmp5 = add <4 x i32> %tmp3, %tmp4
1640*9880d681SAndroid Build Coastguard Worker         ret <4 x i32> %tmp5
1641*9880d681SAndroid Build Coastguard Worker}
1642*9880d681SAndroid Build Coastguard Worker
1643*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @ssra2d(<2 x i64>* %A, <2 x i64>* %B) nounwind {
1644*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: ssra2d:
1645*9880d681SAndroid Build Coastguard Worker;CHECK: ssra.2d v0, {{v[0-9]+}}, #1
1646*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i64>, <2 x i64>* %A
1647*9880d681SAndroid Build Coastguard Worker        %tmp3 = ashr <2 x i64> %tmp1, <i64 1, i64 1>
1648*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <2 x i64>, <2 x i64>* %B
1649*9880d681SAndroid Build Coastguard Worker        %tmp5 = add <2 x i64> %tmp3, %tmp4
1650*9880d681SAndroid Build Coastguard Worker         ret <2 x i64> %tmp5
1651*9880d681SAndroid Build Coastguard Worker}
1652*9880d681SAndroid Build Coastguard Worker
1653*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @shr_orr8b(<8 x i8>* %A, <8 x i8>* %B) nounwind {
1654*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shr_orr8b:
1655*9880d681SAndroid Build Coastguard Worker;CHECK: shr.8b v0, {{v[0-9]+}}, #1
1656*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: orr.8b
1657*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
1658*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i8>, <8 x i8>* %A
1659*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <8 x i8>, <8 x i8>* %B
1660*9880d681SAndroid Build Coastguard Worker        %tmp3 = lshr <8 x i8> %tmp1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1661*9880d681SAndroid Build Coastguard Worker        %tmp5 = or <8 x i8> %tmp3, %tmp4
1662*9880d681SAndroid Build Coastguard Worker        ret <8 x i8> %tmp5
1663*9880d681SAndroid Build Coastguard Worker}
1664*9880d681SAndroid Build Coastguard Worker
1665*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @shr_orr4h(<4 x i16>* %A, <4 x i16>* %B) nounwind {
1666*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shr_orr4h:
1667*9880d681SAndroid Build Coastguard Worker;CHECK: shr.4h v0, {{v[0-9]+}}, #1
1668*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: orr.8b
1669*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
1670*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i16>, <4 x i16>* %A
1671*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <4 x i16>, <4 x i16>* %B
1672*9880d681SAndroid Build Coastguard Worker        %tmp3 = lshr <4 x i16> %tmp1, <i16 1, i16 1, i16 1, i16 1>
1673*9880d681SAndroid Build Coastguard Worker        %tmp5 = or <4 x i16> %tmp3, %tmp4
1674*9880d681SAndroid Build Coastguard Worker        ret <4 x i16> %tmp5
1675*9880d681SAndroid Build Coastguard Worker}
1676*9880d681SAndroid Build Coastguard Worker
1677*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @shr_orr2s(<2 x i32>* %A, <2 x i32>* %B) nounwind {
1678*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shr_orr2s:
1679*9880d681SAndroid Build Coastguard Worker;CHECK: shr.2s v0, {{v[0-9]+}}, #1
1680*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: orr.8b
1681*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
1682*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i32>, <2 x i32>* %A
1683*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <2 x i32>, <2 x i32>* %B
1684*9880d681SAndroid Build Coastguard Worker        %tmp3 = lshr <2 x i32> %tmp1, <i32 1, i32 1>
1685*9880d681SAndroid Build Coastguard Worker        %tmp5 = or <2 x i32> %tmp3, %tmp4
1686*9880d681SAndroid Build Coastguard Worker        ret <2 x i32> %tmp5
1687*9880d681SAndroid Build Coastguard Worker}
1688*9880d681SAndroid Build Coastguard Worker
1689*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @shr_orr16b(<16 x i8>* %A, <16 x i8>* %B) nounwind {
1690*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shr_orr16b:
1691*9880d681SAndroid Build Coastguard Worker;CHECK: shr.16b v0, {{v[0-9]+}}, #1
1692*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: orr.16b
1693*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
1694*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <16 x i8>, <16 x i8>* %A
1695*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <16 x i8>, <16 x i8>* %B
1696*9880d681SAndroid Build Coastguard Worker        %tmp3 = lshr <16 x i8> %tmp1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1697*9880d681SAndroid Build Coastguard Worker        %tmp5 = or <16 x i8> %tmp3, %tmp4
1698*9880d681SAndroid Build Coastguard Worker         ret <16 x i8> %tmp5
1699*9880d681SAndroid Build Coastguard Worker}
1700*9880d681SAndroid Build Coastguard Worker
1701*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shr_orr8h(<8 x i16>* %A, <8 x i16>* %B) nounwind {
1702*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shr_orr8h:
1703*9880d681SAndroid Build Coastguard Worker;CHECK: shr.8h v0, {{v[0-9]+}}, #1
1704*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: orr.16b
1705*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
1706*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i16>, <8 x i16>* %A
1707*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <8 x i16>, <8 x i16>* %B
1708*9880d681SAndroid Build Coastguard Worker        %tmp3 = lshr <8 x i16> %tmp1, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
1709*9880d681SAndroid Build Coastguard Worker        %tmp5 = or <8 x i16> %tmp3, %tmp4
1710*9880d681SAndroid Build Coastguard Worker         ret <8 x i16> %tmp5
1711*9880d681SAndroid Build Coastguard Worker}
1712*9880d681SAndroid Build Coastguard Worker
1713*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @shr_orr4s(<4 x i32>* %A, <4 x i32>* %B) nounwind {
1714*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shr_orr4s:
1715*9880d681SAndroid Build Coastguard Worker;CHECK: shr.4s v0, {{v[0-9]+}}, #1
1716*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: orr.16b
1717*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
1718*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i32>, <4 x i32>* %A
1719*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <4 x i32>, <4 x i32>* %B
1720*9880d681SAndroid Build Coastguard Worker        %tmp3 = lshr <4 x i32> %tmp1, <i32 1, i32 1, i32 1, i32 1>
1721*9880d681SAndroid Build Coastguard Worker        %tmp5 = or <4 x i32> %tmp3, %tmp4
1722*9880d681SAndroid Build Coastguard Worker         ret <4 x i32> %tmp5
1723*9880d681SAndroid Build Coastguard Worker}
1724*9880d681SAndroid Build Coastguard Worker
1725*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @shr_orr2d(<2 x i64>* %A, <2 x i64>* %B) nounwind {
1726*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shr_orr2d:
1727*9880d681SAndroid Build Coastguard Worker;CHECK: shr.2d v0, {{v[0-9]+}}, #1
1728*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: orr.16b
1729*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
1730*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i64>, <2 x i64>* %A
1731*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <2 x i64>, <2 x i64>* %B
1732*9880d681SAndroid Build Coastguard Worker        %tmp3 = lshr <2 x i64> %tmp1, <i64 1, i64 1>
1733*9880d681SAndroid Build Coastguard Worker        %tmp5 = or <2 x i64> %tmp3, %tmp4
1734*9880d681SAndroid Build Coastguard Worker         ret <2 x i64> %tmp5
1735*9880d681SAndroid Build Coastguard Worker}
1736*9880d681SAndroid Build Coastguard Worker
1737*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @shl_orr8b(<8 x i8>* %A, <8 x i8>* %B) nounwind {
1738*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shl_orr8b:
1739*9880d681SAndroid Build Coastguard Worker;CHECK: shl.8b v0, {{v[0-9]+}}, #1
1740*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: orr.8b
1741*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
1742*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i8>, <8 x i8>* %A
1743*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <8 x i8>, <8 x i8>* %B
1744*9880d681SAndroid Build Coastguard Worker        %tmp3 = shl <8 x i8> %tmp1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1745*9880d681SAndroid Build Coastguard Worker        %tmp5 = or <8 x i8> %tmp3, %tmp4
1746*9880d681SAndroid Build Coastguard Worker        ret <8 x i8> %tmp5
1747*9880d681SAndroid Build Coastguard Worker}
1748*9880d681SAndroid Build Coastguard Worker
1749*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @shl_orr4h(<4 x i16>* %A, <4 x i16>* %B) nounwind {
1750*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shl_orr4h:
1751*9880d681SAndroid Build Coastguard Worker;CHECK: shl.4h v0, {{v[0-9]+}}, #1
1752*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: orr.8b
1753*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
1754*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i16>, <4 x i16>* %A
1755*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <4 x i16>, <4 x i16>* %B
1756*9880d681SAndroid Build Coastguard Worker        %tmp3 = shl <4 x i16> %tmp1, <i16 1, i16 1, i16 1, i16 1>
1757*9880d681SAndroid Build Coastguard Worker        %tmp5 = or <4 x i16> %tmp3, %tmp4
1758*9880d681SAndroid Build Coastguard Worker        ret <4 x i16> %tmp5
1759*9880d681SAndroid Build Coastguard Worker}
1760*9880d681SAndroid Build Coastguard Worker
1761*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @shl_orr2s(<2 x i32>* %A, <2 x i32>* %B) nounwind {
1762*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shl_orr2s:
1763*9880d681SAndroid Build Coastguard Worker;CHECK: shl.2s v0, {{v[0-9]+}}, #1
1764*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: orr.8b
1765*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
1766*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i32>, <2 x i32>* %A
1767*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <2 x i32>, <2 x i32>* %B
1768*9880d681SAndroid Build Coastguard Worker        %tmp3 = shl <2 x i32> %tmp1, <i32 1, i32 1>
1769*9880d681SAndroid Build Coastguard Worker        %tmp5 = or <2 x i32> %tmp3, %tmp4
1770*9880d681SAndroid Build Coastguard Worker        ret <2 x i32> %tmp5
1771*9880d681SAndroid Build Coastguard Worker}
1772*9880d681SAndroid Build Coastguard Worker
1773*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @shl_orr16b(<16 x i8>* %A, <16 x i8>* %B) nounwind {
1774*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shl_orr16b:
1775*9880d681SAndroid Build Coastguard Worker;CHECK: shl.16b v0, {{v[0-9]+}}, #1
1776*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: orr.16b
1777*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
1778*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <16 x i8>, <16 x i8>* %A
1779*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <16 x i8>, <16 x i8>* %B
1780*9880d681SAndroid Build Coastguard Worker        %tmp3 = shl <16 x i8> %tmp1, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
1781*9880d681SAndroid Build Coastguard Worker        %tmp5 = or <16 x i8> %tmp3, %tmp4
1782*9880d681SAndroid Build Coastguard Worker         ret <16 x i8> %tmp5
1783*9880d681SAndroid Build Coastguard Worker}
1784*9880d681SAndroid Build Coastguard Worker
1785*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shl_orr8h(<8 x i16>* %A, <8 x i16>* %B) nounwind {
1786*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shl_orr8h:
1787*9880d681SAndroid Build Coastguard Worker;CHECK: shl.8h v0, {{v[0-9]+}}, #1
1788*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: orr.16b
1789*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
1790*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i16>, <8 x i16>* %A
1791*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <8 x i16>, <8 x i16>* %B
1792*9880d681SAndroid Build Coastguard Worker        %tmp3 = shl <8 x i16> %tmp1, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
1793*9880d681SAndroid Build Coastguard Worker        %tmp5 = or <8 x i16> %tmp3, %tmp4
1794*9880d681SAndroid Build Coastguard Worker         ret <8 x i16> %tmp5
1795*9880d681SAndroid Build Coastguard Worker}
1796*9880d681SAndroid Build Coastguard Worker
1797*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @shl_orr4s(<4 x i32>* %A, <4 x i32>* %B) nounwind {
1798*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shl_orr4s:
1799*9880d681SAndroid Build Coastguard Worker;CHECK: shl.4s v0, {{v[0-9]+}}, #1
1800*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: orr.16b
1801*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
1802*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i32>, <4 x i32>* %A
1803*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <4 x i32>, <4 x i32>* %B
1804*9880d681SAndroid Build Coastguard Worker        %tmp3 = shl <4 x i32> %tmp1, <i32 1, i32 1, i32 1, i32 1>
1805*9880d681SAndroid Build Coastguard Worker        %tmp5 = or <4 x i32> %tmp3, %tmp4
1806*9880d681SAndroid Build Coastguard Worker         ret <4 x i32> %tmp5
1807*9880d681SAndroid Build Coastguard Worker}
1808*9880d681SAndroid Build Coastguard Worker
1809*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @shl_orr2d(<2 x i64>* %A, <2 x i64>* %B) nounwind {
1810*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: shl_orr2d:
1811*9880d681SAndroid Build Coastguard Worker;CHECK: shl.2d v0, {{v[0-9]+}}, #1
1812*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: orr.16b
1813*9880d681SAndroid Build Coastguard Worker;CHECK-NEXT: ret
1814*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i64>, <2 x i64>* %A
1815*9880d681SAndroid Build Coastguard Worker        %tmp4 = load <2 x i64>, <2 x i64>* %B
1816*9880d681SAndroid Build Coastguard Worker        %tmp3 = shl <2 x i64> %tmp1, <i64 1, i64 1>
1817*9880d681SAndroid Build Coastguard Worker        %tmp5 = or <2 x i64> %tmp3, %tmp4
1818*9880d681SAndroid Build Coastguard Worker         ret <2 x i64> %tmp5
1819*9880d681SAndroid Build Coastguard Worker}
1820*9880d681SAndroid Build Coastguard Worker
1821*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @shll(<8 x i8> %in) {
1822*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: shll:
1823*9880d681SAndroid Build Coastguard Worker; CHECK: shll.8h v0, {{v[0-9]+}}, #8
1824*9880d681SAndroid Build Coastguard Worker  %ext = zext <8 x i8> %in to <8 x i16>
1825*9880d681SAndroid Build Coastguard Worker  %res = shl <8 x i16> %ext, <i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8>
1826*9880d681SAndroid Build Coastguard Worker  ret <8 x i16> %res
1827*9880d681SAndroid Build Coastguard Worker}
1828*9880d681SAndroid Build Coastguard Worker
1829*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @shll_high(<8 x i16> %in) {
1830*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: shll_high
1831*9880d681SAndroid Build Coastguard Worker; CHECK: shll2.4s v0, {{v[0-9]+}}, #16
1832*9880d681SAndroid Build Coastguard Worker  %extract = shufflevector <8 x i16> %in, <8 x i16> undef, <4 x i32> <i32 4, i32 5, i32 6, i32 7>
1833*9880d681SAndroid Build Coastguard Worker  %ext = zext <4 x i16> %extract to <4 x i32>
1834*9880d681SAndroid Build Coastguard Worker  %res = shl <4 x i32> %ext, <i32 16, i32 16, i32 16, i32 16>
1835*9880d681SAndroid Build Coastguard Worker  ret <4 x i32> %res
1836*9880d681SAndroid Build Coastguard Worker}
1837*9880d681SAndroid Build Coastguard Worker
1838*9880d681SAndroid Build Coastguard Workerdefine <8 x i8> @sli8b(<8 x i8>* %A, <8 x i8>* %B) nounwind {
1839*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sli8b:
1840*9880d681SAndroid Build Coastguard Worker;CHECK: sli.8b v0, {{v[0-9]+}}, #1
1841*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i8>, <8 x i8>* %A
1842*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <8 x i8>, <8 x i8>* %B
1843*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i8> @llvm.aarch64.neon.vsli.v8i8(<8 x i8> %tmp1, <8 x i8> %tmp2, i32 1)
1844*9880d681SAndroid Build Coastguard Worker        ret <8 x i8> %tmp3
1845*9880d681SAndroid Build Coastguard Worker}
1846*9880d681SAndroid Build Coastguard Worker
1847*9880d681SAndroid Build Coastguard Workerdefine <4 x i16> @sli4h(<4 x i16>* %A, <4 x i16>* %B) nounwind {
1848*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sli4h:
1849*9880d681SAndroid Build Coastguard Worker;CHECK: sli.4h v0, {{v[0-9]+}}, #1
1850*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i16>, <4 x i16>* %A
1851*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <4 x i16>, <4 x i16>* %B
1852*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i16> @llvm.aarch64.neon.vsli.v4i16(<4 x i16> %tmp1, <4 x i16> %tmp2, i32 1)
1853*9880d681SAndroid Build Coastguard Worker        ret <4 x i16> %tmp3
1854*9880d681SAndroid Build Coastguard Worker}
1855*9880d681SAndroid Build Coastguard Worker
1856*9880d681SAndroid Build Coastguard Workerdefine <2 x i32> @sli2s(<2 x i32>* %A, <2 x i32>* %B) nounwind {
1857*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sli2s:
1858*9880d681SAndroid Build Coastguard Worker;CHECK: sli.2s v0, {{v[0-9]+}}, #1
1859*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i32>, <2 x i32>* %A
1860*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <2 x i32>, <2 x i32>* %B
1861*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i32> @llvm.aarch64.neon.vsli.v2i32(<2 x i32> %tmp1, <2 x i32> %tmp2, i32 1)
1862*9880d681SAndroid Build Coastguard Worker        ret <2 x i32> %tmp3
1863*9880d681SAndroid Build Coastguard Worker}
1864*9880d681SAndroid Build Coastguard Worker
1865*9880d681SAndroid Build Coastguard Workerdefine <1 x i64> @sli1d(<1 x i64>* %A, <1 x i64>* %B) nounwind {
1866*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sli1d:
1867*9880d681SAndroid Build Coastguard Worker;CHECK: sli d0, {{d[0-9]+}}, #1
1868*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <1 x i64>, <1 x i64>* %A
1869*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <1 x i64>, <1 x i64>* %B
1870*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <1 x i64> @llvm.aarch64.neon.vsli.v1i64(<1 x i64> %tmp1, <1 x i64> %tmp2, i32 1)
1871*9880d681SAndroid Build Coastguard Worker        ret <1 x i64> %tmp3
1872*9880d681SAndroid Build Coastguard Worker}
1873*9880d681SAndroid Build Coastguard Worker
1874*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @sli16b(<16 x i8>* %A, <16 x i8>* %B) nounwind {
1875*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sli16b:
1876*9880d681SAndroid Build Coastguard Worker;CHECK: sli.16b v0, {{v[0-9]+}}, #1
1877*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <16 x i8>, <16 x i8>* %A
1878*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <16 x i8>, <16 x i8>* %B
1879*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <16 x i8> @llvm.aarch64.neon.vsli.v16i8(<16 x i8> %tmp1, <16 x i8> %tmp2, i32 1)
1880*9880d681SAndroid Build Coastguard Worker        ret <16 x i8> %tmp3
1881*9880d681SAndroid Build Coastguard Worker}
1882*9880d681SAndroid Build Coastguard Worker
1883*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @sli8h(<8 x i16>* %A, <8 x i16>* %B) nounwind {
1884*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sli8h:
1885*9880d681SAndroid Build Coastguard Worker;CHECK: sli.8h v0, {{v[0-9]+}}, #1
1886*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <8 x i16>, <8 x i16>* %A
1887*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <8 x i16>, <8 x i16>* %B
1888*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <8 x i16> @llvm.aarch64.neon.vsli.v8i16(<8 x i16> %tmp1, <8 x i16> %tmp2, i32 1)
1889*9880d681SAndroid Build Coastguard Worker        ret <8 x i16> %tmp3
1890*9880d681SAndroid Build Coastguard Worker}
1891*9880d681SAndroid Build Coastguard Worker
1892*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @sli4s(<4 x i32>* %A, <4 x i32>* %B) nounwind {
1893*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sli4s:
1894*9880d681SAndroid Build Coastguard Worker;CHECK: sli.4s v0, {{v[0-9]+}}, #1
1895*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <4 x i32>, <4 x i32>* %A
1896*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <4 x i32>, <4 x i32>* %B
1897*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <4 x i32> @llvm.aarch64.neon.vsli.v4i32(<4 x i32> %tmp1, <4 x i32> %tmp2, i32 1)
1898*9880d681SAndroid Build Coastguard Worker        ret <4 x i32> %tmp3
1899*9880d681SAndroid Build Coastguard Worker}
1900*9880d681SAndroid Build Coastguard Worker
1901*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @sli2d(<2 x i64>* %A, <2 x i64>* %B) nounwind {
1902*9880d681SAndroid Build Coastguard Worker;CHECK-LABEL: sli2d:
1903*9880d681SAndroid Build Coastguard Worker;CHECK: sli.2d v0, {{v[0-9]+}}, #1
1904*9880d681SAndroid Build Coastguard Worker        %tmp1 = load <2 x i64>, <2 x i64>* %A
1905*9880d681SAndroid Build Coastguard Worker        %tmp2 = load <2 x i64>, <2 x i64>* %B
1906*9880d681SAndroid Build Coastguard Worker        %tmp3 = call <2 x i64> @llvm.aarch64.neon.vsli.v2i64(<2 x i64> %tmp1, <2 x i64> %tmp2, i32 1)
1907*9880d681SAndroid Build Coastguard Worker        ret <2 x i64> %tmp3
1908*9880d681SAndroid Build Coastguard Worker}
1909*9880d681SAndroid Build Coastguard Worker
1910*9880d681SAndroid Build Coastguard Workerdeclare <8 x i8>  @llvm.aarch64.neon.vsli.v8i8(<8 x i8>, <8 x i8>, i32) nounwind readnone
1911*9880d681SAndroid Build Coastguard Workerdeclare <4 x i16> @llvm.aarch64.neon.vsli.v4i16(<4 x i16>, <4 x i16>, i32) nounwind readnone
1912*9880d681SAndroid Build Coastguard Workerdeclare <2 x i32> @llvm.aarch64.neon.vsli.v2i32(<2 x i32>, <2 x i32>, i32) nounwind readnone
1913*9880d681SAndroid Build Coastguard Workerdeclare <1 x i64> @llvm.aarch64.neon.vsli.v1i64(<1 x i64>, <1 x i64>, i32) nounwind readnone
1914*9880d681SAndroid Build Coastguard Worker
1915*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.aarch64.neon.vsli.v16i8(<16 x i8>, <16 x i8>, i32) nounwind readnone
1916*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.aarch64.neon.vsli.v8i16(<8 x i16>, <8 x i16>, i32) nounwind readnone
1917*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.aarch64.neon.vsli.v4i32(<4 x i32>, <4 x i32>, i32) nounwind readnone
1918*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.aarch64.neon.vsli.v2i64(<2 x i64>, <2 x i64>, i32) nounwind readnone
1919*9880d681SAndroid Build Coastguard Worker
1920*9880d681SAndroid Build Coastguard Workerdefine <1 x i64> @ashr_v1i64(<1 x i64> %a, <1 x i64> %b) {
1921*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: ashr_v1i64:
1922*9880d681SAndroid Build Coastguard Worker; CHECK: neg d{{[0-9]+}}, d{{[0-9]+}}
1923*9880d681SAndroid Build Coastguard Worker; CHECK: sshl d{{[0-9]+}}, d{{[0-9]+}}, d{{[0-9]+}}
1924*9880d681SAndroid Build Coastguard Worker  %c = ashr <1 x i64> %a, %b
1925*9880d681SAndroid Build Coastguard Worker  ret <1 x i64> %c
1926*9880d681SAndroid Build Coastguard Worker}
1927