@@ -140,64 +140,52 @@ define <8 x i8> @shuffle_index_indices_from_both_ops(ptr %a, ptr %b) {
140140;
141141; SVE2_128_NOMAX-LABEL: shuffle_index_indices_from_both_ops:
142142; SVE2_128_NOMAX: // %bb.0:
143- ; SVE2_128_NOMAX-NEXT: ldr d0, [x1]
144- ; SVE2_128_NOMAX-NEXT: ldr d1, [x0]
145- ; SVE2_128_NOMAX-NEXT: mov z2.b, z0.b[3]
146- ; SVE2_128_NOMAX-NEXT: mov z3.b, z0.b[2]
147- ; SVE2_128_NOMAX-NEXT: mov z4.b, z0.b[1]
148- ; SVE2_128_NOMAX-NEXT: mov z1.b, z1.b[1]
149- ; SVE2_128_NOMAX-NEXT: mov z5.b, z0.b[7]
150- ; SVE2_128_NOMAX-NEXT: mov z6.b, z0.b[6]
151- ; SVE2_128_NOMAX-NEXT: mov z0.b, z0.b[4]
152- ; SVE2_128_NOMAX-NEXT: zip1 z2.b, z3.b, z2.b
153- ; SVE2_128_NOMAX-NEXT: zip1 z1.b, z1.b, z4.b
154- ; SVE2_128_NOMAX-NEXT: zip1 z3.b, z6.b, z5.b
155- ; SVE2_128_NOMAX-NEXT: zip1 z0.b, z0.b, z0.b
156- ; SVE2_128_NOMAX-NEXT: zip1 z1.h, z1.h, z2.h
157- ; SVE2_128_NOMAX-NEXT: zip1 z0.h, z0.h, z3.h
158- ; SVE2_128_NOMAX-NEXT: zip1 z0.s, z1.s, z0.s
143+ ; SVE2_128_NOMAX-NEXT: ldr d0, [x0]
144+ ; SVE2_128_NOMAX-NEXT: ldr d1, [x1]
145+ ; SVE2_128_NOMAX-NEXT: mov z2.b, z1.b[4]
146+ ; SVE2_128_NOMAX-NEXT: mov z3.b, z1.b[1]
147+ ; SVE2_128_NOMAX-NEXT: mov z0.b, z0.b[1]
148+ ; SVE2_128_NOMAX-NEXT: mov z4.h, z1.h[3]
149+ ; SVE2_128_NOMAX-NEXT: mov z1.h, z1.h[1]
150+ ; SVE2_128_NOMAX-NEXT: zip1 z2.b, z2.b, z2.b
151+ ; SVE2_128_NOMAX-NEXT: zip1 z0.b, z0.b, z3.b
152+ ; SVE2_128_NOMAX-NEXT: zip1 z2.h, z2.h, z4.h
153+ ; SVE2_128_NOMAX-NEXT: zip1 z0.h, z0.h, z1.h
154+ ; SVE2_128_NOMAX-NEXT: zip1 z0.s, z0.s, z2.s
159155; SVE2_128_NOMAX-NEXT: // kill: def $d0 killed $d0 killed $z0
160156; SVE2_128_NOMAX-NEXT: ret
161157;
162158; SVE2_NOMIN_NOMAX-LABEL: shuffle_index_indices_from_both_ops:
163159; SVE2_NOMIN_NOMAX: // %bb.0:
164- ; SVE2_NOMIN_NOMAX-NEXT: ldr d0, [x1]
165- ; SVE2_NOMIN_NOMAX-NEXT: ldr d1, [x0]
166- ; SVE2_NOMIN_NOMAX-NEXT: mov z2.b, z0.b[3]
167- ; SVE2_NOMIN_NOMAX-NEXT: mov z3.b, z0.b[2]
168- ; SVE2_NOMIN_NOMAX-NEXT: mov z4.b, z0.b[1]
169- ; SVE2_NOMIN_NOMAX-NEXT: mov z1.b, z1.b[1]
170- ; SVE2_NOMIN_NOMAX-NEXT: mov z5.b, z0.b[7]
171- ; SVE2_NOMIN_NOMAX-NEXT: mov z6.b, z0.b[6]
172- ; SVE2_NOMIN_NOMAX-NEXT: mov z0.b, z0.b[4]
173- ; SVE2_NOMIN_NOMAX-NEXT: zip1 z2.b, z3.b, z2.b
174- ; SVE2_NOMIN_NOMAX-NEXT: zip1 z1.b, z1.b, z4.b
175- ; SVE2_NOMIN_NOMAX-NEXT: zip1 z3.b, z6.b, z5.b
176- ; SVE2_NOMIN_NOMAX-NEXT: zip1 z0.b, z0.b, z0.b
177- ; SVE2_NOMIN_NOMAX-NEXT: zip1 z1.h, z1.h, z2.h
178- ; SVE2_NOMIN_NOMAX-NEXT: zip1 z0.h, z0.h, z3.h
179- ; SVE2_NOMIN_NOMAX-NEXT: zip1 z0.s, z1.s, z0.s
160+ ; SVE2_NOMIN_NOMAX-NEXT: ldr d0, [x0]
161+ ; SVE2_NOMIN_NOMAX-NEXT: ldr d1, [x1]
162+ ; SVE2_NOMIN_NOMAX-NEXT: mov z2.b, z1.b[4]
163+ ; SVE2_NOMIN_NOMAX-NEXT: mov z3.b, z1.b[1]
164+ ; SVE2_NOMIN_NOMAX-NEXT: mov z0.b, z0.b[1]
165+ ; SVE2_NOMIN_NOMAX-NEXT: mov z4.h, z1.h[3]
166+ ; SVE2_NOMIN_NOMAX-NEXT: mov z1.h, z1.h[1]
167+ ; SVE2_NOMIN_NOMAX-NEXT: zip1 z2.b, z2.b, z2.b
168+ ; SVE2_NOMIN_NOMAX-NEXT: zip1 z0.b, z0.b, z3.b
169+ ; SVE2_NOMIN_NOMAX-NEXT: zip1 z2.h, z2.h, z4.h
170+ ; SVE2_NOMIN_NOMAX-NEXT: zip1 z0.h, z0.h, z1.h
171+ ; SVE2_NOMIN_NOMAX-NEXT: zip1 z0.s, z0.s, z2.s
180172; SVE2_NOMIN_NOMAX-NEXT: // kill: def $d0 killed $d0 killed $z0
181173; SVE2_NOMIN_NOMAX-NEXT: ret
182174;
183175; SVE2_MIN_256_NOMAX-LABEL: shuffle_index_indices_from_both_ops:
184176; SVE2_MIN_256_NOMAX: // %bb.0:
185- ; SVE2_MIN_256_NOMAX-NEXT: ldr d0, [x1]
186- ; SVE2_MIN_256_NOMAX-NEXT: ldr d1, [x0]
187- ; SVE2_MIN_256_NOMAX-NEXT: mov z2.b, z0.b[3]
188- ; SVE2_MIN_256_NOMAX-NEXT: mov z3.b, z0.b[2]
189- ; SVE2_MIN_256_NOMAX-NEXT: mov z4.b, z0.b[1]
190- ; SVE2_MIN_256_NOMAX-NEXT: mov z1.b, z1.b[1]
191- ; SVE2_MIN_256_NOMAX-NEXT: mov z5.b, z0.b[7]
192- ; SVE2_MIN_256_NOMAX-NEXT: mov z6.b, z0.b[6]
193- ; SVE2_MIN_256_NOMAX-NEXT: mov z0.b, z0.b[4]
194- ; SVE2_MIN_256_NOMAX-NEXT: zip1 z2.b, z3.b, z2.b
195- ; SVE2_MIN_256_NOMAX-NEXT: zip1 z1.b, z1.b, z4.b
196- ; SVE2_MIN_256_NOMAX-NEXT: zip1 z3.b, z6.b, z5.b
197- ; SVE2_MIN_256_NOMAX-NEXT: zip1 z0.b, z0.b, z0.b
198- ; SVE2_MIN_256_NOMAX-NEXT: zip1 z1.h, z1.h, z2.h
199- ; SVE2_MIN_256_NOMAX-NEXT: zip1 z0.h, z0.h, z3.h
200- ; SVE2_MIN_256_NOMAX-NEXT: zip1 z0.s, z1.s, z0.s
177+ ; SVE2_MIN_256_NOMAX-NEXT: ldr d0, [x0]
178+ ; SVE2_MIN_256_NOMAX-NEXT: ldr d1, [x1]
179+ ; SVE2_MIN_256_NOMAX-NEXT: mov z2.b, z1.b[4]
180+ ; SVE2_MIN_256_NOMAX-NEXT: mov z3.b, z1.b[1]
181+ ; SVE2_MIN_256_NOMAX-NEXT: mov z0.b, z0.b[1]
182+ ; SVE2_MIN_256_NOMAX-NEXT: mov z4.h, z1.h[3]
183+ ; SVE2_MIN_256_NOMAX-NEXT: mov z1.h, z1.h[1]
184+ ; SVE2_MIN_256_NOMAX-NEXT: zip1 z2.b, z2.b, z2.b
185+ ; SVE2_MIN_256_NOMAX-NEXT: zip1 z0.b, z0.b, z3.b
186+ ; SVE2_MIN_256_NOMAX-NEXT: zip1 z2.h, z2.h, z4.h
187+ ; SVE2_MIN_256_NOMAX-NEXT: zip1 z0.h, z0.h, z1.h
188+ ; SVE2_MIN_256_NOMAX-NEXT: zip1 z0.s, z0.s, z2.s
201189; SVE2_MIN_256_NOMAX-NEXT: // kill: def $d0 killed $d0 killed $z0
202190; SVE2_MIN_256_NOMAX-NEXT: ret
203191 %op1 = load <8 x i8 >, ptr %a
@@ -230,58 +218,52 @@ define <8 x i8> @shuffle_index_poison_value(ptr %a, ptr %b) {
230218;
231219; SVE2_128_NOMAX-LABEL: shuffle_index_poison_value:
232220; SVE2_128_NOMAX: // %bb.0:
233- ; SVE2_128_NOMAX-NEXT: ldr d0, [x1]
234- ; SVE2_128_NOMAX-NEXT: ldr d1, [x0]
235- ; SVE2_128_NOMAX-NEXT: mov z2.b, z0.b[3]
236- ; SVE2_128_NOMAX-NEXT: mov z3.b, z0.b[2]
237- ; SVE2_128_NOMAX-NEXT: mov z4.b, z0.b[1]
238- ; SVE2_128_NOMAX-NEXT: mov z1.b, z1.b[1]
239- ; SVE2_128_NOMAX-NEXT: mov z5.b, z0.b[4]
240- ; SVE2_128_NOMAX-NEXT: mov z0.b, z0.b[6]
241- ; SVE2_128_NOMAX-NEXT: zip1 z2.b, z3.b, z2.b
242- ; SVE2_128_NOMAX-NEXT: zip1 z1.b, z1.b, z4.b
243- ; SVE2_128_NOMAX-NEXT: zip1 z3.b, z5.b, z5.b
244- ; SVE2_128_NOMAX-NEXT: zip1 z1.h, z1.h, z2.h
245- ; SVE2_128_NOMAX-NEXT: zip1 z0.h, z3.h, z0.h
246- ; SVE2_128_NOMAX-NEXT: zip1 z0.s, z1.s, z0.s
221+ ; SVE2_128_NOMAX-NEXT: ldr d0, [x0]
222+ ; SVE2_128_NOMAX-NEXT: ldr d1, [x1]
223+ ; SVE2_128_NOMAX-NEXT: mov z2.b, z1.b[4]
224+ ; SVE2_128_NOMAX-NEXT: mov z3.b, z1.b[1]
225+ ; SVE2_128_NOMAX-NEXT: mov z0.b, z0.b[1]
226+ ; SVE2_128_NOMAX-NEXT: mov z4.b, z1.b[6]
227+ ; SVE2_128_NOMAX-NEXT: mov z1.h, z1.h[1]
228+ ; SVE2_128_NOMAX-NEXT: zip1 z2.b, z2.b, z2.b
229+ ; SVE2_128_NOMAX-NEXT: zip1 z0.b, z0.b, z3.b
230+ ; SVE2_128_NOMAX-NEXT: zip1 z2.h, z2.h, z4.h
231+ ; SVE2_128_NOMAX-NEXT: zip1 z0.h, z0.h, z1.h
232+ ; SVE2_128_NOMAX-NEXT: zip1 z0.s, z0.s, z2.s
247233; SVE2_128_NOMAX-NEXT: // kill: def $d0 killed $d0 killed $z0
248234; SVE2_128_NOMAX-NEXT: ret
249235;
250236; SVE2_NOMIN_NOMAX-LABEL: shuffle_index_poison_value:
251237; SVE2_NOMIN_NOMAX: // %bb.0:
252- ; SVE2_NOMIN_NOMAX-NEXT: ldr d0, [x1]
253- ; SVE2_NOMIN_NOMAX-NEXT: ldr d1, [x0]
254- ; SVE2_NOMIN_NOMAX-NEXT: mov z2.b, z0.b[3]
255- ; SVE2_NOMIN_NOMAX-NEXT: mov z3.b, z0.b[2]
256- ; SVE2_NOMIN_NOMAX-NEXT: mov z4.b, z0.b[1]
257- ; SVE2_NOMIN_NOMAX-NEXT: mov z1.b, z1.b[1]
258- ; SVE2_NOMIN_NOMAX-NEXT: mov z5.b, z0.b[4]
259- ; SVE2_NOMIN_NOMAX-NEXT: mov z0.b, z0.b[6]
260- ; SVE2_NOMIN_NOMAX-NEXT: zip1 z2.b, z3.b, z2.b
261- ; SVE2_NOMIN_NOMAX-NEXT: zip1 z1.b, z1.b, z4.b
262- ; SVE2_NOMIN_NOMAX-NEXT: zip1 z3.b, z5.b, z5.b
263- ; SVE2_NOMIN_NOMAX-NEXT: zip1 z1.h, z1.h, z2.h
264- ; SVE2_NOMIN_NOMAX-NEXT: zip1 z0.h, z3.h, z0.h
265- ; SVE2_NOMIN_NOMAX-NEXT: zip1 z0.s, z1.s, z0.s
238+ ; SVE2_NOMIN_NOMAX-NEXT: ldr d0, [x0]
239+ ; SVE2_NOMIN_NOMAX-NEXT: ldr d1, [x1]
240+ ; SVE2_NOMIN_NOMAX-NEXT: mov z2.b, z1.b[4]
241+ ; SVE2_NOMIN_NOMAX-NEXT: mov z3.b, z1.b[1]
242+ ; SVE2_NOMIN_NOMAX-NEXT: mov z0.b, z0.b[1]
243+ ; SVE2_NOMIN_NOMAX-NEXT: mov z4.b, z1.b[6]
244+ ; SVE2_NOMIN_NOMAX-NEXT: mov z1.h, z1.h[1]
245+ ; SVE2_NOMIN_NOMAX-NEXT: zip1 z2.b, z2.b, z2.b
246+ ; SVE2_NOMIN_NOMAX-NEXT: zip1 z0.b, z0.b, z3.b
247+ ; SVE2_NOMIN_NOMAX-NEXT: zip1 z2.h, z2.h, z4.h
248+ ; SVE2_NOMIN_NOMAX-NEXT: zip1 z0.h, z0.h, z1.h
249+ ; SVE2_NOMIN_NOMAX-NEXT: zip1 z0.s, z0.s, z2.s
266250; SVE2_NOMIN_NOMAX-NEXT: // kill: def $d0 killed $d0 killed $z0
267251; SVE2_NOMIN_NOMAX-NEXT: ret
268252;
269253; SVE2_MIN_256_NOMAX-LABEL: shuffle_index_poison_value:
270254; SVE2_MIN_256_NOMAX: // %bb.0:
271- ; SVE2_MIN_256_NOMAX-NEXT: ldr d0, [x1]
272- ; SVE2_MIN_256_NOMAX-NEXT: ldr d1, [x0]
273- ; SVE2_MIN_256_NOMAX-NEXT: mov z2.b, z0.b[3]
274- ; SVE2_MIN_256_NOMAX-NEXT: mov z3.b, z0.b[2]
275- ; SVE2_MIN_256_NOMAX-NEXT: mov z4.b, z0.b[1]
276- ; SVE2_MIN_256_NOMAX-NEXT: mov z1.b, z1.b[1]
277- ; SVE2_MIN_256_NOMAX-NEXT: mov z5.b, z0.b[4]
278- ; SVE2_MIN_256_NOMAX-NEXT: mov z0.b, z0.b[6]
279- ; SVE2_MIN_256_NOMAX-NEXT: zip1 z2.b, z3.b, z2.b
280- ; SVE2_MIN_256_NOMAX-NEXT: zip1 z1.b, z1.b, z4.b
281- ; SVE2_MIN_256_NOMAX-NEXT: zip1 z3.b, z5.b, z5.b
282- ; SVE2_MIN_256_NOMAX-NEXT: zip1 z1.h, z1.h, z2.h
283- ; SVE2_MIN_256_NOMAX-NEXT: zip1 z0.h, z3.h, z0.h
284- ; SVE2_MIN_256_NOMAX-NEXT: zip1 z0.s, z1.s, z0.s
255+ ; SVE2_MIN_256_NOMAX-NEXT: ldr d0, [x0]
256+ ; SVE2_MIN_256_NOMAX-NEXT: ldr d1, [x1]
257+ ; SVE2_MIN_256_NOMAX-NEXT: mov z2.b, z1.b[4]
258+ ; SVE2_MIN_256_NOMAX-NEXT: mov z3.b, z1.b[1]
259+ ; SVE2_MIN_256_NOMAX-NEXT: mov z0.b, z0.b[1]
260+ ; SVE2_MIN_256_NOMAX-NEXT: mov z4.b, z1.b[6]
261+ ; SVE2_MIN_256_NOMAX-NEXT: mov z1.h, z1.h[1]
262+ ; SVE2_MIN_256_NOMAX-NEXT: zip1 z2.b, z2.b, z2.b
263+ ; SVE2_MIN_256_NOMAX-NEXT: zip1 z0.b, z0.b, z3.b
264+ ; SVE2_MIN_256_NOMAX-NEXT: zip1 z2.h, z2.h, z4.h
265+ ; SVE2_MIN_256_NOMAX-NEXT: zip1 z0.h, z0.h, z1.h
266+ ; SVE2_MIN_256_NOMAX-NEXT: zip1 z0.s, z0.s, z2.s
285267; SVE2_MIN_256_NOMAX-NEXT: // kill: def $d0 killed $d0 killed $z0
286268; SVE2_MIN_256_NOMAX-NEXT: ret
287269 %op1 = load <8 x i8 >, ptr %a
@@ -338,22 +320,18 @@ define <8 x i8> @shuffle_op1_poison(ptr %a, ptr %b) {
338320define <8 x i8 > @negative_test_shuffle_index_size_op_both_maxhw (ptr %a , ptr %b ) "target-features" ="+sve2" vscale_range(16 ,16 ) {
339321; CHECK-LABEL: negative_test_shuffle_index_size_op_both_maxhw:
340322; CHECK: // %bb.0:
341- ; CHECK-NEXT: ldr d0, [x1]
342- ; CHECK-NEXT: ldr d1, [x0]
343- ; CHECK-NEXT: mov z2.b, z0.b[3]
344- ; CHECK-NEXT: mov z3.b, z0.b[2]
345- ; CHECK-NEXT: mov z4.b, z0.b[1]
346- ; CHECK-NEXT: mov z1.b, z1.b[1]
347- ; CHECK-NEXT: mov z5.b, z0.b[7]
348- ; CHECK-NEXT: mov z6.b, z0.b[6]
349- ; CHECK-NEXT: mov z0.b, z0.b[4]
350- ; CHECK-NEXT: zip1 z2.b, z3.b, z2.b
351- ; CHECK-NEXT: zip1 z1.b, z1.b, z4.b
352- ; CHECK-NEXT: zip1 z3.b, z6.b, z5.b
353- ; CHECK-NEXT: zip1 z0.b, z0.b, z0.b
354- ; CHECK-NEXT: zip1 z1.h, z1.h, z2.h
355- ; CHECK-NEXT: zip1 z0.h, z0.h, z3.h
356- ; CHECK-NEXT: zip1 z0.s, z1.s, z0.s
323+ ; CHECK-NEXT: ldr d0, [x0]
324+ ; CHECK-NEXT: ldr d1, [x1]
325+ ; CHECK-NEXT: mov z2.b, z1.b[4]
326+ ; CHECK-NEXT: mov z3.b, z1.b[1]
327+ ; CHECK-NEXT: mov z0.b, z0.b[1]
328+ ; CHECK-NEXT: mov z4.h, z1.h[3]
329+ ; CHECK-NEXT: mov z1.h, z1.h[1]
330+ ; CHECK-NEXT: zip1 z2.b, z2.b, z2.b
331+ ; CHECK-NEXT: zip1 z0.b, z0.b, z3.b
332+ ; CHECK-NEXT: zip1 z2.h, z2.h, z4.h
333+ ; CHECK-NEXT: zip1 z0.h, z0.h, z1.h
334+ ; CHECK-NEXT: zip1 z0.s, z0.s, z2.s
357335; CHECK-NEXT: // kill: def $d0 killed $d0 killed $z0
358336; CHECK-NEXT: ret
359337 %op1 = load <8 x i8 >, ptr %a
0 commit comments