brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.6 KiB · 24c52f1 Raw
312 lines · plain
1; REQUIRES: asserts2; RUN: llc -mcpu=corei7 -mtriple=x86_64-linux -verify-machineinstrs -enable-ext-tsp-block-placement -ext-tsp-chain-split-threshold=128 -debug-only=block-placement < %s 2>&1 | FileCheck %s3; RUN: llc -mcpu=corei7 -mtriple=x86_64-linux -verify-machineinstrs -enable-ext-tsp-block-placement -ext-tsp-chain-split-threshold=1 -debug-only=block-placement < %s 2>&1 | FileCheck %s -check-prefix=CHECK24; RUN: llc -mcpu=corei7 -mtriple=x86_64-linux -verify-machineinstrs -debug-only=block-placement < %s 2>&1 | FileCheck %s -check-prefix=CHECK35; RUN: llc -mcpu=corei7 -mtriple=x86_64-linux -verify-machineinstrs -enable-ext-tsp-block-placement -ext-tsp-block-placement-max-blocks=8 -debug-only=block-placement < %s 2>&1 | FileCheck %s -check-prefix=CHECK46 7@yydebug = dso_local global i32 0, align 48 9define void @func_large() !prof !0 {10; A large CFG instance where chain splitting helps to11; compute a better basic block ordering. The test verifies that with chain12; splitting, the resulting layout is improved (e.g., the score is increased).13;14;                                     +----------------+15;                                     | b0 [76 bytes]  | -------------------+16;                                     +----------------+                    |17;                                       |                                   |18;                                       | 3,065,981,778                     |19;                                       v                                   |20; +----------------+  766,495,444     +----------------+                    |21; | b8 [244 bytes] | <--------------- |  b2 [4 bytes]  |                    |22; +----------------+                  +----------------+                    |23;   |        ^                          |                                   |24;   |        |                          | 2,299,486,333                     |25;   |        | 766,495,444              v                                   |26;   |        |                        +----------------+                    |27;   |        +----------------------- | b3 [12 bytes]  |                    |28;   |                                 +----------------+                    |29;   |                                   |                                   |30;   |                                   | 1,532,990,888                     |31;   |                                   v                                   |32;   |                                 +----------------+                    | 574,869,94633;   |                 +-------------- | b4 [12 bytes]  |                    |34;   |                 |               +----------------+                    |35;   |                 |                 |                                   |36;   |                 |                 | 574,871,583                       |37;   |                 |                 v                                   |38;   |                 |               +----------------+                    |39;   |                 |               | b5 [116 bytes] | -+                 |40;   |                 |               +----------------+  |                 |41;   |                 |                 |                 |                 |42;   |                 |                 | 1,636           |                 |43;   |                 |                 v                 |                 |44;   |                 |               +----------------+  |                 |45;   |                 |       +------ | b6 [32 bytes]  |  |                 |46;   |                 |       |       +----------------+  |                 |47;   |                 |       |         |                 |                 |48;   |                 |       |         | 7               | 3,065,981,778   |49;   |                 |       |         v                 |                 |50;   |                 |       |       +----------------+  |                 |51;   |                 |       | 1,628 | b9 [16 bytes]  |  |                 |52;   |                 |       |       +----------------+  |                 |53;   |                 |       |         |                 |                 |54;   |                 |       |         | 7               |                 |55;   |                 |       |         v                 |                 |56;   |                 |       |       +----------------+  |                 |57;   |                 |       +-----> | b7 [12 bytes]  |  |                 |58;   |                 |               +----------------+  |                 |59;   |                 |                 |                 |                 |60;   |                 | 958,119,305     | 1,636           |                 |61;   |                 |                 v                 v                 v62;   |                 |               +------------------------------------------+63;   |                 +-------------> |                                          |64;   |       1,532,990,889             |                  b1 [36 bytes]           |65;   +-------------------------------> |                                          |66;                                     +------------------------------------------+67;68; An expected output with a large chain-split-threshold -- the layout score is69; increased by ~17%70;71; CHECK-LABEL: Applying ext-tsp layout72; CHECK:   original  layout score: 23587612604815436.0073; CHECK:   optimized layout score: 27891096739311172.0074; CHECK: b075; CHECK: b276; CHECK: b377; CHECK: b478; CHECK: b579; CHECK: b880; CHECK: b181; CHECK: b682; CHECK: b783; CHECK: b984;85; An expected output with chain-split-threshold=1 (disabling split point enumeration)86;87; CHECK2-LABEL: Applying ext-tsp layout88; CHECK2:   original  layout score: 23587612604815436.0089; CHECK2:   optimized layout score: 27891096739311172.0090; CHECK2: b091; CHECK2: b292; CHECK2: b393; CHECK2: b494; CHECK2: b595; CHECK2: b896; CHECK2: b197; CHECK2: b698; CHECK2: b799; CHECK2: b9100;101; An expected output with ext-tsp disabled -- the layout is not modified:102;103; CHECK3-LABEL: func_large:104; CHECK3: b0105; CHECK3: b1106; CHECK3: b2107; CHECK3: b3108; CHECK3: b4109; CHECK3: b5110; CHECK3: b6111; CHECK3: b7112; CHECK3: b8113; CHECK3: b9114;115; An expected output with function size larger than the threshold -- the layout is not modified:116;117; CHECK4-LABEL: func_large:118; CHECK4: b0119; CHECK4: b1120; CHECK4: b2121; CHECK4: b3122; CHECK4: b4123; CHECK4: b5124; CHECK4: b6125; CHECK4: b7126; CHECK4: b8127; CHECK4: b9128 129b0:130  %0 = load i32, ptr @yydebug, align 4131  %cmp = icmp ne i32 %0, 0132  call void @a()133  call void @a()134  call void @a()135  call void @a()136  call void @a()137  call void @a()138  call void @a()139  call void @a()140  call void @a()141  call void @a()142  call void @a()143  call void @a()144  call void @a()145  call void @a()146  call void @a()147  call void @a()148  call void @a()149  call void @a()150  br i1 %cmp, label %b1, label %b2, !prof !1151b1:152  call void @b()153  call void @b()154  call void @b()155  call void @b()156  call void @b()157  call void @b()158  call void @b()159  call void @b()160  ret void161b2:162  call void @c()163  call void @c()164  call void @c()165  call void @c()166  call void @c()167  call void @c()168  call void @c()169  call void @c()170  call void @c()171  call void @c()172  br i1 %cmp, label %b3, label %b8, !prof !2173b3:174  call void @d()175  call void @d()176  br i1 %cmp, label %b4, label %b8, !prof !3177b4:178  call void @e()179  call void @e()180  br i1 %cmp, label %b5, label %b1, !prof !4181b5:182  call void @f()183  call void @f()184  call void @f()185  call void @f()186  call void @f()187  call void @f()188  call void @f()189  call void @f()190  call void @f()191  call void @f()192  call void @f()193  call void @f()194  call void @f()195  call void @f()196  call void @f()197  call void @f()198  call void @f()199  call void @f()200  call void @f()201  call void @f()202  call void @f()203  call void @f()204  call void @f()205  call void @f()206  call void @f()207  call void @f()208  call void @f()209  call void @f()210  br i1 %cmp, label %b1, label %b6, !prof !5211b6:212  call void @g()213  call void @g()214  call void @g()215  call void @g()216  call void @g()217  call void @g()218  call void @g()219  br i1 %cmp, label %b7, label %b9, !prof !6220b7:221  call void @h()222  call void @h()223  br label %b1224b8:225  call void @i()226  call void @i()227  call void @i()228  call void @i()229  call void @i()230  call void @i()231  call void @i()232  call void @i()233  call void @i()234  call void @i()235  call void @i()236  call void @i()237  call void @i()238  call void @i()239  call void @i()240  call void @i()241  call void @i()242  call void @i()243  call void @i()244  call void @i()245  call void @i()246  call void @i()247  call void @i()248  call void @i()249  call void @i()250  call void @i()251  call void @i()252  call void @i()253  call void @i()254  call void @i()255  call void @i()256  call void @i()257  call void @i()258  call void @i()259  call void @i()260  call void @i()261  call void @i()262  call void @i()263  call void @i()264  call void @i()265  call void @i()266  call void @i()267  call void @i()268  call void @i()269  call void @i()270  call void @i()271  call void @i()272  call void @i()273  call void @i()274  call void @i()275  call void @i()276  call void @i()277  call void @i()278  call void @i()279  call void @i()280  call void @i()281  call void @i()282  call void @i()283  call void @i()284  call void @i()285  br label %b1286b9:287  call void @j()288  call void @j()289  call void @j()290  br label %b7291}292 293 294declare void @a()295declare void @b()296declare void @c()297declare void @d()298declare void @e()299declare void @f()300declare void @g()301declare void @h()302declare void @i()303declare void @j()304 305!0 = !{!"function_entry_count", i64 6131963556}306!1 = !{!"branch_weights", i32 3065981778, i32 3065981778}307!2 = !{!"branch_weights", i32 2299486333, i32 766495444}308!3 = !{!"branch_weights", i32 1532990888, i32 766495444}309!4 = !{!"branch_weights", i32 574871583, i32 958119305}310!5 = !{!"branch_weights", i32 574869946, i32 1636}311!6 = !{!"branch_weights", i32 1628, i32 7}312