5
5
define i1 @lt8_u8 (i8 %0 ) {
6
6
; CHECK-LABEL: lt8_u8:
7
7
; CHECK: // %bb.0:
8
- ; CHECK-NEXT: and w8, w0, #0xff
9
- ; CHECK-NEXT: cmp w8, #8
10
- ; CHECK-NEXT: cset w0, lo
8
+ ; CHECK-NEXT: tst w0, #0xf8
9
+ ; CHECK-NEXT: cset w0, eq
11
10
; CHECK-NEXT: ret
12
11
%2 = icmp ult i8 %0 , 8
13
12
ret i1 %2
@@ -16,9 +15,8 @@ define i1 @lt8_u8(i8 %0) {
16
15
define i1 @lt32_u8 (i8 %0 ) {
17
16
; CHECK-LABEL: lt32_u8:
18
17
; CHECK: // %bb.0:
19
- ; CHECK-NEXT: and w8, w0, #0xff
20
- ; CHECK-NEXT: cmp w8, #32
21
- ; CHECK-NEXT: cset w0, lo
18
+ ; CHECK-NEXT: tst w0, #0xe0
19
+ ; CHECK-NEXT: cset w0, eq
22
20
; CHECK-NEXT: ret
23
21
%2 = icmp ult i8 %0 , 32
24
22
ret i1 %2
@@ -27,9 +25,8 @@ define i1 @lt32_u8(i8 %0) {
27
25
define i1 @lt64_u8 (i8 %0 ) {
28
26
; CHECK-LABEL: lt64_u8:
29
27
; CHECK: // %bb.0:
30
- ; CHECK-NEXT: and w8, w0, #0xff
31
- ; CHECK-NEXT: cmp w8, #64
32
- ; CHECK-NEXT: cset w0, lo
28
+ ; CHECK-NEXT: tst w0, #0xc0
29
+ ; CHECK-NEXT: cset w0, eq
33
30
; CHECK-NEXT: ret
34
31
%2 = icmp ult i8 %0 , 64
35
32
ret i1 %2
@@ -98,10 +95,9 @@ define i1 @lt64_u64(i64 %0) {
98
95
define i1 @lt8_u16_and_5 (i8 %0 ) {
99
96
; CHECK-LABEL: lt8_u16_and_5:
100
97
; CHECK: // %bb.0:
101
- ; CHECK-NEXT: mov w8, #5 // =0x5
102
- ; CHECK-NEXT: and w8, w0, w8
103
- ; CHECK-NEXT: cmp w8, #16
104
- ; CHECK-NEXT: cset w0, lo
98
+ ; CHECK-NEXT: mov w8, wzr
99
+ ; CHECK-NEXT: cmp w8, #0
100
+ ; CHECK-NEXT: cset w0, eq
105
101
; CHECK-NEXT: ret
106
102
%2 = and i8 %0 , 5
107
103
%3 = icmp ult i8 %2 , 16
@@ -111,10 +107,8 @@ define i1 @lt8_u16_and_5(i8 %0) {
111
107
define i1 @lt8_u16_and_19 (i8 %0 ) {
112
108
; CHECK-LABEL: lt8_u16_and_19:
113
109
; CHECK: // %bb.0:
114
- ; CHECK-NEXT: mov w8, #19 // =0x13
115
- ; CHECK-NEXT: and w8, w0, w8
116
- ; CHECK-NEXT: cmp w8, #16
117
- ; CHECK-NEXT: cset w0, lo
110
+ ; CHECK-NEXT: tst w0, #0x10
111
+ ; CHECK-NEXT: cset w0, eq
118
112
; CHECK-NEXT: ret
119
113
%2 = and i8 %0 , 19
120
114
%3 = icmp ult i8 %2 , 16
@@ -124,9 +118,9 @@ define i1 @lt8_u16_and_19(i8 %0) {
124
118
define i1 @lt32_u16_and_7 (i32 %0 ) {
125
119
; CHECK-LABEL: lt32_u16_and_7:
126
120
; CHECK: // %bb.0:
127
- ; CHECK-NEXT: and w8, w0, #0x7
128
- ; CHECK-NEXT: cmp w8, #16
129
- ; CHECK-NEXT: cset w0, lo
121
+ ; CHECK-NEXT: mov w8, wzr
122
+ ; CHECK-NEXT: cmp w8, #0
123
+ ; CHECK-NEXT: cset w0, eq
130
124
; CHECK-NEXT: ret
131
125
%2 = and i32 %0 , 7
132
126
%3 = icmp ult i32 %2 , 16
@@ -136,10 +130,8 @@ define i1 @lt32_u16_and_7(i32 %0) {
136
130
define i1 @lt32_u16_and_21 (i32 %0 ) {
137
131
; CHECK-LABEL: lt32_u16_and_21:
138
132
; CHECK: // %bb.0:
139
- ; CHECK-NEXT: mov w8, #21 // =0x15
140
- ; CHECK-NEXT: and w8, w0, w8
141
- ; CHECK-NEXT: cmp w8, #16
142
- ; CHECK-NEXT: cset w0, lo
133
+ ; CHECK-NEXT: tst w0, #0x10
134
+ ; CHECK-NEXT: cset w0, eq
143
135
; CHECK-NEXT: ret
144
136
%2 = and i32 %0 , 21
145
137
%3 = icmp ult i32 %2 , 16
@@ -149,10 +141,9 @@ define i1 @lt32_u16_and_21(i32 %0) {
149
141
define i1 @lt64_u16_and_9 (i64 %0 ) {
150
142
; CHECK-LABEL: lt64_u16_and_9:
151
143
; CHECK: // %bb.0:
152
- ; CHECK-NEXT: mov w8, #9 // =0x9
153
- ; CHECK-NEXT: and x8, x0, x8
154
- ; CHECK-NEXT: cmp x8, #16
155
- ; CHECK-NEXT: cset w0, lo
144
+ ; CHECK-NEXT: mov x8, xzr
145
+ ; CHECK-NEXT: cmp x8, #0
146
+ ; CHECK-NEXT: cset w0, eq
156
147
; CHECK-NEXT: ret
157
148
%2 = and i64 %0 , 9
158
149
%3 = icmp ult i64 %2 , 16
@@ -162,10 +153,8 @@ define i1 @lt64_u16_and_9(i64 %0) {
162
153
define i1 @lt64_u16_and_23 (i64 %0 ) {
163
154
; CHECK-LABEL: lt64_u16_and_23:
164
155
; CHECK: // %bb.0:
165
- ; CHECK-NEXT: mov w8, #23 // =0x17
166
- ; CHECK-NEXT: and x8, x0, x8
167
- ; CHECK-NEXT: cmp x8, #16
168
- ; CHECK-NEXT: cset w0, lo
156
+ ; CHECK-NEXT: tst x0, #0x10
157
+ ; CHECK-NEXT: cset w0, eq
169
158
; CHECK-NEXT: ret
170
159
%2 = and i64 %0 , 23
171
160
%3 = icmp ult i64 %2 , 16
0 commit comments