@@ -256,27 +256,27 @@ define <2 x i1> @not_logical_or2(i1 %b, <2 x i32> %a) {
256256 ret <2 x i1 > %and
257257}
258258
259- define i1 @bools_logical_commute0 (i1 %a , i1 %b , i1 %c ) {
259+ define i1 @bools_logical_commute0 (i1 %a , i1 %b , i1 %c ) !prof !0 {
260260; CHECK-LABEL: @bools_logical_commute0(
261- ; CHECK-NEXT: [[OR:%.*]] = select i1 [[C:%.*]], i1 [[B:%.*]], i1 [[A:%.*]]
261+ ; CHECK-NEXT: [[OR:%.*]] = select i1 [[C:%.*]], i1 [[B:%.*]], i1 [[A:%.*]], !prof [[PROF2]]
262262; CHECK-NEXT: ret i1 [[OR]]
263263;
264264 %not = xor i1 %c , -1
265- %and1 = select i1 %not , i1 %a , i1 false
266- %and2 = select i1 %c , i1 %b , i1 false
267- %or = select i1 %and1 , i1 true , i1 %and2
265+ %and1 = select i1 %not , i1 %a , i1 false , !prof!1
266+ %and2 = select i1 %c , i1 %b , i1 false , !prof !2
267+ %or = select i1 %and1 , i1 true , i1 %and2 , !prof !3
268268 ret i1 %or
269269}
270270
271- define i1 @bools_logical_commute0_and1 (i1 %a , i1 %b , i1 %c ) {
271+ define i1 @bools_logical_commute0_and1 (i1 %a , i1 %b , i1 %c ) !prof !0 {
272272; CHECK-LABEL: @bools_logical_commute0_and1(
273- ; CHECK-NEXT: [[OR:%.*]] = select i1 [[C:%.*]], i1 [[B:%.*]], i1 [[A:%.*]]
273+ ; CHECK-NEXT: [[OR:%.*]] = select i1 [[C:%.*]], i1 [[B:%.*]], i1 [[A:%.*]], !prof [[PROF1]]
274274; CHECK-NEXT: ret i1 [[OR]]
275275;
276276 %not = xor i1 %c , -1
277277 %and1 = and i1 %not , %a
278- %and2 = select i1 %c , i1 %b , i1 false
279- %or = select i1 %and1 , i1 true , i1 %and2
278+ %and2 = select i1 %c , i1 %b , i1 false , !prof !1
279+ %or = select i1 %and1 , i1 true , i1 %and2 , !prof !2
280280 ret i1 %or
281281}
282282
@@ -292,15 +292,15 @@ define i1 @bools_logical_commute0_and2(i1 %a, i1 %b, i1 %c) {
292292 ret i1 %or
293293}
294294
295- define i1 @bools_logical_commute0_and1_and2 (i1 %a , i1 %b , i1 %c ) {
295+ define i1 @bools_logical_commute0_and1_and2 (i1 %a , i1 %b , i1 %c ) !prof !0 {
296296; CHECK-LABEL: @bools_logical_commute0_and1_and2(
297- ; CHECK-NEXT: [[OR:%.*]] = select i1 [[C:%.*]], i1 [[B:%.*]], i1 [[A:%.*]]
297+ ; CHECK-NEXT: [[OR:%.*]] = select i1 [[C:%.*]], i1 [[B:%.*]], i1 [[A:%.*]], !prof [[PROF3:![0-9]+]]
298298; CHECK-NEXT: ret i1 [[OR]]
299299;
300300 %not = xor i1 %c , -1
301301 %and1 = and i1 %not , %a
302302 %and2 = and i1 %c , %b
303- %or = select i1 %and1 , i1 true , i1 %and2
303+ %or = select i1 %and1 , i1 true , i1 %and2 , !prof !1
304304 ret i1 %or
305305}
306306
@@ -457,27 +457,27 @@ define i1 @bools_logical_commute3_and1_and2(i1 %b, i1 %c) {
457457 ret i1 %or
458458}
459459
460- define i1 @bools2_logical_commute0 (i1 %a , i1 %b , i1 %c ) {
460+ define i1 @bools2_logical_commute0 (i1 %a , i1 %b , i1 %c ) !prof !0 {
461461; CHECK-LABEL: @bools2_logical_commute0(
462- ; CHECK-NEXT: [[OR:%.*]] = select i1 [[C:%.*]], i1 [[A:%.*]], i1 [[B:%.*]]
462+ ; CHECK-NEXT: [[OR:%.*]] = select i1 [[C:%.*]], i1 [[A:%.*]], i1 [[B:%.*]], !prof [[PROF1]]
463463; CHECK-NEXT: ret i1 [[OR]]
464464;
465465 %not = xor i1 %c , -1
466- %and1 = select i1 %c , i1 %a , i1 false
467- %and2 = select i1 %not , i1 %b , i1 false
468- %or = select i1 %and1 , i1 true , i1 %and2
466+ %and1 = select i1 %c , i1 %a , i1 false , !prof !1
467+ %and2 = select i1 %not , i1 %b , i1 false , !prof !2
468+ %or = select i1 %and1 , i1 true , i1 %and2 , !prof !3
469469 ret i1 %or
470470}
471471
472- define i1 @bools2_logical_commute0_and1 (i1 %a , i1 %b , i1 %c ) {
472+ define i1 @bools2_logical_commute0_and1 (i1 %a , i1 %b , i1 %c ) !prof !0 {
473473; CHECK-LABEL: @bools2_logical_commute0_and1(
474- ; CHECK-NEXT: [[OR:%.*]] = select i1 [[C:%.*]], i1 [[A:%.*]], i1 [[B:%.*]]
474+ ; CHECK-NEXT: [[OR:%.*]] = select i1 [[C:%.*]], i1 [[A:%.*]], i1 [[B:%.*]], !prof [[PROF2]]
475475; CHECK-NEXT: ret i1 [[OR]]
476476;
477477 %not = xor i1 %c , -1
478478 %and1 = and i1 %c , %a
479- %and2 = select i1 %not , i1 %b , i1 false
480- %or = select i1 %and1 , i1 true , i1 %and2
479+ %and2 = select i1 %not , i1 %b , i1 false , !prof !1
480+ %or = select i1 %and1 , i1 true , i1 %and2 , !prof !2
481481 ret i1 %or
482482}
483483
@@ -493,15 +493,15 @@ define i1 @bools2_logical_commute0_and2(i1 %a, i1 %b, i1 %c) {
493493 ret i1 %or
494494}
495495
496- define i1 @bools2_logical_commute0_and1_and2 (i1 %a , i1 %b , i1 %c ) {
496+ define i1 @bools2_logical_commute0_and1_and2 (i1 %a , i1 %b , i1 %c ) !prof !0 {
497497; CHECK-LABEL: @bools2_logical_commute0_and1_and2(
498- ; CHECK-NEXT: [[OR:%.*]] = select i1 [[C:%.*]], i1 [[A:%.*]], i1 [[B:%.*]]
498+ ; CHECK-NEXT: [[OR:%.*]] = select i1 [[C:%.*]], i1 [[A:%.*]], i1 [[B:%.*]], !prof [[PROF3]]
499499; CHECK-NEXT: ret i1 [[OR]]
500500;
501501 %not = xor i1 %c , -1
502502 %and1 = and i1 %c , %a
503503 %and2 = and i1 %not , %b
504- %or = select i1 %and1 , i1 true , i1 %and2
504+ %or = select i1 %and1 , i1 true , i1 %and2 , !prof !1
505505 ret i1 %or
506506}
507507
@@ -799,8 +799,11 @@ define <2 x i1> @not_logical_and2(i1 %b, <2 x i32> %a) {
799799
800800!0 = !{!"function_entry_count" , i64 1000 }
801801!1 = !{!"branch_weights" , i32 2 , i32 3 }
802+ !2 = !{!"branch_weights" , i32 5 , i32 7 }
803+ !3 = !{!"branch_weights" , i32 11 , i32 13 }
802804;.
803805; CHECK: [[META0:![0-9]+]] = !{!"function_entry_count", i64 1000}
804806; CHECK: [[PROF1]] = !{!"branch_weights", i32 2, i32 3}
805807; CHECK: [[PROF2]] = !{!"branch_weights", i32 3, i32 2}
808+ ; CHECK: [[PROF3]] = !{!"unknown", !"instcombine"}
806809;.
0 commit comments