Skip to content

Commit c0c1049

Browse files
committed
[InstCombine] Add non-splat test for (icmp (lshr x, y), x); NFC
1 parent ffdcb0d commit c0c1049

File tree

1 file changed

+19
-8
lines changed

1 file changed

+19
-8
lines changed

llvm/test/Transforms/InstCombine/icmp-div-constant.ll

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -118,8 +118,8 @@ define i32 @icmp_div(i16 %a, i16 %c) {
118118
; CHECK-NEXT: [[TOBOOL:%.*]] = icmp eq i16 [[A:%.*]], 0
119119
; CHECK-NEXT: br i1 [[TOBOOL]], label [[THEN:%.*]], label [[EXIT:%.*]]
120120
; 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
123123
; CHECK-NEXT: br label [[EXIT]]
124124
; CHECK: exit:
125125
; CHECK-NEXT: [[PHI:%.*]] = phi i32 [ -1, [[ENTRY:%.*]] ], [ [[TMP0]], [[THEN]] ]
@@ -173,8 +173,8 @@ define i32 @icmp_div3(i16 %a, i16 %c) {
173173
; CHECK-NEXT: [[TOBOOL:%.*]] = icmp eq i16 [[A:%.*]], 0
174174
; CHECK-NEXT: br i1 [[TOBOOL]], label [[THEN:%.*]], label [[EXIT:%.*]]
175175
; 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
178178
; CHECK-NEXT: br label [[EXIT]]
179179
; CHECK: exit:
180180
; CHECK-NEXT: [[PHI:%.*]] = phi i32 [ -1, [[ENTRY:%.*]] ], [ [[TMP0]], [[THEN]] ]
@@ -381,8 +381,8 @@ define i1 @sdiv_eq_smin_use(i32 %x, i32 %y) {
381381

382382
define i1 @sdiv_x_by_const_cmp_x(i32 %x) {
383383
; 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]]
386386
;
387387
%v = sdiv i32 %x, 13
388388
%r = icmp eq i32 %v, %x
@@ -403,8 +403,8 @@ define i1 @udiv_x_by_const_cmp_x(i32 %x) {
403403

404404
define i1 @lshr_x_by_const_cmp_x(i32 %x) {
405405
; 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]]
408408
;
409409
%v = lshr i32 %x, 1
410410
%r = icmp eq i32 %v, %x
@@ -421,6 +421,17 @@ define <4 x i1> @lshr_by_const_cmp_sle_value(<4 x i32> %x) {
421421
ret <4 x i1> %r
422422
}
423423

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+
424435
define i1 @lshr_by_const_cmp_sge_value(i32 %x) {
425436
; CHECK-LABEL: @lshr_by_const_cmp_sge_value(
426437
; CHECK-NEXT: [[R:%.*]] = icmp slt i32 [[X:%.*]], 1

0 commit comments

Comments
 (0)