Skip to content

Commit 528aa2b

Browse files
Acthinksdtcxzyw
andcommitted
get the right Pred
Co-authored-by: Yingwei Zheng <dtcxzyw@qq.com>
1 parent e633e7e commit 528aa2b

File tree

2 files changed

+11
-11
lines changed

2 files changed

+11
-11
lines changed

llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4495,8 +4495,8 @@ Instruction *InstCombinerImpl::foldSelectICmp(CmpPredicate Pred, SelectInst *SI,
44954495
"Invertible Operand0 mismatch");
44964496
auto *NewSI = Builder.CreateSelect(Cond, Values0->second,
44974497
Values1->second, SI->getName());
4498-
return ICmpInst::Create(Instruction::ICmp, I.getPredicate(), NewSI,
4499-
Values0->first, I.getName());
4498+
return ICmpInst::Create(Instruction::ICmp, Pred, NewSI, Values0->first,
4499+
I.getName());
45004500
}
45014501
}
45024502
}

llvm/test/Transforms/InstCombine/icmp-select-operator-constant.ll

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ define i1 @shl_nsw_scmp(i8 %a, i1 %cond) {
77
; CHECK-LABEL: define i1 @shl_nsw_scmp(
88
; CHECK-SAME: i8 [[A:%.*]], i1 [[COND:%.*]]) {
99
; CHECK-NEXT: [[SEL1:%.*]] = select i1 [[COND]], i8 1, i8 2
10-
; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i8 [[SEL1]], [[A]]
10+
; CHECK-NEXT: [[CMP:%.*]] = icmp slt i8 [[SEL1]], [[A]]
1111
; CHECK-NEXT: ret i1 [[CMP]]
1212
;
1313
%a_shl = shl nsw i8 %a, 3
@@ -47,7 +47,7 @@ define i1 @shl_nsw_ucmp(i8 %a, i1 %cond) {
4747
; CHECK-LABEL: define i1 @shl_nsw_ucmp(
4848
; CHECK-SAME: i8 [[A:%.*]], i1 [[COND:%.*]]) {
4949
; CHECK-NEXT: [[SEL1:%.*]] = select i1 [[COND]], i8 1, i8 3
50-
; CHECK-NEXT: [[CMP:%.*]] = icmp ugt i8 [[SEL1]], [[A]]
50+
; CHECK-NEXT: [[CMP:%.*]] = icmp ult i8 [[SEL1]], [[A]]
5151
; CHECK-NEXT: ret i1 [[CMP]]
5252
;
5353
%a_shl = shl nsw i8 %a, 3
@@ -62,7 +62,7 @@ define i1 @shl_nuw_ucmp(i8 %a, i1 %cond) {
6262
; CHECK-LABEL: define i1 @shl_nuw_ucmp(
6363
; CHECK-SAME: i8 [[A:%.*]], i1 [[COND:%.*]]) {
6464
; CHECK-NEXT: [[SEL1:%.*]] = select i1 [[COND]], i8 1, i8 4
65-
; CHECK-NEXT: [[CMP:%.*]] = icmp ult i8 [[SEL1]], [[A]]
65+
; CHECK-NEXT: [[CMP:%.*]] = icmp ugt i8 [[SEL1]], [[A]]
6666
; CHECK-NEXT: ret i1 [[CMP]]
6767
;
6868
%a_shl = shl nuw i8 %a, 3
@@ -106,7 +106,7 @@ define i1 @ashr_exact_ucmp(i8 %a, i1 %cond) {
106106
; CHECK-LABEL: define i1 @ashr_exact_ucmp(
107107
; CHECK-SAME: i8 [[A:%.*]], i1 [[COND:%.*]]) {
108108
; CHECK-NEXT: [[SEL1:%.*]] = select i1 [[COND]], i8 48, i8 16
109-
; CHECK-NEXT: [[CMP:%.*]] = icmp uge i8 [[SEL1]], [[A]]
109+
; CHECK-NEXT: [[CMP:%.*]] = icmp ule i8 [[SEL1]], [[A]]
110110
; CHECK-NEXT: ret i1 [[CMP]]
111111
;
112112
%a_shl = ashr exact i8 %a, 2
@@ -119,7 +119,7 @@ define i1 @ashr_exact_scmp(i8 %a, i1 %cond) {
119119
; CHECK-LABEL: define i1 @ashr_exact_scmp(
120120
; CHECK-SAME: i8 [[A:%.*]], i1 [[COND:%.*]]) {
121121
; CHECK-NEXT: [[SEL1:%.*]] = select i1 [[COND]], i8 32, i8 16
122-
; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i8 [[SEL1]], [[A]]
122+
; CHECK-NEXT: [[CMP:%.*]] = icmp slt i8 [[SEL1]], [[A]]
123123
; CHECK-NEXT: ret i1 [[CMP]]
124124
;
125125
%a_shl = ashr exact i8 %a, 2
@@ -134,7 +134,7 @@ define i1 @lshr_exact_ucmp(i8 %a, i1 %cond) {
134134
; CHECK-LABEL: define i1 @lshr_exact_ucmp(
135135
; CHECK-SAME: i8 [[A:%.*]], i1 [[COND:%.*]]) {
136136
; CHECK-NEXT: [[SEL1:%.*]] = select i1 [[COND]], i8 2, i8 6
137-
; CHECK-NEXT: [[CMP:%.*]] = icmp ugt i8 [[SEL1]], [[A]]
137+
; CHECK-NEXT: [[CMP:%.*]] = icmp ult i8 [[SEL1]], [[A]]
138138
; CHECK-NEXT: ret i1 [[CMP]]
139139
;
140140
%a_shl = lshr exact i8 %a, 1
@@ -147,7 +147,7 @@ define i1 @lshr_exact_scmp(i8 %a, i1 %cond) {
147147
; CHECK-LABEL: define i1 @lshr_exact_scmp(
148148
; CHECK-SAME: i8 [[A:%.*]], i1 [[COND:%.*]]) {
149149
; CHECK-NEXT: [[SEL1:%.*]] = select i1 [[COND]], i8 2, i8 6
150-
; CHECK-NEXT: [[CMP:%.*]] = icmp uge i8 [[SEL1]], [[A]]
150+
; CHECK-NEXT: [[CMP:%.*]] = icmp ule i8 [[SEL1]], [[A]]
151151
; CHECK-NEXT: ret i1 [[CMP]]
152152
;
153153
%a_shl = lshr exact i8 %a, 1
@@ -232,7 +232,7 @@ define i1 @or_disjoint_ucmp(i8 %a, i1 %cond) {
232232
; CHECK-LABEL: define i1 @or_disjoint_ucmp(
233233
; CHECK-SAME: i8 [[A:%.*]], i1 [[COND:%.*]]) {
234234
; CHECK-NEXT: [[SEL1:%.*]] = select i1 [[COND]], i8 8, i8 4
235-
; CHECK-NEXT: [[CMP:%.*]] = icmp ult i8 [[SEL1]], [[A]]
235+
; CHECK-NEXT: [[CMP:%.*]] = icmp ugt i8 [[SEL1]], [[A]]
236236
; CHECK-NEXT: ret i1 [[CMP]]
237237
;
238238
%or = or disjoint i8 %a, 3
@@ -245,7 +245,7 @@ define i1 @or_disjoint_scmp(i8 %a, i1 %cond) {
245245
; CHECK-LABEL: define i1 @or_disjoint_scmp(
246246
; CHECK-SAME: i8 [[A:%.*]], i1 [[COND:%.*]]) {
247247
; CHECK-NEXT: [[SEL1:%.*]] = select i1 [[COND]], i8 8, i8 4
248-
; CHECK-NEXT: [[CMP:%.*]] = icmp slt i8 [[SEL1]], [[A]]
248+
; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i8 [[SEL1]], [[A]]
249249
; CHECK-NEXT: ret i1 [[CMP]]
250250
;
251251
%or = or disjoint i8 %a, 3

0 commit comments

Comments
 (0)