Skip to content

Commit 23c51f1

Browse files
committed
[AArch64] More trunc(shift) tests. NFC
1 parent 969d2d1 commit 23c51f1

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

llvm/test/CodeGen/AArch64/arm64-vshift.ll

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,10 @@
102102
; CHECK-GI-NEXT: warning: Instruction selection used fallback path for sli2d
103103
; CHECK-GI-NEXT: warning: Instruction selection used fallback path for sqshlu_zero_shift_amount
104104
; CHECK-GI-NEXT: warning: Instruction selection used fallback path for lshr_trunc_v2i64_v2i8
105+
; CHECK-GI-NEXT: warning: Instruction selection used fallback path for lshr_trunc_v4i64_v4i16
105106
; CHECK-GI-NEXT: warning: Instruction selection used fallback path for ashr_trunc_v2i64_v2i8
107+
; CHECK-GI-NEXT: warning: Instruction selection used fallback path for ashr_trunc_v4i64_v4i16
108+
; CHECK-GI-NEXT: warning: Instruction selection used fallback path for shl_trunc_v4i64_v4i16
106109

107110
define <8 x i8> @sqshl8b(ptr %A, ptr %B) nounwind {
108111
; CHECK-LABEL: sqshl8b:
@@ -4387,6 +4390,20 @@ define <2 x i8> @lshr_trunc_v2i64_v2i8(<2 x i64> %a) {
43874390
ret <2 x i8> %c
43884391
}
43894392

4393+
define <4 x i16> @lshr_trunc_v4i64_v4i16(<4 x i64> %a) {
4394+
; CHECK-LABEL: lshr_trunc_v4i64_v4i16:
4395+
; CHECK: // %bb.0:
4396+
; CHECK-NEXT: xtn v1.2s, v1.2d
4397+
; CHECK-NEXT: xtn v0.2s, v0.2d
4398+
; CHECK-NEXT: ushr v1.2s, v1.2s, #8
4399+
; CHECK-NEXT: ushr v0.2s, v0.2s, #8
4400+
; CHECK-NEXT: uzp1 v0.4h, v0.4h, v1.4h
4401+
; CHECK-NEXT: ret
4402+
%b = lshr <4 x i64> %a, <i64 8, i64 8, i64 8, i64 8>
4403+
%c = trunc <4 x i64> %b to <4 x i16>
4404+
ret <4 x i16> %c
4405+
}
4406+
43904407
define <2 x i8> @ashr_trunc_v2i64_v2i8(<2 x i64> %a) {
43914408
; CHECK-LABEL: ashr_trunc_v2i64_v2i8:
43924409
; CHECK: // %bb.0:
@@ -4397,6 +4414,20 @@ define <2 x i8> @ashr_trunc_v2i64_v2i8(<2 x i64> %a) {
43974414
ret <2 x i8> %c
43984415
}
43994416

4417+
define <4 x i16> @ashr_trunc_v4i64_v4i16(<4 x i64> %a) {
4418+
; CHECK-LABEL: ashr_trunc_v4i64_v4i16:
4419+
; CHECK: // %bb.0:
4420+
; CHECK-NEXT: xtn v1.2s, v1.2d
4421+
; CHECK-NEXT: xtn v0.2s, v0.2d
4422+
; CHECK-NEXT: ushr v1.2s, v1.2s, #8
4423+
; CHECK-NEXT: ushr v0.2s, v0.2s, #8
4424+
; CHECK-NEXT: uzp1 v0.4h, v0.4h, v1.4h
4425+
; CHECK-NEXT: ret
4426+
%b = ashr <4 x i64> %a, <i64 8, i64 8, i64 8, i64 8>
4427+
%c = trunc <4 x i64> %b to <4 x i16>
4428+
ret <4 x i16> %c
4429+
}
4430+
44004431
define <2 x i8> @shl_trunc_v2i64_v2i8(<2 x i64> %a) {
44014432
; CHECK-SD-LABEL: shl_trunc_v2i64_v2i8:
44024433
; CHECK-SD: // %bb.0:
@@ -4414,4 +4445,16 @@ define <2 x i8> @shl_trunc_v2i64_v2i8(<2 x i64> %a) {
44144445
ret <2 x i8> %c
44154446
}
44164447

4448+
define <4 x i16> @shl_trunc_v4i64_v4i16(<4 x i64> %a) {
4449+
; CHECK-LABEL: shl_trunc_v4i64_v4i16:
4450+
; CHECK: // %bb.0:
4451+
; CHECK-NEXT: uzp1 v0.4s, v0.4s, v1.4s
4452+
; CHECK-NEXT: xtn v0.4h, v0.4s
4453+
; CHECK-NEXT: shl v0.4h, v0.4h, #8
4454+
; CHECK-NEXT: ret
4455+
%b = shl <4 x i64> %a, <i64 8, i64 8, i64 8, i64 8>
4456+
%c = trunc <4 x i64> %b to <4 x i16>
4457+
ret <4 x i16> %c
4458+
}
4459+
44174460
declare <2 x i64> @llvm.aarch64.neon.addp.v2i64(<2 x i64>, <2 x i64>)

0 commit comments

Comments
 (0)