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