@@ -118,8 +118,8 @@ define i32 @icmp_div(i16 %a, i16 %c) {
118
118
; CHECK-NEXT: [[TOBOOL:%.*]] = icmp eq i16 [[A:%.*]], 0
119
119
; CHECK-NEXT: br i1 [[TOBOOL]], label [[THEN:%.*]], label [[EXIT:%.*]]
120
120
; CHECK: then:
121
- ; CHECK-NEXT: [[CMP :%.*]] = icmp eq i16 [[C:%.*]], 0
122
- ; CHECK-NEXT: [[TMP0:%.*]] = sext i1 [[CMP ]] to i32
121
+ ; CHECK-NEXT: [[CMP_NOT :%.*]] = icmp eq i16 [[C:%.*]], 0
122
+ ; CHECK-NEXT: [[TMP0:%.*]] = sext i1 [[CMP_NOT ]] to i32
123
123
; CHECK-NEXT: br label [[EXIT]]
124
124
; CHECK: exit:
125
125
; CHECK-NEXT: [[PHI:%.*]] = phi i32 [ -1, [[ENTRY:%.*]] ], [ [[TMP0]], [[THEN]] ]
@@ -173,8 +173,8 @@ define i32 @icmp_div3(i16 %a, i16 %c) {
173
173
; CHECK-NEXT: [[TOBOOL:%.*]] = icmp eq i16 [[A:%.*]], 0
174
174
; CHECK-NEXT: br i1 [[TOBOOL]], label [[THEN:%.*]], label [[EXIT:%.*]]
175
175
; CHECK: then:
176
- ; CHECK-NEXT: [[CMP :%.*]] = icmp eq i16 [[C:%.*]], 0
177
- ; CHECK-NEXT: [[TMP0:%.*]] = sext i1 [[CMP ]] to i32
176
+ ; CHECK-NEXT: [[CMP_NOT :%.*]] = icmp eq i16 [[C:%.*]], 0
177
+ ; CHECK-NEXT: [[TMP0:%.*]] = sext i1 [[CMP_NOT ]] to i32
178
178
; CHECK-NEXT: br label [[EXIT]]
179
179
; CHECK: exit:
180
180
; CHECK-NEXT: [[PHI:%.*]] = phi i32 [ -1, [[ENTRY:%.*]] ], [ [[TMP0]], [[THEN]] ]
@@ -381,8 +381,8 @@ define i1 @sdiv_eq_smin_use(i32 %x, i32 %y) {
381
381
382
382
define i1 @sdiv_x_by_const_cmp_x (i32 %x ) {
383
383
; CHECK-LABEL: @sdiv_x_by_const_cmp_x(
384
- ; CHECK-NEXT: [[TMP1 :%.*]] = icmp eq i32 [[X:%.*]], 0
385
- ; CHECK-NEXT: ret i1 [[TMP1 ]]
384
+ ; CHECK-NEXT: [[R :%.*]] = icmp eq i32 [[X:%.*]], 0
385
+ ; CHECK-NEXT: ret i1 [[R ]]
386
386
;
387
387
%v = sdiv i32 %x , 13
388
388
%r = icmp eq i32 %v , %x
@@ -403,8 +403,8 @@ define i1 @udiv_x_by_const_cmp_x(i32 %x) {
403
403
404
404
define i1 @lshr_x_by_const_cmp_x (i32 %x ) {
405
405
; CHECK-LABEL: @lshr_x_by_const_cmp_x(
406
- ; CHECK-NEXT: [[TMP1 :%.*]] = icmp eq i32 [[X:%.*]], 0
407
- ; CHECK-NEXT: ret i1 [[TMP1 ]]
406
+ ; CHECK-NEXT: [[R :%.*]] = icmp eq i32 [[X:%.*]], 0
407
+ ; CHECK-NEXT: ret i1 [[R ]]
408
408
;
409
409
%v = lshr i32 %x , 1
410
410
%r = icmp eq i32 %v , %x
@@ -421,6 +421,17 @@ define <4 x i1> @lshr_by_const_cmp_sle_value(<4 x i32> %x) {
421
421
ret <4 x i1 > %r
422
422
}
423
423
424
+ define <4 x i1 > @lshr_by_const_cmp_sle_value_non_splat (<4 x i32 > %x ) {
425
+ ; CHECK-LABEL: @lshr_by_const_cmp_sle_value_non_splat(
426
+ ; CHECK-NEXT: [[V:%.*]] = lshr <4 x i32> [[X:%.*]], <i32 3, i32 3, i32 3, i32 5>
427
+ ; CHECK-NEXT: [[R:%.*]] = icmp sle <4 x i32> [[V]], [[X]]
428
+ ; CHECK-NEXT: ret <4 x i1> [[R]]
429
+ ;
430
+ %v = lshr <4 x i32 > %x , <i32 3 , i32 3 , i32 3 , i32 5 >
431
+ %r = icmp sle <4 x i32 > %v , %x
432
+ ret <4 x i1 > %r
433
+ }
434
+
424
435
define i1 @lshr_by_const_cmp_sge_value (i32 %x ) {
425
436
; CHECK-LABEL: @lshr_by_const_cmp_sge_value(
426
437
; CHECK-NEXT: [[R:%.*]] = icmp slt i32 [[X:%.*]], 1
0 commit comments