Hello. In current stage1 Honza spent a significant amount of time to improve profiling infrastructure. New classes profile_count and profile_probability have been added and we hope the profile is maintained more sensitively among various optimization passes.
My patch series makes adjustments to values of predictors defined in predict.def based on what I measured on SPEC2006 and SPEC2017. For both, -O2 -march=native was used and it was run on a Haswell CPU. Note that numbers should be reproducible on any CPU, as coverage mapping to source files should match. Compare to previous release (GCC 7.x branch), I made 2 main differences: 1) For GCC 7.x tuning I wrongly used train run to collect numbers -> fixed by running train run with ref size of benchmarks 2) I noticed we have branches that in some cases dominate a predictor. That's caused by fact that we calculate average predictor value based on number of successful branching. Imagine a very hot condition in a loop. Such branch can dominate a predictor. So that I decided to calculate statistics also without branches that have coverage >= 10%. Doing that shows that some predictors can be close to 50%, or value chosen in predict.def is very far from what we have considering all branches. In such cases, I explain why I've chosen to either remove a predictor or adjust based on non-dominating branches. The email contains of statistics for SPEC2006 suite, SPEC2017 suite and combined values based on these. Apart from that, statistics for each individual benchmark can be also found. There are numbers for 2 configurations of SPEC2006 and SPEC2017 which were run with the series on a Ryzen 5 machine: +-------------------------------------------+--------+----------+----------+ | 1) ===== CPU2006: -O2 -march=native | | | | | Performance Regressions - Execution Time | Δ (B) | Baseline | Current | | SPEC/SPEC2006/FP/459.GemsFDTD | 3.78% | 234.6328 | 243.5055 | | SPEC/SPEC2006/INT/456.hmmer | 3.08% | 312.4193 | 322.0455 | | SPEC/SPEC2006/FP/482.sphinx3 | 2.26% | 370.0952 | 378.4484 | | SPEC/SPEC2006/FP/433.milc | 1.95% | 289.1947 | 294.8295 | | SPEC/SPEC2006/FP/465.tonto | 1.70% | 325.3729 | 330.9081 | | SPEC/SPEC2006/FP/416.gamess | 1.63% | 550.4813 | 559.4563 | | SPEC/SPEC2006/INT/429.mcf | 1.61% | 245.2728 | 249.2234 | | | | | | | Performance Improvements - Execution Time | Δ (B) | Baseline | Current | | SPEC/SPEC2006/FP/436.cactusADM | -5.94% | 305.2817 | 287.1523 | | SPEC/SPEC2006/INT/483.xalancbmk | -2.84% | 200.1121 | 194.4234 | | SPEC/SPEC2006/INT/401.bzip2 | -1.31% | 378.0334 | 373.0694 | | | | | | | 2) ===== CPU2006: -Ofast -march=native | | | | | Performance Regressions - Execution Time | Δ (B) | Baseline | Current | | SPEC/SPEC2006/FP/459.GemsFDTD | 3.11% | 210.9732 | 217.5323 | | SPEC/SPEC2006/INT/429.mcf | 1.63% | 242.1709 | 246.1208 | | SPEC/SPEC2006/FP/482.sphinx3 | 1.57% | 270.7089 | 274.9587 | | SPEC/SPEC2006/INT/400.perlbench | 1.40% | 274.1239 | 277.9529 | | SPEC/SPEC2006/FP/481.wrf | 1.33% | 180.1668 | 182.555 | | | | | | | Performance Improvements - Execution Time | Δ (B) | Baseline | Current | | SPEC/SPEC2006/FP/450.soplex | -4.38% | 214.6197 | 205.2086 | | SPEC/SPEC2006/FP/436.cactusADM | -3.24% | 153.1062 | 148.1397 | | SPEC/SPEC2006/FP/435.gromacs | -2.94% | 199.6355 | 193.7684 | | SPEC/SPEC2006/INT/471.omnetpp | -1.93% | 285.8131 | 280.3005 | | SPEC/SPEC2006/INT/445.gobmk | -1.14% | 375.2672 | 370.9727 | | | | | | | 3) ===== CPU2017: -O2 -march=native | | | | | Performance Regressions - Execution Time | Δ (B) | Baseline | Current | | SPEC/SPEC2017/INT/557.xz_r | 2.51% | 397.0281 | 407.0107 | | SPEC/SPEC2017/INT/520.omnetpp_r | 1.69% | 443.3886 | 450.8843 | | SPEC/SPEC2017/FP/549.fotonik3d_r | 1.44% | 361.6036 | 366.7952 | | SPEC/SPEC2017/FP/508.namd_r | 1.07% | 198.1652 | 200.2947 | | | | | | | Performance Improvements - Execution Time | Δ (B) | Baseline | Current | | SPEC/SPEC2017/INT/548.exchange2_r | -6.78% | 433.2191 | 403.8602 | | SPEC/SPEC2017/FP/507.cactuBSSN_r | -1.49% | 223.5739 | 220.2388 | | SPEC/SPEC2017/FP/511.povray_r | -1.34% | 483.2885 | 476.8329 | | SPEC/SPEC2017/INT/500.perlbench_r | -1.03% | 417.0421 | 412.7557 | | | | | | | 4) ===== CPU2017: -Ofast -march=native | | | | | Performance Regressions - Execution Time | Δ (B) | Baseline | Current | | SPEC/SPEC2017/FP/544.nab_r | 7.67% | 314.2308 | 338.3466 | | SPEC/SPEC2017/FP/538.imagick_r | 7.26% | 352.263 | 377.8382 | | SPEC/SPEC2017/FP/526.blender_r | 1.56% | 270.6487 | 274.8841 | | SPEC/SPEC2017/INT/548.exchange2_r | 1.55% | 348.1742 | 353.5598 | | SPEC/SPEC2017/INT/523.xalancbmk_r | 1.41% | 298.9601 | 303.1769 | | | | | | | Performance Improvements - Execution Time | Δ (B) | Baseline | Current | | SPEC/SPEC2017/INT/505.mcf_r | -1.14% | 310.5277 | 306.9915 | | SPEC/SPEC2017/INT/500.perlbench_r | -1.07% | 413.7797 | 409.3348 | +-------------------------------------------+--------+----------+----------+ I'm planning to comment each predictor change in upcoming emails which contain patches. Apart from that the patch can bootstrap on ppc64le-redhat-linux and survives regression tests. Martin
2017-per-benchmark.txt.bz2
Description: application/bzip
2006-per-benchmark.txt.bz2
Description: application/bzip
HEURISTICS BRANCHES (REL) BR. HITRATE HITRATE COVERAGE COVERAGE (REL) predict.def (REL) HOT branches (>10%) fp_opcode (on trees) 1 0.0% 100.00% 99.97% / 99.97% 169555 169.56k 0.0% 90% 10.0% 100%:1 noreturn call 6 0.0% 66.67% 9.29% / 97.36% 15332 15.33k 0.0% 100% -90.7% 89%:1 loop iv compare 87 0.1% 77.01% 80.39% / 80.58% 210991882 210.99M 0.0% 17%:1 loop guard with recursion 124 0.1% 89.52% 85.01% / 85.01% 97523698253 97.52G 0.9% 85% 0.0% 76%:4 extra loop exit 163 0.1% 72.39% 86.89% / 92.62% 2599164174 2.60G 0.0% 83% 3.9% 68%:1 indirect call 510 0.4% 52.94% 48.23% / 93.11% 34860084930 34.86G 0.3% 86% -37.8% 83%:3 guess loop iv compare 596 0.4% 87.08% 94.45% / 95.68% 47594135196 47.59G 0.5% 98% -3.6% 87%:1 polymorphic call 653 0.5% 60.64% 49.81% / 85.95% 10184258333 10.18G 0.1% 59% -9.2% 12%:1 loop exit with recursion 725 0.5% 72.83% 85.49% / 85.98% 127789677884 127.79G 1.2% 72% 13.5% 65%:4 negative return 731 0.5% 71.14% 47.90% / 86.56% 14611024514 14.61G 0.1% 98% -50.1% 47%:3 const return 827 0.6% 52.84% 83.58% / 95.50% 7104928950 7.10G 0.1% 69% 14.6% 54%:5 recursive call 978 0.7% 65.64% 63.51% / 87.36% 15734579342 15.73G 0.2% 75% -11.5% 30%:2 null return 1361 1.0% 61.94% 86.43% / 92.87% 15032249850 15.03G 0.1% 91% -4.6% 53%:1 loop guard 2667 2.0% 54.59% 73.60% / 83.90% 245866667771 245.87G 2.4% 66% 7.6% 10%:1 opcode values positive (on trees) 4642 3.4% 59.35% 58.76% / 85.69% 378777493600 378.78G 3.6% 64% -5.2% loop exit 7109 5.3% 76.13% 88.82% / 91.15% 1148890223736 1.15T 11.0% 85% 3.8% loop iterations 9760 7.3% 99.94% 80.20% / 80.20% 1688097819329 1.69T 16.2% 17%:1 pointer (on trees) 14022 10.4% 58.54% 72.68% / 88.64% 157668907353 157.67G 1.5% 70% 2.7% 10%:1 call 22143 16.5% 61.18% 67.34% / 86.99% 311353504956 311.35G 3.0% 67% 0.3% opcode values nonequal (on trees) 23459 17.4% 67.89% 65.94% / 83.08% 662814065153 662.81G 6.4% 66% -0.1% guessed loop iterations 32907 24.4% 99.81% 92.55% / 92.63% 3684504131107 3.68T 35.3% HEURISTICS BRANCHES (REL) BR. HITRATE HITRATE COVERAGE COVERAGE (REL) predict.def (REL) HOT branches (>10%) no prediction 28954 21.5% 40.35% 33.11% / 81.31% 2188332970675 2.19T 21.0% first match 50757 37.7% 93.00% 88.31% / 89.09% 6652092023444 6.65T 63.8% DS theory 54866 40.8% 62.17% 69.81% / 85.39% 1590538313906 1.59T 15.2% combined 134595 100.0% 69.11% 73.91% / 86.89% 10430968318253 10.43T 100.0% ===== COVERAGE THRESHOLD == 10% ===== HEURISTICS BRANCHES (REL) BR. HITRATE HITRATE COVERAGE COVERAGE (REL) predict.def (REL) HOT branches (>10%) fp_opcode (on trees) 1 0.0% 100.00% 99.97% / 99.97% 169555 169.56k 0.0% 90% 10.0% noreturn call 5 0.0% 80.00% 62.06% / 98.17% 1692 1.69k 0.0% 100% -37.9% loop iv compare 86 0.1% 76.74% 86.59% / 86.82% 175230548 175.23M 0.0% loop guard with recursion 120 0.1% 89.17% 72.16% / 72.17% 23498480299 23.50G 0.2% 85% -12.8% extra loop exit 162 0.1% 72.22% 66.89% / 84.59% 841523903 841.52M 0.0% 83% -16.1% indirect call 507 0.4% 52.86% 59.42% / 84.43% 5998351879 6.00G 0.1% 86% -26.6% guess loop iv compare 595 0.4% 87.06% 63.59% / 72.78% 6373834696 6.37G 0.1% 98% -34.4% polymorphic call 652 0.5% 60.74% 56.30% / 84.19% 8995127137 9.00G 0.1% 59% -2.7% loop exit with recursion 721 0.5% 72.68% 77.82% / 79.20% 45263271344 45.26G 0.4% 72% 5.8% negative return 728 0.5% 71.15% 51.10% / 93.41% 7718817446 7.72G 0.1% 98% -46.9% const return 822 0.6% 52.55% 65.22% / 91.00% 3285400153 3.29G 0.0% 69% -3.8% recursive call 976 0.7% 65.57% 48.06% / 82.01% 11054338004 11.05G 0.1% 75% -26.9% null return 1360 1.0% 61.91% 71.12% / 84.83% 7062682174 7.06G 0.1% 91% -19.9% loop guard 2666 2.0% 54.58% 70.68% / 82.14% 221068697936 221.07G 2.1% 66% 4.7% opcode values positive (on trees) 4642 3.4% 59.35% 58.76% / 85.69% 378777493600 378.78G 3.6% 64% -5.2% loop exit 7109 5.3% 76.13% 88.82% / 91.15% 1148890223736 1.15T 11.0% 85% 3.8% loop iterations 9759 7.3% 99.94% 81.27% / 81.27% 1400135529329 1.40T 13.4% pointer (on trees) 14021 10.4% 58.54% 69.94% / 87.69% 141857126826 141.86G 1.4% 70% -0.1% call 22143 16.5% 61.18% 67.34% / 86.99% 311353504956 311.35G 3.0% 67% 0.3% opcode values nonequal (on trees) 23459 17.4% 67.89% 65.94% / 83.08% 662814065153 662.81G 6.4% 66% -0.1% guessed loop iterations 32907 24.4% 99.81% 92.55% / 92.63% 3684504131107 3.68T 35.3% HEURISTICS BRANCHES (REL) BR. HITRATE HITRATE COVERAGE COVERAGE (REL) predict.def (REL) HOT branches (>10%) no prediction 28954 21.5% 40.35% 33.11% / 81.31% 2188332970675 2.19T 21.0% first match 50757 37.7% 93.00% 88.31% / 89.09% 6652092023444 6.65T 63.8% DS theory 54866 40.8% 62.17% 69.81% / 85.39% 1590538313906 1.59T 15.2% combined 134595 100.0% 69.11% 73.91% / 86.89% 10430968318253 10.43T 100.0%
HEURISTICS BRANCHES (REL) BR. HITRATE HITRATE COVERAGE COVERAGE (REL) predict.def (REL) HOT branches (>10%) fp_opcode (on trees) 1 0.0% 100.00% 99.97% / 99.97% 169555 169.56k 0.0% 90% 10.0% 100%:1 noreturn call 4 0.0% 50.00% 2.88% / 97.19% 14318 14.32k 0.0% 100% -97.1% 95%:1 loop iv compare 28 0.0% 85.71% 90.36% / 90.42% 142853110 142.85M 0.0% 78%:7 loop guard with recursion 60 0.1% 86.67% 85.00% / 85.01% 97187655258 97.19G 1.9% 85% 0.0% 76%:4 extra loop exit 87 0.1% 70.11% 90.57% / 95.57% 2304480228 2.30G 0.0% 83% 7.6% 76%:1 guess loop iv compare 222 0.3% 82.43% 49.49% / 67.79% 2939751990 2.94G 0.1% 98% -48.5% 47%:2 loop exit with recursion 405 0.5% 72.59% 85.81% / 86.13% 122008014554 122.01G 2.4% 72% 13.8% 68%:4 negative return 408 0.5% 70.10% 11.53% / 97.37% 4294690284 4.29G 0.1% 98% -86.5% 86%:2 indirect call 415 0.5% 51.81% 82.78% / 93.30% 13268053185 13.27G 0.3% 86% -3.2% 63%:1 const return 429 0.5% 50.35% 87.87% / 95.79% 6093205123 6.09G 0.1% 69% 18.9% 74%:6 polymorphic call 442 0.6% 64.71% 56.07% / 84.59% 5625048806 5.63G 0.1% 59% -2.9% 43%:3 recursive call 542 0.7% 66.97% 44.47% / 83.19% 6006719153 6.01G 0.1% 75% -30.5% 10%:1 null return 977 1.2% 61.62% 91.99% / 95.61% 10924810708 10.92G 0.2% 91% 1.0% 73%:1 loop guard 1345 1.7% 56.51% 74.99% / 81.44% 172002804836 172.00G 3.4% 66% 9.0% 25%:2 opcode values positive (on trees) 2420 3.1% 62.19% 54.73% / 85.64% 281436309157 281.44G 5.6% 64% -9.3% loop exit 4040 5.2% 75.52% 89.04% / 90.91% 582174829649 582.17G 11.7% 85% 4.0% loop iterations 5616 7.2% 99.98% 83.65% / 83.65% 845156713258 845.16G 16.9% pointer (on trees) 9449 12.1% 57.22% 68.91% / 88.62% 89205915254 89.21G 1.8% 70% -1.1% 11%:1 opcode values nonequal (on trees) 13266 16.9% 68.97% 64.82% / 84.68% 258325826516 258.33G 5.2% 66% -1.2% call 14158 18.1% 63.77% 66.51% / 87.25% 208458745217 208.46G 4.2% 67% -0.5% 10%:1 guessed loop iterations 18494 23.6% 99.88% 91.98% / 91.98% 1706074764271 1.71T 34.2% HEURISTICS BRANCHES (REL) BR. HITRATE HITRATE COVERAGE COVERAGE (REL) predict.def (REL) HOT branches (>10%) no prediction 16937 21.6% 39.19% 39.75% / 81.37% 889936912032 889.94G 17.8% first match 28674 36.6% 92.47% 88.88% / 89.41% 3257861669388 3.26T 65.3% DS theory 32684 41.7% 62.54% 69.37% / 85.50% 839261965939 839.26G 16.8% combined 78304 100.0% 68.45% 76.83% / 87.32% 4987064608146 4.99T 100.0% ===== COVERAGE THRESHOLD == 10% ===== HEURISTICS BRANCHES (REL) BR. HITRATE HITRATE COVERAGE COVERAGE (REL) predict.def (REL) HOT branches (>10%) fp_opcode (on trees) 1 0.0% 100.00% 99.97% / 99.97% 169555 169.56k 0.0% 90% 10.0% noreturn call 3 0.0% 66.67% 5.60% / 95.72% 678 678.00 0.0% 100% -94.4% loop iv compare 21 0.0% 80.95% 73.99% / 74.24% 30934006 30.93M 0.0% loop guard with recursion 56 0.1% 85.71% 71.95% / 71.96% 23162437304 23.16G 0.5% 85% -13.0% extra loop exit 86 0.1% 69.77% 71.62% / 92.72% 546839957 546.84M 0.0% 83% -11.4% guess loop iv compare 220 0.3% 82.73% 54.00% / 78.71% 1552771353 1.55G 0.0% 98% -44.0% loop exit with recursion 401 0.5% 72.32% 77.68% / 78.66% 39481608014 39.48G 0.8% 72% 5.7% negative return 406 0.5% 70.44% 75.10% / 89.12% 595240362 595.24M 0.0% 98% -22.9% indirect call 414 0.5% 51.69% 57.08% / 85.30% 4945756572 4.95G 0.1% 86% -28.9% const return 423 0.5% 49.65% 55.49% / 85.51% 1606931929 1.61G 0.0% 69% -13.5% polymorphic call 439 0.6% 64.46% 41.53% / 91.82% 3189952499 3.19G 0.1% 59% -17.5% recursive call 541 0.7% 67.10% 46.36% / 84.52% 5381178946 5.38G 0.1% 75% -28.6% null return 976 1.2% 61.58% 70.38% / 83.77% 2955243032 2.96G 0.1% 91% -20.6% loop guard 1343 1.7% 56.44% 69.15% / 77.77% 128679704564 128.68G 2.6% 66% 3.1% opcode values positive (on trees) 2420 3.1% 62.19% 54.73% / 85.64% 281436309157 281.44G 5.6% 64% -9.3% loop exit 4040 5.2% 75.52% 89.04% / 90.91% 582174829649 582.17G 11.7% 85% 4.0% loop iterations 5616 7.2% 99.98% 83.65% / 83.65% 845156713258 845.16G 16.9% pointer (on trees) 9448 12.1% 57.22% 67.62% / 89.69% 79627977265 79.63G 1.6% 70% -2.4% opcode values nonequal (on trees) 13266 16.9% 68.97% 64.82% / 84.68% 258325826516 258.33G 5.2% 66% -1.2% call 14157 18.1% 63.76% 63.45% / 86.54% 187217992716 187.22G 3.8% 67% -3.5% guessed loop iterations 18494 23.6% 99.88% 91.98% / 91.98% 1706074764271 1.71T 34.2% HEURISTICS BRANCHES (REL) BR. HITRATE HITRATE COVERAGE COVERAGE (REL) predict.def (REL) HOT branches (>10%) no prediction 16937 21.6% 39.19% 39.75% / 81.37% 889936912032 889.94G 17.8% first match 28674 36.6% 92.47% 88.88% / 89.41% 3257861669388 3.26T 65.3% DS theory 32684 41.7% 62.54% 69.37% / 85.50% 839261965939 839.26G 16.8% combined 78304 100.0% 68.45% 76.83% / 87.32% 4987064608146 4.99T 100.0%
HEURISTICS BRANCHES (REL) BR. HITRATE HITRATE COVERAGE COVERAGE (REL) predict.def (REL) HOT branches (>10%) noreturn call 2 0.0% 100.00% 99.80% / 99.80% 1014 1.01k 0.0% 100% -0.2% 100%:1 loop iv compare 59 0.1% 72.88% 59.48% / 59.95% 68138772 68.14M 0.0% 82%:3 loop guard with recursion 64 0.1% 92.19% 86.13% / 86.35% 336042995 336.04M 0.0% 85% 1.1% 39%:2 extra loop exit 76 0.1% 75.00% 58.11% / 69.50% 294683946 294.68M 0.0% 83% -24.9% 69%:2 indirect call 95 0.2% 57.89% 27.00% / 92.99% 21592031745 21.59G 0.4% 86% -59.0% 95%:2 polymorphic call 211 0.4% 52.13% 42.09% / 87.63% 4559209527 4.56G 0.1% 59% -16.9% 63%:3 loop exit with recursion 320 0.6% 73.12% 78.78% / 82.88% 5781663330 5.78G 0.1% 72% 6.8% 32%:3 negative return 323 0.6% 72.45% 63.05% / 82.06% 10316334230 10.32G 0.2% 98% -35.0% 78%:5 guess loop iv compare 374 0.7% 89.84% 97.41% / 97.51% 44654383206 44.65G 0.8% 98% -0.6% 92%:1 null return 384 0.7% 62.76% 71.66% / 85.59% 4107439142 4.11G 0.1% 91% -19.3% 28%:2 const return 398 0.7% 55.53% 57.74% / 93.78% 1011723827 1.01G 0.0% 69% -11.3% 58%:2 recursive call 436 0.8% 63.99% 75.27% / 89.93% 9727860189 9.73G 0.2% 75% 0.3% 48%:2 loop guard 1322 2.3% 52.65% 70.36% / 89.63% 73863862935 73.86G 1.4% 66% 4.4% 44%:2 opcode values positive (on trees) 2222 3.9% 56.26% 70.43% / 85.83% 97341184443 97.34G 1.8% 64% 6.4% loop exit 3069 5.5% 76.93% 88.59% / 91.39% 566715394087 566.72G 10.4% 85% 3.6% loop iterations 4144 7.4% 99.88% 76.75% / 76.75% 842941106071 842.94G 15.5% 46%:2 pointer (on trees) 4573 8.1% 61.27% 77.58% / 88.67% 68462992099 68.46G 1.3% 70% 7.6% 23%:1 call 7985 14.2% 56.61% 69.01% / 86.45% 102894759739 102.89G 1.9% 67% 2.0% opcode values nonequal (on trees) 10193 18.1% 66.48% 66.65% / 82.05% 404488238637 404.49G 7.4% 66% 0.6% guessed loop iterations 14413 25.6% 99.74% 93.04% / 93.19% 1978429366836 1.98T 36.3% HEURISTICS BRANCHES (REL) BR. HITRATE HITRATE COVERAGE COVERAGE (REL) predict.def (REL) HOT branches (>10%) no prediction 12017 21.3% 41.97% 28.56% / 81.27% 1298396058643 1.30T 23.9% 11%:1 first match 22083 39.2% 93.69% 87.77% / 88.79% 3394230354056 3.39T 62.3% DS theory 22182 39.4% 61.63% 70.30% / 85.26% 751276347967 751.28G 13.8% combined 56291 100.0% 70.02% 71.23% / 86.51% 5443903710107 5.44T 100.0% ===== COVERAGE THRESHOLD == 10% ===== HEURISTICS BRANCHES (REL) BR. HITRATE HITRATE COVERAGE COVERAGE (REL) predict.def (REL) HOT branches (>10%) noreturn call 1 0.0% 100.00% 50.00% / 50.00% 2 2.00 0.0% 100% -50.0% loop iv compare 56 0.1% 73.21% 80.70% / 81.58% 12101759 12.10M 0.0% loop guard with recursion 62 0.1% 91.94% 86.43% / 86.79% 204613423 204.61M 0.0% 85% 1.4% extra loop exit 74 0.1% 74.32% 47.18% / 83.86% 91517959 91.52M 0.0% 83% -35.8% indirect call 93 0.2% 58.06% 70.44% / 80.36% 1052595307 1.05G 0.0% 86% -15.6% polymorphic call 208 0.4% 51.92% 36.67% / 90.91% 1668212873 1.67G 0.0% 59% -22.3% loop exit with recursion 317 0.6% 72.87% 78.43% / 84.42% 3949926524 3.95G 0.1% 72% 6.4% negative return 318 0.6% 72.64% 88.38% / 93.21% 2259767195 2.26G 0.0% 98% -9.6% guess loop iv compare 373 0.7% 89.81% 75.66% / 77.06% 3434082706 3.43G 0.1% 98% -22.3% null return 382 0.7% 62.57% 72.54% / 91.82% 2968314759 2.97G 0.1% 91% -18.5% const return 396 0.7% 55.56% 84.97% / 91.03% 425889042 425.89M 0.0% 69% 16.0% recursive call 434 0.8% 63.82% 52.34% / 80.60% 5047618851 5.05G 0.1% 75% -22.7% loop guard 1320 2.3% 52.65% 65.86% / 81.79% 41342679266 41.34G 0.8% 66% -0.1% opcode values positive (on trees) 2222 3.9% 56.26% 70.43% / 85.83% 97341184443 97.34G 1.8% 64% 6.4% loop exit 3069 5.5% 76.93% 88.59% / 91.39% 566715394087 566.72G 10.4% 85% 3.6% loop iterations 4142 7.4% 99.88% 78.21% / 78.21% 458991386071 458.99G 8.4% pointer (on trees) 4572 8.1% 61.26% 71.69% / 86.11% 52651211572 52.65G 1.0% 70% 1.7% call 7985 14.2% 56.61% 69.01% / 86.45% 102894759739 102.89G 1.9% 67% 2.0% opcode values nonequal (on trees) 10193 18.1% 66.48% 66.65% / 82.05% 404488238637 404.49G 7.4% 66% 0.6% guessed loop iterations 14413 25.6% 99.74% 93.04% / 93.19% 1978429366836 1.98T 36.3% HEURISTICS BRANCHES (REL) BR. HITRATE HITRATE COVERAGE COVERAGE (REL) predict.def (REL) HOT branches (>10%) no prediction 12016 21.3% 41.98% 29.49% / 81.49% 1162005681171 1.16T 21.3% first match 22083 39.2% 93.69% 87.77% / 88.79% 3394230354056 3.39T 62.3% DS theory 22182 39.4% 61.63% 70.30% / 85.26% 751276347967 751.28G 13.8% combined 56291 100.0% 70.02% 71.23% / 86.51% 5443903710107 5.44T 100.0%