| 1 | /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\ |
| 2 | |* *| |
| 3 | |* Option Parsing Definitions *| |
| 4 | |* *| |
| 5 | |* Automatically generated file, do not edit! *| |
| 6 | |* *| |
| 7 | \*===----------------------------------------------------------------------===*/ |
| 8 | |
| 9 | ///////// |
| 10 | // Tables |
| 11 | |
| 12 | #if defined(OPTTABLE_CODE) || defined(OPTIONS_STRUCT_DEFS) |
| 13 | static llvm::opt::OptTable::Tables optionTables() { |
| 14 | using llvm::opt::DefaultVis, llvm::opt::HelpHidden, |
| 15 | llvm::opt::RenderAsInput, llvm::opt::RenderJoined, |
| 16 | llvm::opt::RenderSeparate; |
| 17 | |
| 18 | #ifdef __GNUC__ |
| 19 | #pragma GCC diagnostic push |
| 20 | #pragma GCC diagnostic ignored "-Woverlength-strings" |
| 21 | #endif |
| 22 | static constexpr char OptionStrTableStorage[] = |
| 23 | "\0" |
| 24 | "-\0" |
| 25 | "--\0" |
| 26 | "<input>\0" |
| 27 | "<unknown>\0" |
| 28 | "-aarch64-a57-fp-load-balancing-force-all\0" |
| 29 | "Always modify dest registers regardless of color\0" |
| 30 | "-aarch64-a57-fp-load-balancing-override\0" |
| 31 | "Ignore balance information, always return (1: Even, 2: Odd)\0" |
| 32 | "-aarch64-authenticated-lr-check-method\0" |
| 33 | "Override the variant of check applied to authenticated LR during tail call\0" |
| 34 | "<none|load|high-bits-notbi|xpac|xpac-hint>\0" |
| 35 | "none,load,high-bits-notbi,xpac,xpac-hint\0" |
| 36 | "-aarch64-b-offset-bits\0" |
| 37 | "Restrict range of B instructions (DEBUG)\0" |
| 38 | "-aarch64-base-histcnt-cost\0" |
| 39 | "The cost of a histcnt instruction\0" |
| 40 | "-aarch64-bcc-offset-bits\0" |
| 41 | "Restrict range of Bcc instructions (DEBUG)\0" |
| 42 | "-aarch64-br-merging-base-cost\0" |
| 43 | "Cost threshold for merging multiple conditionals into one branch versus splitting into multiple branches: conditionals are merged when their instruction cost is below this limit and split above it. Set to -1 to never merge branches\0" |
| 44 | "-aarch64-br-merging-cbz-tbnz-bias\0" |
| 45 | "Decreases 'aarch64-br-merging-base-cost' when a condition can lower to a single CBZ/CBNZ or TBZ/TBNZ compare-and-branch, to bias toward splitting. Set to 0 to disable\0" |
| 46 | "-aarch64-br-merging-ccmp-bias\0" |
| 47 | "Increases 'aarch64-br-merging-base-cost' to account for the CCMP instruction, which is always available on AArch64 and makes merging branch conditions cheaper\0" |
| 48 | "-aarch64-br-merging-likely-bias\0" |
| 49 | "Increases 'aarch64-br-merging-base-cost' when all conditionals are likely to be executed, biasing toward merging. Set to -1 to never merge likely branches\0" |
| 50 | "-aarch64-br-merging-unlikely-bias\0" |
| 51 | "Decreases 'aarch64-br-merging-base-cost' when all conditionals are unlikely to be executed, biasing toward splitting. Set to -1 to never merge unlikely branches\0" |
| 52 | "-aarch64-cb-offset-bits\0" |
| 53 | "Restrict range of CB instructions (DEBUG)\0" |
| 54 | "-aarch64-cbz-offset-bits\0" |
| 55 | "Restrict range of CB[N]Z instructions (DEBUG)\0" |
| 56 | "-aarch64-ccmp-limit\0" |
| 57 | "Maximum number of instructions per speculated block\0" |
| 58 | "-aarch64-cfi-llvm-set-ra-sign-state\0" |
| 59 | "Control emission of .cfi_set_ra_state for PAC return address signing CFI\0" |
| 60 | "<never|pauth-lr|always>\0" |
| 61 | "never,pauth-lr,always\0" |
| 62 | "-aarch64-code-layout-opt-align-functions\0" |
| 63 | "Function alignment in bytes for code layout optimization (must be a power of 2)\0" |
| 64 | "-aarch64-disable-multivector-spill-fill\0" |
| 65 | "Disable use of LD/ST pairs for SME2 or SVE2p1\0" |
| 66 | "-aarch64-early-ifcvt\0" |
| 67 | "Enable the early if converter pass\0" |
| 68 | "-aarch64-elf-ldtls-generation\0" |
| 69 | "Allow AArch64 Local Dynamic TLS code generation\0" |
| 70 | "-aarch64-emit-debug-tls-location\0" |
| 71 | "Emit the TLS DWARF location with DTPREL relocation for AArch64\0" |
| 72 | "-aarch64-enable-atomic-cfg-tidy\0" |
| 73 | "Run SimplifyCFG after expanding atomic operations to make use of cmpxchg flow-based information\0" |
| 74 | "-aarch64-enable-branch-relax\0" |
| 75 | "Relax out of range conditional branches\0" |
| 76 | "-aarch64-enable-branch-targets\0" |
| 77 | "Enable the AArch64 branch target pass\0" |
| 78 | "-aarch64-enable-ccmp\0" |
| 79 | "Enable the CCMP formation pass\0" |
| 80 | "-aarch64-enable-collect-loh\0" |
| 81 | "Enable the pass that emits the linker optimization hints (LOH)\0" |
| 82 | "-aarch64-enable-compress-jump-tables\0" |
| 83 | "Use smallest entry possible for jump tables\0" |
| 84 | "-aarch64-enable-cond-br-tune\0" |
| 85 | "Enable the conditional branch tuning pass\0" |
| 86 | "-aarch64-enable-condopt\0" |
| 87 | "Enable the condition optimizer pass\0" |
| 88 | "-aarch64-enable-copy-propagation\0" |
| 89 | "Enable the copy propagation with AArch64 copy instr\0" |
| 90 | "-aarch64-enable-copyelim\0" |
| 91 | "Enable the redundant copy elimination pass\0" |
| 92 | "-aarch64-enable-dead-defs\0" |
| 93 | "Enable the pass that removes dead definitions and replaces stores to them with stores to the zero register\0" |
| 94 | "-aarch64-enable-early-ifcvt\0" |
| 95 | "Run early if-conversion\0" |
| 96 | "-aarch64-enable-ext-to-tbl\0" |
| 97 | "Combine ext and trunc to TBL\0" |
| 98 | "-aarch64-enable-falkor-hwpf-fix\0" |
| 99 | "\0" |
| 100 | "\0" |
| 101 | "-aarch64-enable-gep-opt\0" |
| 102 | "Enable optimizations on complex GEPs\0" |
| 103 | "-aarch64-enable-gisel-ldst-postlegal\0" |
| 104 | "Enable GlobalISel's post-legalizer load/store optimization pass\0" |
| 105 | "-aarch64-enable-gisel-ldst-prelegal\0" |
| 106 | "Enable GlobalISel's pre-legalizer load/store optimization pass\0" |
| 107 | "-aarch64-enable-gisel-sve\0" |
| 108 | "Enable / disable SVE scalable vectors in Global ISel\0" |
| 109 | "-aarch64-enable-global-isel-at-O\0" |
| 110 | "Enable GlobalISel at or below an opt level (-1 to disable)\0" |
| 111 | "-aarch64-enable-global-merge\0" |
| 112 | "Enable the global merge pass\0" |
| 113 | "-aarch64-enable-ldst-opt\0" |
| 114 | "Enable the load/store pair optimization pass\0" |
| 115 | "-aarch64-enable-logical-imm\0" |
| 116 | "Enable AArch64 logical imm instruction optimization\0" |
| 117 | "-aarch64-enable-loop-data-prefetch\0" |
| 118 | "Enable the loop data prefetch pass\0" |
| 119 | "-aarch64-enable-mcr\0" |
| 120 | "Enable the machine combiner pass\0" |
| 121 | "-aarch64-enable-mgather-combine\0" |
| 122 | "Combine extends of AArch64 masked gather intrinsics\0" |
| 123 | "-aarch64-enable-pipeliner\0" |
| 124 | "Enable Machine Pipeliner for AArch64\0" |
| 125 | "-aarch64-enable-predicate-as-counter-loop-rewrites\0" |
| 126 | "Enable rewriting loops with wide loop-carried masks to use predicate-as-counter\0" |
| 127 | "-aarch64-enable-promote-const\0" |
| 128 | "Enable the promote constant pass\0" |
| 129 | "-aarch64-enable-ptrue-coalescing\0" |
| 130 | "Enable coalescing of compatible AArch64 SVE PTRUE instructions\0" |
| 131 | "-aarch64-enable-simd-scalar\0" |
| 132 | "Enable use of AdvSIMD scalar integer instructions\0" |
| 133 | "-aarch64-enable-sink-fold\0" |
| 134 | "Enable sinking and folding of instruction copies\0" |
| 135 | "-aarch64-enable-stp-suppress\0" |
| 136 | "Suppress STP for AArch64\0" |
| 137 | "-aarch64-enable-subreg-liveness-tracking\0" |
| 138 | "Enable subreg liveness tracking\0" |
| 139 | "-aarch64-enable-sve-shuffle-opts\0" |
| 140 | "Enable pattern matching of shuffles that could make use of SVE instructions like tbl or the bottom/top variants\0" |
| 141 | "-aarch64-force-unroll-threshold\0" |
| 142 | "Threshold for forced unrolling of small loops in AArch64\0" |
| 143 | "-aarch64-insert-extract-base-cost\0" |
| 144 | "Base cost of vector insert/extract element\0" |
| 145 | "-aarch64-load-store-const-scan-limit\0" |
| 146 | "-aarch64-load-store-renaming\0" |
| 147 | "-aarch64-load-store-scan-limit\0" |
| 148 | "-aarch64-lower-to-sme-routines\0" |
| 149 | "Enable AArch64 SME memory operations to lower to librt functions\0" |
| 150 | "-aarch64-macho-enable-nonlazybind\0" |
| 151 | "Call nonlazybind functions via direct GOT load for Mach-O\0" |
| 152 | "-aarch64-max-xors\0" |
| 153 | "Maximum of xors\0" |
| 154 | "-aarch64-min-jump-table-entries\0" |
| 155 | "Set minimum number of entries to use a jump table on AArch64\0" |
| 156 | "-aarch64-order-frame-objects\0" |
| 157 | "sort stack allocations\0" |
| 158 | "-aarch64-outliner-compact-unwind-frame\0" |
| 159 | "Use a frame record for Mach-O non-leaf outlined functions\0" |
| 160 | "-aarch64-postlegalizer-consecutive-memops\0" |
| 161 | "Enable consecutive memop optimization in AArch64PostLegalizerCombiner\0" |
| 162 | "-aarch64-ptrauth-auth-checks\0" |
| 163 | "Check pointer authentication auth/resign failures\0" |
| 164 | "<none|poison|trap>\0" |
| 165 | "none,poison,trap\0" |
| 166 | "-aarch64-redzone\0" |
| 167 | "enable use of redzone on AArch64\0" |
| 168 | "-aarch64-search-limit\0" |
| 169 | "Restrict range of instructions to search for the machine-combiner gather pattern optimization\0" |
| 170 | "-aarch64-select-opt\0" |
| 171 | "Enable select to branch optimizations\0" |
| 172 | "-aarch64-simd-scalar-force-all\0" |
| 173 | "Force use of AdvSIMD scalar instructions everywhere\0" |
| 174 | "-aarch64-slh-loads\0" |
| 175 | "Sanitize loads from memory\0" |
| 176 | "-aarch64-split-sve-objects\0" |
| 177 | "Split allocation of ZPR & PPR objects\0" |
| 178 | "-aarch64-srlt-mitigate-sr2r\0" |
| 179 | "Enable SUBREG_TO_REG mitigation by adding 'implicit-def' for super-regs when using Subreg Liveness Tracking\0" |
| 180 | "-aarch64-stack-hazard-in-non-streaming\0" |
| 181 | "-aarch64-stack-hazard-remark-size\0" |
| 182 | "-aarch64-stack-hazard-size\0" |
| 183 | "-aarch64-streaming-hazard-size\0" |
| 184 | "Hazard size for streaming mode memory accesses. 0 = disabled\0" |
| 185 | "-aarch64-stress-ccmp\0" |
| 186 | "Turn all knobs to 11\0" |
| 187 | "-aarch64-stress-promote-const\0" |
| 188 | "Promote all vector constants\0" |
| 189 | "-aarch64-sve-vector-bits-max\0" |
| 190 | "Assume SVE vector registers are at most this big, with zero meaning no maximum size is assumed\0" |
| 191 | "-aarch64-sve-vector-bits-min\0" |
| 192 | "Assume SVE vector registers are at least this big, with zero meaning no minimum size is assumed\0" |
| 193 | "-aarch64-sve-vls-bfloat-support\0" |
| 194 | "Use SVE for fixed-length vector bfloat operations\0" |
| 195 | "-aarch64-tbz-offset-bits\0" |
| 196 | "Restrict range of TB[N]Z instructions (DEBUG)\0" |
| 197 | "-aarch64-umov-fold-scan-limit\0" |
| 198 | "-aarch64-update-scan-limit\0" |
| 199 | "-aarch64-use-aa\0" |
| 200 | "Enable the use of AA during codegen\0" |
| 201 | "-aarch64-use-conditional-fpmr-write\0" |
| 202 | "Only write FPMR when the requested value differs from the current value\0" |
| 203 | "-aarch64-use-featcpa-codegen\0" |
| 204 | "Generate ISD::PTRADD nodes for pointer arithmetic in SelectionDAG for FEAT_CPA\0" |
| 205 | "-aarch64-use-mops\0" |
| 206 | "Enable AArch64 MOPS instructions for memcpy/memset/memmove\0" |
| 207 | "-aarch64-use-tbi\0" |
| 208 | "Assume that top byte of an address is ignored\0" |
| 209 | "-arm64ec-generate-thunks\0" |
| 210 | "-arm64ec-lower-direct-to-indirect\0" |
| 211 | "-call-penalty-sm-change\0" |
| 212 | "Penalty of calling a function that requires a change to PSTATE.SM\0" |
| 213 | "-dmb-lookahead-threshold\0" |
| 214 | "The number of instructions to search for a redundant dmb\0" |
| 215 | "-enable-aarch64-lsr-cost-opt\0" |
| 216 | "-enable-aarch64-or-like-select\0" |
| 217 | "-enable-aarch64-sme-peephole-opt\0" |
| 218 | "Perform SME peephole optimization\0" |
| 219 | "-enable-falkor-hwpf-unroll-fix\0" |
| 220 | "-enable-fixedwidth-autovec-in-streaming-mode\0" |
| 221 | "-enable-scalable-autovec-in-streaming-mode\0" |
| 222 | "-force-streaming-compatible\0" |
| 223 | "Force the use of streaming-compatible code for all functions\0" |
| 224 | "-force-streaming\0" |
| 225 | "Force the use of streaming code for all functions\0" |
| 226 | "-frame-helper-size-threshold\0" |
| 227 | "The minimum number of instructions that are outlined in a frame helper (default = 2)\0" |
| 228 | "-homogeneous-prolog-epilog\0" |
| 229 | "Emit homogeneous prologue and epilogue for the size optimization (default = off)\0" |
| 230 | "-inline-call-penalty-sm-change\0" |
| 231 | "Penalty of inlining a call that requires a change to PSTATE.SM\0" |
| 232 | "-neon-nonconst-stride-overhead\0" |
| 233 | "-stack-tagging-first-slot-opt\0" |
| 234 | "Apply first slot optimization for stack tagging (eliminate ADDG Rt, Rn, 0, 0)\0" |
| 235 | "-stack-tagging-merge-init-scan-limit\0" |
| 236 | "-stack-tagging-merge-init-size-limit\0" |
| 237 | "-stack-tagging-merge-init\0" |
| 238 | "merge stack variable initializers with tagging when possible\0" |
| 239 | "-stack-tagging-merge-settag\0" |
| 240 | "merge settag instruction in function epilog\0" |
| 241 | "-stack-tagging-record-stack-history\0" |
| 242 | "Record stack frames with tagged allocations in a thread-local ring buffer\0" |
| 243 | "<none|instr>\0" |
| 244 | "none,instr\0" |
| 245 | "-stack-tagging-unchecked-ld-st\0" |
| 246 | "Unconditionally apply unchecked-ld-st optimization (even for large stack frames, or in the presence of variable sized allocas)\0" |
| 247 | "<never|safe|always>\0" |
| 248 | "never,safe,always\0" |
| 249 | "-stack-tagging-use-stack-safety\0" |
| 250 | "Use Stack Safety analysis results\0" |
| 251 | "-sve-gather-overhead\0" |
| 252 | "-sve-prefer-fixed-over-scalable-if-equal\0" |
| 253 | "-sve-scatter-overhead\0" |
| 254 | "-sve-tail-folding-insn-threshold\0" |
| 255 | "-sve-use-scalar-inc-vl\0" |
| 256 | "Prefer add+cnt over addvl/inc/dec\0" |
| 257 | "-sve-vscale-for-tuning\0" |
| 258 | "Force a vscale for tuning factor for SVE\0" |
| 259 | ; |
| 260 | #ifdef __GNUC__ |
| 261 | #pragma GCC diagnostic pop |
| 262 | #endif |
| 263 | |
| 264 | static constexpr llvm::StringTable |
| 265 | OptionStrTable = OptionStrTableStorage; |
| 266 | |
| 267 | static constexpr llvm::StringTable::Offset OptionPrefixesTable[] = { |
| 268 | 0 /* prefixes */, |
| 269 | 2 /* prefixes */, 1 /* '-' */, 3 /* '--' */ |
| 270 | }; |
| 271 | |
| 272 | static constexpr llvm::opt::OptTable::HelpTextVariant OptionHelpTextVariantsTable[] = { |
| 273 | {0, 0}, |
| 274 | }; |
| 275 | |
| 276 | static constexpr unsigned OptionSubCommandIDsTable[] = { |
| 277 | 0 /* subcommands */ |
| 278 | }; |
| 279 | |
| 280 | static constexpr llvm::opt::OptTable::InfoExtra OptionInfoExtrasTable[] = { |
| 281 | {0, 0, 0, 0, 0, 0, 0, 0}, |
| 282 | {0, 0, 0, 0, static_cast<unsigned>(DefaultVis), 0, 0, 0}, |
| 283 | {328, 0, 371, 0, static_cast<unsigned>(DefaultVis), 0, 0, 0}, |
| 284 | {1957, 0, 1981, 0, static_cast<unsigned>(DefaultVis), 0, 0, 0}, |
| 285 | {6032, 0, 6051, 0, static_cast<unsigned>(DefaultVis), 0, 0, 0}, |
| 286 | {9213, 0, 9226, 0, static_cast<unsigned>(DefaultVis), 0, 0, 0}, |
| 287 | {9395, 0, 9415, 0, static_cast<unsigned>(DefaultVis), 0, 0, 0}, |
| 288 | }; |
| 289 | |
| 290 | static constexpr llvm::opt::OptTable::Info OptionInfoTable[] = { |
| 291 | {6 /* <input> */, 0, 0, 0, 1, 0, llvm::opt::Option::InputClass}, |
| 292 | {14 /* <unknown> */, 0, 0, 0, 1, 0, llvm::opt::Option::UnknownClass}, |
| 293 | {24 /* -aarch64-a57-fp-load-balancing-force-all */, 65, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 294 | {114 /* -aarch64-a57-fp-load-balancing-override */, 154, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 295 | {214 /* -aarch64-authenticated-lr-check-method */, 253, 0, 0, 2, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 296 | {412 /* -aarch64-b-offset-bits */, 435, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 297 | {476 /* -aarch64-base-histcnt-cost */, 503, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 298 | {537 /* -aarch64-bcc-offset-bits */, 562, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 299 | {605 /* -aarch64-br-merging-base-cost */, 635, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 300 | {867 /* -aarch64-br-merging-cbz-tbnz-bias */, 901, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 301 | {1068 /* -aarch64-br-merging-ccmp-bias */, 1098, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 302 | {1257 /* -aarch64-br-merging-likely-bias */, 1289, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 303 | {1444 /* -aarch64-br-merging-unlikely-bias */, 1478, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 304 | {1639 /* -aarch64-cb-offset-bits */, 1663, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 305 | {1705 /* -aarch64-cbz-offset-bits */, 1730, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 306 | {1776 /* -aarch64-ccmp-limit */, 1796, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 307 | {1848 /* -aarch64-cfi-llvm-set-ra-sign-state */, 1884, 0, 0, 3, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 308 | {2003 /* -aarch64-code-layout-opt-align-functions */, 2044, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 309 | {2124 /* -aarch64-disable-multivector-spill-fill */, 2164, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 310 | {2210 /* -aarch64-early-ifcvt */, 2231, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 311 | {2266 /* -aarch64-elf-ldtls-generation */, 2296, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 312 | {2344 /* -aarch64-emit-debug-tls-location */, 2377, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 313 | {2440 /* -aarch64-enable-atomic-cfg-tidy */, 2472, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 314 | {2568 /* -aarch64-enable-branch-relax */, 2597, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 315 | {2637 /* -aarch64-enable-branch-targets */, 2668, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 316 | {2706 /* -aarch64-enable-ccmp */, 2727, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 317 | {2758 /* -aarch64-enable-collect-loh */, 2786, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 318 | {2849 /* -aarch64-enable-compress-jump-tables */, 2886, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 319 | {2930 /* -aarch64-enable-cond-br-tune */, 2959, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 320 | {3001 /* -aarch64-enable-condopt */, 3025, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 321 | {3061 /* -aarch64-enable-copy-propagation */, 3094, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 322 | {3146 /* -aarch64-enable-copyelim */, 3171, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 323 | {3214 /* -aarch64-enable-dead-defs */, 3240, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 324 | {3347 /* -aarch64-enable-early-ifcvt */, 3375, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 325 | {3399 /* -aarch64-enable-ext-to-tbl */, 3426, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 326 | {3455 /* -aarch64-enable-falkor-hwpf-fix */, 3487, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 327 | {3489 /* -aarch64-enable-gep-opt */, 3513, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 328 | {3550 /* -aarch64-enable-gisel-ldst-postlegal */, 3587, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 329 | {3651 /* -aarch64-enable-gisel-ldst-prelegal */, 3687, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 330 | {3750 /* -aarch64-enable-gisel-sve */, 3776, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 331 | {3829 /* -aarch64-enable-global-isel-at-O */, 3862, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 332 | {3921 /* -aarch64-enable-global-merge */, 3950, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 333 | {3979 /* -aarch64-enable-ldst-opt */, 4004, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 334 | {4049 /* -aarch64-enable-logical-imm */, 4077, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 335 | {4129 /* -aarch64-enable-loop-data-prefetch */, 4164, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 336 | {4199 /* -aarch64-enable-mcr */, 4219, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 337 | {4252 /* -aarch64-enable-mgather-combine */, 4284, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 338 | {4336 /* -aarch64-enable-pipeliner */, 4362, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 339 | {4399 /* -aarch64-enable-predicate-as-counter-loop-rewrites */, 4450, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 340 | {4530 /* -aarch64-enable-promote-const */, 4560, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 341 | {4593 /* -aarch64-enable-ptrue-coalescing */, 4626, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 342 | {4689 /* -aarch64-enable-simd-scalar */, 4717, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 343 | {4767 /* -aarch64-enable-sink-fold */, 4793, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 344 | {4842 /* -aarch64-enable-stp-suppress */, 4871, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 345 | {4896 /* -aarch64-enable-subreg-liveness-tracking */, 4937, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 346 | {4969 /* -aarch64-enable-sve-shuffle-opts */, 5002, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 347 | {5114 /* -aarch64-force-unroll-threshold */, 5146, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 348 | {5203 /* -aarch64-insert-extract-base-cost */, 5237, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 349 | {5280 /* -aarch64-load-store-const-scan-limit */, 3487, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 350 | {5317 /* -aarch64-load-store-renaming */, 3487, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 351 | {5346 /* -aarch64-load-store-scan-limit */, 3487, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 352 | {5377 /* -aarch64-lower-to-sme-routines */, 5408, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 353 | {5473 /* -aarch64-macho-enable-nonlazybind */, 5507, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 354 | {5565 /* -aarch64-max-xors */, 5583, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 355 | {5599 /* -aarch64-min-jump-table-entries */, 5631, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 356 | {5692 /* -aarch64-order-frame-objects */, 5721, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 357 | {5744 /* -aarch64-outliner-compact-unwind-frame */, 5783, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 358 | {5841 /* -aarch64-postlegalizer-consecutive-memops */, 5883, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 359 | {5953 /* -aarch64-ptrauth-auth-checks */, 5982, 0, 0, 4, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 360 | {6068 /* -aarch64-redzone */, 6085, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 361 | {6118 /* -aarch64-search-limit */, 6140, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 362 | {6234 /* -aarch64-select-opt */, 6254, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 363 | {6292 /* -aarch64-simd-scalar-force-all */, 6323, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 364 | {6375 /* -aarch64-slh-loads */, 6394, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 365 | {6421 /* -aarch64-split-sve-objects */, 6448, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 366 | {6486 /* -aarch64-srlt-mitigate-sr2r */, 6514, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 367 | {6622 /* -aarch64-stack-hazard-in-non-streaming */, 3487, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 368 | {6661 /* -aarch64-stack-hazard-remark-size */, 3487, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 369 | {6695 /* -aarch64-stack-hazard-size */, 0, 0, 80, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 370 | {6722 /* -aarch64-streaming-hazard-size */, 6753, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 371 | {6814 /* -aarch64-stress-ccmp */, 6835, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 372 | {6856 /* -aarch64-stress-promote-const */, 6886, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 373 | {6915 /* -aarch64-sve-vector-bits-max */, 6944, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 374 | {7039 /* -aarch64-sve-vector-bits-min */, 7068, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 375 | {7164 /* -aarch64-sve-vls-bfloat-support */, 7196, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 376 | {7246 /* -aarch64-tbz-offset-bits */, 7271, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 377 | {7317 /* -aarch64-umov-fold-scan-limit */, 3487, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 378 | {7347 /* -aarch64-update-scan-limit */, 3487, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 379 | {7374 /* -aarch64-use-aa */, 7390, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 380 | {7426 /* -aarch64-use-conditional-fpmr-write */, 7462, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 381 | {7534 /* -aarch64-use-featcpa-codegen */, 7563, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 382 | {7642 /* -aarch64-use-mops */, 7660, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 383 | {7719 /* -aarch64-use-tbi */, 7736, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 384 | {7782 /* -arm64ec-generate-thunks */, 3487, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 385 | {7807 /* -arm64ec-lower-direct-to-indirect */, 3487, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 386 | {7841 /* -call-penalty-sm-change */, 7865, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 387 | {7931 /* -dmb-lookahead-threshold */, 7956, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 388 | {8013 /* -enable-aarch64-lsr-cost-opt */, 3487, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 389 | {8042 /* -enable-aarch64-or-like-select */, 3487, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 390 | {8073 /* -enable-aarch64-sme-peephole-opt */, 8106, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 391 | {8140 /* -enable-falkor-hwpf-unroll-fix */, 3487, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 392 | {8171 /* -enable-fixedwidth-autovec-in-streaming-mode */, 3487, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 393 | {8216 /* -enable-scalable-autovec-in-streaming-mode */, 3487, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 394 | {8259 /* -force-streaming-compatible */, 8287, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 395 | {8348 /* -force-streaming */, 8365, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 396 | {8415 /* -frame-helper-size-threshold */, 8444, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 397 | {8529 /* -homogeneous-prolog-epilog */, 8556, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 398 | {8637 /* -inline-call-penalty-sm-change */, 8668, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 399 | {8731 /* -neon-nonconst-stride-overhead */, 3487, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 400 | {8762 /* -stack-tagging-first-slot-opt */, 8792, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 401 | {8870 /* -stack-tagging-merge-init-scan-limit */, 3487, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 402 | {8907 /* -stack-tagging-merge-init-size-limit */, 3487, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 403 | {8944 /* -stack-tagging-merge-init */, 8970, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 404 | {9031 /* -stack-tagging-merge-settag */, 9059, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 405 | {9103 /* -stack-tagging-record-stack-history */, 9139, 0, 0, 5, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 406 | {9237 /* -stack-tagging-unchecked-ld-st */, 9268, 0, 0, 6, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 407 | {9433 /* -stack-tagging-use-stack-safety */, 9465, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 408 | {9499 /* -sve-gather-overhead */, 3487, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 409 | {9520 /* -sve-prefer-fixed-over-scalable-if-equal */, 3487, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 410 | {9561 /* -sve-scatter-overhead */, 3487, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 411 | {9583 /* -sve-tail-folding-insn-threshold */, 3487, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 412 | {9616 /* -sve-use-scalar-inc-vl */, 9639, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass}, |
| 413 | {9673 /* -sve-vscale-for-tuning */, 9696, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass}, |
| 414 | }; |
| 415 | |
| 416 | return {OptionStrTable, OptionPrefixesTable, |
| 417 | OptionInfoTable, OptionInfoExtrasTable, OptionHelpTextVariantsTable, {}, OptionSubCommandIDsTable}; |
| 418 | } |
| 419 | #undef OPTTABLE_CODE |
| 420 | #endif // OPTTABLE_CODE || OPTIONS_STRUCT_DEFS |
| 421 | |
| 422 | |
| 423 | #ifdef OPTIONS_STRUCT_DECL |
| 424 | #undef OPTIONS_STRUCT_DECL |
| 425 | #include "llvm/ADT/ArrayRef.h" |
| 426 | #include "llvm/ADT/BoolOrDefault.h" |
| 427 | #include "llvm/ADT/StringRef.h" |
| 428 | #include "llvm/Support/Allocator.h" |
| 429 | |
| 430 | namespace llvm { |
| 431 | namespace opt { |
| 432 | class Arg; |
| 433 | class OptTable; |
| 434 | } // namespace opt |
| 435 | } // namespace llvm |
| 436 | |
| 437 | namespace llvm { |
| 438 | struct AArch64Options { |
| 439 | bool a57_fp_load_balancing_force_all{false}; |
| 440 | unsigned a57_fp_load_balancing_override{0}; |
| 441 | bool simd_scalar_force_all{false}; |
| 442 | bool arm64ec_generate_thunks{true}; |
| 443 | bool arm64ec_lower_direct_to_indirect{true}; |
| 444 | std::optional<AArch64PAuth::PtrauthCheckMode> ptrauth_auth_checks{std::nullopt}; |
| 445 | unsigned code_layout_opt_align_functions{64}; |
| 446 | unsigned ccmp_limit{30}; |
| 447 | bool stress_ccmp{false}; |
| 448 | bool disable_multivector_spill_fill{false}; |
| 449 | bool order_frame_objects{true}; |
| 450 | bool redzone{false}; |
| 451 | bool split_sve_objects{true}; |
| 452 | bool stack_hazard_in_non_streaming{false}; |
| 453 | unsigned {0}; |
| 454 | bool homogeneous_prolog_epilog{false}; |
| 455 | bool stack_tagging_merge_settag{true}; |
| 456 | unsigned b_offset_bits{26}; |
| 457 | unsigned bcc_offset_bits{19}; |
| 458 | unsigned cb_offset_bits{9}; |
| 459 | unsigned cbz_offset_bits{19}; |
| 460 | bool outliner_compact_unwind_frame{true}; |
| 461 | unsigned search_limit{2048}; |
| 462 | unsigned tbz_offset_bits{14}; |
| 463 | int br_merging_base_cost{2}; |
| 464 | int br_merging_cbz_tbnz_bias{6}; |
| 465 | int br_merging_ccmp_bias{6}; |
| 466 | int br_merging_likely_bias{0}; |
| 467 | int br_merging_unlikely_bias{-1}; |
| 468 | bool elf_ldtls_generation{false}; |
| 469 | bool enable_ext_to_tbl{true}; |
| 470 | bool enable_gisel_sve{false}; |
| 471 | bool enable_logical_imm{true}; |
| 472 | bool enable_mgather_combine{true}; |
| 473 | unsigned max_xors{16}; |
| 474 | bool sve_vls_bfloat_support{false}; |
| 475 | bool use_conditional_fpmr_write{false}; |
| 476 | bool use_featcpa_codegen{false}; |
| 477 | unsigned load_store_const_scan_limit{10}; |
| 478 | bool load_store_renaming{true}; |
| 479 | unsigned load_store_scan_limit{20}; |
| 480 | unsigned umov_fold_scan_limit{16}; |
| 481 | unsigned update_scan_limit{100}; |
| 482 | int frame_helper_size_threshold{2}; |
| 483 | AArch64PAuth::SetRAStateMode cfi_llvm_set_ra_sign_state{AArch64PAuth::SetRAStateMode::PAuthLR}; |
| 484 | bool stress_promote_const{false}; |
| 485 | bool enable_ptrue_coalescing{true}; |
| 486 | bool lower_to_sme_routines{true}; |
| 487 | bool use_mops{true}; |
| 488 | bool slh_loads{true}; |
| 489 | llvm::BoolOrDefault stack_tagging_merge_init{llvm::BoolOrDefault::Default}; |
| 490 | unsigned stack_tagging_merge_init_scan_limit{40}; |
| 491 | unsigned stack_tagging_merge_init_size_limit{272}; |
| 492 | std::optional<AArch64::StackTaggingRecordStackHistoryMode> stack_tagging_record_stack_history{std::nullopt}; |
| 493 | llvm::BoolOrDefault stack_tagging_use_stack_safety{llvm::BoolOrDefault::Default}; |
| 494 | bool stack_tagging_first_slot_opt{true}; |
| 495 | AArch64::UncheckedLdStMode stack_tagging_unchecked_ld_st{AArch64::UncheckedLdStMode::Safe}; |
| 496 | std::optional<AArch64PAuth::AuthCheckMethod> authenticated_lr_check_method{std::nullopt}; |
| 497 | bool early_ifcvt{true}; |
| 498 | bool enable_subreg_liveness_tracking{false}; |
| 499 | std::optional<unsigned> {std::nullopt}; |
| 500 | bool macho_enable_nonlazybind{false}; |
| 501 | std::optional<unsigned> min_jump_table_entries{std::nullopt}; |
| 502 | std::optional<unsigned> streaming_hazard_size{std::nullopt}; |
| 503 | bool use_aa{true}; |
| 504 | bool use_tbi{false}; |
| 505 | llvm::BoolOrDefault sve_use_scalar_inc_vl{llvm::BoolOrDefault::Default}; |
| 506 | std::optional<unsigned> sve_vscale_for_tuning{std::nullopt}; |
| 507 | bool enable_atomic_cfg_tidy{true}; |
| 508 | bool enable_branch_relax{true}; |
| 509 | bool enable_branch_targets{true}; |
| 510 | bool enable_ccmp{true}; |
| 511 | bool enable_collect_loh{true}; |
| 512 | bool enable_compress_jump_tables{true}; |
| 513 | bool enable_cond_br_tune{true}; |
| 514 | bool enable_condopt{true}; |
| 515 | bool enable_copy_propagation{true}; |
| 516 | bool enable_copyelim{true}; |
| 517 | bool enable_dead_defs{true}; |
| 518 | bool enable_early_ifcvt{true}; |
| 519 | bool enable_falkor_hwpf_fix{true}; |
| 520 | bool enable_gep_opt{false}; |
| 521 | bool enable_gisel_ldst_postlegal{false}; |
| 522 | bool enable_gisel_ldst_prelegal{true}; |
| 523 | int enable_global_isel_at_O{0}; |
| 524 | llvm::BoolOrDefault enable_global_merge{llvm::BoolOrDefault::Default}; |
| 525 | bool enable_ldst_opt{true}; |
| 526 | bool enable_loop_data_prefetch{true}; |
| 527 | bool enable_mcr{true}; |
| 528 | bool enable_pipeliner{false}; |
| 529 | bool enable_predicate_as_counter_loop_rewrites{false}; |
| 530 | bool enable_promote_const{true}; |
| 531 | bool enable_simd_scalar{false}; |
| 532 | bool enable_sink_fold{true}; |
| 533 | bool enable_stp_suppress{true}; |
| 534 | bool enable_sve_shuffle_opts{true}; |
| 535 | bool select_opt{true}; |
| 536 | bool srlt_mitigate_sr2r{true}; |
| 537 | unsigned sve_vector_bits_max{0}; |
| 538 | unsigned sve_vector_bits_min{0}; |
| 539 | bool enable_aarch64_sme_peephole_opt{true}; |
| 540 | bool force_streaming{false}; |
| 541 | bool force_streaming_compatible{false}; |
| 542 | bool emit_debug_tls_location{false}; |
| 543 | unsigned base_histcnt_cost{8}; |
| 544 | int force_unroll_threshold{0}; |
| 545 | unsigned call_penalty_sm_change{5}; |
| 546 | unsigned dmb_lookahead_threshold{10}; |
| 547 | bool enable_aarch64_lsr_cost_opt{true}; |
| 548 | bool enable_aarch64_or_like_select{true}; |
| 549 | bool enable_falkor_hwpf_unroll_fix{true}; |
| 550 | bool enable_fixedwidth_autovec_in_streaming_mode{false}; |
| 551 | bool enable_scalable_autovec_in_streaming_mode{false}; |
| 552 | unsigned inline_call_penalty_sm_change{10}; |
| 553 | unsigned neon_nonconst_stride_overhead{10}; |
| 554 | std::optional<unsigned> sve_gather_overhead{std::nullopt}; |
| 555 | llvm::BoolOrDefault sve_prefer_fixed_over_scalable_if_equal{llvm::BoolOrDefault::Default}; |
| 556 | std::optional<unsigned> sve_scatter_overhead{std::nullopt}; |
| 557 | unsigned sve_tail_folding_insn_threshold{15}; |
| 558 | bool postlegalizer_consecutive_memops{true}; |
| 559 | |
| 560 | /// The instance cl::ParseCommandLineOptions sets. |
| 561 | static AArch64Options Global; |
| 562 | |
| 563 | static const llvm::opt::OptTable &optTable(); |
| 564 | /// Sets the member that \p A names, allocating a list from \p Alloc. |
| 565 | /// Returns false if the value is invalid. |
| 566 | bool apply(const llvm::opt::Arg &A, llvm::BumpPtrAllocator &Alloc); |
| 567 | }; |
| 568 | } // namespace llvm |
| 569 | #endif // OPTIONS_STRUCT_DECL |
| 570 | |
| 571 | #ifdef OPTIONS_STRUCT_DEFS |
| 572 | #undef OPTIONS_STRUCT_DEFS |
| 573 | llvm::AArch64Options llvm::AArch64Options::Global; |
| 574 | |
| 575 | namespace { |
| 576 | enum ID : unsigned { |
| 577 | OPT_INVALID = 0, |
| 578 | OPT_INPUT, |
| 579 | OPT_UNKNOWN, |
| 580 | OPT_aarch64_a57_fp_load_balancing_force_all, |
| 581 | OPT_aarch64_a57_fp_load_balancing_override, |
| 582 | OPT_aarch64_authenticated_lr_check_method, |
| 583 | OPT_aarch64_b_offset_bits, |
| 584 | OPT_aarch64_base_histcnt_cost, |
| 585 | OPT_aarch64_bcc_offset_bits, |
| 586 | OPT_aarch64_br_merging_base_cost, |
| 587 | OPT_aarch64_br_merging_cbz_tbnz_bias, |
| 588 | OPT_aarch64_br_merging_ccmp_bias, |
| 589 | OPT_aarch64_br_merging_likely_bias, |
| 590 | OPT_aarch64_br_merging_unlikely_bias, |
| 591 | OPT_aarch64_cb_offset_bits, |
| 592 | OPT_aarch64_cbz_offset_bits, |
| 593 | OPT_aarch64_ccmp_limit, |
| 594 | OPT_aarch64_cfi_llvm_set_ra_sign_state, |
| 595 | OPT_aarch64_code_layout_opt_align_functions, |
| 596 | OPT_aarch64_disable_multivector_spill_fill, |
| 597 | OPT_aarch64_early_ifcvt, |
| 598 | OPT_aarch64_elf_ldtls_generation, |
| 599 | OPT_aarch64_emit_debug_tls_location, |
| 600 | OPT_aarch64_enable_atomic_cfg_tidy, |
| 601 | OPT_aarch64_enable_branch_relax, |
| 602 | OPT_aarch64_enable_branch_targets, |
| 603 | OPT_aarch64_enable_ccmp, |
| 604 | OPT_aarch64_enable_collect_loh, |
| 605 | OPT_aarch64_enable_compress_jump_tables, |
| 606 | OPT_aarch64_enable_cond_br_tune, |
| 607 | OPT_aarch64_enable_condopt, |
| 608 | OPT_aarch64_enable_copy_propagation, |
| 609 | OPT_aarch64_enable_copyelim, |
| 610 | OPT_aarch64_enable_dead_defs, |
| 611 | OPT_aarch64_enable_early_ifcvt, |
| 612 | OPT_aarch64_enable_ext_to_tbl, |
| 613 | OPT_aarch64_enable_falkor_hwpf_fix, |
| 614 | OPT_aarch64_enable_gep_opt, |
| 615 | OPT_aarch64_enable_gisel_ldst_postlegal, |
| 616 | OPT_aarch64_enable_gisel_ldst_prelegal, |
| 617 | OPT_aarch64_enable_gisel_sve, |
| 618 | OPT_aarch64_enable_global_isel_at_O, |
| 619 | OPT_aarch64_enable_global_merge, |
| 620 | OPT_aarch64_enable_ldst_opt, |
| 621 | OPT_aarch64_enable_logical_imm, |
| 622 | OPT_aarch64_enable_loop_data_prefetch, |
| 623 | OPT_aarch64_enable_mcr, |
| 624 | OPT_aarch64_enable_mgather_combine, |
| 625 | OPT_aarch64_enable_pipeliner, |
| 626 | OPT_aarch64_enable_predicate_as_counter_loop_rewrites, |
| 627 | OPT_aarch64_enable_promote_const, |
| 628 | OPT_aarch64_enable_ptrue_coalescing, |
| 629 | OPT_aarch64_enable_simd_scalar, |
| 630 | OPT_aarch64_enable_sink_fold, |
| 631 | OPT_aarch64_enable_stp_suppress, |
| 632 | OPT_aarch64_enable_subreg_liveness_tracking, |
| 633 | OPT_aarch64_enable_sve_shuffle_opts, |
| 634 | OPT_aarch64_force_unroll_threshold, |
| 635 | OPT_aarch64_insert_extract_base_cost, |
| 636 | OPT_aarch64_load_store_const_scan_limit, |
| 637 | OPT_aarch64_load_store_renaming, |
| 638 | OPT_aarch64_load_store_scan_limit, |
| 639 | OPT_aarch64_lower_to_sme_routines, |
| 640 | OPT_aarch64_macho_enable_nonlazybind, |
| 641 | OPT_aarch64_max_xors, |
| 642 | OPT_aarch64_min_jump_table_entries, |
| 643 | OPT_aarch64_order_frame_objects, |
| 644 | OPT_aarch64_outliner_compact_unwind_frame, |
| 645 | OPT_aarch64_postlegalizer_consecutive_memops, |
| 646 | OPT_aarch64_ptrauth_auth_checks, |
| 647 | OPT_aarch64_redzone, |
| 648 | OPT_aarch64_search_limit, |
| 649 | OPT_aarch64_select_opt, |
| 650 | OPT_aarch64_simd_scalar_force_all, |
| 651 | OPT_aarch64_slh_loads, |
| 652 | OPT_aarch64_split_sve_objects, |
| 653 | OPT_aarch64_srlt_mitigate_sr2r, |
| 654 | OPT_aarch64_stack_hazard_in_non_streaming, |
| 655 | OPT_aarch64_stack_hazard_remark_size, |
| 656 | OPT_aarch64_stack_hazard_size, |
| 657 | OPT_streaming_hazard_size, |
| 658 | OPT_aarch64_stress_ccmp, |
| 659 | OPT_aarch64_stress_promote_const, |
| 660 | OPT_aarch64_sve_vector_bits_max, |
| 661 | OPT_aarch64_sve_vector_bits_min, |
| 662 | OPT_aarch64_sve_vls_bfloat_support, |
| 663 | OPT_aarch64_tbz_offset_bits, |
| 664 | OPT_aarch64_umov_fold_scan_limit, |
| 665 | OPT_aarch64_update_scan_limit, |
| 666 | OPT_aarch64_use_aa, |
| 667 | OPT_aarch64_use_conditional_fpmr_write, |
| 668 | OPT_aarch64_use_featcpa_codegen, |
| 669 | OPT_aarch64_use_mops, |
| 670 | OPT_aarch64_use_tbi, |
| 671 | OPT_arm64ec_generate_thunks, |
| 672 | OPT_arm64ec_lower_direct_to_indirect, |
| 673 | OPT_call_penalty_sm_change, |
| 674 | OPT_dmb_lookahead_threshold, |
| 675 | OPT_enable_aarch64_lsr_cost_opt, |
| 676 | OPT_enable_aarch64_or_like_select, |
| 677 | OPT_enable_aarch64_sme_peephole_opt, |
| 678 | OPT_enable_falkor_hwpf_unroll_fix, |
| 679 | OPT_enable_fixedwidth_autovec_in_streaming_mode, |
| 680 | OPT_enable_scalable_autovec_in_streaming_mode, |
| 681 | OPT_force_streaming_compatible, |
| 682 | OPT_force_streaming, |
| 683 | OPT_frame_helper_size_threshold, |
| 684 | OPT_homogeneous_prolog_epilog, |
| 685 | OPT_inline_call_penalty_sm_change, |
| 686 | OPT_neon_nonconst_stride_overhead, |
| 687 | OPT_stack_tagging_first_slot_opt, |
| 688 | OPT_stack_tagging_merge_init_scan_limit, |
| 689 | OPT_stack_tagging_merge_init_size_limit, |
| 690 | OPT_stack_tagging_merge_init, |
| 691 | OPT_stack_tagging_merge_settag, |
| 692 | OPT_stack_tagging_record_stack_history, |
| 693 | OPT_stack_tagging_unchecked_ld_st, |
| 694 | OPT_stack_tagging_use_stack_safety, |
| 695 | OPT_sve_gather_overhead, |
| 696 | OPT_sve_prefer_fixed_over_scalable_if_equal, |
| 697 | OPT_sve_scatter_overhead, |
| 698 | OPT_sve_tail_folding_insn_threshold, |
| 699 | OPT_sve_use_scalar_inc_vl, |
| 700 | OPT_sve_vscale_for_tuning, |
| 701 | }; |
| 702 | } // namespace |
| 703 | |
| 704 | const llvm::opt::OptTable &llvm::AArch64Options::optTable() { |
| 705 | static const llvm::opt::LibraryOptTable T(optionTables()); |
| 706 | return T; |
| 707 | } |
| 708 | |
| 709 | bool llvm::AArch64Options::apply(const llvm::opt::Arg &A, llvm::BumpPtrAllocator &Alloc) { |
| 710 | switch (A.getOption().getID()) { |
| 711 | case OPT_aarch64_a57_fp_load_balancing_force_all: |
| 712 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , a57_fp_load_balancing_force_all, Alloc); |
| 713 | case OPT_aarch64_a57_fp_load_balancing_override: |
| 714 | return llvm::opt::parseArgValue(A.getValue(), a57_fp_load_balancing_override, Alloc); |
| 715 | case OPT_aarch64_authenticated_lr_check_method: |
| 716 | return llvm::opt::parseArgValue(A.getValue(), authenticated_lr_check_method, Alloc, [](llvm::StringRef V, auto &X) { |
| 717 | if (V == "none" ) { |
| 718 | X = AArch64PAuth::AuthCheckMethod::None; |
| 719 | return true; |
| 720 | } |
| 721 | if (V == "load" ) { |
| 722 | X = AArch64PAuth::AuthCheckMethod::DummyLoad; |
| 723 | return true; |
| 724 | } |
| 725 | if (V == "high-bits-notbi" ) { |
| 726 | X = AArch64PAuth::AuthCheckMethod::HighBitsNoTBI; |
| 727 | return true; |
| 728 | } |
| 729 | if (V == "xpac" ) { |
| 730 | X = AArch64PAuth::AuthCheckMethod::XPAC; |
| 731 | return true; |
| 732 | } |
| 733 | if (V == "xpac-hint" ) { |
| 734 | X = AArch64PAuth::AuthCheckMethod::XPACHint; |
| 735 | return true; |
| 736 | } |
| 737 | return false; |
| 738 | }); |
| 739 | case OPT_aarch64_b_offset_bits: |
| 740 | return llvm::opt::parseArgValue(A.getValue(), b_offset_bits, Alloc); |
| 741 | case OPT_aarch64_base_histcnt_cost: |
| 742 | return llvm::opt::parseArgValue(A.getValue(), base_histcnt_cost, Alloc); |
| 743 | case OPT_aarch64_bcc_offset_bits: |
| 744 | return llvm::opt::parseArgValue(A.getValue(), bcc_offset_bits, Alloc); |
| 745 | case OPT_aarch64_br_merging_base_cost: |
| 746 | return llvm::opt::parseArgValue(A.getValue(), br_merging_base_cost, Alloc); |
| 747 | case OPT_aarch64_br_merging_cbz_tbnz_bias: |
| 748 | return llvm::opt::parseArgValue(A.getValue(), br_merging_cbz_tbnz_bias, Alloc); |
| 749 | case OPT_aarch64_br_merging_ccmp_bias: |
| 750 | return llvm::opt::parseArgValue(A.getValue(), br_merging_ccmp_bias, Alloc); |
| 751 | case OPT_aarch64_br_merging_likely_bias: |
| 752 | return llvm::opt::parseArgValue(A.getValue(), br_merging_likely_bias, Alloc); |
| 753 | case OPT_aarch64_br_merging_unlikely_bias: |
| 754 | return llvm::opt::parseArgValue(A.getValue(), br_merging_unlikely_bias, Alloc); |
| 755 | case OPT_aarch64_cb_offset_bits: |
| 756 | return llvm::opt::parseArgValue(A.getValue(), cb_offset_bits, Alloc); |
| 757 | case OPT_aarch64_cbz_offset_bits: |
| 758 | return llvm::opt::parseArgValue(A.getValue(), cbz_offset_bits, Alloc); |
| 759 | case OPT_aarch64_ccmp_limit: |
| 760 | return llvm::opt::parseArgValue(A.getValue(), ccmp_limit, Alloc); |
| 761 | case OPT_aarch64_cfi_llvm_set_ra_sign_state: |
| 762 | return llvm::opt::parseArgValue(A.getValue(), cfi_llvm_set_ra_sign_state, Alloc, [](llvm::StringRef V, auto &X) { |
| 763 | if (V == "never" ) { |
| 764 | X = AArch64PAuth::SetRAStateMode::Never; |
| 765 | return true; |
| 766 | } |
| 767 | if (V == "pauth-lr" ) { |
| 768 | X = AArch64PAuth::SetRAStateMode::PAuthLR; |
| 769 | return true; |
| 770 | } |
| 771 | if (V == "always" ) { |
| 772 | X = AArch64PAuth::SetRAStateMode::Always; |
| 773 | return true; |
| 774 | } |
| 775 | return false; |
| 776 | }); |
| 777 | case OPT_aarch64_code_layout_opt_align_functions: |
| 778 | return llvm::opt::parseArgValue(A.getValue(), code_layout_opt_align_functions, Alloc); |
| 779 | case OPT_aarch64_disable_multivector_spill_fill: |
| 780 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , disable_multivector_spill_fill, Alloc); |
| 781 | case OPT_aarch64_early_ifcvt: |
| 782 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , early_ifcvt, Alloc); |
| 783 | case OPT_aarch64_elf_ldtls_generation: |
| 784 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , elf_ldtls_generation, Alloc); |
| 785 | case OPT_aarch64_emit_debug_tls_location: |
| 786 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , emit_debug_tls_location, Alloc); |
| 787 | case OPT_aarch64_enable_atomic_cfg_tidy: |
| 788 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_atomic_cfg_tidy, Alloc); |
| 789 | case OPT_aarch64_enable_branch_relax: |
| 790 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_branch_relax, Alloc); |
| 791 | case OPT_aarch64_enable_branch_targets: |
| 792 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_branch_targets, Alloc); |
| 793 | case OPT_aarch64_enable_ccmp: |
| 794 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_ccmp, Alloc); |
| 795 | case OPT_aarch64_enable_collect_loh: |
| 796 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_collect_loh, Alloc); |
| 797 | case OPT_aarch64_enable_compress_jump_tables: |
| 798 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_compress_jump_tables, Alloc); |
| 799 | case OPT_aarch64_enable_cond_br_tune: |
| 800 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_cond_br_tune, Alloc); |
| 801 | case OPT_aarch64_enable_condopt: |
| 802 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_condopt, Alloc); |
| 803 | case OPT_aarch64_enable_copy_propagation: |
| 804 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_copy_propagation, Alloc); |
| 805 | case OPT_aarch64_enable_copyelim: |
| 806 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_copyelim, Alloc); |
| 807 | case OPT_aarch64_enable_dead_defs: |
| 808 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_dead_defs, Alloc); |
| 809 | case OPT_aarch64_enable_early_ifcvt: |
| 810 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_early_ifcvt, Alloc); |
| 811 | case OPT_aarch64_enable_ext_to_tbl: |
| 812 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_ext_to_tbl, Alloc); |
| 813 | case OPT_aarch64_enable_falkor_hwpf_fix: |
| 814 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_falkor_hwpf_fix, Alloc); |
| 815 | case OPT_aarch64_enable_gep_opt: |
| 816 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_gep_opt, Alloc); |
| 817 | case OPT_aarch64_enable_gisel_ldst_postlegal: |
| 818 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_gisel_ldst_postlegal, Alloc); |
| 819 | case OPT_aarch64_enable_gisel_ldst_prelegal: |
| 820 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_gisel_ldst_prelegal, Alloc); |
| 821 | case OPT_aarch64_enable_gisel_sve: |
| 822 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_gisel_sve, Alloc); |
| 823 | case OPT_aarch64_enable_global_isel_at_O: |
| 824 | return llvm::opt::parseArgValue(A.getValue(), enable_global_isel_at_O, Alloc); |
| 825 | case OPT_aarch64_enable_global_merge: |
| 826 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_global_merge, Alloc); |
| 827 | case OPT_aarch64_enable_ldst_opt: |
| 828 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_ldst_opt, Alloc); |
| 829 | case OPT_aarch64_enable_logical_imm: |
| 830 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_logical_imm, Alloc); |
| 831 | case OPT_aarch64_enable_loop_data_prefetch: |
| 832 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_loop_data_prefetch, Alloc); |
| 833 | case OPT_aarch64_enable_mcr: |
| 834 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_mcr, Alloc); |
| 835 | case OPT_aarch64_enable_mgather_combine: |
| 836 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_mgather_combine, Alloc); |
| 837 | case OPT_aarch64_enable_pipeliner: |
| 838 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_pipeliner, Alloc); |
| 839 | case OPT_aarch64_enable_predicate_as_counter_loop_rewrites: |
| 840 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_predicate_as_counter_loop_rewrites, Alloc); |
| 841 | case OPT_aarch64_enable_promote_const: |
| 842 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_promote_const, Alloc); |
| 843 | case OPT_aarch64_enable_ptrue_coalescing: |
| 844 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_ptrue_coalescing, Alloc); |
| 845 | case OPT_aarch64_enable_simd_scalar: |
| 846 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_simd_scalar, Alloc); |
| 847 | case OPT_aarch64_enable_sink_fold: |
| 848 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_sink_fold, Alloc); |
| 849 | case OPT_aarch64_enable_stp_suppress: |
| 850 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_stp_suppress, Alloc); |
| 851 | case OPT_aarch64_enable_subreg_liveness_tracking: |
| 852 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_subreg_liveness_tracking, Alloc); |
| 853 | case OPT_aarch64_enable_sve_shuffle_opts: |
| 854 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_sve_shuffle_opts, Alloc); |
| 855 | case OPT_aarch64_force_unroll_threshold: |
| 856 | return llvm::opt::parseArgValue(A.getValue(), force_unroll_threshold, Alloc); |
| 857 | case OPT_aarch64_insert_extract_base_cost: |
| 858 | return llvm::opt::parseArgValue(A.getValue(), insert_extract_base_cost, Alloc); |
| 859 | case OPT_aarch64_load_store_const_scan_limit: |
| 860 | return llvm::opt::parseArgValue(A.getValue(), load_store_const_scan_limit, Alloc); |
| 861 | case OPT_aarch64_load_store_renaming: |
| 862 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , load_store_renaming, Alloc); |
| 863 | case OPT_aarch64_load_store_scan_limit: |
| 864 | return llvm::opt::parseArgValue(A.getValue(), load_store_scan_limit, Alloc); |
| 865 | case OPT_aarch64_lower_to_sme_routines: |
| 866 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , lower_to_sme_routines, Alloc); |
| 867 | case OPT_aarch64_macho_enable_nonlazybind: |
| 868 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , macho_enable_nonlazybind, Alloc); |
| 869 | case OPT_aarch64_max_xors: |
| 870 | return llvm::opt::parseArgValue(A.getValue(), max_xors, Alloc); |
| 871 | case OPT_aarch64_min_jump_table_entries: |
| 872 | return llvm::opt::parseArgValue(A.getValue(), min_jump_table_entries, Alloc); |
| 873 | case OPT_aarch64_order_frame_objects: |
| 874 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , order_frame_objects, Alloc); |
| 875 | case OPT_aarch64_outliner_compact_unwind_frame: |
| 876 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , outliner_compact_unwind_frame, Alloc); |
| 877 | case OPT_aarch64_postlegalizer_consecutive_memops: |
| 878 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , postlegalizer_consecutive_memops, Alloc); |
| 879 | case OPT_aarch64_ptrauth_auth_checks: |
| 880 | return llvm::opt::parseArgValue(A.getValue(), ptrauth_auth_checks, Alloc, [](llvm::StringRef V, auto &X) { |
| 881 | if (V == "none" ) { |
| 882 | X = AArch64PAuth::PtrauthCheckMode::Unchecked; |
| 883 | return true; |
| 884 | } |
| 885 | if (V == "poison" ) { |
| 886 | X = AArch64PAuth::PtrauthCheckMode::Poison; |
| 887 | return true; |
| 888 | } |
| 889 | if (V == "trap" ) { |
| 890 | X = AArch64PAuth::PtrauthCheckMode::Trap; |
| 891 | return true; |
| 892 | } |
| 893 | return false; |
| 894 | }); |
| 895 | case OPT_aarch64_redzone: |
| 896 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , redzone, Alloc); |
| 897 | case OPT_aarch64_search_limit: |
| 898 | return llvm::opt::parseArgValue(A.getValue(), search_limit, Alloc); |
| 899 | case OPT_aarch64_select_opt: |
| 900 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , select_opt, Alloc); |
| 901 | case OPT_aarch64_simd_scalar_force_all: |
| 902 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , simd_scalar_force_all, Alloc); |
| 903 | case OPT_aarch64_slh_loads: |
| 904 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , slh_loads, Alloc); |
| 905 | case OPT_aarch64_split_sve_objects: |
| 906 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , split_sve_objects, Alloc); |
| 907 | case OPT_aarch64_srlt_mitigate_sr2r: |
| 908 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , srlt_mitigate_sr2r, Alloc); |
| 909 | case OPT_aarch64_stack_hazard_in_non_streaming: |
| 910 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , stack_hazard_in_non_streaming, Alloc); |
| 911 | case OPT_aarch64_stack_hazard_remark_size: |
| 912 | return llvm::opt::parseArgValue(A.getValue(), stack_hazard_remark_size, Alloc); |
| 913 | case OPT_streaming_hazard_size: |
| 914 | return llvm::opt::parseArgValue(A.getValue(), streaming_hazard_size, Alloc); |
| 915 | case OPT_aarch64_stress_ccmp: |
| 916 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , stress_ccmp, Alloc); |
| 917 | case OPT_aarch64_stress_promote_const: |
| 918 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , stress_promote_const, Alloc); |
| 919 | case OPT_aarch64_sve_vector_bits_max: |
| 920 | return llvm::opt::parseArgValue(A.getValue(), sve_vector_bits_max, Alloc); |
| 921 | case OPT_aarch64_sve_vector_bits_min: |
| 922 | return llvm::opt::parseArgValue(A.getValue(), sve_vector_bits_min, Alloc); |
| 923 | case OPT_aarch64_sve_vls_bfloat_support: |
| 924 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , sve_vls_bfloat_support, Alloc); |
| 925 | case OPT_aarch64_tbz_offset_bits: |
| 926 | return llvm::opt::parseArgValue(A.getValue(), tbz_offset_bits, Alloc); |
| 927 | case OPT_aarch64_umov_fold_scan_limit: |
| 928 | return llvm::opt::parseArgValue(A.getValue(), umov_fold_scan_limit, Alloc); |
| 929 | case OPT_aarch64_update_scan_limit: |
| 930 | return llvm::opt::parseArgValue(A.getValue(), update_scan_limit, Alloc); |
| 931 | case OPT_aarch64_use_aa: |
| 932 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , use_aa, Alloc); |
| 933 | case OPT_aarch64_use_conditional_fpmr_write: |
| 934 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , use_conditional_fpmr_write, Alloc); |
| 935 | case OPT_aarch64_use_featcpa_codegen: |
| 936 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , use_featcpa_codegen, Alloc); |
| 937 | case OPT_aarch64_use_mops: |
| 938 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , use_mops, Alloc); |
| 939 | case OPT_aarch64_use_tbi: |
| 940 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , use_tbi, Alloc); |
| 941 | case OPT_arm64ec_generate_thunks: |
| 942 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , arm64ec_generate_thunks, Alloc); |
| 943 | case OPT_arm64ec_lower_direct_to_indirect: |
| 944 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , arm64ec_lower_direct_to_indirect, Alloc); |
| 945 | case OPT_call_penalty_sm_change: |
| 946 | return llvm::opt::parseArgValue(A.getValue(), call_penalty_sm_change, Alloc); |
| 947 | case OPT_dmb_lookahead_threshold: |
| 948 | return llvm::opt::parseArgValue(A.getValue(), dmb_lookahead_threshold, Alloc); |
| 949 | case OPT_enable_aarch64_lsr_cost_opt: |
| 950 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_aarch64_lsr_cost_opt, Alloc); |
| 951 | case OPT_enable_aarch64_or_like_select: |
| 952 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_aarch64_or_like_select, Alloc); |
| 953 | case OPT_enable_aarch64_sme_peephole_opt: |
| 954 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_aarch64_sme_peephole_opt, Alloc); |
| 955 | case OPT_enable_falkor_hwpf_unroll_fix: |
| 956 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_falkor_hwpf_unroll_fix, Alloc); |
| 957 | case OPT_enable_fixedwidth_autovec_in_streaming_mode: |
| 958 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_fixedwidth_autovec_in_streaming_mode, Alloc); |
| 959 | case OPT_enable_scalable_autovec_in_streaming_mode: |
| 960 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , enable_scalable_autovec_in_streaming_mode, Alloc); |
| 961 | case OPT_force_streaming_compatible: |
| 962 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , force_streaming_compatible, Alloc); |
| 963 | case OPT_force_streaming: |
| 964 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , force_streaming, Alloc); |
| 965 | case OPT_frame_helper_size_threshold: |
| 966 | return llvm::opt::parseArgValue(A.getValue(), frame_helper_size_threshold, Alloc); |
| 967 | case OPT_homogeneous_prolog_epilog: |
| 968 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , homogeneous_prolog_epilog, Alloc); |
| 969 | case OPT_inline_call_penalty_sm_change: |
| 970 | return llvm::opt::parseArgValue(A.getValue(), inline_call_penalty_sm_change, Alloc); |
| 971 | case OPT_neon_nonconst_stride_overhead: |
| 972 | return llvm::opt::parseArgValue(A.getValue(), neon_nonconst_stride_overhead, Alloc); |
| 973 | case OPT_stack_tagging_first_slot_opt: |
| 974 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , stack_tagging_first_slot_opt, Alloc); |
| 975 | case OPT_stack_tagging_merge_init_scan_limit: |
| 976 | return llvm::opt::parseArgValue(A.getValue(), stack_tagging_merge_init_scan_limit, Alloc); |
| 977 | case OPT_stack_tagging_merge_init_size_limit: |
| 978 | return llvm::opt::parseArgValue(A.getValue(), stack_tagging_merge_init_size_limit, Alloc); |
| 979 | case OPT_stack_tagging_merge_init: |
| 980 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , stack_tagging_merge_init, Alloc); |
| 981 | case OPT_stack_tagging_merge_settag: |
| 982 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , stack_tagging_merge_settag, Alloc); |
| 983 | case OPT_stack_tagging_record_stack_history: |
| 984 | return llvm::opt::parseArgValue(A.getValue(), stack_tagging_record_stack_history, Alloc, [](llvm::StringRef V, auto &X) { |
| 985 | if (V == "none" ) { |
| 986 | X = AArch64::StackTaggingRecordStackHistoryMode::None; |
| 987 | return true; |
| 988 | } |
| 989 | if (V == "instr" ) { |
| 990 | X = AArch64::StackTaggingRecordStackHistoryMode::Instr; |
| 991 | return true; |
| 992 | } |
| 993 | return false; |
| 994 | }); |
| 995 | case OPT_stack_tagging_unchecked_ld_st: |
| 996 | return llvm::opt::parseArgValue(A.getValue(), stack_tagging_unchecked_ld_st, Alloc, [](llvm::StringRef V, auto &X) { |
| 997 | if (V == "never" ) { |
| 998 | X = AArch64::UncheckedLdStMode::Never; |
| 999 | return true; |
| 1000 | } |
| 1001 | if (V == "safe" ) { |
| 1002 | X = AArch64::UncheckedLdStMode::Safe; |
| 1003 | return true; |
| 1004 | } |
| 1005 | if (V == "always" ) { |
| 1006 | X = AArch64::UncheckedLdStMode::Always; |
| 1007 | return true; |
| 1008 | } |
| 1009 | return false; |
| 1010 | }); |
| 1011 | case OPT_stack_tagging_use_stack_safety: |
| 1012 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , stack_tagging_use_stack_safety, Alloc); |
| 1013 | case OPT_sve_gather_overhead: |
| 1014 | return llvm::opt::parseArgValue(A.getValue(), sve_gather_overhead, Alloc); |
| 1015 | case OPT_sve_prefer_fixed_over_scalable_if_equal: |
| 1016 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , sve_prefer_fixed_over_scalable_if_equal, Alloc); |
| 1017 | case OPT_sve_scatter_overhead: |
| 1018 | return llvm::opt::parseArgValue(A.getValue(), sve_scatter_overhead, Alloc); |
| 1019 | case OPT_sve_tail_folding_insn_threshold: |
| 1020 | return llvm::opt::parseArgValue(A.getValue(), sve_tail_folding_insn_threshold, Alloc); |
| 1021 | case OPT_sve_use_scalar_inc_vl: |
| 1022 | return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true" , sve_use_scalar_inc_vl, Alloc); |
| 1023 | case OPT_sve_vscale_for_tuning: |
| 1024 | return llvm::opt::parseArgValue(A.getValue(), sve_vscale_for_tuning, Alloc); |
| 1025 | } |
| 1026 | llvm_unreachable("option without a member" ); |
| 1027 | } |
| 1028 | #endif // OPTIONS_STRUCT_DEFS |
| 1029 | ///////// |
| 1030 | // ValuesCode |
| 1031 | |
| 1032 | #ifdef OPTTABLE_VALUES_CODE |
| 1033 | static llvm::StringRef getOptionValuesCode(unsigned ID) { |
| 1034 | switch (ID) { |
| 1035 | } |
| 1036 | return {}; |
| 1037 | } |
| 1038 | #undef OPTTABLE_VALUES_CODE |
| 1039 | #endif // OPTTABLE_VALUES_CODE |
| 1040 | ///////// |
| 1041 | // Groups |
| 1042 | |
| 1043 | #ifdef OPTION |
| 1044 | |
| 1045 | ////////// |
| 1046 | // Options |
| 1047 | |
| 1048 | OPTION(0, 6 /* <input> */, INPUT, Input, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 0, 0, 0, 0, 0) |
| 1049 | OPTION(0, 14 /* <unknown> */, UNKNOWN, Unknown, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 0, 0, 0, 0, 0) |
| 1050 | OPTION(1, 24 /* -aarch64-a57-fp-load-balancing-force-all */, anonymous_0, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 65, 0, 0, 0, 0) |
| 1051 | OPTION(1, 114 /* -aarch64-a57-fp-load-balancing-override */, anonymous_1, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 154, 0, 0, 0, 0) |
| 1052 | OPTION(1, 214 /* -aarch64-authenticated-lr-check-method */, anonymous_57, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 253, 0, 328, 371, 0) |
| 1053 | OPTION(1, 412 /* -aarch64-b-offset-bits */, anonymous_17, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 435, 0, 0, 0, 0) |
| 1054 | OPTION(1, 476 /* -aarch64-base-histcnt-cost */, anonymous_104, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 503, 0, 0, 0, 0) |
| 1055 | OPTION(1, 537 /* -aarch64-bcc-offset-bits */, anonymous_18, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 562, 0, 0, 0, 0) |
| 1056 | OPTION(1, 605 /* -aarch64-br-merging-base-cost */, anonymous_24, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 635, 0, 0, 0, 0) |
| 1057 | OPTION(1, 867 /* -aarch64-br-merging-cbz-tbnz-bias */, anonymous_25, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 901, 0, 0, 0, 0) |
| 1058 | OPTION(1, 1068 /* -aarch64-br-merging-ccmp-bias */, anonymous_26, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 1098, 0, 0, 0, 0) |
| 1059 | OPTION(1, 1257 /* -aarch64-br-merging-likely-bias */, anonymous_27, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 1289, 0, 0, 0, 0) |
| 1060 | OPTION(1, 1444 /* -aarch64-br-merging-unlikely-bias */, anonymous_28, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 1478, 0, 0, 0, 0) |
| 1061 | OPTION(1, 1639 /* -aarch64-cb-offset-bits */, anonymous_19, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 1663, 0, 0, 0, 0) |
| 1062 | OPTION(1, 1705 /* -aarch64-cbz-offset-bits */, anonymous_20, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 1730, 0, 0, 0, 0) |
| 1063 | OPTION(1, 1776 /* -aarch64-ccmp-limit */, anonymous_7, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 1796, 0, 0, 0, 0) |
| 1064 | OPTION(1, 1848 /* -aarch64-cfi-llvm-set-ra-sign-state */, anonymous_44, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 1884, 0, 1957, 1981, 0) |
| 1065 | OPTION(1, 2003 /* -aarch64-code-layout-opt-align-functions */, anonymous_6, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 2044, 0, 0, 0, 0) |
| 1066 | OPTION(1, 2124 /* -aarch64-disable-multivector-spill-fill */, anonymous_9, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 2164, 0, 0, 0, 0) |
| 1067 | OPTION(1, 2210 /* -aarch64-early-ifcvt */, anonymous_58, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 2231, 0, 0, 0, 0) |
| 1068 | OPTION(1, 2266 /* -aarch64-elf-ldtls-generation */, anonymous_29, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 2296, 0, 0, 0, 0) |
| 1069 | OPTION(1, 2344 /* -aarch64-emit-debug-tls-location */, anonymous_103, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 2377, 0, 0, 0, 0) |
| 1070 | OPTION(1, 2440 /* -aarch64-enable-atomic-cfg-tidy */, anonymous_68, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 2472, 0, 0, 0, 0) |
| 1071 | OPTION(1, 2568 /* -aarch64-enable-branch-relax */, anonymous_69, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 2597, 0, 0, 0, 0) |
| 1072 | OPTION(1, 2637 /* -aarch64-enable-branch-targets */, anonymous_70, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 2668, 0, 0, 0, 0) |
| 1073 | OPTION(1, 2706 /* -aarch64-enable-ccmp */, anonymous_71, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 2727, 0, 0, 0, 0) |
| 1074 | OPTION(1, 2758 /* -aarch64-enable-collect-loh */, anonymous_72, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 2786, 0, 0, 0, 0) |
| 1075 | OPTION(1, 2849 /* -aarch64-enable-compress-jump-tables */, anonymous_73, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 2886, 0, 0, 0, 0) |
| 1076 | OPTION(1, 2930 /* -aarch64-enable-cond-br-tune */, anonymous_74, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 2959, 0, 0, 0, 0) |
| 1077 | OPTION(1, 3001 /* -aarch64-enable-condopt */, anonymous_75, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3025, 0, 0, 0, 0) |
| 1078 | OPTION(1, 3061 /* -aarch64-enable-copy-propagation */, anonymous_76, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3094, 0, 0, 0, 0) |
| 1079 | OPTION(1, 3146 /* -aarch64-enable-copyelim */, anonymous_77, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3171, 0, 0, 0, 0) |
| 1080 | OPTION(1, 3214 /* -aarch64-enable-dead-defs */, anonymous_78, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3240, 0, 0, 0, 0) |
| 1081 | OPTION(1, 3347 /* -aarch64-enable-early-ifcvt */, anonymous_79, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3375, 0, 0, 0, 0) |
| 1082 | OPTION(1, 3399 /* -aarch64-enable-ext-to-tbl */, anonymous_30, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3426, 0, 0, 0, 0) |
| 1083 | OPTION(1, 3455 /* -aarch64-enable-falkor-hwpf-fix */, anonymous_80, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3487, 0, 0, 0, 0) |
| 1084 | OPTION(1, 3489 /* -aarch64-enable-gep-opt */, anonymous_81, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3513, 0, 0, 0, 0) |
| 1085 | OPTION(1, 3550 /* -aarch64-enable-gisel-ldst-postlegal */, anonymous_82, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3587, 0, 0, 0, 0) |
| 1086 | OPTION(1, 3651 /* -aarch64-enable-gisel-ldst-prelegal */, anonymous_83, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3687, 0, 0, 0, 0) |
| 1087 | OPTION(1, 3750 /* -aarch64-enable-gisel-sve */, anonymous_31, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3776, 0, 0, 0, 0) |
| 1088 | OPTION(1, 3829 /* -aarch64-enable-global-isel-at-O */, anonymous_84, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3862, 0, 0, 0, 0) |
| 1089 | OPTION(1, 3921 /* -aarch64-enable-global-merge */, anonymous_85, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3950, 0, 0, 0, 0) |
| 1090 | OPTION(1, 3979 /* -aarch64-enable-ldst-opt */, anonymous_86, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 4004, 0, 0, 0, 0) |
| 1091 | OPTION(1, 4049 /* -aarch64-enable-logical-imm */, anonymous_32, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 4077, 0, 0, 0, 0) |
| 1092 | OPTION(1, 4129 /* -aarch64-enable-loop-data-prefetch */, anonymous_87, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 4164, 0, 0, 0, 0) |
| 1093 | OPTION(1, 4199 /* -aarch64-enable-mcr */, anonymous_88, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 4219, 0, 0, 0, 0) |
| 1094 | OPTION(1, 4252 /* -aarch64-enable-mgather-combine */, anonymous_33, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 4284, 0, 0, 0, 0) |
| 1095 | OPTION(1, 4336 /* -aarch64-enable-pipeliner */, anonymous_89, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 4362, 0, 0, 0, 0) |
| 1096 | OPTION(1, 4399 /* -aarch64-enable-predicate-as-counter-loop-rewrites */, anonymous_90, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 4450, 0, 0, 0, 0) |
| 1097 | OPTION(1, 4530 /* -aarch64-enable-promote-const */, anonymous_91, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 4560, 0, 0, 0, 0) |
| 1098 | OPTION(1, 4593 /* -aarch64-enable-ptrue-coalescing */, anonymous_46, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 4626, 0, 0, 0, 0) |
| 1099 | OPTION(1, 4689 /* -aarch64-enable-simd-scalar */, anonymous_92, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 4717, 0, 0, 0, 0) |
| 1100 | OPTION(1, 4767 /* -aarch64-enable-sink-fold */, anonymous_93, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 4793, 0, 0, 0, 0) |
| 1101 | OPTION(1, 4842 /* -aarch64-enable-stp-suppress */, anonymous_94, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 4871, 0, 0, 0, 0) |
| 1102 | OPTION(1, 4896 /* -aarch64-enable-subreg-liveness-tracking */, anonymous_59, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 4937, 0, 0, 0, 0) |
| 1103 | OPTION(1, 4969 /* -aarch64-enable-sve-shuffle-opts */, anonymous_95, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 5002, 0, 0, 0, 0) |
| 1104 | OPTION(1, 5114 /* -aarch64-force-unroll-threshold */, anonymous_105, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 5146, 0, 0, 0, 0) |
| 1105 | OPTION(1, 5203 /* -aarch64-insert-extract-base-cost */, anonymous_60, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 5237, 0, 0, 0, 0) |
| 1106 | OPTION(1, 5280 /* -aarch64-load-store-const-scan-limit */, anonymous_38, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3487, 0, 0, 0, 0) |
| 1107 | OPTION(1, 5317 /* -aarch64-load-store-renaming */, anonymous_39, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3487, 0, 0, 0, 0) |
| 1108 | OPTION(1, 5346 /* -aarch64-load-store-scan-limit */, anonymous_40, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3487, 0, 0, 0, 0) |
| 1109 | OPTION(1, 5377 /* -aarch64-lower-to-sme-routines */, anonymous_47, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 5408, 0, 0, 0, 0) |
| 1110 | OPTION(1, 5473 /* -aarch64-macho-enable-nonlazybind */, anonymous_61, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 5507, 0, 0, 0, 0) |
| 1111 | OPTION(1, 5565 /* -aarch64-max-xors */, anonymous_34, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 5583, 0, 0, 0, 0) |
| 1112 | OPTION(1, 5599 /* -aarch64-min-jump-table-entries */, anonymous_62, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 5631, 0, 0, 0, 0) |
| 1113 | OPTION(1, 5692 /* -aarch64-order-frame-objects */, anonymous_10, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 5721, 0, 0, 0, 0) |
| 1114 | OPTION(1, 5744 /* -aarch64-outliner-compact-unwind-frame */, anonymous_21, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 5783, 0, 0, 0, 0) |
| 1115 | OPTION(1, 5841 /* -aarch64-postlegalizer-consecutive-memops */, anonymous_119, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 5883, 0, 0, 0, 0) |
| 1116 | OPTION(1, 5953 /* -aarch64-ptrauth-auth-checks */, anonymous_5, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 5982, 0, 6032, 6051, 0) |
| 1117 | OPTION(1, 6068 /* -aarch64-redzone */, anonymous_11, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 6085, 0, 0, 0, 0) |
| 1118 | OPTION(1, 6118 /* -aarch64-search-limit */, anonymous_22, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 6140, 0, 0, 0, 0) |
| 1119 | OPTION(1, 6234 /* -aarch64-select-opt */, anonymous_96, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 6254, 0, 0, 0, 0) |
| 1120 | OPTION(1, 6292 /* -aarch64-simd-scalar-force-all */, anonymous_2, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 6323, 0, 0, 0, 0) |
| 1121 | OPTION(1, 6375 /* -aarch64-slh-loads */, anonymous_49, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 6394, 0, 0, 0, 0) |
| 1122 | OPTION(1, 6421 /* -aarch64-split-sve-objects */, anonymous_12, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 6448, 0, 0, 0, 0) |
| 1123 | OPTION(1, 6486 /* -aarch64-srlt-mitigate-sr2r */, anonymous_97, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 6514, 0, 0, 0, 0) |
| 1124 | OPTION(1, 6622 /* -aarch64-stack-hazard-in-non-streaming */, anonymous_13, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3487, 0, 0, 0, 0) |
| 1125 | OPTION(1, 6661 /* -aarch64-stack-hazard-remark-size */, anonymous_14, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3487, 0, 0, 0, 0) |
| 1126 | OPTION(1, 6695 /* -aarch64-stack-hazard-size */, anonymous_63, SeparateOrEq, INVALID, streaming_hazard_size, 0, 0, static_cast<unsigned>(DefaultVis), 0, 0, 0, 0, 0, 0) |
| 1127 | OPTION(1, 6722 /* -aarch64-streaming-hazard-size */, streaming_hazard_size, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 6753, 0, 0, 0, 0) |
| 1128 | OPTION(1, 6814 /* -aarch64-stress-ccmp */, anonymous_8, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 6835, 0, 0, 0, 0) |
| 1129 | OPTION(1, 6856 /* -aarch64-stress-promote-const */, anonymous_45, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 6886, 0, 0, 0, 0) |
| 1130 | OPTION(1, 6915 /* -aarch64-sve-vector-bits-max */, anonymous_98, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 6944, 0, 0, 0, 0) |
| 1131 | OPTION(1, 7039 /* -aarch64-sve-vector-bits-min */, anonymous_99, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 7068, 0, 0, 0, 0) |
| 1132 | OPTION(1, 7164 /* -aarch64-sve-vls-bfloat-support */, anonymous_35, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 7196, 0, 0, 0, 0) |
| 1133 | OPTION(1, 7246 /* -aarch64-tbz-offset-bits */, anonymous_23, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 7271, 0, 0, 0, 0) |
| 1134 | OPTION(1, 7317 /* -aarch64-umov-fold-scan-limit */, anonymous_41, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3487, 0, 0, 0, 0) |
| 1135 | OPTION(1, 7347 /* -aarch64-update-scan-limit */, anonymous_42, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3487, 0, 0, 0, 0) |
| 1136 | OPTION(1, 7374 /* -aarch64-use-aa */, anonymous_64, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 7390, 0, 0, 0, 0) |
| 1137 | OPTION(1, 7426 /* -aarch64-use-conditional-fpmr-write */, anonymous_36, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 7462, 0, 0, 0, 0) |
| 1138 | OPTION(1, 7534 /* -aarch64-use-featcpa-codegen */, anonymous_37, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 7563, 0, 0, 0, 0) |
| 1139 | OPTION(1, 7642 /* -aarch64-use-mops */, anonymous_48, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 7660, 0, 0, 0, 0) |
| 1140 | OPTION(1, 7719 /* -aarch64-use-tbi */, anonymous_65, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 7736, 0, 0, 0, 0) |
| 1141 | OPTION(1, 7782 /* -arm64ec-generate-thunks */, anonymous_3, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3487, 0, 0, 0, 0) |
| 1142 | OPTION(1, 7807 /* -arm64ec-lower-direct-to-indirect */, anonymous_4, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3487, 0, 0, 0, 0) |
| 1143 | OPTION(1, 7841 /* -call-penalty-sm-change */, anonymous_106, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 7865, 0, 0, 0, 0) |
| 1144 | OPTION(1, 7931 /* -dmb-lookahead-threshold */, anonymous_107, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 7956, 0, 0, 0, 0) |
| 1145 | OPTION(1, 8013 /* -enable-aarch64-lsr-cost-opt */, anonymous_108, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3487, 0, 0, 0, 0) |
| 1146 | OPTION(1, 8042 /* -enable-aarch64-or-like-select */, anonymous_109, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3487, 0, 0, 0, 0) |
| 1147 | OPTION(1, 8073 /* -enable-aarch64-sme-peephole-opt */, anonymous_100, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 8106, 0, 0, 0, 0) |
| 1148 | OPTION(1, 8140 /* -enable-falkor-hwpf-unroll-fix */, anonymous_110, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3487, 0, 0, 0, 0) |
| 1149 | OPTION(1, 8171 /* -enable-fixedwidth-autovec-in-streaming-mode */, anonymous_111, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3487, 0, 0, 0, 0) |
| 1150 | OPTION(1, 8216 /* -enable-scalable-autovec-in-streaming-mode */, anonymous_112, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3487, 0, 0, 0, 0) |
| 1151 | OPTION(1, 8259 /* -force-streaming-compatible */, anonymous_102, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 8287, 0, 0, 0, 0) |
| 1152 | OPTION(1, 8348 /* -force-streaming */, anonymous_101, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 8365, 0, 0, 0, 0) |
| 1153 | OPTION(1, 8415 /* -frame-helper-size-threshold */, anonymous_43, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 8444, 0, 0, 0, 0) |
| 1154 | OPTION(1, 8529 /* -homogeneous-prolog-epilog */, anonymous_15, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 8556, 0, 0, 0, 0) |
| 1155 | OPTION(1, 8637 /* -inline-call-penalty-sm-change */, anonymous_113, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 8668, 0, 0, 0, 0) |
| 1156 | OPTION(1, 8731 /* -neon-nonconst-stride-overhead */, anonymous_114, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3487, 0, 0, 0, 0) |
| 1157 | OPTION(1, 8762 /* -stack-tagging-first-slot-opt */, anonymous_55, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 8792, 0, 0, 0, 0) |
| 1158 | OPTION(1, 8870 /* -stack-tagging-merge-init-scan-limit */, anonymous_51, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3487, 0, 0, 0, 0) |
| 1159 | OPTION(1, 8907 /* -stack-tagging-merge-init-size-limit */, anonymous_52, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3487, 0, 0, 0, 0) |
| 1160 | OPTION(1, 8944 /* -stack-tagging-merge-init */, anonymous_50, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 8970, 0, 0, 0, 0) |
| 1161 | OPTION(1, 9031 /* -stack-tagging-merge-settag */, anonymous_16, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 9059, 0, 0, 0, 0) |
| 1162 | OPTION(1, 9103 /* -stack-tagging-record-stack-history */, anonymous_53, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 9139, 0, 9213, 9226, 0) |
| 1163 | OPTION(1, 9237 /* -stack-tagging-unchecked-ld-st */, anonymous_56, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 9268, 0, 9395, 9415, 0) |
| 1164 | OPTION(1, 9433 /* -stack-tagging-use-stack-safety */, anonymous_54, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 9465, 0, 0, 0, 0) |
| 1165 | OPTION(1, 9499 /* -sve-gather-overhead */, anonymous_115, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3487, 0, 0, 0, 0) |
| 1166 | OPTION(1, 9520 /* -sve-prefer-fixed-over-scalable-if-equal */, anonymous_116, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3487, 0, 0, 0, 0) |
| 1167 | OPTION(1, 9561 /* -sve-scatter-overhead */, anonymous_117, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3487, 0, 0, 0, 0) |
| 1168 | OPTION(1, 9583 /* -sve-tail-folding-insn-threshold */, anonymous_118, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3487, 0, 0, 0, 0) |
| 1169 | OPTION(1, 9616 /* -sve-use-scalar-inc-vl */, anonymous_66, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 9639, 0, 0, 0, 0) |
| 1170 | OPTION(1, 9673 /* -sve-vscale-for-tuning */, anonymous_67, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 9696, 0, 0, 0, 0) |
| 1171 | #endif // OPTION |
| 1172 | |
| 1173 | #ifdef SIMPLE_ENUM_VALUE_TABLE |
| 1174 | |
| 1175 | struct SimpleEnumValue { |
| 1176 | const char *Name; |
| 1177 | unsigned Value; |
| 1178 | }; |
| 1179 | |
| 1180 | struct SimpleEnumValueTable { |
| 1181 | const SimpleEnumValue *Table; |
| 1182 | unsigned Size; |
| 1183 | }; |
| 1184 | static const SimpleEnumValueTable SimpleEnumValueTables[] = {}; |
| 1185 | static const unsigned SimpleEnumValueTablesSize = std::size(SimpleEnumValueTables); |
| 1186 | #endif // SIMPLE_ENUM_VALUE_TABLE |
| 1187 | |