@@ -24,12 +24,11 @@ define i8 @unsigned_sat_constant_i8_using_min(i8 %x) {
24
24
define i8 @unsigned_sat_constant_i8_using_cmp_sum (i8 %x ) {
25
25
; CHECK-LABEL: unsigned_sat_constant_i8_using_cmp_sum:
26
26
; CHECK: # %bb.0:
27
- ; CHECK-NEXT: addi 5, 3, 42
28
27
; CHECK-NEXT: rlwinm 3, 3, 0, 24, 31
28
+ ; CHECK-NEXT: addi 3, 3, 42
29
+ ; CHECK-NEXT: andi. 4, 3, 256
29
30
; CHECK-NEXT: li 4, -1
30
- ; CHECK-NEXT: clrlwi 6, 5, 24
31
- ; CHECK-NEXT: cmplw 3, 6
32
- ; CHECK-NEXT: isel 3, 4, 5, 1
31
+ ; CHECK-NEXT: isel 3, 3, 4, 2
33
32
; CHECK-NEXT: blr
34
33
%a = add i8 %x , 42
35
34
%c = icmp ugt i8 %x , %a
@@ -70,12 +69,11 @@ define i16 @unsigned_sat_constant_i16_using_min(i16 %x) {
70
69
define i16 @unsigned_sat_constant_i16_using_cmp_sum (i16 %x ) {
71
70
; CHECK-LABEL: unsigned_sat_constant_i16_using_cmp_sum:
72
71
; CHECK: # %bb.0:
73
- ; CHECK-NEXT: addi 5, 3, 42
74
72
; CHECK-NEXT: rlwinm 3, 3, 0, 16, 31
73
+ ; CHECK-NEXT: addi 3, 3, 42
74
+ ; CHECK-NEXT: andis. 4, 3, 1
75
75
; CHECK-NEXT: li 4, -1
76
- ; CHECK-NEXT: clrlwi 6, 5, 16
77
- ; CHECK-NEXT: cmplw 3, 6
78
- ; CHECK-NEXT: isel 3, 4, 5, 1
76
+ ; CHECK-NEXT: isel 3, 3, 4, 2
79
77
; CHECK-NEXT: blr
80
78
%a = add i16 %x , 42
81
79
%c = icmp ugt i16 %x , %a
@@ -117,8 +115,8 @@ define i32 @unsigned_sat_constant_i32_using_cmp_sum(i32 %x) {
117
115
; CHECK: # %bb.0:
118
116
; CHECK-NEXT: addi 5, 3, 42
119
117
; CHECK-NEXT: li 4, -1
120
- ; CHECK-NEXT: cmplw 0, 3, 5
121
- ; CHECK-NEXT: isel 3, 4, 5, 1
118
+ ; CHECK-NEXT: cmplw 0, 5, 3
119
+ ; CHECK-NEXT: isel 3, 4, 5, 0
122
120
; CHECK-NEXT: blr
123
121
%a = add i32 %x , 42
124
122
%c = icmp ugt i32 %x , %a
@@ -160,8 +158,8 @@ define i64 @unsigned_sat_constant_i64_using_cmp_sum(i64 %x) {
160
158
; CHECK: # %bb.0:
161
159
; CHECK-NEXT: addi 5, 3, 42
162
160
; CHECK-NEXT: li 4, -1
163
- ; CHECK-NEXT: cmpld 3, 5
164
- ; CHECK-NEXT: isel 3, 4, 5, 1
161
+ ; CHECK-NEXT: cmpld 5, 3
162
+ ; CHECK-NEXT: isel 3, 4, 5, 0
165
163
; CHECK-NEXT: blr
166
164
%a = add i64 %x , 42
167
165
%c = icmp ugt i64 %x , %a
@@ -204,12 +202,12 @@ define i8 @unsigned_sat_variable_i8_using_min(i8 %x, i8 %y) {
204
202
define i8 @unsigned_sat_variable_i8_using_cmp_sum (i8 %x , i8 %y ) {
205
203
; CHECK-LABEL: unsigned_sat_variable_i8_using_cmp_sum:
206
204
; CHECK: # %bb.0:
207
- ; CHECK-NEXT: add 4, 3, 4
205
+ ; CHECK-NEXT: rlwinm 4, 4, 0, 24, 31
208
206
; CHECK-NEXT: rlwinm 3, 3, 0, 24, 31
209
- ; CHECK-NEXT: li 5, -1
210
- ; CHECK-NEXT: clrlwi 6, 4, 24
211
- ; CHECK-NEXT: cmplw 3, 6
212
- ; CHECK-NEXT: isel 3, 5 , 4, 1
207
+ ; CHECK-NEXT: add 3, 3, 4
208
+ ; CHECK-NEXT: andi. 4, 3, 256
209
+ ; CHECK-NEXT: li 4, -1
210
+ ; CHECK-NEXT: isel 3, 3 , 4, 2
213
211
; CHECK-NEXT: blr
214
212
%a = add i8 %x , %y
215
213
%c = icmp ugt i8 %x , %a
@@ -255,12 +253,12 @@ define i16 @unsigned_sat_variable_i16_using_min(i16 %x, i16 %y) {
255
253
define i16 @unsigned_sat_variable_i16_using_cmp_sum (i16 %x , i16 %y ) {
256
254
; CHECK-LABEL: unsigned_sat_variable_i16_using_cmp_sum:
257
255
; CHECK: # %bb.0:
258
- ; CHECK-NEXT: add 4, 3, 4
256
+ ; CHECK-NEXT: rlwinm 4, 4, 0, 16, 31
259
257
; CHECK-NEXT: rlwinm 3, 3, 0, 16, 31
260
- ; CHECK-NEXT: li 5, -1
261
- ; CHECK-NEXT: clrlwi 6, 4, 16
262
- ; CHECK-NEXT: cmplw 3, 6
263
- ; CHECK-NEXT: isel 3, 5 , 4, 1
258
+ ; CHECK-NEXT: add 3, 3, 4
259
+ ; CHECK-NEXT: andis. 4, 3, 1
260
+ ; CHECK-NEXT: li 4, -1
261
+ ; CHECK-NEXT: isel 3, 3 , 4, 2
264
262
; CHECK-NEXT: blr
265
263
%a = add i16 %x , %y
266
264
%c = icmp ugt i16 %x , %a
@@ -306,8 +304,8 @@ define i32 @unsigned_sat_variable_i32_using_cmp_sum(i32 %x, i32 %y) {
306
304
; CHECK: # %bb.0:
307
305
; CHECK-NEXT: add 4, 3, 4
308
306
; CHECK-NEXT: li 5, -1
309
- ; CHECK-NEXT: cmplw 0, 3, 4
310
- ; CHECK-NEXT: isel 3, 5, 4, 1
307
+ ; CHECK-NEXT: cmplw 0, 4, 3
308
+ ; CHECK-NEXT: isel 3, 5, 4, 0
311
309
; CHECK-NEXT: blr
312
310
%a = add i32 %x , %y
313
311
%c = icmp ugt i32 %x , %a
@@ -351,8 +349,8 @@ define i64 @unsigned_sat_variable_i64_using_cmp_sum(i64 %x, i64 %y) {
351
349
; CHECK: # %bb.0:
352
350
; CHECK-NEXT: add 4, 3, 4
353
351
; CHECK-NEXT: li 5, -1
354
- ; CHECK-NEXT: cmpld 3, 4
355
- ; CHECK-NEXT: isel 3, 5, 4, 1
352
+ ; CHECK-NEXT: cmpld 4, 3
353
+ ; CHECK-NEXT: isel 3, 5, 4, 0
356
354
; CHECK-NEXT: blr
357
355
%a = add i64 %x , %y
358
356
%c = icmp ugt i64 %x , %a
0 commit comments