@@ -610,8 +610,8 @@ define i32 @SimplifyCondBranchToCondBranchSwapMissingWeight(i1 %cmpa, i1 %cmpb)
610610; CHECK-NEXT: [[CMPA_NOT:%.*]] = xor i1 [[CMPA:%.*]], true
611611; CHECK-NEXT: [[CMPB_NOT:%.*]] = xor i1 [[CMPB:%.*]], true
612612; CHECK-NEXT: [[BRMERGE:%.*]] = select i1 [[CMPA_NOT]], i1 true, i1 [[CMPB_NOT]]
613- ; CHECK-NEXT: [[DOTMUX:%.*]] = select i1 [[CMPA_NOT]], i32 0, i32 2, !prof [[PROF17:![0-9]+ ]]
614- ; CHECK-NEXT: [[OUTVAL:%.*]] = select i1 [[BRMERGE]], i32 [[DOTMUX]], i32 1, !prof [[PROF18 :![0-9]+]]
613+ ; CHECK-NEXT: [[DOTMUX:%.*]] = select i1 [[CMPA_NOT]], i32 0, i32 2, !prof [[PROF15 ]]
614+ ; CHECK-NEXT: [[OUTVAL:%.*]] = select i1 [[BRMERGE]], i32 [[DOTMUX]], i32 1, !prof [[PROF17 :![0-9]+]]
615615; CHECK-NEXT: ret i32 [[OUTVAL]]
616616;
617617block1:
@@ -636,7 +636,7 @@ define void @or_icmps_harmful(i32 %x, i32 %y, ptr %p) {
636636; CHECK-LABEL: @or_icmps_harmful(
637637; CHECK-NEXT: entry:
638638; CHECK-NEXT: [[EXPECTED_TRUE:%.*]] = icmp sgt i32 [[X:%.*]], -1
639- ; CHECK-NEXT: br i1 [[EXPECTED_TRUE]], label [[EXIT:%.*]], label [[RARE:%.*]], !prof [[PROF19 :![0-9]+]]
639+ ; CHECK-NEXT: br i1 [[EXPECTED_TRUE]], label [[EXIT:%.*]], label [[RARE:%.*]], !prof [[PROF18 :![0-9]+]]
640640; CHECK: rare:
641641; CHECK-NEXT: [[EXPENSIVE:%.*]] = icmp eq i32 [[Y:%.*]], 0
642642; CHECK-NEXT: br i1 [[EXPENSIVE]], label [[EXIT]], label [[FALSE:%.*]]
@@ -669,7 +669,7 @@ define void @or_icmps_harmful_inverted(i32 %x, i32 %y, ptr %p) {
669669; CHECK-LABEL: @or_icmps_harmful_inverted(
670670; CHECK-NEXT: entry:
671671; CHECK-NEXT: [[EXPECTED_FALSE:%.*]] = icmp sgt i32 [[X:%.*]], -1
672- ; CHECK-NEXT: br i1 [[EXPECTED_FALSE]], label [[RARE:%.*]], label [[EXIT:%.*]], !prof [[PROF20 :![0-9]+]]
672+ ; CHECK-NEXT: br i1 [[EXPECTED_FALSE]], label [[RARE:%.*]], label [[EXIT:%.*]], !prof [[PROF19 :![0-9]+]]
673673; CHECK: rare:
674674; CHECK-NEXT: [[EXPENSIVE:%.*]] = icmp eq i32 [[Y:%.*]], 0
675675; CHECK-NEXT: br i1 [[EXPENSIVE]], label [[EXIT]], label [[FALSE:%.*]]
@@ -702,7 +702,7 @@ define void @or_icmps_probably_not_harmful(i32 %x, i32 %y, ptr %p) {
702702; CHECK-NEXT: [[EXPECTED_TRUE:%.*]] = icmp sgt i32 [[X:%.*]], -1
703703; CHECK-NEXT: [[EXPENSIVE:%.*]] = icmp eq i32 [[Y:%.*]], 0
704704; CHECK-NEXT: [[OR_COND:%.*]] = select i1 [[EXPECTED_TRUE]], i1 true, i1 [[EXPENSIVE]]
705- ; CHECK-NEXT: br i1 [[OR_COND]], label [[EXIT:%.*]], label [[FALSE:%.*]], !prof [[PROF21 :![0-9]+]], !unpredictable [[META22 :![0-9]+]]
705+ ; CHECK-NEXT: br i1 [[OR_COND]], label [[EXIT:%.*]], label [[FALSE:%.*]], !prof [[PROF20 :![0-9]+]], !unpredictable [[META21 :![0-9]+]]
706706; CHECK: false:
707707; CHECK-NEXT: store i8 42, ptr [[P:%.*]], align 1
708708; CHECK-NEXT: br label [[EXIT]]
@@ -734,7 +734,7 @@ define void @or_icmps_not_that_harmful(i32 %x, i32 %y, ptr %p) {
734734; CHECK-NEXT: [[EXPECTED_TRUE:%.*]] = icmp sgt i32 [[X:%.*]], -1
735735; CHECK-NEXT: [[EXPENSIVE:%.*]] = icmp eq i32 [[Y:%.*]], 0
736736; CHECK-NEXT: [[OR_COND:%.*]] = select i1 [[EXPECTED_TRUE]], i1 true, i1 [[EXPENSIVE]]
737- ; CHECK-NEXT: br i1 [[OR_COND]], label [[EXIT:%.*]], label [[FALSE:%.*]], !prof [[PROF23 :![0-9]+]]
737+ ; CHECK-NEXT: br i1 [[OR_COND]], label [[EXIT:%.*]], label [[FALSE:%.*]], !prof [[PROF22 :![0-9]+]]
738738; CHECK: false:
739739; CHECK-NEXT: store i8 42, ptr [[P:%.*]], align 1
740740; CHECK-NEXT: br label [[EXIT]]
@@ -766,7 +766,7 @@ define void @or_icmps_not_that_harmful_inverted(i32 %x, i32 %y, ptr %p) {
766766; CHECK-NEXT: [[EXPECTED_TRUE:%.*]] = icmp sgt i32 [[X:%.*]], -1
767767; CHECK-NEXT: [[EXPENSIVE:%.*]] = icmp eq i32 [[Y:%.*]], 0
768768; CHECK-NEXT: [[OR_COND:%.*]] = select i1 [[EXPECTED_TRUE]], i1 true, i1 [[EXPENSIVE]]
769- ; CHECK-NEXT: br i1 [[OR_COND]], label [[EXIT:%.*]], label [[FALSE:%.*]], !prof [[PROF24 :![0-9]+]]
769+ ; CHECK-NEXT: br i1 [[OR_COND]], label [[EXIT:%.*]], label [[FALSE:%.*]], !prof [[PROF23 :![0-9]+]]
770770; CHECK: false:
771771; CHECK-NEXT: store i8 42, ptr [[P:%.*]], align 1
772772; CHECK-NEXT: br label [[EXIT]]
@@ -797,7 +797,7 @@ define void @or_icmps_useful(i32 %x, i32 %y, ptr %p) {
797797; CHECK-NEXT: [[EXPECTED_TRUE:%.*]] = icmp sle i32 [[X:%.*]], -1
798798; CHECK-NEXT: [[EXPENSIVE:%.*]] = icmp eq i32 [[Y:%.*]], 0
799799; CHECK-NEXT: [[OR_COND:%.*]] = select i1 [[EXPECTED_TRUE]], i1 true, i1 [[EXPENSIVE]]
800- ; CHECK-NEXT: br i1 [[OR_COND]], label [[EXIT:%.*]], label [[FALSE:%.*]], !prof [[PROF25 :![0-9]+]]
800+ ; CHECK-NEXT: br i1 [[OR_COND]], label [[EXIT:%.*]], label [[FALSE:%.*]], !prof [[PROF24 :![0-9]+]]
801801; CHECK: false:
802802; CHECK-NEXT: store i8 42, ptr [[P:%.*]], align 1
803803; CHECK-NEXT: br label [[EXIT]]
@@ -828,7 +828,7 @@ define void @or_icmps_useful_inverted(i32 %x, i32 %y, ptr %p) {
828828; CHECK-NEXT: [[EXPECTED_FALSE:%.*]] = icmp sgt i32 [[X:%.*]], -1
829829; CHECK-NEXT: [[EXPENSIVE:%.*]] = icmp eq i32 [[Y:%.*]], 0
830830; CHECK-NEXT: [[OR_COND:%.*]] = select i1 [[EXPECTED_FALSE]], i1 true, i1 [[EXPENSIVE]]
831- ; CHECK-NEXT: br i1 [[OR_COND]], label [[EXIT:%.*]], label [[FALSE:%.*]], !prof [[PROF25 ]]
831+ ; CHECK-NEXT: br i1 [[OR_COND]], label [[EXIT:%.*]], label [[FALSE:%.*]], !prof [[PROF24 ]]
832832; CHECK: false:
833833; CHECK-NEXT: store i8 42, ptr [[P:%.*]], align 1
834834; CHECK-NEXT: br label [[EXIT]]
@@ -889,7 +889,7 @@ define void @and_icmps_harmful(i32 %x, i32 %y, ptr %p) {
889889; CHECK-LABEL: @and_icmps_harmful(
890890; CHECK-NEXT: entry:
891891; CHECK-NEXT: [[EXPECTED_FALSE:%.*]] = icmp sgt i32 [[X:%.*]], -1
892- ; CHECK-NEXT: br i1 [[EXPECTED_FALSE]], label [[RARE:%.*]], label [[EXIT:%.*]], !prof [[PROF20 ]]
892+ ; CHECK-NEXT: br i1 [[EXPECTED_FALSE]], label [[RARE:%.*]], label [[EXIT:%.*]], !prof [[PROF19 ]]
893893; CHECK: rare:
894894; CHECK-NEXT: [[EXPENSIVE:%.*]] = icmp eq i32 [[Y:%.*]], 0
895895; CHECK-NEXT: br i1 [[EXPENSIVE]], label [[FALSE:%.*]], label [[EXIT]]
@@ -922,7 +922,7 @@ define void @and_icmps_harmful_inverted(i32 %x, i32 %y, ptr %p) {
922922; CHECK-LABEL: @and_icmps_harmful_inverted(
923923; CHECK-NEXT: entry:
924924; CHECK-NEXT: [[EXPECTED_TRUE:%.*]] = icmp sgt i32 [[X:%.*]], -1
925- ; CHECK-NEXT: br i1 [[EXPECTED_TRUE]], label [[EXIT:%.*]], label [[RARE:%.*]], !prof [[PROF19 ]]
925+ ; CHECK-NEXT: br i1 [[EXPECTED_TRUE]], label [[EXIT:%.*]], label [[RARE:%.*]], !prof [[PROF18 ]]
926926; CHECK: rare:
927927; CHECK-NEXT: [[EXPENSIVE:%.*]] = icmp eq i32 [[Y:%.*]], 0
928928; CHECK-NEXT: br i1 [[EXPENSIVE]], label [[FALSE:%.*]], label [[EXIT]]
@@ -957,7 +957,7 @@ define void @and_icmps_not_that_harmful(i32 %x, i32 %y, ptr %p) {
957957; CHECK-NEXT: [[EXPECTED_FALSE:%.*]] = icmp sgt i32 [[X:%.*]], -1
958958; CHECK-NEXT: [[EXPENSIVE:%.*]] = icmp eq i32 [[Y:%.*]], 0
959959; CHECK-NEXT: [[OR_COND:%.*]] = select i1 [[EXPECTED_FALSE]], i1 [[EXPENSIVE]], i1 false
960- ; CHECK-NEXT: br i1 [[OR_COND]], label [[FALSE:%.*]], label [[EXIT:%.*]], !prof [[PROF26 :![0-9]+]]
960+ ; CHECK-NEXT: br i1 [[OR_COND]], label [[FALSE:%.*]], label [[EXIT:%.*]], !prof [[PROF25 :![0-9]+]]
961961; CHECK: false:
962962; CHECK-NEXT: store i8 42, ptr [[P:%.*]], align 1
963963; CHECK-NEXT: br label [[EXIT]]
@@ -989,7 +989,7 @@ define void @and_icmps_not_that_harmful_inverted(i32 %x, i32 %y, ptr %p) {
989989; CHECK-NEXT: [[EXPECTED_TRUE:%.*]] = icmp sle i32 [[X:%.*]], -1
990990; CHECK-NEXT: [[EXPENSIVE:%.*]] = icmp eq i32 [[Y:%.*]], 0
991991; CHECK-NEXT: [[OR_COND:%.*]] = select i1 [[EXPECTED_TRUE]], i1 [[EXPENSIVE]], i1 false
992- ; CHECK-NEXT: br i1 [[OR_COND]], label [[FALSE:%.*]], label [[EXIT:%.*]], !prof [[PROF26 ]]
992+ ; CHECK-NEXT: br i1 [[OR_COND]], label [[FALSE:%.*]], label [[EXIT:%.*]], !prof [[PROF25 ]]
993993; CHECK: false:
994994; CHECK-NEXT: store i8 42, ptr [[P:%.*]], align 1
995995; CHECK-NEXT: br label [[EXIT]]
@@ -1020,7 +1020,7 @@ define void @and_icmps_useful(i32 %x, i32 %y, ptr %p) {
10201020; CHECK-NEXT: [[EXPECTED_TRUE:%.*]] = icmp sgt i32 [[X:%.*]], -1
10211021; CHECK-NEXT: [[EXPENSIVE:%.*]] = icmp eq i32 [[Y:%.*]], 0
10221022; CHECK-NEXT: [[OR_COND:%.*]] = select i1 [[EXPECTED_TRUE]], i1 [[EXPENSIVE]], i1 false
1023- ; CHECK-NEXT: br i1 [[OR_COND]], label [[FALSE:%.*]], label [[EXIT:%.*]], !prof [[PROF27 :![0-9]+]]
1023+ ; CHECK-NEXT: br i1 [[OR_COND]], label [[FALSE:%.*]], label [[EXIT:%.*]], !prof [[PROF26 :![0-9]+]]
10241024; CHECK: false:
10251025; CHECK-NEXT: store i8 42, ptr [[P:%.*]], align 1
10261026; CHECK-NEXT: br label [[EXIT]]
@@ -1051,7 +1051,7 @@ define void @and_icmps_useful_inverted(i32 %x, i32 %y, ptr %p) {
10511051; CHECK-NEXT: [[EXPECTED_FALSE:%.*]] = icmp sle i32 [[X:%.*]], -1
10521052; CHECK-NEXT: [[EXPENSIVE:%.*]] = icmp eq i32 [[Y:%.*]], 0
10531053; CHECK-NEXT: [[OR_COND:%.*]] = select i1 [[EXPECTED_FALSE]], i1 [[EXPENSIVE]], i1 false
1054- ; CHECK-NEXT: br i1 [[OR_COND]], label [[FALSE:%.*]], label [[EXIT:%.*]], !prof [[PROF27 ]]
1054+ ; CHECK-NEXT: br i1 [[OR_COND]], label [[FALSE:%.*]], label [[EXIT:%.*]], !prof [[PROF26 ]]
10551055; CHECK: false:
10561056; CHECK-NEXT: store i8 42, ptr [[P:%.*]], align 1
10571057; CHECK-NEXT: br label [[EXIT]]
@@ -1096,11 +1096,11 @@ exit:
10961096!19 = !{!"branch_weights" , i32 0 , i32 0 }
10971097!20 = !{}
10981098
1099- ;.
1099+ ; .
11001100; CHECK: attributes #[[ATTR0:[0-9]+]] = { nounwind uwtable }
11011101; CHECK: attributes #[[ATTR1]] = { nounwind }
11021102; CHECK: attributes #[[ATTR2:[0-9]+]] = { noredzone nounwind ssp memory(none) }
1103- ;.
1103+ ; .
11041104; CHECK: [[PROF0]] = !{!"branch_weights", i32 5, i32 11}
11051105; CHECK: [[PROF1]] = !{!"branch_weights", i32 1, i32 5}
11061106; CHECK: [[PROF2]] = !{!"branch_weights", i32 1, i32 3}
@@ -1114,19 +1114,18 @@ exit:
11141114; CHECK: [[PROF10]] = !{!"branch_weights", i32 8, i32 33}
11151115; CHECK: [[PROF11]] = !{!"branch_weights", i32 112017436, i32 -735157296}
11161116; CHECK: [[PROF12]] = !{!"branch_weights", i32 3, i32 5}
1117- ; CHECK: [[PROF13]] = !{!"branch_weights", i32 22 , i32 12 }
1117+ ; CHECK: [[PROF13]] = !{!"branch_weights", i32 2 , i32 3 }
11181118; CHECK: [[PROF14]] = !{!"branch_weights", i32 34, i32 21}
1119- ; CHECK: [[PROF15]] = !{!"branch_weights", i32 33 , i32 14 }
1119+ ; CHECK: [[PROF15]] = !{!"branch_weights", i32 3 , i32 2 }
11201120; CHECK: [[PROF16]] = !{!"branch_weights", i32 47, i32 8}
1121- ; CHECK: [[PROF17]] = !{!"branch_weights", i32 6, i32 2}
1122- ; CHECK: [[PROF18]] = !{!"branch_weights", i32 8, i32 2}
1123- ; CHECK: [[PROF19]] = !{!"branch_weights", i32 99, i32 1}
1124- ; CHECK: [[PROF20]] = !{!"branch_weights", i32 1, i32 99}
1125- ; CHECK: [[PROF21]] = !{!"branch_weights", i32 199, i32 1}
1126- ; CHECK: [[META22]] = !{}
1127- ; CHECK: [[PROF23]] = !{!"branch_weights", i32 197, i32 1}
1128- ; CHECK: [[PROF24]] = !{!"branch_weights", i32 100, i32 98}
1129- ; CHECK: [[PROF25]] = !{!"branch_weights", i32 101, i32 99}
1130- ; CHECK: [[PROF26]] = !{!"branch_weights", i32 1, i32 197}
1131- ; CHECK: [[PROF27]] = !{!"branch_weights", i32 99, i32 101}
1132- ;.
1121+ ; CHECK: [[PROF17]] = !{!"branch_weights", i32 8, i32 2}
1122+ ; CHECK: [[PROF18]] = !{!"branch_weights", i32 99, i32 1}
1123+ ; CHECK: [[PROF19]] = !{!"branch_weights", i32 1, i32 99}
1124+ ; CHECK: [[PROF20]] = !{!"branch_weights", i32 199, i32 1}
1125+ ; CHECK: [[META21]] = !{}
1126+ ; CHECK: [[PROF22]] = !{!"branch_weights", i32 197, i32 1}
1127+ ; CHECK: [[PROF23]] = !{!"branch_weights", i32 100, i32 98}
1128+ ; CHECK: [[PROF24]] = !{!"branch_weights", i32 101, i32 99}
1129+ ; CHECK: [[PROF25]] = !{!"branch_weights", i32 1, i32 197}
1130+ ; CHECK: [[PROF26]] = !{!"branch_weights", i32 99, i32 101}
1131+ ; .
0 commit comments