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
2
2
; RUN: opt < %s -passes=instcombine -S | FileCheck %s
3
3
4
4
define 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) {
114
114
115
115
; Below used to be negative tests in InstSimplify, but are no more negative cases here
116
116
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 ) {
118
118
; 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]]
121
121
; CHECK-NEXT: ret i32 [[D]]
122
122
;
123
123
%A = icmp eq i32 %x , %z
124
124
%B = icmp ne i32 %y , %z
125
125
%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
127
127
ret i32 %D
128
128
}
129
129
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 ) {
131
131
; CHECK-LABEL: @select_and_icmp_pred_bad_2(
132
- ; CHECK-NEXT: ret i32 [[Z:%.* ]]
132
+ ; CHECK-NEXT: ret i32 [[Z]]
133
133
;
134
134
%A = icmp ne i32 %x , %z
135
135
%B = icmp eq i32 %y , %z
136
136
%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
138
138
ret i32 %D
139
139
}
140
140
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 ) {
142
142
; 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]]
145
145
; CHECK-NEXT: ret i32 [[D]]
146
146
;
147
147
%A = icmp eq i32 %x , %z
148
148
%B = icmp eq i32 %y , %z
149
149
%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
151
151
ret i32 %D
152
152
}
153
153
154
154
define i32 @select_and_icmp_pred_bad_4 (i32 %x , i32 %y , i32 %z ) {
155
155
; 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]]
158
158
; CHECK-NEXT: ret i32 [[D]]
159
159
;
160
160
%A = icmp ne i32 %x , %z
@@ -166,8 +166,8 @@ define i32 @select_and_icmp_pred_bad_4(i32 %x, i32 %y, i32 %z) {
166
166
167
167
define i32 @select_or_icmp_alt_bad_1 (i32 %x , i32 %y , i32 %z ) {
168
168
; 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]]
171
171
; CHECK-NEXT: ret i32 [[D]]
172
172
;
173
173
%A = icmp eq i32 %x , %z
@@ -179,7 +179,7 @@ define i32 @select_or_icmp_alt_bad_1(i32 %x, i32 %y, i32 %z) {
179
179
180
180
define i32 @select_or_icmp_alt_bad_2 (i32 %x , i32 %y , i32 %z ) {
181
181
; CHECK-LABEL: @select_or_icmp_alt_bad_2(
182
- ; CHECK-NEXT: ret i32 [[X:%.* ]]
182
+ ; CHECK-NEXT: ret i32 [[X]]
183
183
;
184
184
%A = icmp ne i32 %x , %z
185
185
%B = icmp eq i32 %y , %z
@@ -190,8 +190,8 @@ define i32 @select_or_icmp_alt_bad_2(i32 %x, i32 %y, i32 %z) {
190
190
191
191
define i32 @select_or_icmp_alt_bad_3 (i32 %x , i32 %y , i32 %z ) {
192
192
; 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]]
195
195
; CHECK-NEXT: ret i32 [[D]]
196
196
;
197
197
%A = icmp eq i32 %x , %z
@@ -203,8 +203,8 @@ define i32 @select_or_icmp_alt_bad_3(i32 %x, i32 %y, i32 %z) {
203
203
204
204
define i32 @select_or_icmp_alt_bad_4 (i32 %x , i32 %y , i32 %z ) {
205
205
; 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]]
208
208
; CHECK-NEXT: ret i32 [[D]]
209
209
;
210
210
%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) {
321
321
%D = select i1 %C , i32 %x , i32 %k
322
322
ret i32 %D
323
323
}
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