Skip to content

Commit 30279dc

Browse files
committed
[AArch64] Add a test from #79100, showing extra unnecessary movs. NFC
1 parent 5377fa7 commit 30279dc

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

llvm/test/CodeGen/AArch64/pr79100.ll

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2+
; RUN: llc < %s -mtriple=aarch64 | FileCheck %s --check-prefixes=CHECK,CHECK-SD
3+
; RUN: llc < %s -mtriple=aarch64 -global-isel 2>&1 | FileCheck %s --check-prefixes=CHECK,CHECK-GI
4+
5+
define <16 x i8> @test_2(i64 %0) {
6+
; CHECK-SD-LABEL: test_2:
7+
; CHECK-SD: // %bb.0: // %Entry
8+
; CHECK-SD-NEXT: fmov d1, x0
9+
; CHECK-SD-NEXT: fmov d2, x0
10+
; CHECK-SD-NEXT: movi v0.16b, #15
11+
; CHECK-SD-NEXT: ushr v1.8b, v1.8b, #4
12+
; CHECK-SD-NEXT: zip1 v1.16b, v2.16b, v1.16b
13+
; CHECK-SD-NEXT: and v0.16b, v1.16b, v0.16b
14+
; CHECK-SD-NEXT: ret
15+
;
16+
; CHECK-GI-LABEL: test_2:
17+
; CHECK-GI: // %bb.0: // %Entry
18+
; CHECK-GI-NEXT: fmov d1, x0
19+
; CHECK-GI-NEXT: movi v0.16b, #15
20+
; CHECK-GI-NEXT: ushr v2.8b, v1.8b, #4
21+
; CHECK-GI-NEXT: zip1 v1.16b, v1.16b, v2.16b
22+
; CHECK-GI-NEXT: and v0.16b, v1.16b, v0.16b
23+
; CHECK-GI-NEXT: ret
24+
Entry:
25+
%1 = bitcast i64 %0 to <8 x i8>
26+
%2 = lshr <8 x i8> %1, <i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4>
27+
%3 = shufflevector <8 x i8> %1, <8 x i8> %2, <16 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11, i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
28+
%4 = and <16 x i8> %3, <i8 15, i8 15, i8 15, i8 15, i8 15, i8 15, i8 15, i8 15, i8 15, i8 15, i8 15, i8 15, i8 15, i8 15, i8 15, i8 15>
29+
ret <16 x i8> %4
30+
}
31+
32+
define <16 x i8> @test_3(i64 %0) {
33+
; CHECK-LABEL: test_3:
34+
; CHECK: // %bb.0: // %Entry
35+
; CHECK-NEXT: movi v0.8b, #15
36+
; CHECK-NEXT: fmov d1, x0
37+
; CHECK-NEXT: ushr v2.8b, v1.8b, #4
38+
; CHECK-NEXT: and v0.8b, v1.8b, v0.8b
39+
; CHECK-NEXT: zip1 v0.16b, v0.16b, v2.16b
40+
; CHECK-NEXT: ret
41+
Entry:
42+
%1 = bitcast i64 %0 to <8 x i8>
43+
%2 = and <8 x i8> %1, <i8 15, i8 15, i8 15, i8 15, i8 15, i8 15, i8 15, i8 15>
44+
%3 = lshr <8 x i8> %1, <i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4>
45+
%4 = shufflevector <8 x i8> %2, <8 x i8> %3, <16 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11, i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
46+
ret <16 x i8> %4
47+
}

0 commit comments

Comments
 (0)