@@ -133,9 +133,8 @@ entry:
133
133
134
134
define i1 @testSwapCmpWithShiftedZeroExtend16_64 (i16 %a , i64 %b ) {
135
135
; CHECK-LABEL: testSwapCmpWithShiftedZeroExtend16_64
136
- ; CHECK: ubfiz x8, x0, #2, #16
137
- ; CHECK: cmp x8, x1
138
- ; CHECK-NEXT: cset w0, hi
136
+ ; CHECK: cmp x1, w0, uxth #2
137
+ ; CHECK-NEXT: cset w0, lo
139
138
entry:
140
139
%a64 = zext i16 %a to i64
141
140
%shl.0 = shl i64 %a64 , 2
@@ -145,9 +144,8 @@ entry:
145
144
146
145
define i1 @testSwapCmpWithShiftedZeroExtend8_64 (i8 %a , i64 %b ) {
147
146
; CHECK-LABEL: testSwapCmpWithShiftedZeroExtend8_64
148
- ; CHECK: ubfiz x8, x0, #4, #8
149
- ; CHECK: cmp x8, x1
150
- ; CHECK-NEXT: cset w0, hi
147
+ ; CHECK: cmp x1, w0, uxtb #4
148
+ ; CHECK-NEXT: cset w0, lo
151
149
entry:
152
150
%a64 = zext i8 %a to i64
153
151
%shl.2 = shl i64 %a64 , 4
@@ -157,9 +155,8 @@ entry:
157
155
158
156
define i1 @testSwapCmpWithShiftedZeroExtend16_32 (i16 %a , i32 %b ) {
159
157
; CHECK-LABEL: testSwapCmpWithShiftedZeroExtend16_32
160
- ; CHECK: ubfiz w8, w0, #3, #16
161
- ; CHECK: cmp w8, w1
162
- ; CHECK-NEXT: cset w0, hi
158
+ ; CHECK: cmp w1, w0, uxth #3
159
+ ; CHECK-NEXT: cset w0, lo
163
160
entry:
164
161
%a32 = zext i16 %a to i32
165
162
%shl = shl i32 %a32 , 3
@@ -169,9 +166,8 @@ entry:
169
166
170
167
define i1 @testSwapCmpWithShiftedZeroExtend8_32 (i8 %a , i32 %b ) {
171
168
; CHECK-LABEL: testSwapCmpWithShiftedZeroExtend8_32
172
- ; CHECK: ubfiz w8, w0, #4, #8
173
- ; CHECK: cmp w8, w1
174
- ; CHECK-NEXT: cset w0, hi
169
+ ; CHECK: cmp w1, w0, uxtb #4
170
+ ; CHECK-NEXT: cset w0, lo
175
171
entry:
176
172
%a32 = zext i8 %a to i32
177
173
%shl = shl i32 %a32 , 4
@@ -181,9 +177,9 @@ entry:
181
177
182
178
define i1 @testSwapCmpWithTooLargeShiftedZeroExtend8_32 (i8 %a , i32 %b ) {
183
179
; CHECK-LABEL: testSwapCmpWithTooLargeShiftedZeroExtend8_32
184
- ; CHECK: ubfiz w8 , w0, #5, #8
185
- ; CHECK: cmp w8, w1
186
- ; CHECK-NEXT: cset w0, hi
180
+ ; CHECK: and [[REG:w[0-9]+]] , w0, #0xff
181
+ ; CHECK: cmp w1, [[REG]], lsl #5
182
+ ; CHECK-NEXT: cset w0, lo
187
183
entry:
188
184
%a32 = zext i8 %a to i32
189
185
%shl = shl i32 %a32 , 5
@@ -521,44 +517,40 @@ t1:
521
517
%shl1 = shl i64 %conv1 , 4
522
518
%na1 = sub i64 0 , %shl1
523
519
%cmp1 = icmp ne i64 %na1 , %b64
524
- ; CHECK: ubfiz x8, x1, #4, #16
525
- ; CHECK: cmn x3, x8
520
+ ; CHECK: cmn x3, w1, uxth #4
526
521
br i1 %cmp1 , label %t2 , label %end
527
522
528
523
t2:
529
524
%conv2 = zext i8 %a8 to i64
530
525
%shl2 = shl i64 %conv2 , 3
531
526
%na2 = sub i64 0 , %shl2
532
527
%cmp2 = icmp ne i64 %na2 , %b64
533
- ; CHECK: ubfiz x8, x2, #3, #8
534
- ; CHECK: cmn x3, x8
528
+ ; CHECK: cmn x3, w2, uxtb #3
535
529
br i1 %cmp2 , label %t3 , label %end
536
530
537
531
t3:
538
532
%conv3 = zext i16 %a16 to i32
539
533
%shl3 = shl i32 %conv3 , 2
540
534
%na3 = sub i32 0 , %shl3
541
535
%cmp3 = icmp ne i32 %na3 , %b32
542
- ; CHECK: ubfiz w8, w1, #2, #16
543
- ; CHECK: cmn w4, w8
536
+ ; CHECK: cmn w4, w1, uxth #2
544
537
br i1 %cmp3 , label %t4 , label %end
545
538
546
539
t4:
547
540
%conv4 = zext i8 %a8 to i32
548
541
%shl4 = shl i32 %conv4 , 1
549
542
%na4 = sub i32 0 , %shl4
550
543
%cmp4 = icmp ne i32 %na4 , %b32
551
- ; CHECK: ubfiz w8, w2, #1, #8
552
- ; CHECK: cmn w4, w8
544
+ ; CHECK: cmn w4, w2, uxtb #1
553
545
br i1 %cmp4 , label %t5 , label %end
554
546
555
547
t5:
556
548
%conv5 = zext i8 %a8 to i32
557
549
%shl5 = shl i32 %conv5 , 5
558
550
%na5 = sub i32 0 , %shl5
559
551
%cmp5 = icmp ne i32 %na5 , %b32
560
- ; CHECK: ubfiz w8 , w2, #5, #8
561
- ; CHECK: cmn w4, w8
552
+ ; CHECK: and [[REG:w[0-9]+]] , w2, #0xff
553
+ ; CHECK: cmn w4, [[REG]], lsl #5
562
554
br i1 %cmp5 , label %t6 , label %end
563
555
564
556
t6:
0 commit comments