blob: 2bf1ba903a4a3337e5cc5232775489515552edba [file] [log] [blame]
Krzysztof Parzyszek1108ee22018-01-31 20:49:24 +00001; RUN: llc -march=hexagon < %s | FileCheck %s
2
3; CHECK-LABEL: test0000:
4; CHECK: v0.h = vasl(v0.h,r0)
5define <64 x i16> @test0000(<64 x i16> %a0, i16 %a1) #0 {
6 %b0 = insertelement <64 x i16> zeroinitializer, i16 %a1, i32 0
7 %b1 = insertelement <64 x i16> %b0, i16 %a1, i32 1
8 %b2 = insertelement <64 x i16> %b1, i16 %a1, i32 2
9 %b3 = insertelement <64 x i16> %b2, i16 %a1, i32 3
10 %b4 = insertelement <64 x i16> %b3, i16 %a1, i32 4
11 %b5 = insertelement <64 x i16> %b4, i16 %a1, i32 5
12 %b6 = insertelement <64 x i16> %b5, i16 %a1, i32 6
13 %b7 = insertelement <64 x i16> %b6, i16 %a1, i32 7
14 %b8 = insertelement <64 x i16> %b7, i16 %a1, i32 8
15 %b9 = insertelement <64 x i16> %b8, i16 %a1, i32 9
16 %b10 = insertelement <64 x i16> %b9, i16 %a1, i32 10
17 %b11 = insertelement <64 x i16> %b10, i16 %a1, i32 11
18 %b12 = insertelement <64 x i16> %b11, i16 %a1, i32 12
19 %b13 = insertelement <64 x i16> %b12, i16 %a1, i32 13
20 %b14 = insertelement <64 x i16> %b13, i16 %a1, i32 14
21 %b15 = insertelement <64 x i16> %b14, i16 %a1, i32 15
22 %b16 = insertelement <64 x i16> %b15, i16 %a1, i32 16
23 %b17 = insertelement <64 x i16> %b16, i16 %a1, i32 17
24 %b18 = insertelement <64 x i16> %b17, i16 %a1, i32 18
25 %b19 = insertelement <64 x i16> %b18, i16 %a1, i32 19
26 %b20 = insertelement <64 x i16> %b19, i16 %a1, i32 20
27 %b21 = insertelement <64 x i16> %b20, i16 %a1, i32 21
28 %b22 = insertelement <64 x i16> %b21, i16 %a1, i32 22
29 %b23 = insertelement <64 x i16> %b22, i16 %a1, i32 23
30 %b24 = insertelement <64 x i16> %b23, i16 %a1, i32 24
31 %b25 = insertelement <64 x i16> %b24, i16 %a1, i32 25
32 %b26 = insertelement <64 x i16> %b25, i16 %a1, i32 26
33 %b27 = insertelement <64 x i16> %b26, i16 %a1, i32 27
34 %b28 = insertelement <64 x i16> %b27, i16 %a1, i32 28
35 %b29 = insertelement <64 x i16> %b28, i16 %a1, i32 29
36 %b30 = insertelement <64 x i16> %b29, i16 %a1, i32 30
37 %b31 = insertelement <64 x i16> %b30, i16 %a1, i32 31
38 %b32 = insertelement <64 x i16> %b31, i16 %a1, i32 32
39 %b33 = insertelement <64 x i16> %b32, i16 %a1, i32 33
40 %b34 = insertelement <64 x i16> %b33, i16 %a1, i32 34
41 %b35 = insertelement <64 x i16> %b34, i16 %a1, i32 35
42 %b36 = insertelement <64 x i16> %b35, i16 %a1, i32 36
43 %b37 = insertelement <64 x i16> %b36, i16 %a1, i32 37
44 %b38 = insertelement <64 x i16> %b37, i16 %a1, i32 38
45 %b39 = insertelement <64 x i16> %b38, i16 %a1, i32 39
46 %b40 = insertelement <64 x i16> %b39, i16 %a1, i32 40
47 %b41 = insertelement <64 x i16> %b40, i16 %a1, i32 41
48 %b42 = insertelement <64 x i16> %b41, i16 %a1, i32 42
49 %b43 = insertelement <64 x i16> %b42, i16 %a1, i32 43
50 %b44 = insertelement <64 x i16> %b43, i16 %a1, i32 44
51 %b45 = insertelement <64 x i16> %b44, i16 %a1, i32 45
52 %b46 = insertelement <64 x i16> %b45, i16 %a1, i32 46
53 %b47 = insertelement <64 x i16> %b46, i16 %a1, i32 47
54 %b48 = insertelement <64 x i16> %b47, i16 %a1, i32 48
55 %b49 = insertelement <64 x i16> %b48, i16 %a1, i32 49
56 %b50 = insertelement <64 x i16> %b49, i16 %a1, i32 50
57 %b51 = insertelement <64 x i16> %b50, i16 %a1, i32 51
58 %b52 = insertelement <64 x i16> %b51, i16 %a1, i32 52
59 %b53 = insertelement <64 x i16> %b52, i16 %a1, i32 53
60 %b54 = insertelement <64 x i16> %b53, i16 %a1, i32 54
61 %b55 = insertelement <64 x i16> %b54, i16 %a1, i32 55
62 %b56 = insertelement <64 x i16> %b55, i16 %a1, i32 56
63 %b57 = insertelement <64 x i16> %b56, i16 %a1, i32 57
64 %b58 = insertelement <64 x i16> %b57, i16 %a1, i32 58
65 %b59 = insertelement <64 x i16> %b58, i16 %a1, i32 59
66 %b60 = insertelement <64 x i16> %b59, i16 %a1, i32 60
67 %b61 = insertelement <64 x i16> %b60, i16 %a1, i32 61
68 %b62 = insertelement <64 x i16> %b61, i16 %a1, i32 62
69 %b63 = insertelement <64 x i16> %b62, i16 %a1, i32 63
70 %v0 = shl <64 x i16> %a0, %b63
71 ret <64 x i16> %v0
72}
73
74; CHECK-LABEL: test0001:
75; CHECK: v0.h = vasr(v0.h,r0)
76define <64 x i16> @test0001(<64 x i16> %a0, i16 %a1) #0 {
77 %b0 = insertelement <64 x i16> zeroinitializer, i16 %a1, i32 0
78 %b1 = insertelement <64 x i16> %b0, i16 %a1, i32 1
79 %b2 = insertelement <64 x i16> %b1, i16 %a1, i32 2
80 %b3 = insertelement <64 x i16> %b2, i16 %a1, i32 3
81 %b4 = insertelement <64 x i16> %b3, i16 %a1, i32 4
82 %b5 = insertelement <64 x i16> %b4, i16 %a1, i32 5
83 %b6 = insertelement <64 x i16> %b5, i16 %a1, i32 6
84 %b7 = insertelement <64 x i16> %b6, i16 %a1, i32 7
85 %b8 = insertelement <64 x i16> %b7, i16 %a1, i32 8
86 %b9 = insertelement <64 x i16> %b8, i16 %a1, i32 9
87 %b10 = insertelement <64 x i16> %b9, i16 %a1, i32 10
88 %b11 = insertelement <64 x i16> %b10, i16 %a1, i32 11
89 %b12 = insertelement <64 x i16> %b11, i16 %a1, i32 12
90 %b13 = insertelement <64 x i16> %b12, i16 %a1, i32 13
91 %b14 = insertelement <64 x i16> %b13, i16 %a1, i32 14
92 %b15 = insertelement <64 x i16> %b14, i16 %a1, i32 15
93 %b16 = insertelement <64 x i16> %b15, i16 %a1, i32 16
94 %b17 = insertelement <64 x i16> %b16, i16 %a1, i32 17
95 %b18 = insertelement <64 x i16> %b17, i16 %a1, i32 18
96 %b19 = insertelement <64 x i16> %b18, i16 %a1, i32 19
97 %b20 = insertelement <64 x i16> %b19, i16 %a1, i32 20
98 %b21 = insertelement <64 x i16> %b20, i16 %a1, i32 21
99 %b22 = insertelement <64 x i16> %b21, i16 %a1, i32 22
100 %b23 = insertelement <64 x i16> %b22, i16 %a1, i32 23
101 %b24 = insertelement <64 x i16> %b23, i16 %a1, i32 24
102 %b25 = insertelement <64 x i16> %b24, i16 %a1, i32 25
103 %b26 = insertelement <64 x i16> %b25, i16 %a1, i32 26
104 %b27 = insertelement <64 x i16> %b26, i16 %a1, i32 27
105 %b28 = insertelement <64 x i16> %b27, i16 %a1, i32 28
106 %b29 = insertelement <64 x i16> %b28, i16 %a1, i32 29
107 %b30 = insertelement <64 x i16> %b29, i16 %a1, i32 30
108 %b31 = insertelement <64 x i16> %b30, i16 %a1, i32 31
109 %b32 = insertelement <64 x i16> %b31, i16 %a1, i32 32
110 %b33 = insertelement <64 x i16> %b32, i16 %a1, i32 33
111 %b34 = insertelement <64 x i16> %b33, i16 %a1, i32 34
112 %b35 = insertelement <64 x i16> %b34, i16 %a1, i32 35
113 %b36 = insertelement <64 x i16> %b35, i16 %a1, i32 36
114 %b37 = insertelement <64 x i16> %b36, i16 %a1, i32 37
115 %b38 = insertelement <64 x i16> %b37, i16 %a1, i32 38
116 %b39 = insertelement <64 x i16> %b38, i16 %a1, i32 39
117 %b40 = insertelement <64 x i16> %b39, i16 %a1, i32 40
118 %b41 = insertelement <64 x i16> %b40, i16 %a1, i32 41
119 %b42 = insertelement <64 x i16> %b41, i16 %a1, i32 42
120 %b43 = insertelement <64 x i16> %b42, i16 %a1, i32 43
121 %b44 = insertelement <64 x i16> %b43, i16 %a1, i32 44
122 %b45 = insertelement <64 x i16> %b44, i16 %a1, i32 45
123 %b46 = insertelement <64 x i16> %b45, i16 %a1, i32 46
124 %b47 = insertelement <64 x i16> %b46, i16 %a1, i32 47
125 %b48 = insertelement <64 x i16> %b47, i16 %a1, i32 48
126 %b49 = insertelement <64 x i16> %b48, i16 %a1, i32 49
127 %b50 = insertelement <64 x i16> %b49, i16 %a1, i32 50
128 %b51 = insertelement <64 x i16> %b50, i16 %a1, i32 51
129 %b52 = insertelement <64 x i16> %b51, i16 %a1, i32 52
130 %b53 = insertelement <64 x i16> %b52, i16 %a1, i32 53
131 %b54 = insertelement <64 x i16> %b53, i16 %a1, i32 54
132 %b55 = insertelement <64 x i16> %b54, i16 %a1, i32 55
133 %b56 = insertelement <64 x i16> %b55, i16 %a1, i32 56
134 %b57 = insertelement <64 x i16> %b56, i16 %a1, i32 57
135 %b58 = insertelement <64 x i16> %b57, i16 %a1, i32 58
136 %b59 = insertelement <64 x i16> %b58, i16 %a1, i32 59
137 %b60 = insertelement <64 x i16> %b59, i16 %a1, i32 60
138 %b61 = insertelement <64 x i16> %b60, i16 %a1, i32 61
139 %b62 = insertelement <64 x i16> %b61, i16 %a1, i32 62
140 %b63 = insertelement <64 x i16> %b62, i16 %a1, i32 63
141 %v0 = ashr <64 x i16> %a0, %b63
142 ret <64 x i16> %v0
143}
144
145; CHECK-LABEL: test0002:
146; CHECK: v0.uh = vlsr(v0.uh,r0)
147define <64 x i16> @test0002(<64 x i16> %a0, i16 %a1) #0 {
148 %b0 = insertelement <64 x i16> zeroinitializer, i16 %a1, i32 0
149 %b1 = insertelement <64 x i16> %b0, i16 %a1, i32 1
150 %b2 = insertelement <64 x i16> %b1, i16 %a1, i32 2
151 %b3 = insertelement <64 x i16> %b2, i16 %a1, i32 3
152 %b4 = insertelement <64 x i16> %b3, i16 %a1, i32 4
153 %b5 = insertelement <64 x i16> %b4, i16 %a1, i32 5
154 %b6 = insertelement <64 x i16> %b5, i16 %a1, i32 6
155 %b7 = insertelement <64 x i16> %b6, i16 %a1, i32 7
156 %b8 = insertelement <64 x i16> %b7, i16 %a1, i32 8
157 %b9 = insertelement <64 x i16> %b8, i16 %a1, i32 9
158 %b10 = insertelement <64 x i16> %b9, i16 %a1, i32 10
159 %b11 = insertelement <64 x i16> %b10, i16 %a1, i32 11
160 %b12 = insertelement <64 x i16> %b11, i16 %a1, i32 12
161 %b13 = insertelement <64 x i16> %b12, i16 %a1, i32 13
162 %b14 = insertelement <64 x i16> %b13, i16 %a1, i32 14
163 %b15 = insertelement <64 x i16> %b14, i16 %a1, i32 15
164 %b16 = insertelement <64 x i16> %b15, i16 %a1, i32 16
165 %b17 = insertelement <64 x i16> %b16, i16 %a1, i32 17
166 %b18 = insertelement <64 x i16> %b17, i16 %a1, i32 18
167 %b19 = insertelement <64 x i16> %b18, i16 %a1, i32 19
168 %b20 = insertelement <64 x i16> %b19, i16 %a1, i32 20
169 %b21 = insertelement <64 x i16> %b20, i16 %a1, i32 21
170 %b22 = insertelement <64 x i16> %b21, i16 %a1, i32 22
171 %b23 = insertelement <64 x i16> %b22, i16 %a1, i32 23
172 %b24 = insertelement <64 x i16> %b23, i16 %a1, i32 24
173 %b25 = insertelement <64 x i16> %b24, i16 %a1, i32 25
174 %b26 = insertelement <64 x i16> %b25, i16 %a1, i32 26
175 %b27 = insertelement <64 x i16> %b26, i16 %a1, i32 27
176 %b28 = insertelement <64 x i16> %b27, i16 %a1, i32 28
177 %b29 = insertelement <64 x i16> %b28, i16 %a1, i32 29
178 %b30 = insertelement <64 x i16> %b29, i16 %a1, i32 30
179 %b31 = insertelement <64 x i16> %b30, i16 %a1, i32 31
180 %b32 = insertelement <64 x i16> %b31, i16 %a1, i32 32
181 %b33 = insertelement <64 x i16> %b32, i16 %a1, i32 33
182 %b34 = insertelement <64 x i16> %b33, i16 %a1, i32 34
183 %b35 = insertelement <64 x i16> %b34, i16 %a1, i32 35
184 %b36 = insertelement <64 x i16> %b35, i16 %a1, i32 36
185 %b37 = insertelement <64 x i16> %b36, i16 %a1, i32 37
186 %b38 = insertelement <64 x i16> %b37, i16 %a1, i32 38
187 %b39 = insertelement <64 x i16> %b38, i16 %a1, i32 39
188 %b40 = insertelement <64 x i16> %b39, i16 %a1, i32 40
189 %b41 = insertelement <64 x i16> %b40, i16 %a1, i32 41
190 %b42 = insertelement <64 x i16> %b41, i16 %a1, i32 42
191 %b43 = insertelement <64 x i16> %b42, i16 %a1, i32 43
192 %b44 = insertelement <64 x i16> %b43, i16 %a1, i32 44
193 %b45 = insertelement <64 x i16> %b44, i16 %a1, i32 45
194 %b46 = insertelement <64 x i16> %b45, i16 %a1, i32 46
195 %b47 = insertelement <64 x i16> %b46, i16 %a1, i32 47
196 %b48 = insertelement <64 x i16> %b47, i16 %a1, i32 48
197 %b49 = insertelement <64 x i16> %b48, i16 %a1, i32 49
198 %b50 = insertelement <64 x i16> %b49, i16 %a1, i32 50
199 %b51 = insertelement <64 x i16> %b50, i16 %a1, i32 51
200 %b52 = insertelement <64 x i16> %b51, i16 %a1, i32 52
201 %b53 = insertelement <64 x i16> %b52, i16 %a1, i32 53
202 %b54 = insertelement <64 x i16> %b53, i16 %a1, i32 54
203 %b55 = insertelement <64 x i16> %b54, i16 %a1, i32 55
204 %b56 = insertelement <64 x i16> %b55, i16 %a1, i32 56
205 %b57 = insertelement <64 x i16> %b56, i16 %a1, i32 57
206 %b58 = insertelement <64 x i16> %b57, i16 %a1, i32 58
207 %b59 = insertelement <64 x i16> %b58, i16 %a1, i32 59
208 %b60 = insertelement <64 x i16> %b59, i16 %a1, i32 60
209 %b61 = insertelement <64 x i16> %b60, i16 %a1, i32 61
210 %b62 = insertelement <64 x i16> %b61, i16 %a1, i32 62
211 %b63 = insertelement <64 x i16> %b62, i16 %a1, i32 63
212 %v0 = lshr <64 x i16> %a0, %b63
213 ret <64 x i16> %v0
214}
215
216; CHECK-LABEL: test0010:
217; CHECK: v0.w = vasl(v0.w,r0)
218define <32 x i32> @test0010(<32 x i32> %a0, i32 %a1) #0 {
219 %b0 = insertelement <32 x i32> zeroinitializer, i32 %a1, i32 0
220 %b1 = insertelement <32 x i32> %b0, i32 %a1, i32 1
221 %b2 = insertelement <32 x i32> %b1, i32 %a1, i32 2
222 %b3 = insertelement <32 x i32> %b2, i32 %a1, i32 3
223 %b4 = insertelement <32 x i32> %b3, i32 %a1, i32 4
224 %b5 = insertelement <32 x i32> %b4, i32 %a1, i32 5
225 %b6 = insertelement <32 x i32> %b5, i32 %a1, i32 6
226 %b7 = insertelement <32 x i32> %b6, i32 %a1, i32 7
227 %b8 = insertelement <32 x i32> %b7, i32 %a1, i32 8
228 %b9 = insertelement <32 x i32> %b8, i32 %a1, i32 9
229 %b10 = insertelement <32 x i32> %b9, i32 %a1, i32 10
230 %b11 = insertelement <32 x i32> %b10, i32 %a1, i32 11
231 %b12 = insertelement <32 x i32> %b11, i32 %a1, i32 12
232 %b13 = insertelement <32 x i32> %b12, i32 %a1, i32 13
233 %b14 = insertelement <32 x i32> %b13, i32 %a1, i32 14
234 %b15 = insertelement <32 x i32> %b14, i32 %a1, i32 15
235 %b16 = insertelement <32 x i32> %b15, i32 %a1, i32 16
236 %b17 = insertelement <32 x i32> %b16, i32 %a1, i32 17
237 %b18 = insertelement <32 x i32> %b17, i32 %a1, i32 18
238 %b19 = insertelement <32 x i32> %b18, i32 %a1, i32 19
239 %b20 = insertelement <32 x i32> %b19, i32 %a1, i32 20
240 %b21 = insertelement <32 x i32> %b20, i32 %a1, i32 21
241 %b22 = insertelement <32 x i32> %b21, i32 %a1, i32 22
242 %b23 = insertelement <32 x i32> %b22, i32 %a1, i32 23
243 %b24 = insertelement <32 x i32> %b23, i32 %a1, i32 24
244 %b25 = insertelement <32 x i32> %b24, i32 %a1, i32 25
245 %b26 = insertelement <32 x i32> %b25, i32 %a1, i32 26
246 %b27 = insertelement <32 x i32> %b26, i32 %a1, i32 27
247 %b28 = insertelement <32 x i32> %b27, i32 %a1, i32 28
248 %b29 = insertelement <32 x i32> %b28, i32 %a1, i32 29
249 %b30 = insertelement <32 x i32> %b29, i32 %a1, i32 30
250 %b31 = insertelement <32 x i32> %b30, i32 %a1, i32 31
251 %v0 = shl <32 x i32> %a0, %b31
252 ret <32 x i32> %v0
253}
254
255; CHECK-LABEL: test0011:
256; CHECK: v0.w = vasr(v0.w,r0)
257define <32 x i32> @test0011(<32 x i32> %a0, i32 %a1) #0 {
258 %b0 = insertelement <32 x i32> zeroinitializer, i32 %a1, i32 0
259 %b1 = insertelement <32 x i32> %b0, i32 %a1, i32 1
260 %b2 = insertelement <32 x i32> %b1, i32 %a1, i32 2
261 %b3 = insertelement <32 x i32> %b2, i32 %a1, i32 3
262 %b4 = insertelement <32 x i32> %b3, i32 %a1, i32 4
263 %b5 = insertelement <32 x i32> %b4, i32 %a1, i32 5
264 %b6 = insertelement <32 x i32> %b5, i32 %a1, i32 6
265 %b7 = insertelement <32 x i32> %b6, i32 %a1, i32 7
266 %b8 = insertelement <32 x i32> %b7, i32 %a1, i32 8
267 %b9 = insertelement <32 x i32> %b8, i32 %a1, i32 9
268 %b10 = insertelement <32 x i32> %b9, i32 %a1, i32 10
269 %b11 = insertelement <32 x i32> %b10, i32 %a1, i32 11
270 %b12 = insertelement <32 x i32> %b11, i32 %a1, i32 12
271 %b13 = insertelement <32 x i32> %b12, i32 %a1, i32 13
272 %b14 = insertelement <32 x i32> %b13, i32 %a1, i32 14
273 %b15 = insertelement <32 x i32> %b14, i32 %a1, i32 15
274 %b16 = insertelement <32 x i32> %b15, i32 %a1, i32 16
275 %b17 = insertelement <32 x i32> %b16, i32 %a1, i32 17
276 %b18 = insertelement <32 x i32> %b17, i32 %a1, i32 18
277 %b19 = insertelement <32 x i32> %b18, i32 %a1, i32 19
278 %b20 = insertelement <32 x i32> %b19, i32 %a1, i32 20
279 %b21 = insertelement <32 x i32> %b20, i32 %a1, i32 21
280 %b22 = insertelement <32 x i32> %b21, i32 %a1, i32 22
281 %b23 = insertelement <32 x i32> %b22, i32 %a1, i32 23
282 %b24 = insertelement <32 x i32> %b23, i32 %a1, i32 24
283 %b25 = insertelement <32 x i32> %b24, i32 %a1, i32 25
284 %b26 = insertelement <32 x i32> %b25, i32 %a1, i32 26
285 %b27 = insertelement <32 x i32> %b26, i32 %a1, i32 27
286 %b28 = insertelement <32 x i32> %b27, i32 %a1, i32 28
287 %b29 = insertelement <32 x i32> %b28, i32 %a1, i32 29
288 %b30 = insertelement <32 x i32> %b29, i32 %a1, i32 30
289 %b31 = insertelement <32 x i32> %b30, i32 %a1, i32 31
290 %v0 = ashr <32 x i32> %a0, %b31
291 ret <32 x i32> %v0
292}
293
294; CHECK-LABEL: test0012:
295; CHECK: v0.uw = vlsr(v0.uw,r0)
296define <32 x i32> @test0012(<32 x i32> %a0, i32 %a1) #0 {
297 %b0 = insertelement <32 x i32> zeroinitializer, i32 %a1, i32 0
298 %b1 = insertelement <32 x i32> %b0, i32 %a1, i32 1
299 %b2 = insertelement <32 x i32> %b1, i32 %a1, i32 2
300 %b3 = insertelement <32 x i32> %b2, i32 %a1, i32 3
301 %b4 = insertelement <32 x i32> %b3, i32 %a1, i32 4
302 %b5 = insertelement <32 x i32> %b4, i32 %a1, i32 5
303 %b6 = insertelement <32 x i32> %b5, i32 %a1, i32 6
304 %b7 = insertelement <32 x i32> %b6, i32 %a1, i32 7
305 %b8 = insertelement <32 x i32> %b7, i32 %a1, i32 8
306 %b9 = insertelement <32 x i32> %b8, i32 %a1, i32 9
307 %b10 = insertelement <32 x i32> %b9, i32 %a1, i32 10
308 %b11 = insertelement <32 x i32> %b10, i32 %a1, i32 11
309 %b12 = insertelement <32 x i32> %b11, i32 %a1, i32 12
310 %b13 = insertelement <32 x i32> %b12, i32 %a1, i32 13
311 %b14 = insertelement <32 x i32> %b13, i32 %a1, i32 14
312 %b15 = insertelement <32 x i32> %b14, i32 %a1, i32 15
313 %b16 = insertelement <32 x i32> %b15, i32 %a1, i32 16
314 %b17 = insertelement <32 x i32> %b16, i32 %a1, i32 17
315 %b18 = insertelement <32 x i32> %b17, i32 %a1, i32 18
316 %b19 = insertelement <32 x i32> %b18, i32 %a1, i32 19
317 %b20 = insertelement <32 x i32> %b19, i32 %a1, i32 20
318 %b21 = insertelement <32 x i32> %b20, i32 %a1, i32 21
319 %b22 = insertelement <32 x i32> %b21, i32 %a1, i32 22
320 %b23 = insertelement <32 x i32> %b22, i32 %a1, i32 23
321 %b24 = insertelement <32 x i32> %b23, i32 %a1, i32 24
322 %b25 = insertelement <32 x i32> %b24, i32 %a1, i32 25
323 %b26 = insertelement <32 x i32> %b25, i32 %a1, i32 26
324 %b27 = insertelement <32 x i32> %b26, i32 %a1, i32 27
325 %b28 = insertelement <32 x i32> %b27, i32 %a1, i32 28
326 %b29 = insertelement <32 x i32> %b28, i32 %a1, i32 29
327 %b30 = insertelement <32 x i32> %b29, i32 %a1, i32 30
328 %b31 = insertelement <32 x i32> %b30, i32 %a1, i32 31
329 %v0 = lshr <32 x i32> %a0, %b31
330 ret <32 x i32> %v0
331}
332
333; CHECK-LABEL: test0020:
334; CHECK: v0.h = vasl(v0.h,v1.h)
335define <64 x i16> @test0020(<64 x i16> %a0, <64 x i16> %a1) #0 {
336 %v0 = shl <64 x i16> %a0, %a1
337 ret <64 x i16> %v0
338}
339
340; CHECK-LABEL: test0021:
341; CHECK: v0.h = vasr(v0.h,v1.h)
342define <64 x i16> @test0021(<64 x i16> %a0, <64 x i16> %a1) #0 {
343 %v0 = ashr <64 x i16> %a0, %a1
344 ret <64 x i16> %v0
345}
346
347; CHECK-LABEL: test0022:
348; CHECK: v0.h = vlsr(v0.h,v1.h)
349define <64 x i16> @test0022(<64 x i16> %a0, <64 x i16> %a1) #0 {
350 %v0 = lshr <64 x i16> %a0, %a1
351 ret <64 x i16> %v0
352}
353
354; CHECK-LABEL: test0030:
355; CHECK: v0.w = vasl(v0.w,v1.w)
356define <32 x i32> @test0030(<32 x i32> %a0, <32 x i32> %a1) #0 {
357 %v0 = shl <32 x i32> %a0, %a1
358 ret <32 x i32> %v0
359}
360
361; CHECK-LABEL: test0031:
362; CHECK: v0.w = vasr(v0.w,v1.w)
363define <32 x i32> @test0031(<32 x i32> %a0, <32 x i32> %a1) #0 {
364 %v0 = ashr <32 x i32> %a0, %a1
365 ret <32 x i32> %v0
366}
367
368; CHECK-LABEL: test0032:
369; CHECK: v0.w = vlsr(v0.w,v1.w)
370define <32 x i32> @test0032(<32 x i32> %a0, <32 x i32> %a1) #0 {
371 %v0 = lshr <32 x i32> %a0, %a1
372 ret <32 x i32> %v0
373}
374
375attributes #0 = { nounwind readnone "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-length128b" }
376