• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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