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