Skip to content

Commit a5d619e

Browse files
committed
[AArch64] Add Tests for Comparing Shifted Value with 0; NFC
1 parent 5742dc4 commit a5d619e

File tree

1 file changed

+125
-0
lines changed

1 file changed

+125
-0
lines changed
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2
2+
; RUN: llc -mtriple=aarch64-unknown-unknown < %s -o -| FileCheck %s
3+
4+
define i1 @lsr_1_ne_0_16(i16 %x) {
5+
; CHECK-LABEL: lsr_1_ne_0_16:
6+
; CHECK: // %bb.0:
7+
; CHECK-NEXT: tst w0, #0xfffe
8+
; CHECK-NEXT: cset w0, ne
9+
; CHECK-NEXT: ret
10+
%shr = lshr i16 %x, 1
11+
%cmp = icmp ne i16 %shr, 0
12+
ret i1 %cmp
13+
}
14+
15+
define i1 @lsr_1_ne_0_32(i32 %x) {
16+
; CHECK-LABEL: lsr_1_ne_0_32:
17+
; CHECK: // %bb.0:
18+
; CHECK-NEXT: tst w0, #0xfffffffe
19+
; CHECK-NEXT: cset w0, ne
20+
; CHECK-NEXT: ret
21+
%shr = lshr i32 %x, 1
22+
%cmp = icmp ne i32 %shr, 0
23+
ret i1 %cmp
24+
}
25+
26+
define i1 @lsr_30_ne_0_32(i32 %x) {
27+
; CHECK-LABEL: lsr_30_ne_0_32:
28+
; CHECK: // %bb.0:
29+
; CHECK-NEXT: tst w0, #0xc0000000
30+
; CHECK-NEXT: cset w0, ne
31+
; CHECK-NEXT: ret
32+
%shr = lshr i32 %x, 30
33+
%cmp = icmp ne i32 %shr, 0
34+
ret i1 %cmp
35+
}
36+
37+
define i1 @lsr_31_ne_0_32(i32 %x) {
38+
; CHECK-LABEL: lsr_31_ne_0_32:
39+
; CHECK: // %bb.0:
40+
; CHECK-NEXT: lsr w0, w0, #31
41+
; CHECK-NEXT: ret
42+
%shr = lshr i32 %x, 31
43+
%cmp = icmp ne i32 %shr, 0
44+
ret i1 %cmp
45+
}
46+
47+
define i1 @lsr_1_ne_0_64(i64 %x) {
48+
; CHECK-LABEL: lsr_1_ne_0_64:
49+
; CHECK: // %bb.0:
50+
; CHECK-NEXT: tst x0, #0xfffffffffffffffe
51+
; CHECK-NEXT: cset w0, ne
52+
; CHECK-NEXT: ret
53+
%shr = lshr i64 %x, 1
54+
%cmp = icmp ne i64 %shr, 0
55+
ret i1 %cmp
56+
}
57+
58+
define i1 @lsr_31_ne_0_64(i64 %x) {
59+
; CHECK-LABEL: lsr_31_ne_0_64:
60+
; CHECK: // %bb.0:
61+
; CHECK-NEXT: tst x0, #0xffffffff80000000
62+
; CHECK-NEXT: cset w0, ne
63+
; CHECK-NEXT: ret
64+
%shr = lshr i64 %x, 31
65+
%cmp = icmp ne i64 %shr, 0
66+
ret i1 %cmp
67+
}
68+
69+
define i1 @lsr_32_ne_0_64(i64 %x) {
70+
; CHECK-LABEL: lsr_32_ne_0_64:
71+
; CHECK: // %bb.0:
72+
; CHECK-NEXT: lsr x8, x0, #32
73+
; CHECK-NEXT: cmp x8, #0
74+
; CHECK-NEXT: cset w0, ne
75+
; CHECK-NEXT: ret
76+
%shr = lshr i64 %x, 32
77+
%cmp = icmp ne i64 %shr, 0
78+
ret i1 %cmp
79+
}
80+
81+
define i1 @lsr_33_ne_0_64(i64 %x) {
82+
; CHECK-LABEL: lsr_33_ne_0_64:
83+
; CHECK: // %bb.0:
84+
; CHECK-NEXT: lsr x8, x0, #33
85+
; CHECK-NEXT: cmp x8, #0
86+
; CHECK-NEXT: cset w0, ne
87+
; CHECK-NEXT: ret
88+
%shr = lshr i64 %x, 33
89+
%cmp = icmp ne i64 %shr, 0
90+
ret i1 %cmp
91+
}
92+
93+
define i1 @lsr_62_ne_0_64(i64 %x) {
94+
; CHECK-LABEL: lsr_62_ne_0_64:
95+
; CHECK: // %bb.0:
96+
; CHECK-NEXT: lsr x8, x0, #62
97+
; CHECK-NEXT: cmp x8, #0
98+
; CHECK-NEXT: cset w0, ne
99+
; CHECK-NEXT: ret
100+
%shr = lshr i64 %x, 62
101+
%cmp = icmp ne i64 %shr, 0
102+
ret i1 %cmp
103+
}
104+
105+
define i1 @lsr_63_ne_0_64(i64 %x) {
106+
; CHECK-LABEL: lsr_63_ne_0_64:
107+
; CHECK: // %bb.0:
108+
; CHECK-NEXT: lsr x0, x0, #63
109+
; CHECK-NEXT: // kill: def $w0 killed $w0 killed $x0
110+
; CHECK-NEXT: ret
111+
%shr = lshr i64 %x, 63
112+
%cmp = icmp ne i64 %shr, 0
113+
ret i1 %cmp
114+
}
115+
116+
define <4 x i1> @lsr_1_ne_0_v4i16(<4 x i16> %x) {
117+
; CHECK-LABEL: lsr_1_ne_0_v4i16:
118+
; CHECK: // %bb.0:
119+
; CHECK-NEXT: ushr v0.4h, v0.4h, #1
120+
; CHECK-NEXT: cmtst v0.4h, v0.4h, v0.4h
121+
; CHECK-NEXT: ret
122+
%shr = lshr <4 x i16> %x, <i16 1, i16 1, i16 1, i16 1>
123+
%cmp = icmp ne <4 x i16> %shr, <i16 0, i16 0, i16 0, i16 0>
124+
ret <4 x i1> %cmp
125+
}

0 commit comments

Comments
 (0)