1- ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-globals
1+ ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
22; RUN: opt < %s -passes=instcombine -S | FileCheck %s
33
44define i32 @select_or_icmp (i32 %x , i32 %y , i32 %z ) {
@@ -114,47 +114,47 @@ define i32 @select_or_icmp_inv(i32 %x, i32 %y, i32 %z) {
114114
115115; Below used to be negative tests in InstSimplify, but are no more negative cases here
116116
117- define i32 @select_and_icmp_pred_bad_1 (i32 %x , i32 %y , i32 %z ) !prof !0 {
117+ define i32 @select_and_icmp_pred_bad_1 (i32 %x , i32 %y , i32 %z ) {
118118; CHECK-LABEL: @select_and_icmp_pred_bad_1(
119- ; CHECK-NEXT: [[B_NOT:%.*]] = icmp eq i32 [[Y:%.*]], [[Z:%.* ]]
120- ; CHECK-NEXT: [[D:%.*]] = select i1 [[B_NOT]], i32 [[X:%.* ]], i32 [[Z]], !prof [[PROF1:![0-9]+ ]]
119+ ; CHECK-NEXT: [[B_NOT:%.*]] = icmp eq i32 [[Y:%.*]], [[Z]]
120+ ; CHECK-NEXT: [[D:%.*]] = select i1 [[B_NOT]], i32 [[X]], i32 [[Z]]
121121; CHECK-NEXT: ret i32 [[D]]
122122;
123123 %A = icmp eq i32 %x , %z
124124 %B = icmp ne i32 %y , %z
125125 %C = or i1 %A , %B
126- %D = select i1 %C , i32 %z , i32 %x , !prof !1
126+ %D = select i1 %C , i32 %z , i32 %x
127127 ret i32 %D
128128}
129129
130- define i32 @select_and_icmp_pred_bad_2 (i32 %x , i32 %y , i32 %z ) !prof !0 {
130+ define i32 @select_and_icmp_pred_bad_2 (i32 %x , i32 %y , i32 %z ) {
131131; CHECK-LABEL: @select_and_icmp_pred_bad_2(
132- ; CHECK-NEXT: ret i32 [[Z:%.* ]]
132+ ; CHECK-NEXT: ret i32 [[Z]]
133133;
134134 %A = icmp ne i32 %x , %z
135135 %B = icmp eq i32 %y , %z
136136 %C = or i1 %A , %B
137- %D = select i1 %C , i32 %z , i32 %x , !prof !1
137+ %D = select i1 %C , i32 %z , i32 %x
138138 ret i32 %D
139139}
140140
141- define i32 @select_and_icmp_pred_bad_3 (i32 %x , i32 %y , i32 %z ) !prof !0 {
141+ define i32 @select_and_icmp_pred_bad_3 (i32 %x , i32 %y , i32 %z ) {
142142; CHECK-LABEL: @select_and_icmp_pred_bad_3(
143- ; CHECK-NEXT: [[B:%.*]] = icmp eq i32 [[Y:%.*]], [[Z:%.* ]]
144- ; CHECK-NEXT: [[D:%.*]] = select i1 [[B]], i32 [[Z]], i32 [[X:%.*]], !prof [[PROF2:![0-9]+ ]]
143+ ; CHECK-NEXT: [[B:%.*]] = icmp eq i32 [[Y:%.*]], [[Z]]
144+ ; CHECK-NEXT: [[D:%.*]] = select i1 [[B]], i32 [[Z]], i32 [[X]]
145145; CHECK-NEXT: ret i32 [[D]]
146146;
147147 %A = icmp eq i32 %x , %z
148148 %B = icmp eq i32 %y , %z
149149 %C = or i1 %A , %B
150- %D = select i1 %C , i32 %z , i32 %x , !prof !1
150+ %D = select i1 %C , i32 %z , i32 %x
151151 ret i32 %D
152152}
153153
154154define i32 @select_and_icmp_pred_bad_4 (i32 %x , i32 %y , i32 %z ) {
155155; CHECK-LABEL: @select_and_icmp_pred_bad_4(
156- ; CHECK-NEXT: [[B_NOT:%.*]] = icmp eq i32 [[Y:%.*]], [[Z:%.* ]]
157- ; CHECK-NEXT: [[D:%.*]] = select i1 [[B_NOT]], i32 [[X:%.* ]], i32 [[Z]]
156+ ; CHECK-NEXT: [[B_NOT:%.*]] = icmp eq i32 [[Y:%.*]], [[Z]]
157+ ; CHECK-NEXT: [[D:%.*]] = select i1 [[B_NOT]], i32 [[X]], i32 [[Z]]
158158; CHECK-NEXT: ret i32 [[D]]
159159;
160160 %A = icmp ne i32 %x , %z
@@ -166,8 +166,8 @@ define i32 @select_and_icmp_pred_bad_4(i32 %x, i32 %y, i32 %z) {
166166
167167define i32 @select_or_icmp_alt_bad_1 (i32 %x , i32 %y , i32 %z ) {
168168; CHECK-LABEL: @select_or_icmp_alt_bad_1(
169- ; CHECK-NEXT: [[B_NOT:%.*]] = icmp eq i32 [[Y:%.*]], [[Z:%.* ]]
170- ; CHECK-NEXT: [[D:%.*]] = select i1 [[B_NOT]], i32 [[Z]], i32 [[X:%.* ]]
169+ ; CHECK-NEXT: [[B_NOT:%.*]] = icmp eq i32 [[Y:%.*]], [[Z]]
170+ ; CHECK-NEXT: [[D:%.*]] = select i1 [[B_NOT]], i32 [[Z]], i32 [[X]]
171171; CHECK-NEXT: ret i32 [[D]]
172172;
173173 %A = icmp eq i32 %x , %z
@@ -179,7 +179,7 @@ define i32 @select_or_icmp_alt_bad_1(i32 %x, i32 %y, i32 %z) {
179179
180180define i32 @select_or_icmp_alt_bad_2 (i32 %x , i32 %y , i32 %z ) {
181181; CHECK-LABEL: @select_or_icmp_alt_bad_2(
182- ; CHECK-NEXT: ret i32 [[X:%.* ]]
182+ ; CHECK-NEXT: ret i32 [[X]]
183183;
184184 %A = icmp ne i32 %x , %z
185185 %B = icmp eq i32 %y , %z
@@ -190,8 +190,8 @@ define i32 @select_or_icmp_alt_bad_2(i32 %x, i32 %y, i32 %z) {
190190
191191define i32 @select_or_icmp_alt_bad_3 (i32 %x , i32 %y , i32 %z ) {
192192; CHECK-LABEL: @select_or_icmp_alt_bad_3(
193- ; CHECK-NEXT: [[B:%.*]] = icmp eq i32 [[Y:%.*]], [[Z:%.* ]]
194- ; CHECK-NEXT: [[D:%.*]] = select i1 [[B]], i32 [[X:%.* ]], i32 [[Z]]
193+ ; CHECK-NEXT: [[B:%.*]] = icmp eq i32 [[Y:%.*]], [[Z]]
194+ ; CHECK-NEXT: [[D:%.*]] = select i1 [[B]], i32 [[X]], i32 [[Z]]
195195; CHECK-NEXT: ret i32 [[D]]
196196;
197197 %A = icmp eq i32 %x , %z
@@ -203,8 +203,8 @@ define i32 @select_or_icmp_alt_bad_3(i32 %x, i32 %y, i32 %z) {
203203
204204define i32 @select_or_icmp_alt_bad_4 (i32 %x , i32 %y , i32 %z ) {
205205; CHECK-LABEL: @select_or_icmp_alt_bad_4(
206- ; CHECK-NEXT: [[B_NOT:%.*]] = icmp eq i32 [[Y:%.*]], [[Z:%.* ]]
207- ; CHECK-NEXT: [[D:%.*]] = select i1 [[B_NOT]], i32 [[Z]], i32 [[X:%.* ]]
206+ ; CHECK-NEXT: [[B_NOT:%.*]] = icmp eq i32 [[Y:%.*]], [[Z]]
207+ ; CHECK-NEXT: [[D:%.*]] = select i1 [[B_NOT]], i32 [[Z]], i32 [[X]]
208208; CHECK-NEXT: ret i32 [[D]]
209209;
210210 %A = icmp ne i32 %x , %z
@@ -321,11 +321,3 @@ define i32 @select_or_icmp_alt_bad_false_val(i32 %x, i32 %y, i32 %z, i32 %k) {
321321 %D = select i1 %C , i32 %x , i32 %k
322322 ret i32 %D
323323}
324-
325- !0 = !{!"function_entry_count" , i64 1000 }
326- !1 = !{!"branch_weights" , i32 2 , i32 3 }
327- ;.
328- ; CHECK: [[META0:![0-9]+]] = !{!"function_entry_count", i64 1000}
329- ; CHECK: [[PROF1]] = !{!"branch_weights", i32 3, i32 2}
330- ; CHECK: [[PROF2]] = !{!"branch_weights", i32 2, i32 3}
331- ;.
0 commit comments