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