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