1# Copyright (c) 2021-2024 Huawei Device Co., Ltd. 2# Licensed under the Apache License, Version 2.0 (the "License"); 3# you may not use this file except in compliance with the License. 4# You may obtain a copy of the License at 5# 6# http://www.apache.org/licenses/LICENSE-2.0 7# 8# Unless required by applicable law or agreed to in writing, software 9# distributed under the License is distributed on an "AS IS" BASIS, 10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11# See the License for the specific language governing permissions and 12# limitations under the License. 13 14module: 15 name: compiler 16 namespace: ark::compiler 17 18options: 19- name: compiler-non-optimizing 20 type: bool 21 default: false 22 description: Skip all optimizations 23 tags: [perf] 24 25- name: compiler-regex 26 type: std::string 27 default: ".*" 28 description: A regular expression that specifies methods to compile. The grammar used is ECMA-262 RegExp grammar. 29 tags: [perf] 30 31- name: compiler-visualizer-dump 32 type: bool 33 default: false 34 description: Enable visualizer dump ir 35 tags: [debug] 36 37- name: compiler-dump 38 description: Enable dump ir 39 tags: [debug] 40 sub_options: 41 - name: final 42 type: bool 43 default: false 44 description: Dump ir only after last (codegen) pass 45 - name: compact 46 type: bool 47 default: false 48 description: Suppress dumping of some data (bc, SaveState instructions, etc) 49 - name: life-intervals 50 type: bool 51 default: false 52 description: Dump life intervals from regalloc 53 - name: folder 54 type: std::string 55 default: ./ir_dump 56 description: Set folder for dump ir 57 - name: bytecode 58 type: bool 59 default: false 60 description: Enable printing byte code instruction after ir instruction in dump ir 61 - name: peepholes 62 type: bool 63 default: false 64 description: Enable dumps each time peephole applies 65 - name: source-line 66 type: bool 67 default: false 68 description: Dump source line after instruction 69 70- name: compiler-disasm-dump 71 description: Enable dump disasm to text files 72 tags: [debug] 73 sub_options: 74 - name: single-file 75 type: bool 76 default: false 77 description: Dump disasm files into single file, which is "disasm.txt" 78 - name: stdout 79 type: bool 80 default: false 81 description: Dump to the standard output 82 - name: code 83 type: bool 84 default: true 85 description: Dump generated assembly code. Default is true. 86 - name: code-info 87 type: bool 88 default: false 89 description: Dump code info 90 - name: file-name 91 type: std::string 92 default: "disasm.txt" 93 description: File name to dump. Used only when 'single-file' is set. 94 95- name: compiler-emit-asm 96 type: bool 97 default: false 98 description: Enable dump assembly to disasm.txt file (do not emit binary) 99 tags: [debug] 100 101- name: compiler-enable-tracing 102 type: bool 103 default: false 104 description: Enable tracing for passes 105 tags: [debug] 106 107- name: compiler-enable-tlab-events 108 type: bool 109 default: false 110 description: Enable events for tlab allocation 111 tags: [debug] 112 113- name: compiler-support-init-object-inst 114 type: bool 115 default: false 116 description: Compiler don't create InitObject and GraphChecker checks this. The options are needed for bytecode optimizer. 117 tags: [test] 118 119- name: compiler-log 120 type: arg_list_t 121 default: 122 - none 123 possible_values: 124 - none 125 - all 126 - alias-analysis 127 - balance-expr 128 - branch-elim 129 - checks-elim 130 - codegen 131 - code-sink 132 - cse-opt 133 - graph-cloner 134 - deoptimize-elim 135 - cleanup 136 - if-merging 137 - ifconversion 138 - inlining 139 - ir-builder 140 - licm-opt 141 - licm-cond-opt 142 - loop-unswitch 143 - liveness-analyzer 144 - loop-transform 145 - lowering 146 - lse-opt 147 - memory-coalescing 148 - monitor-analysis 149 - optimize-string-concat 150 - peephole 151 - rle-opt 152 - regalloc 153 - split-resolver 154 - scheduler 155 - simplify-sb 156 - reserve-sb-buffer 157 - savestate-opt 158 - try-catch-resolving 159 - vn-opt 160 - bridges-ss 161 - pm 162 - pea 163 - interop-intrinsic-opt 164 description: Set log compiler components 165 tags: [debug] 166 delimiter: "," 167 168- name: compiler-check-graph 169 type: bool 170 default: true 171 description: Enable Graph checking after each optimization 172 tags: [debug] 173 174- name: compiler-check-final 175 type: bool 176 default: false 177 description: Enable Graph checking only after last optimization(Codegen) 178 tags: [debug] 179 180- name: compiler-encode-intrinsics 181 type: bool 182 default: true 183 description: If false, we always call C implementation of an intrinsic 184 tags: [test] 185 186- name: compiler-lowering 187 type: bool 188 default: true 189 description: Enable Lowering Pass 190 tags: [perf] 191 192- name: compiler-code-sink 193 type: bool 194 default: true 195 description: Enable Code Sink Pass 196 tags: [perf] 197 198- name: compiler-balance-expressions 199 type: bool 200 default: true 201 description: Enable Balance Expressions Pass 202 tags: [perf] 203 204- name: compiler-branch-elimination 205 type: bool 206 default: true 207 description: Enable Branch Elimination Pass 208 tags: [perf] 209 210- name: compiler-optimize-string-concat 211 type: bool 212 default: true 213 description: Enable Optimize String.concat Pass 214 tags: [perf] 215 216- name: compiler-simplify-string-builder 217 type: bool 218 default: true 219 description: Enable Simplify StringBuilder Pass 220 tags: [perf] 221 222- name: compiler-reserve-string-builder-buffer 223 type: bool 224 default: true 225 description: Enable Reserve StringBuilder Buffer Pass 226 tags: [perf] 227 228- name: compiler-checks-elimination 229 type: bool 230 default: true 231 description: Enable Checks Elimination Pass 232 tags: [perf] 233 234- name: compiler-enable-replacing-checks-on-deoptimization 235 type: bool 236 default: true 237 description: Enable replacing checks on deoptimization in checks elimination 238 tags: [perf] 239 240- name: compiler-deoptimize-elimination 241 type: bool 242 default: true 243 description: Enable Deoptimize Elimination Pass 244 tags: [perf] 245 246- name: compiler-save-state-elimination 247 type: bool 248 default: true 249 description: Enable SaveState Elimination Pass 250 tags: [perf] 251 252- name: compiler-safepoint-elimination-limit 253 type: uint64_t 254 default: 50 255 description: Set the instructions limit in deoptimize elimination for removing safe points. 256 recommended_values: [10,1000] 257 tags: [perf] 258 259- name: compiler-implicit-null-check 260 type: bool 261 default: true 262 description: Apply Implicit Null Check 263 tags: [perf] 264 265- name: compiler-licm 266 type: bool 267 default: true 268 description: Enable LICM Pass 269 tags: [perf] 270 271- name: compiler-licm-hoist-limit 272 type: uint32_t 273 default: 200 274 description: Set the instructions limit which are hoisted by LICM 275 recommended_values: [1,200] 276 tags: [perf] 277 278- name: compiler-licm-conditions 279 type: bool 280 default: true 281 description: Enable LICM conditions Pass 282 tags: [perf] 283 284- name: compiler-loop-unswitch 285 type: bool 286 default: true 287 description: Enable Loop unswitch Pass 288 tags: [perf] 289 290- name: compiler-loop-unswitch-max-level 291 type: uint32_t 292 default: 3 293 description: Max loop unswitch level 294 tags: [perf] 295 296- name: compiler-loop-unswitch-max-insts 297 type: uint32_t 298 default: 100 299 description: Max loop unswitch instructions 300 tags: [perf] 301 302- name: compiler-loop-idioms 303 type: bool 304 default: true 305 description: Enable Loop idioms Pass 306 tags: [perf] 307 308- name: compiler-loop-peeling 309 type: bool 310 default: true 311 description: Enable Loop peeling Pass 312 tags: [perf] 313 314- name: compiler-loop-unroll 315 type: bool 316 default: true 317 description: Enable Loop unroll Pass 318 tags: [perf] 319 320- name: compiler-loop-unroll-factor 321 type: uint32_t 322 default: 6 323 description: Set loop unrolling factor 324 recommended_values: [2,10] 325 tags: [perf] 326 327- name: compiler-loop-unroll-inst-limit 328 type: uint32_t 329 default: 100 330 description: Set the instructions limit for the unrolling loop body 331 recommended_values: [10,1000] 332 tags: [perf] 333 334- name: compiler-unroll-loop-with-calls 335 type: bool 336 default: false 337 description: Enable unroll for loops containing method calls 338 tags: [perf] 339 340- name: compiler-unroll-with-side-exits 341 type: bool 342 default: true 343 description: Enable unroll with side exits for not countable loop 344 tags: [perf] 345 346- name: compiler-unroll-unknown-trip-count 347 type: bool 348 default: true 349 description: Enable unroll for loops for which trip count is not known in advance 350 tags: [perf] 351 352- name: compiler-lse 353 type: bool 354 default: true 355 description: Enable Load-Store Elimination Pass 356 tags: [perf] 357 358- name: compiler-cse 359 type: bool 360 default: false 361 description: Enable CSE Pass 362 tags: [perf] 363 364- name: compiler-vn 365 type: bool 366 default: true 367 description: Enable Value Numbering Pass 368 tags: [perf] 369 370- name: compiler-memory-coalescing 371 type: bool 372 default: true 373 description: Enable Memory Coalescing Pass 374 tags: [perf] 375 376- name: compiler-memory-coalescing-objects 377 type: bool 378 default: true 379 description: Apply Memory Coalescing to objects accesses 380 tags: [perf] 381 382- name: compiler-memory-coalescing-aligned 383 type: bool 384 default: false 385 description: Apply Memory Coalescing only to aligned accesses 386 tags: [perf] 387 388- name: compiler-print-stats 389 type: bool 390 default: false 391 description: Print optimizations statistics 392 tags: [debug] 393 394- name: compiler-dump-stats-csv 395 type: std::string 396 default: "" 397 description: Dump optimizations statistics in csv file 398 tags: [debug] 399 400- name: compiler-enable-ir-stats 401 type: bool 402 default: false 403 description: Enable collecting ir stats on compiler statistic 404 tags: [debug] 405 406- name: compiler-dump-jit-stats-csv 407 type: std::string 408 default: "" 409 description: Dump JIT compilation statistics in csv file 410 tags: [debug] 411 412- name: compiler-use-safepoint 413 type: bool 414 default: true 415 description: Build SafePoint instructions 416 tags: [test] 417 418- name: compiler-defer-preheader-transform 419 type: bool 420 default: true 421 description: Defer processing of loop preheader in peepholer and branch elimination until past unrolling 422 tags: [perf] 423 424- name: compiler-inlining 425 type: bool 426 default: true 427 description: Enable inlining optimization 428 tags: [perf] 429 430- name: compiler-inline-external-methods 431 type: bool 432 default: true 433 description: Enable inlining external methods in JIT mode 434 tags: [perf] 435 436- name: compiler-inlining-blacklist 437 type: arg_list_t 438 default: [] 439 description: Method names that should not be inlined 440 delimiter: "," 441 tags: [perf] 442 443- name: compiler-inlining-max-insts 444 type: uint32_t 445 default: 512 446 description: Maximum number of the IR instructions to be inlined, including instructions of the current graph. 447 recommended_values: [50,2000] 448 tags: [perf] 449 450- name: compiler-inlining-max-depth 451 type: uint32_t 452 default: 12 453 description: Maximum depth of the inlining. 454 recommended_values: [1,20] 455 tags: [perf] 456 457- name: compiler-inlining-recursive-calls-limit 458 type: uint32_t 459 default: 4 460 description: Maximum count of recursive calls in inlined call stack. 461 recommended_values: [1,10] 462 tags: [perf] 463 464- name: compiler-inlining-insts-bc-ratio 465 type: double 466 default: 0.4 467 description: Ratio of IR insts count to 1 byte of bytecode. Used for inlining heuristic 468 recommended_values: [0.1,5] 469 tags: [perf] 470 471- name: compiler-inlining-max-bc-size 472 type: uint32_t 473 default: 200 474 description: Maximum bytecode size for inlined functions, in bytes. Average bytecode instruction size is 2.8 bytes. 475 recommended_values: [10,1000] 476 tags: [perf] 477 478- name: compiler-inlining-always-inline-bc-size 479 type: uint32_t 480 default: 12 481 description: Always inline methods with bytecode size less or equal than this limit. 482 recommended_values: [0,50] 483 tags: [perf] 484 485- name: compiler-inline-simple-only 486 type: bool 487 default: false 488 description: Inline only simple methods that don't contain calls to runtime 489 tags: [perf] 490 491- name: compiler-inlining-skip-throw-blocks 492 type: bool 493 default: true 494 description: Don't inline methods inside blocks throwing an exception or performing deoptimization 495 tags: [perf] 496 497- name: compiler-inlining-skip-always-throw-methods 498 type: bool 499 default: true 500 description: Don't inline methods that always throw an exception 501 tags: [perf] 502 503- name: compiler-no-virtual-inlining 504 type: bool 505 default: false 506 description: Disable inlining of the virtual calls 507 tags: [perf] 508 509- name: compiler-no-cha-inlining 510 type: bool 511 default: false 512 description: Don't use CHA in the inlining 513 tags: [perf] 514 515- name: compiler-no-pic-inlining 516 type: bool 517 default: false 518 description: Don't use Polymorphic Inline Caches in the inlining 519 tags: [perf] 520 521- name: compiler-reset-local-allocator 522 type: bool 523 default: true 524 description: Reset local allocator between passes runs 525 tags: [test] 526 527- name: compiler-scheduling 528 type: bool 529 default: true 530 description: Enable Scheduling Pass 531 tags: [perf] 532 533- name: compiler-sched-latency 534 type: uint32_t 535 default: 2 536 description: Set default instruction latency 537 recommended_values: [1,5] 538 tags: [perf] 539 540- name: compiler-sched-latency-long 541 type: uint32_t 542 default: 7 543 description: Set loads latency 544 recommended_values: [2,15] 545 tags: [perf] 546 547- name: compiler-if-conversion 548 type: bool 549 default: true 550 description: Enable IfConversion Pass 551 tags: [perf] 552 553- name: compiler-if-conversion-limit 554 type: uint32_t 555 default: 2 556 description: Maximum amount of instructions in basicblock(s) for if-conversion 557 recommended_values: [1,10] 558 tags: [perf] 559 560- name: compiler-if-conversion-incrase-limit-threshold 561 type: uint32_t 562 default: 40 563 description: If the execution of each of the edge branch is greater than threshold in percents, then the limit increases 564 recommended_values: [0,100] 565 tags: [perf] 566 567- name: compiler-cross-arch 568 type: std::string 569 default: arm64 570 possible_values: 571 - arm 572 - arm64 573 - x86 574 - x86_64 575 description: On AMD64 enable creation of non-native code for testing purpose 576 tags: [test] 577 578- name: compiler-enable-events 579 type: bool 580 default: false 581 description: Enable optimizations events dump 582 tags: [debug, test] 583 584- name: compiler-events-path 585 type: std::string 586 default: ./compiler/events.csv 587 description: Set path for optimizations events dump 588 tags: [debug] 589 590- name: compiler-save-only-live-registers 591 type: bool 592 default: true 593 description: Save and Load only registers that contains live values when making calls. 594 tags: [perf] 595 596- name: compiler-ignore-failures 597 type: bool 598 default: true 599 description: Ignore failures occurred during compilation 600 tags: [test] 601 602- name: compiler-allow-backend-failures 603 type: bool 604 default: true 605 description: Ignore failures occurred during register allocation and code generation 606 tags: [test] 607 608- name: compiler-max-gen-code-size 609 type: uint32_t 610 default: 66060288 611 description: Maximum size of the generated code in code-cache, default 63 M 612 tags: [perf] 613 614- name: compiler-max-bytecode-size 615 type: uint32_t 616 default: 30000 617 description: Maximum size of the method's code to be compiled. 618 recommended_values: [10000,500000] 619 tags: [perf] 620 621- name: compiler-max-vregs-num 622 type: uint32_t 623 default: 8188 624 description: Maximum number of virtual registers in a method. Can't be more than 32764. 625 tags: [perf] 626 627- name: compiler-compact-prologue 628 type: bool 629 default: true 630 description: Omit unused callee-registers save/restore in prologue/epilogue when possible. 631 tags: [perf] 632 633- name: compiler-js-filter-intrinsics 634 type: bool 635 default: true 636 description: Enable intrinsics filter in JS Compiler 637 tags: [test] 638 639- name: compiler-reg-acc-alloc 640 type: bool 641 default: true 642 description: Enable accumulator register allocator pass 643 tags: [test] 644 645- name: compiler-regalloc-reg-mask 646 type: uint64_t 647 default: 0 648 description: Mask of registers, avaliable for regalloc 649 tags: [test] 650 651- name: compiler-verify-regalloc 652 type: bool 653 default: true 654 description: Verify register allocation results in debug mode. 655 tags: [debug] 656 657- name: compiler-move-constants 658 type: bool 659 default: true 660 description: Enable move constants from start block closer to usage 661 tags: [perf] 662 663- name: compiler-adjust-refs 664 type: bool 665 default: true 666 description: Enable hoisting of array data address 667 668- name: compiler-aot-load-string-plt 669 type: bool 670 default: true 671 description: Replace unconditional ResolveString runtime call with loading string reference from PLT slot for AOT. 672 tags: [perf] 673 674- name: compiler-remat-const 675 type: bool 676 default: true 677 description: Rematerialize constants instead of spilling them to the stack 678 tags: [perf] 679 680- name: compiler-unfold-const-array-max-size 681 type: uint32_t 682 default: 20 683 description: Set the maximum size of the constant array to unfold a single LoadConstArray instruction to the initial instructions set. 684 recommended_values: [2,1000] 685 tags: [perf] 686 687- name: compiler-spill-fill-pair 688 type: bool 689 default: true 690 description: Store and load values from successive stack slots as pair of values during SpillFill encoding. 691 tags: [perf] 692 693- name: compiler-cpu-features 694 type: arg_list_t 695 default: [sse42] 696 possible_values: 697 - none 698 - crc32 699 - sse42 700 - jscvt 701 - atomics 702 description: Set compiler CPU features 703 tags: [perf] 704 delimiter: "," 705 706- name: compiler-emit-debug-info 707 type: bool 708 default: false 709 description: Emit DWARF debug info for JIT/AOT code, PANDA_COMPILER_DEBUG_INFO should be set 710 tags: [debug] 711 712- name: compiler-aot-ra 713 type: bool 714 default: true 715 description: Enable AOT register allocation 716 717- name: compiler-freq-based-branch-reorder 718 type: bool 719 default: true 720 description: Enables/disables frequency based branch reorder 721 722- name: compiler-freq-based-branch-reorder-threshold 723 type: uint32_t 724 default: 80 725 description: Threshold in percents for frequency based branch reorder 726 727- name: compiler-inline-full-intrinsics 728 type: bool 729 default: false 730 description: Inline graph for dynamic insrinsics in IrBuilder 731 732- name: compiler-safe-points-require-reg-map 733 type: bool 734 default: false 735 description: Emit virtual registers stack map for safe points 736 737- name: compiler-scalar-replacement 738 type: bool 739 default: true 740 description: Enable scalar replacement optimization 741 742- name: compiler-peepholes 743 type: bool 744 default: true 745 description: Enable peepholes optimizations 746 747- name: compiler-if-merging 748 type: bool 749 default: true 750 description: Enable if-merging optimization 751 752- name: compiler-redundant-loop-elimination 753 type: bool 754 default: true 755 description: Enable redundant-loop-elimination optimization 756 757- name: compiler-optimize-memory-barriers 758 type: bool 759 default: true 760 description: Enable optimize-memory-barriers optimization 761 762- name: compiler-profile 763 type: std::string 764 default: "" 765 description: Path to a file with profile information 766 767- name: compiler-force-unresolved 768 type: bool 769 default: false 770 description: Force the compiler to generate method and field resolvers whenever it is possible (Debug mode only) 771 tags: [debug] 772 773- name: compiler-enable-fast-interop 774 type: bool 775 default: true 776 description: Enable fast ArkTS->JS interop 777 tags: [perf] 778 779- name: compiler-interop-intrinsic-optimization 780 type: bool 781 default: true 782 description: Enable merging local scopes in fast ArkTS->EcmaScript interop 783 tags: [perf] 784 785- name: compiler-interop-scope-object-limit 786 type: uint32_t 787 default: 256 788 description: Object limit for merged local scope in ArkTS->EcmaScript interop 789 tags: [perf] 790 791- name: compiler-interop-try-single-scope 792 type: bool 793 default: false 794 description: Try to create single scope for method in ArkTS->EcmaScript interop whenever possible 795 tags: [perf] 796 797- name: compiler-inst-graph-coloring-limit 798 type: uint32_t 799 default: 5000 800 description: Maximum number of the IR instructions to be chosen for graph coloring algorithm of register allocator 801 tags: [perf] 802 803- name: compiler-enforce-safepoint-placement 804 type: bool 805 default: false 806 description: Inserting safepoints at the beginning of every basic block and after every Nth IR instruction. N is determined by compiler-safepoint-distance-limit option 807 tags: [debug] 808 809- name: compiler-safepoint-distance-limit 810 type: uint32_t 811 default: 50 812 description: Distance limit between inserted safepoints 813 tags: [debug] 814 815events: 816- name: branch-elimination 817 fields: 818 - name: if_block_id 819 type: uint32_t 820 - name: if_block_pc 821 type: uint32_t 822 - name: cond_inst_id 823 type: uint32_t 824 - name: cond_inst_pc 825 type: uint32_t 826 - name: condition_type 827 type: const char* 828 - name: removed_edge_type 829 type: bool 830 831- name: code-sink 832 fields: 833 - name: sunk_inst_id 834 type: uint32_t 835 - name: sunk_inst_pc 836 type: uint32_t 837 - name: from_bb_id 838 type: uint32_t 839 - name: to_bb_id 840 type: uint32_t 841 842- name: checks-elimination 843 fields: 844 - name: name 845 type: const char* 846 - name: inst_id 847 type: uint32_t 848 - name: pc 849 type: uint32_t 850 851- name: cleanup 852 fields: 853 - name: removed_inst_id 854 type: uint32_t 855 - name: removed_inst_pc 856 type: uint32_t 857 858- name: cse 859 fields: 860 - name: removed_inst_id 861 type: uint32_t 862 - name: removed_inst_pc 863 type: uint32_t 864 865- name: deoptimize-elimination 866 fields: 867 - name: name 868 type: const char* 869 - name: inst_id 870 type: uint32_t 871 - name: pc 872 type: uint32_t 873 874- name: save-state-optimization 875 fields: 876 - name: name 877 type: const char* 878 - name: inst_id 879 type: uint32_t 880 - name: pc 881 type: uint32_t 882 883- name: if-conversion 884 fields: 885 - name: merge_block_id 886 type: uint32_t 887 - name: merge_block_pc 888 type: uint32_t 889 - name: merge_type 890 type: const char* 891 - name: removed_block_id1 892 type: int32_t 893 - name: removed_block_id2 894 type: int32_t 895 - name: removed_block_id3 896 type: int32_t 897 898- name: inlining 899 fields: 900 - name: inlined_method 901 type: const char* 902 903- name: lse 904 fields: 905 - name: removed_inst_id 906 type: uint32_t 907 - name: removed_inst_pc 908 type: uint32_t 909 - name: dominant_inst_id 910 type: uint32_t 911 - name: dominant_inst_pc 912 type: uint32_t 913 - name: code 914 type: const char* 915 916- name: redundant-loop-elimination 917 fields: 918 - name: loop_id 919 type: uint32_t 920 - name: loop_head_pc 921 type: uint32_t 922 923- name: loop-unroll 924 fields: 925 - name: loop_id 926 type: uint32_t 927 - name: loop_head_pc 928 type: uint32_t 929 - name: unroll_factor 930 type: uint32_t 931 - name: cloneable_inst_count 932 type: uint32_t 933 - name: unroll_type 934 type: const char* 935 936- name: loop-peeling 937 fields: 938 - name: loop_id 939 type: uint32_t 940 - name: loop_head_pc 941 type: uint32_t 942 - name: loop_exit_pc 943 type: uint32_t 944 - name: moved_inst_count 945 type: uint32_t 946 947- name: memory-coalescing 948 fields: 949 - name: first_inst_id 950 type: uint32_t 951 - name: first_inst_pc 952 type: uint32_t 953 - name: second_inst_id 954 type: uint32_t 955 - name: second_inst_pc 956 type: uint32_t 957 - name: new_inst_id 958 type: uint32_t 959 - name: type 960 type: const char * 961 962- name: peephole 963 fields: 964 - name: name 965 type: const char* 966 - name: inst_id 967 type: uint32_t 968 - name: pc 969 type: uint32_t 970 971- name: scheduler 972 fields: 973 - name: block_id 974 type: uint32_t 975 - name: block_pc 976 type: uint32_t 977 - name: old_cycles 978 type: uint32_t 979 - name: num_barriers 980 type: uint32_t 981 - name: critical_path 982 type: uint32_t 983 - name: new_cycles 984 type: uint32_t 985 986- name: gvn 987 fields: 988 - name: inst_id 989 type: uint32_t 990 - name: inst_pc 991 type: uint32_t 992 - name: equal_inst_id 993 type: uint32_t 994 - name: equal_inst_pc 995 type: uint32_t 996 997- name: licm 998 fields: 999 - name: inst_id 1000 type: uint32_t 1001 - name: inst_pc 1002 type: uint32_t 1003 - name: old_loop_id 1004 type: uint32_t 1005 - name: new_loop_id 1006 type: uint32_t 1007 1008- name: lowering 1009 fields: 1010 - name: name 1011 type: const char* 1012 - name: inst_id 1013 type: uint32_t 1014 - name: pc 1015 type: uint32_t 1016 1017- name: reg-alloc 1018 fields: 1019 - name: sf_inst_id 1020 type: uint32_t 1021 - name: sf_purpose 1022 type: const char* 1023 - name: sf_type 1024 type: const char* 1025 - name: src 1026 type: uint32_t 1027 - name: dst 1028 type: uint32_t 1029 - name: reg_type 1030 type: const char* 1031 1032tags: 1033 perf: an option that affects the performance and/or codesize 1034 debug: debugging option (checkers, events, dumps, logs e.t.c) 1035 test: a test option or an option used by other components 1036