Skip to content

Commit 0bc96c0

Browse files
committed
[AArch64] Add truncate test to aarch64-dup-ext.ll (NFC)
1 parent a6385a3 commit 0bc96c0

File tree

1 file changed

+42
-4
lines changed

1 file changed

+42
-4
lines changed

llvm/test/CodeGen/AArch64/aarch64-dup-ext.ll

Lines changed: 42 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,44 @@ entry:
158158
ret <2 x i64> %out
159159
}
160160

161+
define <2 x i32> @dupzext_v2i32_v2i64_trunc(i32 %src, <2 x i32> %b) {
162+
; CHECK-SD-LABEL: dupzext_v2i32_v2i64_trunc:
163+
; CHECK-SD: // %bb.0: // %entry
164+
; CHECK-SD-NEXT: ushll v0.2d, v0.2s, #0
165+
; CHECK-SD-NEXT: fmov x9, d0
166+
; CHECK-SD-NEXT: mov x8, v0.d[1]
167+
; CHECK-SD-NEXT: mul w9, w0, w9
168+
; CHECK-SD-NEXT: mul w8, w0, w8
169+
; CHECK-SD-NEXT: fmov d0, x9
170+
; CHECK-SD-NEXT: mov v0.d[1], x8
171+
; CHECK-SD-NEXT: xtn v0.2s, v0.2d
172+
; CHECK-SD-NEXT: ret
173+
;
174+
; CHECK-GI-LABEL: dupzext_v2i32_v2i64_trunc:
175+
; CHECK-GI: // %bb.0: // %entry
176+
; CHECK-GI-NEXT: mov w8, w0
177+
; CHECK-GI-NEXT: ushll v0.2d, v0.2s, #0
178+
; CHECK-GI-NEXT: dup v1.2d, x8
179+
; CHECK-GI-NEXT: fmov x9, d0
180+
; CHECK-GI-NEXT: mov x11, v0.d[1]
181+
; CHECK-GI-NEXT: fmov x8, d1
182+
; CHECK-GI-NEXT: mov x10, v1.d[1]
183+
; CHECK-GI-NEXT: mul x8, x8, x9
184+
; CHECK-GI-NEXT: mul x9, x10, x11
185+
; CHECK-GI-NEXT: mov v0.d[0], x8
186+
; CHECK-GI-NEXT: mov v0.d[1], x9
187+
; CHECK-GI-NEXT: xtn v0.2s, v0.2d
188+
; CHECK-GI-NEXT: ret
189+
entry:
190+
%in = zext i32 %src to i64
191+
%ext.b = zext <2 x i32> %b to <2 x i64>
192+
%broadcast.splatinsert = insertelement <2 x i64> undef, i64 %in, i64 0
193+
%broadcast.splat = shufflevector <2 x i64> %broadcast.splatinsert, <2 x i64> undef, <2 x i32> zeroinitializer
194+
%prod = mul nuw <2 x i64> %broadcast.splat, %ext.b
195+
%out = trunc <2 x i64> %prod to <2 x i32>
196+
ret <2 x i32> %out
197+
}
198+
161199
; Unsupported combines
162200

163201
define <2 x i16> @dupsext_v2i8_v2i16(i8 %src, <2 x i8> %b) {
@@ -407,10 +445,10 @@ define <8 x i16> @shufsext_v8i8_v8i16(<8 x i8> %src, <8 x i8> %b) {
407445
;
408446
; CHECK-GI-LABEL: shufsext_v8i8_v8i16:
409447
; CHECK-GI: // %bb.0: // %entry
410-
; CHECK-GI-NEXT: adrp x8, .LCPI13_0
448+
; CHECK-GI-NEXT: adrp x8, .LCPI14_0
411449
; CHECK-GI-NEXT: sshll v2.8h, v0.8b, #0
412450
; CHECK-GI-NEXT: sshll v1.8h, v1.8b, #0
413-
; CHECK-GI-NEXT: ldr q0, [x8, :lo12:.LCPI13_0]
451+
; CHECK-GI-NEXT: ldr q0, [x8, :lo12:.LCPI14_0]
414452
; CHECK-GI-NEXT: tbl v0.16b, { v2.16b, v3.16b }, v0.16b
415453
; CHECK-GI-NEXT: mul v0.8h, v0.8h, v1.8h
416454
; CHECK-GI-NEXT: ret
@@ -460,10 +498,10 @@ define <8 x i16> @shufzext_v8i8_v8i16(<8 x i8> %src, <8 x i8> %b) {
460498
;
461499
; CHECK-GI-LABEL: shufzext_v8i8_v8i16:
462500
; CHECK-GI: // %bb.0: // %entry
463-
; CHECK-GI-NEXT: adrp x8, .LCPI15_0
501+
; CHECK-GI-NEXT: adrp x8, .LCPI16_0
464502
; CHECK-GI-NEXT: ushll v2.8h, v0.8b, #0
465503
; CHECK-GI-NEXT: ushll v1.8h, v1.8b, #0
466-
; CHECK-GI-NEXT: ldr q0, [x8, :lo12:.LCPI15_0]
504+
; CHECK-GI-NEXT: ldr q0, [x8, :lo12:.LCPI16_0]
467505
; CHECK-GI-NEXT: tbl v0.16b, { v2.16b, v3.16b }, v0.16b
468506
; CHECK-GI-NEXT: mul v0.8h, v0.8h, v1.8h
469507
; CHECK-GI-NEXT: ret

0 commit comments

Comments
 (0)