Skip to content

Commit 3413f95

Browse files
committed
[AArch64] Add a few extra two-step zext shuffle tests. NFC
1 parent b206bf0 commit 3413f95

File tree

1 file changed

+78
-0
lines changed

1 file changed

+78
-0
lines changed

llvm/test/CodeGen/AArch64/zext-shuffle.ll

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,84 @@ define <8 x i16> @v8i16_371115(<16 x i8> %a, <16 x i8> %b) {
263263
}
264264

265265

266+
define <8 x i32> @v8i32_0246(<16 x i8> %a, <16 x i8> %b) {
267+
; CHECK-LABEL: v8i32_0246:
268+
; CHECK: // %bb.0:
269+
; CHECK-NEXT: bic v0.8h, #255, lsl #8
270+
; CHECK-NEXT: ushll2 v1.4s, v0.8h, #0
271+
; CHECK-NEXT: ushll v0.4s, v0.4h, #0
272+
; CHECK-NEXT: ret
273+
%c = shufflevector <16 x i8> %a, <16 x i8> %b, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 10, i32 12, i32 14>
274+
%d = zext <8 x i8> %c to <8 x i32>
275+
ret <8 x i32> %d
276+
}
277+
278+
define <8 x i32> @v8i32_1357(<16 x i8> %a, <16 x i8> %b) {
279+
; CHECK-LABEL: v8i32_1357:
280+
; CHECK: // %bb.0:
281+
; CHECK-NEXT: uzp2 v0.16b, v0.16b, v0.16b
282+
; CHECK-NEXT: ushll v0.8h, v0.8b, #0
283+
; CHECK-NEXT: ushll2 v1.4s, v0.8h, #0
284+
; CHECK-NEXT: ushll v0.4s, v0.4h, #0
285+
; CHECK-NEXT: ret
286+
%c = shufflevector <16 x i8> %a, <16 x i8> %b, <8 x i32> <i32 1, i32 3, i32 5, i32 7, i32 9, i32 11, i32 13, i32 15>
287+
%d = zext <8 x i8> %c to <8 x i32>
288+
ret <8 x i32> %d
289+
}
290+
291+
define <8 x i32> @v8i32_04812(<16 x i8> %a, <16 x i8> %b) {
292+
; CHECK-LABEL: v8i32_04812:
293+
; CHECK: // %bb.0:
294+
; CHECK-NEXT: uzp1 v0.8h, v0.8h, v1.8h
295+
; CHECK-NEXT: bic v0.8h, #255, lsl #8
296+
; CHECK-NEXT: ushll2 v1.4s, v0.8h, #0
297+
; CHECK-NEXT: ushll v0.4s, v0.4h, #0
298+
; CHECK-NEXT: ret
299+
%c = shufflevector <16 x i8> %a, <16 x i8> %b, <8 x i32> <i32 0, i32 4, i32 8, i32 12, i32 16, i32 20, i32 24, i32 28>
300+
%d = zext <8 x i8> %c to <8 x i32>
301+
ret <8 x i32> %d
302+
}
303+
304+
define <8 x i32> @v8i32_15913(<16 x i8> %a, <16 x i8> %b) {
305+
; CHECK-LABEL: v8i32_15913:
306+
; CHECK: // %bb.0:
307+
; CHECK-NEXT: uzp1 v0.8h, v0.8h, v1.8h
308+
; CHECK-NEXT: ushr v0.8h, v0.8h, #8
309+
; CHECK-NEXT: ushll2 v1.4s, v0.8h, #0
310+
; CHECK-NEXT: ushll v0.4s, v0.4h, #0
311+
; CHECK-NEXT: ret
312+
%c = shufflevector <16 x i8> %a, <16 x i8> %b, <8 x i32> <i32 1, i32 5, i32 9, i32 13, i32 17, i32 21, i32 25, i32 29>
313+
%d = zext <8 x i8> %c to <8 x i32>
314+
ret <8 x i32> %d
315+
}
316+
317+
define <8 x i32> @v8i32_261014(<16 x i8> %a, <16 x i8> %b) {
318+
; CHECK-LABEL: v8i32_261014:
319+
; CHECK: // %bb.0:
320+
; CHECK-NEXT: uzp2 v0.8h, v0.8h, v1.8h
321+
; CHECK-NEXT: bic v0.8h, #255, lsl #8
322+
; CHECK-NEXT: ushll2 v1.4s, v0.8h, #0
323+
; CHECK-NEXT: ushll v0.4s, v0.4h, #0
324+
; CHECK-NEXT: ret
325+
%c = shufflevector <16 x i8> %a, <16 x i8> %b, <8 x i32> <i32 2, i32 6, i32 10, i32 14, i32 18, i32 22, i32 26, i32 30>
326+
%d = zext <8 x i8> %c to <8 x i32>
327+
ret <8 x i32> %d
328+
}
329+
330+
define <8 x i32> @v8i32_371115(<16 x i8> %a, <16 x i8> %b) {
331+
; CHECK-LABEL: v8i32_371115:
332+
; CHECK: // %bb.0:
333+
; CHECK-NEXT: uzp2 v0.8h, v0.8h, v1.8h
334+
; CHECK-NEXT: ushr v0.8h, v0.8h, #8
335+
; CHECK-NEXT: ushll2 v1.4s, v0.8h, #0
336+
; CHECK-NEXT: ushll v0.4s, v0.4h, #0
337+
; CHECK-NEXT: ret
338+
%c = shufflevector <16 x i8> %a, <16 x i8> %b, <8 x i32> <i32 3, i32 7, i32 11, i32 15, i32 19, i32 23, i32 27, i32 31>
339+
%d = zext <8 x i8> %c to <8 x i32>
340+
ret <8 x i32> %d
341+
}
342+
343+
266344
define <8 x i64> @zext_add(<32 x i16> %l) {
267345
; CHECK-LABEL: zext_add:
268346
; CHECK: // %bb.0:

0 commit comments

Comments
 (0)