|
38 | 38 | ret void
|
39 | 39 | }
|
40 | 40 |
|
41 |
| -; Make sure the metadata name string is "branch_weights" before propagating it. |
42 |
| - |
43 |
| -define void @fake_weights(i1 %a, i1 %b) { |
44 |
| -; CHECK-LABEL: @fake_weights( |
45 |
| -; CHECK-NEXT: entry: |
46 |
| -; CHECK-NEXT: [[A_NOT:%.*]] = xor i1 [[A:%.*]], true |
47 |
| -; CHECK-NEXT: [[C:%.*]] = or i1 [[B:%.*]], false |
48 |
| -; CHECK-NEXT: [[OR_COND:%.*]] = select i1 [[A_NOT]], i1 [[C]], i1 false |
49 |
| -; CHECK-NEXT: br i1 [[OR_COND]], label [[Z:%.*]], label [[Y:%.*]], !prof [[PROF1:![0-9]+]] |
50 |
| -; CHECK: common.ret: |
51 |
| -; CHECK-NEXT: ret void |
52 |
| -; CHECK: Y: |
53 |
| -; CHECK-NEXT: call void @helper(i32 0) |
54 |
| -; CHECK-NEXT: br label [[COMMON_RET:%.*]] |
55 |
| -; CHECK: Z: |
56 |
| -; CHECK-NEXT: call void @helper(i32 1) |
57 |
| -; CHECK-NEXT: br label [[COMMON_RET]] |
58 |
| -; |
59 |
| -entry: |
60 |
| - br i1 %a, label %Y, label %X, !prof !12 |
61 |
| -X: |
62 |
| - %c = or i1 %b, false |
63 |
| - br i1 %c, label %Z, label %Y, !prof !1 |
64 |
| - |
65 |
| -Y: |
66 |
| - call void @helper(i32 0) |
67 |
| - ret void |
68 |
| - |
69 |
| -Z: |
70 |
| - call void @helper(i32 1) |
71 |
| - ret void |
72 |
| -} |
73 |
| - |
74 | 41 | define void @test2(i1 %a, i1 %b) {
|
75 | 42 | ; CHECK-LABEL: @test2(
|
76 | 43 | ; CHECK-NEXT: entry:
|
77 | 44 | ; CHECK-NEXT: [[C:%.*]] = or i1 [[B:%.*]], false
|
78 | 45 | ; CHECK-NEXT: [[OR_COND:%.*]] = select i1 [[A:%.*]], i1 [[C]], i1 false
|
79 |
| -; CHECK-NEXT: br i1 [[OR_COND]], label [[Z:%.*]], label [[Y:%.*]], !prof [[PROF2:![0-9]+]] |
| 46 | +; CHECK-NEXT: br i1 [[OR_COND]], label [[Z:%.*]], label [[Y:%.*]], !prof [[PROF1:![0-9]+]] |
80 | 47 | ; CHECK: common.ret:
|
81 | 48 | ; CHECK-NEXT: ret void
|
82 | 49 | ; CHECK: Y:
|
@@ -107,7 +74,7 @@ define void @test3(i1 %a, i1 %b) {
|
107 | 74 | ; CHECK-NEXT: entry:
|
108 | 75 | ; CHECK-NEXT: [[C:%.*]] = or i1 [[B:%.*]], false
|
109 | 76 | ; CHECK-NEXT: [[OR_COND:%.*]] = select i1 [[A:%.*]], i1 [[C]], i1 false
|
110 |
| -; CHECK-NEXT: br i1 [[OR_COND]], label [[Z:%.*]], label [[Y:%.*]], !prof [[PROF1]] |
| 77 | +; CHECK-NEXT: br i1 [[OR_COND]], label [[Z:%.*]], label [[Y:%.*]], !prof [[PROF2:![0-9]+]] |
111 | 78 | ; CHECK: common.ret:
|
112 | 79 | ; CHECK-NEXT: ret void
|
113 | 80 | ; CHECK: Y:
|
@@ -138,7 +105,7 @@ define void @test4(i1 %a, i1 %b) {
|
138 | 105 | ; CHECK-NEXT: entry:
|
139 | 106 | ; CHECK-NEXT: [[C:%.*]] = or i1 [[B:%.*]], false
|
140 | 107 | ; CHECK-NEXT: [[OR_COND:%.*]] = select i1 [[A:%.*]], i1 [[C]], i1 false
|
141 |
| -; CHECK-NEXT: br i1 [[OR_COND]], label [[Z:%.*]], label [[Y:%.*]], !prof [[PROF1]] |
| 108 | +; CHECK-NEXT: br i1 [[OR_COND]], label [[Z:%.*]], label [[Y:%.*]], !prof [[PROF2]] |
142 | 109 | ; CHECK: common.ret:
|
143 | 110 | ; CHECK-NEXT: ret void
|
144 | 111 | ; CHECK: Y:
|
@@ -1136,8 +1103,8 @@ exit:
|
1136 | 1103 | ; CHECK: attributes #[[ATTR2:[0-9]+]] = { noredzone nounwind ssp memory(none) }
|
1137 | 1104 | ;.
|
1138 | 1105 | ; CHECK: [[PROF0]] = !{!"branch_weights", i32 5, i32 11}
|
1139 |
| -; CHECK: [[PROF1]] = !{!"branch_weights", i32 1, i32 3} |
1140 |
| -; CHECK: [[PROF2]] = !{!"branch_weights", i32 1, i32 5} |
| 1106 | +; CHECK: [[PROF1]] = !{!"branch_weights", i32 1, i32 5} |
| 1107 | +; CHECK: [[PROF2]] = !{!"branch_weights", i32 1, i32 3} |
1141 | 1108 | ; CHECK: [[PROF3]] = !{!"branch_weights", i32 7, i32 1, i32 2}
|
1142 | 1109 | ; CHECK: [[PROF4]] = !{!"branch_weights", i32 49, i32 12, i32 24, i32 35}
|
1143 | 1110 | ; CHECK: [[PROF5]] = !{!"branch_weights", i32 11, i32 5}
|
|
0 commit comments