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)
13namespace {
14enum ID : unsigned {
15 OPT_INVALID = 0,
16 OPT_INPUT,
17 OPT_UNKNOWN,
18 OPT_disable_binop_extract_shuffle,
19 OPT_disable_loop_idiom_vectorize_all,
20 OPT_disable_loop_idiom_vectorize_bytecmp,
21 OPT_disable_loop_idiom_vectorize_find_first_byte,
22 OPT_disable_vector_combine,
23 OPT_enable_early_exit_vectorization_with_side_effects,
24 OPT_enable_early_exit_vectorization,
25 OPT_enable_epilogue_vectorization,
26 OPT_enable_histogram_loop_vectorization,
27 OPT_enable_if_conversion,
28 OPT_enable_ind_var_reg_heur,
29 OPT_enable_interleaved_mem_accesses,
30 OPT_enable_loadstore_runtime_interleave,
31 OPT_enable_masked_interleaved_mem_accesses,
32 OPT_enable_vplan_native_path,
33 OPT_epilogue_tail_folding_policy,
34 OPT_epilogue_vectorization_minimum_VF,
35 OPT_force_ordered_reductions,
36 OPT_force_partial_aliasing_vectorization,
37 OPT_force_tail_folding_style,
38 OPT_force_target_instruction_cost,
39 OPT_force_target_max_scalar_interleave,
40 OPT_force_target_max_vector_interleave,
41 OPT_force_target_num_scalar_regs,
42 OPT_force_target_num_vector_regs,
43 OPT_force_target_supports_gather_scatter_ops,
44 OPT_force_target_supports_masked_memory_ops,
45 OPT_force_target_supports_scalable_vectors,
46 OPT_force_widen_divrem_via_masked_intrinsic,
47 OPT_hints_allow_reordering,
48 OPT_interleave_loops,
49 OPT_loop_idiom_vectorize_bytecmp_vf,
50 OPT_loop_idiom_vectorize_style,
51 OPT_loop_idiom_vectorize_verify,
52 OPT_loop_vectorize_with_block_frequency,
53 OPT_low_trip_count_loop_body_size_limit,
54 OPT_lv_strided_pointer_ivs,
55 OPT_max_nested_scalar_reduction_interleave,
56 OPT_pragma_vectorize_scev_check_threshold,
57 OPT_prefer_inloop_reductions,
58 OPT_prefer_predicated_reduction_select,
59 OPT_sbvec_allow_files,
60 OPT_sbvec_allow_non_pow2,
61#if !defined(NDEBUG)
62 OPT_sbvec_always_verify,
63#endif
64 OPT_sbvec_collect_seeds,
65 OPT_sbvec_cost_threshold,
66 OPT_sbvec_max_users_to_consider,
67 OPT_sbvec_passes,
68 OPT_sbvec_print_pass_pipeline,
69 OPT_sbvec_seed_bundle_size_limit,
70 OPT_sbvec_seed_groups_limit,
71 OPT_sbvec_stop_at,
72 OPT_sbvec_stop_bndl,
73 OPT_sbvec_vec_reg_bits,
74 OPT_scalable_epilogue_vf_cost_scale_factor,
75 OPT_scalable_vectorization,
76 OPT_slp_copyable_elements,
77 OPT_slp_cost_loop_trip_count,
78 OPT_slp_disable_tree_reorder,
79 OPT_slp_enable_masked_stores,
80 OPT_slp_enable_strided_stores,
81 OPT_slp_force_strided_loads,
82 OPT_slp_inst_count_check,
83 OPT_slp_max_look_ahead_depth,
84 OPT_slp_max_reg_size,
85 OPT_slp_max_root_look_ahead_depth,
86 OPT_slp_max_runtime_alias_checks,
87 OPT_slp_max_stride,
88 OPT_slp_max_vf,
89 OPT_slp_min_reg_size,
90 OPT_slp_min_strided_loads,
91 OPT_slp_min_strided_stores,
92 OPT_slp_min_tree_size,
93 OPT_slp_non_vectorizables_as_reductions,
94 OPT_slp_per_lane_gather_scale,
95 OPT_slp_phi_list_budget,
96 OPT_slp_phi_vectorization_budget,
97 OPT_slp_postprocess_stores_operands,
98 OPT_slp_reassociate_ops,
99 OPT_slp_reassociate_reorder_limit,
100 OPT_slp_recursion_max_depth,
101 OPT_slp_reduction_budget,
102 OPT_slp_revec,
103 OPT_slp_runtime_alias_checks_max_scalar_cost_percent,
104 OPT_slp_schedule_budget,
105 OPT_slp_split_alternate_instructions,
106 OPT_slp_threshold,
107 OPT_slp_vec_loop_rt_checks_cost_percent,
108 OPT_slp_vectorize_hor_store,
109 OPT_slp_vectorize_hor,
110 OPT_slp_vectorize_loop_acc_rdx,
111 OPT_slp_vectorize_non_power_of_2,
112 OPT_slp_vectorize_once_used,
113 OPT_slp_vectorize_poor_throughput,
114 OPT_slp_vectorize_with_runtime_alias_checks,
115 OPT_small_loop_cost,
116 OPT_tail_folding_policy,
117 OPT_use_partial_reductions_by_default,
118 OPT_vector_combine_max_scan_instrs,
119 OPT_vectorize_loops,
120 OPT_vectorize_num_stores_pred,
121 OPT_vectorize_scev_check_threshold,
122 OPT_vectorize_slp,
123 OPT_vectorizer_consider_reg_pressure,
124 OPT_vectorizer_maximize_bandwidth_for_vector_calls,
125 OPT_vectorizer_maximize_bandwidth,
126 OPT_vectorizer_min_trip_count,
127 OPT_view_slp_tree,
128 OPT_vplan_build_outerloop_stress_test,
129#if !defined(NDEBUG)
130 OPT_vplan_print_after_all,
131#endif
132#if !defined(NDEBUG)
133 OPT_vplan_print_after,
134#endif
135#if !defined(NDEBUG)
136 OPT_vplan_print_before_all,
137#endif
138#if !defined(NDEBUG)
139 OPT_vplan_print_before,
140#endif
141 OPT_vplan_print_in_dot_format,
142#if !defined(NDEBUG)
143 OPT_vplan_print_vector_region_scope,
144#endif
145 OPT_vplan_verify_each,
146};
147} // namespace
148
149static llvm::opt::OptTable::Tables optionTables() {
150 using llvm::opt::DefaultVis, llvm::opt::HelpHidden,
151 llvm::opt::RenderAsInput, llvm::opt::RenderJoined,
152 llvm::opt::RenderSeparate;
153
154#ifdef __GNUC__
155#pragma GCC diagnostic push
156#pragma GCC diagnostic ignored "-Woverlength-strings"
157#endif
158static constexpr char OptionStrTableStorage[] =
159 "\0"
160 "-\0"
161 "--\0"
162 "<input>\0"
163 "<unknown>\0"
164 "-disable-binop-extract-shuffle\0"
165 "Disable binop extract to shuffle transforms\0"
166 "-disable-loop-idiom-vectorize-all\0"
167 "Disable Loop Idiom Vectorize Pass\0"
168 "-disable-loop-idiom-vectorize-bytecmp\0"
169 "Proceed with Loop Idiom Vectorize Pass, but do not convert byte-compare loop(s)\0"
170 "-disable-loop-idiom-vectorize-find-first-byte\0"
171 "Do not convert find-first-byte loop(s)\0"
172 "-disable-vector-combine\0"
173 "Disable all vector combine transforms\0"
174 "-enable-early-exit-vectorization-with-side-effects\0"
175 "Enable vectorization of early exit loops with uncountable exits and side effects\0"
176 "-enable-early-exit-vectorization\0"
177 "Enable vectorization of early exit loops with uncountable exits\0"
178 "-enable-epilogue-vectorization\0"
179 "Enable vectorization of epilogue loops\0"
180 "-enable-histogram-loop-vectorization\0"
181 "Enables autovectorization of some loops containing histograms\0"
182 "-enable-if-conversion\0"
183 "Enable if-conversion during vectorization\0"
184 "-enable-ind-var-reg-heur\0"
185 "Count the induction variable only once when interleaving\0"
186 "-enable-interleaved-mem-accesses\0"
187 "Enable vectorization on interleaved memory accesses in a loop\0"
188 "-enable-loadstore-runtime-interleave\0"
189 "Enable runtime interleaving until load/store ports are saturated\0"
190 "-enable-masked-interleaved-mem-accesses\0"
191 "Enable vectorization on masked interleaved memory accesses in a loop\0"
192 "-enable-vplan-native-path\0"
193 "Enable VPlan-native vectorization path with support for outer loop vectorization\0"
194 "-epilogue-tail-folding-policy\0"
195 "Epilogue-tail-folding preferences over creating an epilogue loop\0"
196 "<dont-fold-tail|prefer-fold-tail>\0"
197 "dont-fold-tail,prefer-fold-tail\0"
198 "-epilogue-vectorization-minimum-VF\0"
199 "Only loops with vectorization factor equal to or larger than the specified value are considered for epilogue vectorization\0"
200 "-force-ordered-reductions\0"
201 "Enable the vectorisation of loops with in-order (strict) FP reductions\0"
202 "-force-partial-aliasing-vectorization\0"
203 "Replace pointer diff checks with alias masks\0"
204 "-force-tail-folding-style\0"
205 "Force the tail folding style\0"
206 "<none|data|data-without-lane-mask|data-and-control|data-with-evl>\0"
207 "none,data,data-without-lane-mask,data-and-control,data-with-evl\0"
208 "-force-target-instruction-cost\0"
209 "A flag that overrides the target's expected cost for an instruction to a single constant value. Mostly useful for getting consistent testing\0"
210 "-force-target-max-scalar-interleave\0"
211 "A flag that overrides the target's max interleave factor for scalar loops\0"
212 "-force-target-max-vector-interleave\0"
213 "A flag that overrides the target's max interleave factor for vectorized loops\0"
214 "-force-target-num-scalar-regs\0"
215 "A flag that overrides the target's number of scalar registers\0"
216 "-force-target-num-vector-regs\0"
217 "A flag that overrides the target's number of vector registers\0"
218 "-force-target-supports-gather-scatter-ops\0"
219 "Assume the target supports gather/scatter operations (used for testing)\0"
220 "-force-target-supports-masked-memory-ops\0"
221 "Assume the target supports masked memory operations (used for testing)\0"
222 "-force-target-supports-scalable-vectors\0"
223 "Pretend that scalable vectors are supported, even if the target does not support them. This flag should only be used for testing\0"
224 "-force-widen-divrem-via-masked-intrinsic\0"
225 "Override cost based masked intrinsic widening for div/rem instructions\0"
226 "-hints-allow-reordering\0"
227 "Allow enabling loop hints to reorder FP operations during vectorization\0"
228 "-interleave-loops\0"
229 "Enable loop interleaving in Loop vectorization passes\0"
230 "-loop-idiom-vectorize-bytecmp-vf\0"
231 "The vectorization factor for byte-compare patterns\0"
232 "-loop-idiom-vectorize-style\0"
233 "The vectorization style for loop idiom transform\0"
234 "<masked|predicated>\0"
235 "masked,predicated\0"
236 "-loop-idiom-vectorize-verify\0"
237 "Verify loops generated Loop Idiom Vectorize Pass\0"
238 "-loop-vectorize-with-block-frequency\0"
239 "Enable the use of the block frequency analysis to access PGO heuristics minimizing code growth in cold regions and being more aggressive in hot regions\0"
240 "-low-trip-count-loop-body-size-limit\0"
241 "Minimum number of instructions to vectorize loops with trip counts below tail folding threshold\0"
242 "-lv-strided-pointer-ivs\0"
243 "Enable recognition of non-constant strided pointer induction variables\0"
244 "-max-nested-scalar-reduction-interleave\0"
245 "The maximum interleave count to use when interleaving a scalar reduction in a nested loop\0"
246 "-pragma-vectorize-scev-check-threshold\0"
247 "The maximum number of SCEV checks allowed with a vectorize(enable) pragma\0"
248 "-prefer-inloop-reductions\0"
249 "Prefer in-loop vector reductions, overriding the targets preference\0"
250 "-prefer-predicated-reduction-select\0"
251 "Prefer predicating a reduction operation over an after loop select\0"
252 "-sbvec-allow-files\0"
253 "Run the vectorizer only on file paths that match any in the list of comma-separated regex's\0"
254 "-sbvec-allow-non-pow2\0"
255 "Allow non-power-of-2 vectorization\0"
256 "-sbvec-always-verify\0"
257 "Helps find bugs by verifying the IR whenever we emit new instructions (*very* expensive)\0"
258 "-sbvec-collect-seeds\0"
259 "Collect these seeds. Use empty for none or a comma-separated list of 'stores' and 'loads'\0"
260 "-sbvec-cost-threshold\0"
261 "Vectorization cost threshold\0"
262 "-sbvec-max-users-to-consider\0"
263 "Limit the number of a seed's users that getNextUserBundles() will examine as candidates for a matching bundle, to cap compilation time\0"
264 "-sbvec-passes\0"
265 "Comma-separated list of vectorizer passes. If not set we run the predefined pipeline\0"
266 "-sbvec-print-pass-pipeline\0"
267 "Prints the pass pipeline and returns\0"
268 "-sbvec-seed-bundle-size-limit\0"
269 "Limit the size of the seed bundle to cap compilation time\0"
270 "-sbvec-seed-groups-limit\0"
271 "Limit the number of collected seeds groups in a BB to cap compilation time\0"
272 "-sbvec-stop-at\0"
273 "Vectorize if the invocation count is < than this. 0 disables vectorization\0"
274 "-sbvec-stop-bndl\0"
275 "Vectorize up to this many bundles\0"
276 "-sbvec-vec-reg-bits\0"
277 "Override the vector register size in bits, which is otherwise found by querying TTI\0"
278 "-scalable-epilogue-vf-cost-scale-factor\0"
279 "Scale the cost of scalable epilogue VFs by this factor\0"
280 "-scalable-vectorization\0"
281 "Control whether the compiler can use scalable vectors to vectorize a loop\0"
282 "<off|preferred|on|always>\0"
283 "off,preferred,on,always\0"
284 "-slp-copyable-elements\0"
285 "Try to replace values with the idempotent instructions for better vectorization\0"
286 "-slp-cost-loop-trip-count\0"
287 "Loop trip count, considered by the cost model during modeling (0=loops are ignored and considered flat code)\0"
288 "-slp-disable-tree-reorder\0"
289 "Disable tree reordering even if it is profitable. Used for testing only\0"
290 "-slp-enable-masked-stores\0"
291 "Enable vectorization of non-consecutive stores as a single masked store, when the target supports masked stores\0"
292 "-slp-enable-strided-stores\0"
293 "Enable SLP trees to be built from strided store chains\0"
294 "-slp-force-strided-loads\0"
295 "Generate strided loads even if they are not profitable. Used for testing only\0"
296 "-slp-inst-count-check\0"
297 "Reject vectorization if vector instruction count exceeds scalar instruction count\0"
298 "-slp-max-look-ahead-depth\0"
299 "The maximum look-ahead depth for operand reordering scores\0"
300 "-slp-max-reg-size\0"
301 "Attempt to vectorize for this register size in bits\0"
302 "-slp-max-root-look-ahead-depth\0"
303 "The maximum look-ahead depth for searching best rooting option\0"
304 "-slp-max-runtime-alias-checks\0"
305 "The maximum number of runtime alias checks generated to guard a single SLP-vectorized region\0"
306 "-slp-max-stride\0"
307 "The maximum stride, considered to be profitable\0"
308 "-slp-max-vf\0"
309 "Maximum SLP vectorization factor (0=unlimited)\0"
310 "-slp-min-reg-size\0"
311 "-slp-min-strided-loads\0"
312 "The minimum number of loads, which should be considered strided, if the stride is > 1 or is runtime value\0"
313 "-slp-min-strided-stores\0"
314 "The minimum number of stores, which should be considered strided, if the stride is > 1 or is runtime value\0"
315 "-slp-min-tree-size\0"
316 "Only vectorize small trees if they are fully vectorizable\0"
317 "-slp-non-vectorizables-as-reductions\0"
318 "Use non-vectorizable instructions as potential reduction roots\0"
319 "-slp-per-lane-gather-scale\0"
320 "Use per-lane execution scale for gather/buildvector tree entries to model LICM-hoistable buildvector sequences\0"
321 "-slp-phi-list-budget\0"
322 "Maximum size of the phi list to be vectorized\0"
323 "-slp-phi-vectorization-budget\0"
324 "Do not vectorize a bundle of PHI nodes if the product of the bundle size and the number of incoming values exceeds this value, to limit the compile time spent on wide PHIs\0"
325 "-slp-postprocess-stores-operands\0"
326 "Force vectorization of non-vectorizable stores operands\0"
327 "-slp-reassociate-ops\0"
328 "Gather operands of associative binary chains into one node\0"
329 "-slp-reassociate-reorder-limit\0"
330 "Max flattened operand columns for which associative-chain reordering runs the full operand reorder\0"
331 "-slp-recursion-max-depth\0"
332 "Limit the recursion depth when building a vectorizable tree\0"
333 "-slp-reduction-budget\0"
334 "Limit the number of scalars in the rejected trees of the same reduction\0"
335 "-slp-revec\0"
336 "Enable vectorization for wider vector utilization\0"
337 "-slp-runtime-alias-checks-max-scalar-cost-percent\0"
338 "Maximum SLP runtime alias check cost, as a percentage of the guarded scalar region cost, before versioning is rejected to avoid pessimizing the scalar fallback path\0"
339 "-slp-schedule-budget\0"
340 "Limit the size of the SLP scheduling region per block\0"
341 "-slp-split-alternate-instructions\0"
342 "Improve the code quality by splitting alternate instructions\0"
343 "-slp-threshold\0"
344 "Only vectorize if you gain more than this number\0"
345 "-slp-vec-loop-rt-checks-cost-percent\0"
346 "Maximum SLP runtime alias check cost, as a percentage of the guarded scalar region cost, for blocks of loops already vectorized by the loop vectorizer\0"
347 "-slp-vectorize-hor-store\0"
348 "Attempt to vectorize horizontal reductions feeding into a store\0"
349 "-slp-vectorize-hor\0"
350 "Attempt to vectorize horizontal reductions\0"
351 "-slp-vectorize-loop-acc-rdx\0"
352 "Emit loop-carried horizontal reductions as a vector accumulator in the loop plus a single reduction after it\0"
353 "-slp-vectorize-non-power-of-2\0"
354 "Try to vectorize with non-power-of-2 number of elements\0"
355 "-slp-vectorize-once-used\0"
356 "Use instructions with the single user as standalone vectorization seeds\0"
357 "-slp-vectorize-poor-throughput\0"
358 "Use poor-throughput instructions (e.g. fdiv, frem, fsqrt) as standalone vectorization seeds\0"
359 "-slp-vectorize-with-runtime-alias-checks\0"
360 "Allow SLP to version a block with runtime alias checks to vectorize trees blocked by may-alias memory dependencies\0"
361 "-small-loop-cost\0"
362 "The cost of a loop that is considered 'small' by the interleaver\0"
363 "-tail-folding-policy\0"
364 "Tail-folding preferences over creating an epilogue loop\0"
365 "<dont-fold-tail|prefer-fold-tail|must-fold-tail>\0"
366 "dont-fold-tail,prefer-fold-tail,must-fold-tail\0"
367 "-use-partial-reductions-by-default\0"
368 "Use partial reduction intrinsics for all supported unordered reductions\0"
369 "-vector-combine-max-scan-instrs\0"
370 "Max number of instructions to scan for vector combining\0"
371 "-vectorize-loops\0"
372 "Run the Loop vectorization passes\0"
373 "-vectorize-num-stores-pred\0"
374 "Max number of stores to be predicated behind an if\0"
375 "-vectorize-scev-check-threshold\0"
376 "The maximum number of SCEV checks allowed\0"
377 "-vectorize-slp\0"
378 "Run the SLP vectorization passes\0"
379 "-vectorizer-consider-reg-pressure\0"
380 "Discard VFs if their register pressure is too high\0"
381 "-vectorizer-maximize-bandwidth-for-vector-calls\0"
382 "Try wider VFs if they enable the use of vector variants\0"
383 "-vectorizer-maximize-bandwidth\0"
384 "Maximize bandwidth when selecting vectorization factor which will be determined by the smallest type in loop\0"
385 "-vectorizer-min-trip-count\0"
386 "Loops with a constant trip count that is smaller than this value are vectorized only if no scalar iteration overheads are incurred\0"
387 "-view-slp-tree\0"
388 "Display the SLP trees with Graphviz\0"
389 "-vplan-build-outerloop-stress-test\0"
390 "Build VPlan for every supported loop nest in the function and bail out right after the build (stress test the VPlan H-CFG construction in the VPlan-native vectorization path)\0"
391 "-vplan-print-after-all\0"
392 "Print VPlans after all VPlan transformations\0"
393 "-vplan-print-after\0"
394 "Print VPlans after specified VPlan transformations (regexp)\0"
395 "-vplan-print-before-all\0"
396 "Print VPlans before all VPlan transformations\0"
397 "-vplan-print-before\0"
398 "Print VPlans before specified VPlan transformations (regexp)\0"
399 "-vplan-print-in-dot-format\0"
400 "Use dot format instead of plain text when dumping VPlans\0"
401 "-vplan-print-vector-region-scope\0"
402 "Limit VPlan printing to vector loop region in `-vplan-print-after*` if the plan has one\0"
403 "-vplan-verify-each\0"
404 "Verify VPlans after VPlan transforms\0"
405 ;
406#ifdef __GNUC__
407#pragma GCC diagnostic pop
408#endif
409
410static constexpr llvm::StringTable
411OptionStrTable = OptionStrTableStorage;
412
413 static constexpr llvm::StringTable::Offset OptionPrefixesTable[] = {
414 0 /* prefixes */,
415 2 /* prefixes */, 1 /* '-' */, 3 /* '--' */
416 };
417
418 static constexpr llvm::opt::OptTable::HelpTextVariant OptionHelpTextVariantsTable[] = {
419 {0, 0},
420 };
421
422 static constexpr unsigned OptionSubCommandIDsTable[] = {
423 0 /* subcommands */
424 };
425
426 static constexpr llvm::opt::OptTable::InfoExtra OptionInfoExtrasTable[] = {
427 {0, 0, 0, 0, 0, 0, 0, 0},
428 {0, 0, 0, 0, static_cast<unsigned>(DefaultVis), 0, 0, 0},
429 {1484, 0, 1518, 0, static_cast<unsigned>(DefaultVis), 0, 0, 0},
430 {1943, 0, 2009, 0, static_cast<unsigned>(DefaultVis), 0, 0, 0},
431 {3489, 0, 3509, 0, static_cast<unsigned>(DefaultVis), 0, 0, 0},
432 {5855, 0, 5881, 0, static_cast<unsigned>(DefaultVis), 0, 0, 0},
433 {10111, 0, 10160, 0, static_cast<unsigned>(DefaultVis), 0, 0, 0},
434 };
435
436 static constexpr llvm::opt::OptTable::Info OptionInfoTable[] = {
437 {6 /* <input> */, 0, 0, 0, 1, 0, llvm::opt::Option::InputClass},
438 {14 /* <unknown> */, 0, 0, 0, 1, 0, llvm::opt::Option::UnknownClass},
439 {24 /* -disable-binop-extract-shuffle */, 55, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
440 {99 /* -disable-loop-idiom-vectorize-all */, 133, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
441 {167 /* -disable-loop-idiom-vectorize-bytecmp */, 205, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
442 {285 /* -disable-loop-idiom-vectorize-find-first-byte */, 331, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
443 {370 /* -disable-vector-combine */, 394, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
444 {432 /* -enable-early-exit-vectorization-with-side-effects */, 483, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
445 {564 /* -enable-early-exit-vectorization */, 597, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
446 {661 /* -enable-epilogue-vectorization */, 692, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
447 {731 /* -enable-histogram-loop-vectorization */, 768, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
448 {830 /* -enable-if-conversion */, 852, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
449 {894 /* -enable-ind-var-reg-heur */, 919, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
450 {976 /* -enable-interleaved-mem-accesses */, 1009, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
451 {1071 /* -enable-loadstore-runtime-interleave */, 1108, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
452 {1173 /* -enable-masked-interleaved-mem-accesses */, 1213, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
453 {1282 /* -enable-vplan-native-path */, 1308, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
454 {1389 /* -epilogue-tail-folding-policy */, 1419, 0, 0, 2, 1, llvm::opt::Option::SeparateOrEqClass},
455 {1550 /* -epilogue-vectorization-minimum-VF */, 1585, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
456 {1708 /* -force-ordered-reductions */, 1734, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
457 {1805 /* -force-partial-aliasing-vectorization */, 1843, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
458 {1888 /* -force-tail-folding-style */, 1914, 0, 0, 3, 1, llvm::opt::Option::SeparateOrEqClass},
459 {2073 /* -force-target-instruction-cost */, 2104, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
460 {2245 /* -force-target-max-scalar-interleave */, 2281, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
461 {2355 /* -force-target-max-vector-interleave */, 2391, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
462 {2469 /* -force-target-num-scalar-regs */, 2499, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
463 {2561 /* -force-target-num-vector-regs */, 2591, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
464 {2653 /* -force-target-supports-gather-scatter-ops */, 2695, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
465 {2767 /* -force-target-supports-masked-memory-ops */, 2808, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
466 {2879 /* -force-target-supports-scalable-vectors */, 2919, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
467 {3048 /* -force-widen-divrem-via-masked-intrinsic */, 3089, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
468 {3160 /* -hints-allow-reordering */, 3184, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
469 {3256 /* -interleave-loops */, 3274, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
470 {3328 /* -loop-idiom-vectorize-bytecmp-vf */, 3361, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
471 {3412 /* -loop-idiom-vectorize-style */, 3440, 0, 0, 4, 1, llvm::opt::Option::SeparateOrEqClass},
472 {3527 /* -loop-idiom-vectorize-verify */, 3556, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
473 {3605 /* -loop-vectorize-with-block-frequency */, 3642, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
474 {3794 /* -low-trip-count-loop-body-size-limit */, 3831, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
475 {3927 /* -lv-strided-pointer-ivs */, 3951, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
476 {4022 /* -max-nested-scalar-reduction-interleave */, 4062, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
477 {4152 /* -pragma-vectorize-scev-check-threshold */, 4191, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
478 {4265 /* -prefer-inloop-reductions */, 4291, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
479 {4359 /* -prefer-predicated-reduction-select */, 4395, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
480 {4462 /* -sbvec-allow-files */, 4481, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
481 {4573 /* -sbvec-allow-non-pow2 */, 4595, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
482#if !defined(NDEBUG)
483 {4630 /* -sbvec-always-verify */, 4651, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
484#endif
485 {4740 /* -sbvec-collect-seeds */, 4761, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
486 {4851 /* -sbvec-cost-threshold */, 4873, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
487 {4902 /* -sbvec-max-users-to-consider */, 4931, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
488 {5066 /* -sbvec-passes */, 5080, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
489 {5165 /* -sbvec-print-pass-pipeline */, 5192, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
490 {5229 /* -sbvec-seed-bundle-size-limit */, 5259, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
491 {5317 /* -sbvec-seed-groups-limit */, 5342, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
492 {5417 /* -sbvec-stop-at */, 5432, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
493 {5507 /* -sbvec-stop-bndl */, 5524, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
494 {5558 /* -sbvec-vec-reg-bits */, 5578, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
495 {5662 /* -scalable-epilogue-vf-cost-scale-factor */, 5702, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
496 {5757 /* -scalable-vectorization */, 5781, 0, 0, 5, 1, llvm::opt::Option::SeparateOrEqClass},
497 {5905 /* -slp-copyable-elements */, 5928, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
498 {6008 /* -slp-cost-loop-trip-count */, 6034, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
499 {6143 /* -slp-disable-tree-reorder */, 6169, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
500 {6241 /* -slp-enable-masked-stores */, 6267, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
501 {6379 /* -slp-enable-strided-stores */, 6406, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
502 {6461 /* -slp-force-strided-loads */, 6486, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
503 {6564 /* -slp-inst-count-check */, 6586, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
504 {6668 /* -slp-max-look-ahead-depth */, 6694, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
505 {6753 /* -slp-max-reg-size */, 6771, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
506 {6823 /* -slp-max-root-look-ahead-depth */, 6854, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
507 {6917 /* -slp-max-runtime-alias-checks */, 6947, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
508 {7040 /* -slp-max-stride */, 7056, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
509 {7104 /* -slp-max-vf */, 7116, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
510 {7163 /* -slp-min-reg-size */, 6771, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
511 {7181 /* -slp-min-strided-loads */, 7204, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
512 {7310 /* -slp-min-strided-stores */, 7334, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
513 {7441 /* -slp-min-tree-size */, 7460, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
514 {7518 /* -slp-non-vectorizables-as-reductions */, 7555, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
515 {7619 /* -slp-per-lane-gather-scale */, 7646, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
516 {7757 /* -slp-phi-list-budget */, 7778, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
517 {7824 /* -slp-phi-vectorization-budget */, 7854, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
518 {8026 /* -slp-postprocess-stores-operands */, 8059, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
519 {8115 /* -slp-reassociate-ops */, 8136, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
520 {8195 /* -slp-reassociate-reorder-limit */, 8226, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
521 {8325 /* -slp-recursion-max-depth */, 8350, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
522 {8410 /* -slp-reduction-budget */, 8432, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
523 {8504 /* -slp-revec */, 8515, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
524 {8565 /* -slp-runtime-alias-checks-max-scalar-cost-percent */, 8615, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
525 {8780 /* -slp-schedule-budget */, 8801, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
526 {8855 /* -slp-split-alternate-instructions */, 8889, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
527 {8950 /* -slp-threshold */, 8965, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
528 {9014 /* -slp-vec-loop-rt-checks-cost-percent */, 9051, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
529 {9202 /* -slp-vectorize-hor-store */, 9227, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
530 {9291 /* -slp-vectorize-hor */, 9310, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
531 {9353 /* -slp-vectorize-loop-acc-rdx */, 9381, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
532 {9490 /* -slp-vectorize-non-power-of-2 */, 9520, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
533 {9576 /* -slp-vectorize-once-used */, 9601, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
534 {9673 /* -slp-vectorize-poor-throughput */, 9704, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
535 {9796 /* -slp-vectorize-with-runtime-alias-checks */, 9837, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
536 {9952 /* -small-loop-cost */, 9969, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
537 {10034 /* -tail-folding-policy */, 10055, 0, 0, 6, 1, llvm::opt::Option::SeparateOrEqClass},
538 {10207 /* -use-partial-reductions-by-default */, 10242, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
539 {10314 /* -vector-combine-max-scan-instrs */, 10346, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
540 {10402 /* -vectorize-loops */, 10419, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
541 {10453 /* -vectorize-num-stores-pred */, 10480, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
542 {10531 /* -vectorize-scev-check-threshold */, 10563, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
543 {10605 /* -vectorize-slp */, 10620, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
544 {10653 /* -vectorizer-consider-reg-pressure */, 10687, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
545 {10738 /* -vectorizer-maximize-bandwidth-for-vector-calls */, 10786, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
546 {10842 /* -vectorizer-maximize-bandwidth */, 10873, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
547 {10982 /* -vectorizer-min-trip-count */, 11009, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
548 {11140 /* -view-slp-tree */, 11155, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
549 {11191 /* -vplan-build-outerloop-stress-test */, 11226, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
550#if !defined(NDEBUG)
551 {11401 /* -vplan-print-after-all */, 11424, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
552#endif
553#if !defined(NDEBUG)
554 {11469 /* -vplan-print-after */, 11488, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
555#endif
556#if !defined(NDEBUG)
557 {11548 /* -vplan-print-before-all */, 11572, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
558#endif
559#if !defined(NDEBUG)
560 {11618 /* -vplan-print-before */, 11638, 0, 0, 1, 1, llvm::opt::Option::SeparateOrEqClass},
561#endif
562 {11699 /* -vplan-print-in-dot-format */, 11726, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
563#if !defined(NDEBUG)
564 {11783 /* -vplan-print-vector-region-scope */, 11816, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
565#endif
566 {11904 /* -vplan-verify-each */, 11923, 0, 0, 1, 1, llvm::opt::Option::FlagOrEqClass},
567 };
568
569 return {OptionStrTable, OptionPrefixesTable,
570 OptionInfoTable, OptionInfoExtrasTable, OptionHelpTextVariantsTable, {}, OptionSubCommandIDsTable};
571}
572#undef OPTTABLE_CODE
573#endif // OPTTABLE_CODE || OPTIONS_STRUCT_DEFS
574
575
576#ifdef OPTIONS_STRUCT_DECL
577#undef OPTIONS_STRUCT_DECL
578#include "llvm/ADT/ArrayRef.h"
579#include "llvm/ADT/BoolOrDefault.h"
580#include "llvm/ADT/StringRef.h"
581#include "llvm/Support/Allocator.h"
582#include "llvm/Support/LibraryOptionsContext.h"
583
584namespace llvm {
585namespace opt {
586class Arg;
587class LibraryOptionsParser;
588class OptTable;
589} // namespace opt
590} // namespace llvm
591
592namespace llvm {
593struct VectorizeOptions {
594 bool disable_loop_idiom_vectorize_all{false};
595 bool disable_loop_idiom_vectorize_bytecmp{false};
596 bool disable_loop_idiom_vectorize_find_first_byte{false};
597 std::optional<unsigned> loop_idiom_vectorize_bytecmp_vf{};
598 std::optional<LoopIdiomVectorizeStyle> loop_idiom_vectorize_style{};
599 bool loop_idiom_vectorize_verify{false};
600 bool enable_histogram_loop_vectorization{false};
601 bool enable_if_conversion{true};
602 bool hints_allow_reordering{true};
603 bool lv_strided_pointer_ivs{false};
604 LoopVectorizeHints::ScalableForceKind scalable_vectorization{LoopVectorizeHints::SK_Unspecified};
605 bool force_target_supports_gather_scatter_ops{false};
606 bool force_target_supports_masked_memory_ops{false};
607 bool force_target_supports_scalable_vectors{false};
608 bool prefer_inloop_reductions{false};
609 float scalable_epilogue_vf_cost_scale_factor{2.0};
610 llvm::BoolOrDefault vectorizer_consider_reg_pressure{llvm::BoolOrDefault::Default};
611 llvm::BoolOrDefault vectorizer_maximize_bandwidth{llvm::BoolOrDefault::Default};
612 bool vectorizer_maximize_bandwidth_for_vector_calls{true};
613 bool enable_early_exit_vectorization{true};
614 bool enable_early_exit_vectorization_with_side_effects{false};
615 bool enable_epilogue_vectorization{true};
616 bool enable_ind_var_reg_heur{true};
617 llvm::BoolOrDefault enable_interleaved_mem_accesses{llvm::BoolOrDefault::Default};
618 bool enable_loadstore_runtime_interleave{true};
619 llvm::BoolOrDefault enable_masked_interleaved_mem_accesses{llvm::BoolOrDefault::Default};
620 bool enable_vplan_native_path{false};
621 std::optional<TailFoldingPolicyTy> epilogue_tail_folding_policy{};
622 std::optional<unsigned> epilogue_vectorization_minimum_VF{};
623 llvm::BoolOrDefault force_ordered_reductions{llvm::BoolOrDefault::Default};
624 bool force_partial_aliasing_vectorization{false};
625 std::optional<TailFoldingStyle> force_tail_folding_style{};
626 std::optional<unsigned> force_target_instruction_cost{};
627 std::optional<unsigned> force_target_max_scalar_interleave{};
628 std::optional<unsigned> force_target_max_vector_interleave{};
629 std::optional<unsigned> force_target_num_scalar_regs{};
630 std::optional<unsigned> force_target_num_vector_regs{};
631 llvm::BoolOrDefault force_widen_divrem_via_masked_intrinsic{llvm::BoolOrDefault::Default};
632 bool interleave_loops{true};
633 bool loop_vectorize_with_block_frequency{true};
634 unsigned low_trip_count_loop_body_size_limit{20};
635 unsigned max_nested_scalar_reduction_interleave{2};
636 unsigned pragma_vectorize_scev_check_threshold{128};
637 bool prefer_predicated_reduction_select{false};
638 unsigned small_loop_cost{20};
639 std::optional<TailFoldingPolicyTy> tail_folding_policy{};
640 bool vectorize_loops{true};
641 unsigned vectorize_num_stores_pred{1};
642 unsigned vectorize_scev_check_threshold{16};
643 unsigned vectorizer_min_trip_count{16};
644 bool vplan_build_outerloop_stress_test{false};
645#if !defined(NDEBUG)
646 llvm::ArrayRef<StringRef> vplan_print_after{};
647#endif
648#if !defined(NDEBUG)
649 bool vplan_print_after_all{false};
650#endif
651#if !defined(NDEBUG)
652 llvm::ArrayRef<StringRef> vplan_print_before{};
653#endif
654#if !defined(NDEBUG)
655 bool vplan_print_before_all{false};
656#endif
657#if !defined(NDEBUG)
658 bool vplan_print_vector_region_scope{false};
659#endif
660 bool vplan_verify_each{VPlanVerifyEachDefault};
661#if !defined(NDEBUG)
662 bool sbvec_always_verify{false};
663#endif
664 unsigned long sbvec_stop_at{SBVecStopDisabled};
665 unsigned long sbvec_stop_bndl{SBVecStopDisabled};
666 bool sbvec_allow_non_pow2{false};
667 StringRef sbvec_collect_seeds{"stores"};
668 unsigned sbvec_vec_reg_bits{0};
669 int sbvec_cost_threshold{0};
670 StringRef sbvec_allow_files{".*"};
671 StringRef sbvec_passes{"*"};
672 bool sbvec_print_pass_pipeline{false};
673 unsigned sbvec_seed_bundle_size_limit{32};
674 unsigned sbvec_seed_groups_limit{256};
675 unsigned sbvec_max_users_to_consider{16};
676 bool slp_copyable_elements{true};
677 unsigned slp_cost_loop_trip_count{2};
678 bool slp_disable_tree_reorder{false};
679 bool slp_enable_masked_stores{true};
680 bool slp_enable_strided_stores{false};
681 bool slp_force_strided_loads{false};
682 bool slp_inst_count_check{true};
683 int slp_max_look_ahead_depth{2};
684 std::optional<int> slp_max_reg_size{};
685 int slp_max_root_look_ahead_depth{2};
686 unsigned slp_max_runtime_alias_checks{8};
687 unsigned slp_max_stride{8};
688 std::optional<unsigned> slp_max_vf{};
689 std::optional<int> slp_min_reg_size{};
690 unsigned slp_min_strided_loads{2};
691 unsigned slp_min_strided_stores{2};
692 unsigned slp_min_tree_size{3};
693 bool slp_non_vectorizables_as_reductions{false};
694 bool slp_per_lane_gather_scale{true};
695 unsigned slp_phi_list_budget{1024};
696 unsigned slp_phi_vectorization_budget{1024};
697 bool slp_postprocess_stores_operands{false};
698 bool slp_reassociate_ops{true};
699 unsigned slp_reassociate_reorder_limit{32};
700 unsigned slp_recursion_max_depth{12};
701 unsigned slp_reduction_budget{65536};
702 bool slp_revec{false};
703 unsigned slp_runtime_alias_checks_max_scalar_cost_percent{25};
704 int slp_schedule_budget{100000};
705 bool slp_split_alternate_instructions{true};
706 std::optional<int> slp_threshold{};
707 unsigned slp_vec_loop_rt_checks_cost_percent{10};
708 bool slp_vectorize_hor{true};
709 bool slp_vectorize_hor_store{false};
710 bool slp_vectorize_loop_acc_rdx{true};
711 bool slp_vectorize_non_power_of_2{false};
712 bool slp_vectorize_once_used{true};
713 bool slp_vectorize_poor_throughput{true};
714 bool slp_vectorize_with_runtime_alias_checks{true};
715 bool vectorize_slp{true};
716 bool view_slp_tree{false};
717 bool disable_binop_extract_shuffle{false};
718 bool disable_vector_combine{false};
719 unsigned vector_combine_max_scan_instrs{30};
720 bool vplan_print_in_dot_format{false};
721 bool use_partial_reductions_by_default{false};
722
723 static constexpr bool PerContext = true;
724 static const llvm::opt::OptTable &optTable();
725 /// Sets the member that \p A names, allocating a list from \p Alloc.
726 /// Returns false if the value is invalid.
727 bool apply(const llvm::opt::Arg &A, llvm::BumpPtrAllocator &Alloc);
728
729private:
730 friend class llvm::cl::LibraryOptionsContext;
731 friend class llvm::opt::LibraryOptionsParser;
732
733 static VectorizeOptions Global;
734 static const VectorizeOptions Default;
735};
736} // namespace llvm
737#endif // OPTIONS_STRUCT_DECL
738
739#ifdef OPTIONS_STRUCT_DEFS
740#undef OPTIONS_STRUCT_DEFS
741llvm::VectorizeOptions llvm::VectorizeOptions::Global;
742LLVM_REQUIRE_CONSTANT_INITIALIZATION const llvm::VectorizeOptions llvm::VectorizeOptions::Default;
743
744const llvm::opt::OptTable &llvm::VectorizeOptions::optTable() {
745 static const llvm::opt::LibraryOptTable T(optionTables());
746 return T;
747}
748
749bool llvm::VectorizeOptions::apply(const llvm::opt::Arg &A, llvm::BumpPtrAllocator &Alloc) {
750 switch (A.getOption().getID()) {
751 case OPT_disable_binop_extract_shuffle:
752 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", disable_binop_extract_shuffle, Alloc);
753 case OPT_disable_loop_idiom_vectorize_all:
754 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", disable_loop_idiom_vectorize_all, Alloc);
755 case OPT_disable_loop_idiom_vectorize_bytecmp:
756 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", disable_loop_idiom_vectorize_bytecmp, Alloc);
757 case OPT_disable_loop_idiom_vectorize_find_first_byte:
758 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", disable_loop_idiom_vectorize_find_first_byte, Alloc);
759 case OPT_disable_vector_combine:
760 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", disable_vector_combine, Alloc);
761 case OPT_enable_early_exit_vectorization_with_side_effects:
762 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", enable_early_exit_vectorization_with_side_effects, Alloc);
763 case OPT_enable_early_exit_vectorization:
764 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", enable_early_exit_vectorization, Alloc);
765 case OPT_enable_epilogue_vectorization:
766 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", enable_epilogue_vectorization, Alloc);
767 case OPT_enable_histogram_loop_vectorization:
768 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", enable_histogram_loop_vectorization, Alloc);
769 case OPT_enable_if_conversion:
770 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", enable_if_conversion, Alloc);
771 case OPT_enable_ind_var_reg_heur:
772 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", enable_ind_var_reg_heur, Alloc);
773 case OPT_enable_interleaved_mem_accesses:
774 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", enable_interleaved_mem_accesses, Alloc);
775 case OPT_enable_loadstore_runtime_interleave:
776 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", enable_loadstore_runtime_interleave, Alloc);
777 case OPT_enable_masked_interleaved_mem_accesses:
778 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", enable_masked_interleaved_mem_accesses, Alloc);
779 case OPT_enable_vplan_native_path:
780 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", enable_vplan_native_path, Alloc);
781 case OPT_epilogue_tail_folding_policy:
782 return llvm::opt::parseArgValue(A.getValue(), epilogue_tail_folding_policy, Alloc, [](llvm::StringRef V, auto &X) {
783 if (V == "dont-fold-tail") {
784 X = TailFoldingPolicyTy::None;
785 return true;
786 }
787 if (V == "prefer-fold-tail") {
788 X = TailFoldingPolicyTy::PreferFoldTail;
789 return true;
790 }
791 return false;
792 });
793 case OPT_epilogue_vectorization_minimum_VF:
794 return llvm::opt::parseArgValue(A.getValue(), epilogue_vectorization_minimum_VF, Alloc);
795 case OPT_force_ordered_reductions:
796 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", force_ordered_reductions, Alloc);
797 case OPT_force_partial_aliasing_vectorization:
798 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", force_partial_aliasing_vectorization, Alloc);
799 case OPT_force_tail_folding_style:
800 return llvm::opt::parseArgValue(A.getValue(), force_tail_folding_style, Alloc, [](llvm::StringRef V, auto &X) {
801 if (V == "none") {
802 X = TailFoldingStyle::None;
803 return true;
804 }
805 if (V == "data") {
806 X = TailFoldingStyle::Data;
807 return true;
808 }
809 if (V == "data-without-lane-mask") {
810 X = TailFoldingStyle::DataWithoutLaneMask;
811 return true;
812 }
813 if (V == "data-and-control") {
814 X = TailFoldingStyle::DataAndControlFlow;
815 return true;
816 }
817 if (V == "data-with-evl") {
818 X = TailFoldingStyle::DataWithEVL;
819 return true;
820 }
821 return false;
822 });
823 case OPT_force_target_instruction_cost:
824 return llvm::opt::parseArgValue(A.getValue(), force_target_instruction_cost, Alloc);
825 case OPT_force_target_max_scalar_interleave:
826 return llvm::opt::parseArgValue(A.getValue(), force_target_max_scalar_interleave, Alloc);
827 case OPT_force_target_max_vector_interleave:
828 return llvm::opt::parseArgValue(A.getValue(), force_target_max_vector_interleave, Alloc);
829 case OPT_force_target_num_scalar_regs:
830 return llvm::opt::parseArgValue(A.getValue(), force_target_num_scalar_regs, Alloc);
831 case OPT_force_target_num_vector_regs:
832 return llvm::opt::parseArgValue(A.getValue(), force_target_num_vector_regs, Alloc);
833 case OPT_force_target_supports_gather_scatter_ops:
834 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", force_target_supports_gather_scatter_ops, Alloc);
835 case OPT_force_target_supports_masked_memory_ops:
836 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", force_target_supports_masked_memory_ops, Alloc);
837 case OPT_force_target_supports_scalable_vectors:
838 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", force_target_supports_scalable_vectors, Alloc);
839 case OPT_force_widen_divrem_via_masked_intrinsic:
840 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", force_widen_divrem_via_masked_intrinsic, Alloc);
841 case OPT_hints_allow_reordering:
842 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", hints_allow_reordering, Alloc);
843 case OPT_interleave_loops:
844 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", interleave_loops, Alloc);
845 case OPT_loop_idiom_vectorize_bytecmp_vf:
846 return llvm::opt::parseArgValue(A.getValue(), loop_idiom_vectorize_bytecmp_vf, Alloc);
847 case OPT_loop_idiom_vectorize_style:
848 return llvm::opt::parseArgValue(A.getValue(), loop_idiom_vectorize_style, Alloc, [](llvm::StringRef V, auto &X) {
849 if (V == "masked") {
850 X = LoopIdiomVectorizeStyle::Masked;
851 return true;
852 }
853 if (V == "predicated") {
854 X = LoopIdiomVectorizeStyle::Predicated;
855 return true;
856 }
857 return false;
858 });
859 case OPT_loop_idiom_vectorize_verify:
860 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", loop_idiom_vectorize_verify, Alloc);
861 case OPT_loop_vectorize_with_block_frequency:
862 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", loop_vectorize_with_block_frequency, Alloc);
863 case OPT_low_trip_count_loop_body_size_limit:
864 return llvm::opt::parseArgValue(A.getValue(), low_trip_count_loop_body_size_limit, Alloc);
865 case OPT_lv_strided_pointer_ivs:
866 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", lv_strided_pointer_ivs, Alloc);
867 case OPT_max_nested_scalar_reduction_interleave:
868 return llvm::opt::parseArgValue(A.getValue(), max_nested_scalar_reduction_interleave, Alloc);
869 case OPT_pragma_vectorize_scev_check_threshold:
870 return llvm::opt::parseArgValue(A.getValue(), pragma_vectorize_scev_check_threshold, Alloc);
871 case OPT_prefer_inloop_reductions:
872 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", prefer_inloop_reductions, Alloc);
873 case OPT_prefer_predicated_reduction_select:
874 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", prefer_predicated_reduction_select, Alloc);
875 case OPT_sbvec_allow_files:
876 return llvm::opt::parseArgValue(A.getValue(), sbvec_allow_files, Alloc);
877 case OPT_sbvec_allow_non_pow2:
878 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", sbvec_allow_non_pow2, Alloc);
879#if !defined(NDEBUG)
880 case OPT_sbvec_always_verify:
881 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", sbvec_always_verify, Alloc);
882#endif
883 case OPT_sbvec_collect_seeds:
884 return llvm::opt::parseArgValue(A.getValue(), sbvec_collect_seeds, Alloc);
885 case OPT_sbvec_cost_threshold:
886 return llvm::opt::parseArgValue(A.getValue(), sbvec_cost_threshold, Alloc);
887 case OPT_sbvec_max_users_to_consider:
888 return llvm::opt::parseArgValue(A.getValue(), sbvec_max_users_to_consider, Alloc);
889 case OPT_sbvec_passes:
890 return llvm::opt::parseArgValue(A.getValue(), sbvec_passes, Alloc);
891 case OPT_sbvec_print_pass_pipeline:
892 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", sbvec_print_pass_pipeline, Alloc);
893 case OPT_sbvec_seed_bundle_size_limit:
894 return llvm::opt::parseArgValue(A.getValue(), sbvec_seed_bundle_size_limit, Alloc);
895 case OPT_sbvec_seed_groups_limit:
896 return llvm::opt::parseArgValue(A.getValue(), sbvec_seed_groups_limit, Alloc);
897 case OPT_sbvec_stop_at:
898 return llvm::opt::parseArgValue(A.getValue(), sbvec_stop_at, Alloc);
899 case OPT_sbvec_stop_bndl:
900 return llvm::opt::parseArgValue(A.getValue(), sbvec_stop_bndl, Alloc);
901 case OPT_sbvec_vec_reg_bits:
902 return llvm::opt::parseArgValue(A.getValue(), sbvec_vec_reg_bits, Alloc);
903 case OPT_scalable_epilogue_vf_cost_scale_factor:
904 return llvm::opt::parseArgValue(A.getValue(), scalable_epilogue_vf_cost_scale_factor, Alloc);
905 case OPT_scalable_vectorization:
906 return llvm::opt::parseArgValue(A.getValue(), scalable_vectorization, Alloc, [](llvm::StringRef V, auto &X) {
907 if (V == "off") {
908 X = LoopVectorizeHints::SK_FixedWidthOnly;
909 return true;
910 }
911 if (V == "preferred") {
912 X = LoopVectorizeHints::SK_PreferScalable;
913 return true;
914 }
915 if (V == "on") {
916 X = LoopVectorizeHints::SK_PreferScalable;
917 return true;
918 }
919 if (V == "always") {
920 X = LoopVectorizeHints::SK_AlwaysScalable;
921 return true;
922 }
923 return false;
924 });
925 case OPT_slp_copyable_elements:
926 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", slp_copyable_elements, Alloc);
927 case OPT_slp_cost_loop_trip_count:
928 return llvm::opt::parseArgValue(A.getValue(), slp_cost_loop_trip_count, Alloc);
929 case OPT_slp_disable_tree_reorder:
930 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", slp_disable_tree_reorder, Alloc);
931 case OPT_slp_enable_masked_stores:
932 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", slp_enable_masked_stores, Alloc);
933 case OPT_slp_enable_strided_stores:
934 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", slp_enable_strided_stores, Alloc);
935 case OPT_slp_force_strided_loads:
936 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", slp_force_strided_loads, Alloc);
937 case OPT_slp_inst_count_check:
938 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", slp_inst_count_check, Alloc);
939 case OPT_slp_max_look_ahead_depth:
940 return llvm::opt::parseArgValue(A.getValue(), slp_max_look_ahead_depth, Alloc);
941 case OPT_slp_max_reg_size:
942 return llvm::opt::parseArgValue(A.getValue(), slp_max_reg_size, Alloc);
943 case OPT_slp_max_root_look_ahead_depth:
944 return llvm::opt::parseArgValue(A.getValue(), slp_max_root_look_ahead_depth, Alloc);
945 case OPT_slp_max_runtime_alias_checks:
946 return llvm::opt::parseArgValue(A.getValue(), slp_max_runtime_alias_checks, Alloc);
947 case OPT_slp_max_stride:
948 return llvm::opt::parseArgValue(A.getValue(), slp_max_stride, Alloc);
949 case OPT_slp_max_vf:
950 return llvm::opt::parseArgValue(A.getValue(), slp_max_vf, Alloc);
951 case OPT_slp_min_reg_size:
952 return llvm::opt::parseArgValue(A.getValue(), slp_min_reg_size, Alloc);
953 case OPT_slp_min_strided_loads:
954 return llvm::opt::parseArgValue(A.getValue(), slp_min_strided_loads, Alloc);
955 case OPT_slp_min_strided_stores:
956 return llvm::opt::parseArgValue(A.getValue(), slp_min_strided_stores, Alloc);
957 case OPT_slp_min_tree_size:
958 return llvm::opt::parseArgValue(A.getValue(), slp_min_tree_size, Alloc);
959 case OPT_slp_non_vectorizables_as_reductions:
960 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", slp_non_vectorizables_as_reductions, Alloc);
961 case OPT_slp_per_lane_gather_scale:
962 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", slp_per_lane_gather_scale, Alloc);
963 case OPT_slp_phi_list_budget:
964 return llvm::opt::parseArgValue(A.getValue(), slp_phi_list_budget, Alloc);
965 case OPT_slp_phi_vectorization_budget:
966 return llvm::opt::parseArgValue(A.getValue(), slp_phi_vectorization_budget, Alloc);
967 case OPT_slp_postprocess_stores_operands:
968 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", slp_postprocess_stores_operands, Alloc);
969 case OPT_slp_reassociate_ops:
970 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", slp_reassociate_ops, Alloc);
971 case OPT_slp_reassociate_reorder_limit:
972 return llvm::opt::parseArgValue(A.getValue(), slp_reassociate_reorder_limit, Alloc);
973 case OPT_slp_recursion_max_depth:
974 return llvm::opt::parseArgValue(A.getValue(), slp_recursion_max_depth, Alloc);
975 case OPT_slp_reduction_budget:
976 return llvm::opt::parseArgValue(A.getValue(), slp_reduction_budget, Alloc);
977 case OPT_slp_revec:
978 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", slp_revec, Alloc);
979 case OPT_slp_runtime_alias_checks_max_scalar_cost_percent:
980 return llvm::opt::parseArgValue(A.getValue(), slp_runtime_alias_checks_max_scalar_cost_percent, Alloc);
981 case OPT_slp_schedule_budget:
982 return llvm::opt::parseArgValue(A.getValue(), slp_schedule_budget, Alloc);
983 case OPT_slp_split_alternate_instructions:
984 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", slp_split_alternate_instructions, Alloc);
985 case OPT_slp_threshold:
986 return llvm::opt::parseArgValue(A.getValue(), slp_threshold, Alloc);
987 case OPT_slp_vec_loop_rt_checks_cost_percent:
988 return llvm::opt::parseArgValue(A.getValue(), slp_vec_loop_rt_checks_cost_percent, Alloc);
989 case OPT_slp_vectorize_hor_store:
990 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", slp_vectorize_hor_store, Alloc);
991 case OPT_slp_vectorize_hor:
992 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", slp_vectorize_hor, Alloc);
993 case OPT_slp_vectorize_loop_acc_rdx:
994 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", slp_vectorize_loop_acc_rdx, Alloc);
995 case OPT_slp_vectorize_non_power_of_2:
996 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", slp_vectorize_non_power_of_2, Alloc);
997 case OPT_slp_vectorize_once_used:
998 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", slp_vectorize_once_used, Alloc);
999 case OPT_slp_vectorize_poor_throughput:
1000 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", slp_vectorize_poor_throughput, Alloc);
1001 case OPT_slp_vectorize_with_runtime_alias_checks:
1002 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", slp_vectorize_with_runtime_alias_checks, Alloc);
1003 case OPT_small_loop_cost:
1004 return llvm::opt::parseArgValue(A.getValue(), small_loop_cost, Alloc);
1005 case OPT_tail_folding_policy:
1006 return llvm::opt::parseArgValue(A.getValue(), tail_folding_policy, Alloc, [](llvm::StringRef V, auto &X) {
1007 if (V == "dont-fold-tail") {
1008 X = TailFoldingPolicyTy::None;
1009 return true;
1010 }
1011 if (V == "prefer-fold-tail") {
1012 X = TailFoldingPolicyTy::PreferFoldTail;
1013 return true;
1014 }
1015 if (V == "must-fold-tail") {
1016 X = TailFoldingPolicyTy::MustFoldTail;
1017 return true;
1018 }
1019 return false;
1020 });
1021 case OPT_use_partial_reductions_by_default:
1022 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", use_partial_reductions_by_default, Alloc);
1023 case OPT_vector_combine_max_scan_instrs:
1024 return llvm::opt::parseArgValue(A.getValue(), vector_combine_max_scan_instrs, Alloc);
1025 case OPT_vectorize_loops:
1026 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", vectorize_loops, Alloc);
1027 case OPT_vectorize_num_stores_pred:
1028 return llvm::opt::parseArgValue(A.getValue(), vectorize_num_stores_pred, Alloc);
1029 case OPT_vectorize_scev_check_threshold:
1030 return llvm::opt::parseArgValue(A.getValue(), vectorize_scev_check_threshold, Alloc);
1031 case OPT_vectorize_slp:
1032 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", vectorize_slp, Alloc);
1033 case OPT_vectorizer_consider_reg_pressure:
1034 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", vectorizer_consider_reg_pressure, Alloc);
1035 case OPT_vectorizer_maximize_bandwidth_for_vector_calls:
1036 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", vectorizer_maximize_bandwidth_for_vector_calls, Alloc);
1037 case OPT_vectorizer_maximize_bandwidth:
1038 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", vectorizer_maximize_bandwidth, Alloc);
1039 case OPT_vectorizer_min_trip_count:
1040 return llvm::opt::parseArgValue(A.getValue(), vectorizer_min_trip_count, Alloc);
1041 case OPT_view_slp_tree:
1042 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", view_slp_tree, Alloc);
1043 case OPT_vplan_build_outerloop_stress_test:
1044 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", vplan_build_outerloop_stress_test, Alloc);
1045#if !defined(NDEBUG)
1046 case OPT_vplan_print_after_all:
1047 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", vplan_print_after_all, Alloc);
1048#endif
1049#if !defined(NDEBUG)
1050 case OPT_vplan_print_after:
1051 return llvm::opt::parseArgValue(A.getValue(), vplan_print_after, Alloc);
1052#endif
1053#if !defined(NDEBUG)
1054 case OPT_vplan_print_before_all:
1055 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", vplan_print_before_all, Alloc);
1056#endif
1057#if !defined(NDEBUG)
1058 case OPT_vplan_print_before:
1059 return llvm::opt::parseArgValue(A.getValue(), vplan_print_before, Alloc);
1060#endif
1061 case OPT_vplan_print_in_dot_format:
1062 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", vplan_print_in_dot_format, Alloc);
1063#if !defined(NDEBUG)
1064 case OPT_vplan_print_vector_region_scope:
1065 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", vplan_print_vector_region_scope, Alloc);
1066#endif
1067 case OPT_vplan_verify_each:
1068 return llvm::opt::parseArgValue(A.getNumValues() ? A.getValue() : "true", vplan_verify_each, Alloc);
1069 }
1070 llvm_unreachable("option without a member");
1071}
1072#endif // OPTIONS_STRUCT_DEFS
1073/////////
1074// ValuesCode
1075
1076#ifdef OPTTABLE_VALUES_CODE
1077static llvm::StringRef getOptionValuesCode(unsigned ID) {
1078 switch (ID) {
1079 }
1080 return {};
1081}
1082#undef OPTTABLE_VALUES_CODE
1083#endif // OPTTABLE_VALUES_CODE
1084/////////
1085// Groups
1086
1087#ifdef OPTION
1088
1089//////////
1090// Options
1091
1092OPTION(0, 6 /* <input> */, INPUT, Input, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 0, 0, 0, 0, 0)
1093OPTION(0, 14 /* <unknown> */, UNKNOWN, Unknown, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 0, 0, 0, 0, 0)
1094OPTION(1, 24 /* -disable-binop-extract-shuffle */, anonymous_111, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 55, 0, 0, 0, 0)
1095OPTION(1, 99 /* -disable-loop-idiom-vectorize-all */, anonymous_0, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 133, 0, 0, 0, 0)
1096OPTION(1, 167 /* -disable-loop-idiom-vectorize-bytecmp */, anonymous_1, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 205, 0, 0, 0, 0)
1097OPTION(1, 285 /* -disable-loop-idiom-vectorize-find-first-byte */, anonymous_2, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 331, 0, 0, 0, 0)
1098OPTION(1, 370 /* -disable-vector-combine */, anonymous_112, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 394, 0, 0, 0, 0)
1099OPTION(1, 432 /* -enable-early-exit-vectorization-with-side-effects */, anonymous_20, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 483, 0, 0, 0, 0)
1100OPTION(1, 564 /* -enable-early-exit-vectorization */, anonymous_19, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 597, 0, 0, 0, 0)
1101OPTION(1, 661 /* -enable-epilogue-vectorization */, anonymous_21, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 692, 0, 0, 0, 0)
1102OPTION(1, 731 /* -enable-histogram-loop-vectorization */, anonymous_6, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 768, 0, 0, 0, 0)
1103OPTION(1, 830 /* -enable-if-conversion */, anonymous_7, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 852, 0, 0, 0, 0)
1104OPTION(1, 894 /* -enable-ind-var-reg-heur */, anonymous_22, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 919, 0, 0, 0, 0)
1105OPTION(1, 976 /* -enable-interleaved-mem-accesses */, anonymous_23, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 1009, 0, 0, 0, 0)
1106OPTION(1, 1071 /* -enable-loadstore-runtime-interleave */, anonymous_24, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 1108, 0, 0, 0, 0)
1107OPTION(1, 1173 /* -enable-masked-interleaved-mem-accesses */, anonymous_25, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 1213, 0, 0, 0, 0)
1108OPTION(1, 1282 /* -enable-vplan-native-path */, anonymous_26, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 1308, 0, 0, 0, 0)
1109OPTION(1, 1389 /* -epilogue-tail-folding-policy */, anonymous_27, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 1419, 0, 1484, 1518, 0)
1110OPTION(1, 1550 /* -epilogue-vectorization-minimum-VF */, anonymous_28, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 1585, 0, 0, 0, 0)
1111OPTION(1, 1708 /* -force-ordered-reductions */, anonymous_29, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 1734, 0, 0, 0, 0)
1112OPTION(1, 1805 /* -force-partial-aliasing-vectorization */, anonymous_30, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 1843, 0, 0, 0, 0)
1113OPTION(1, 1888 /* -force-tail-folding-style */, anonymous_31, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 1914, 0, 1943, 2009, 0)
1114OPTION(1, 2073 /* -force-target-instruction-cost */, anonymous_32, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 2104, 0, 0, 0, 0)
1115OPTION(1, 2245 /* -force-target-max-scalar-interleave */, anonymous_33, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 2281, 0, 0, 0, 0)
1116OPTION(1, 2355 /* -force-target-max-vector-interleave */, anonymous_34, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 2391, 0, 0, 0, 0)
1117OPTION(1, 2469 /* -force-target-num-scalar-regs */, anonymous_35, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 2499, 0, 0, 0, 0)
1118OPTION(1, 2561 /* -force-target-num-vector-regs */, anonymous_36, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 2591, 0, 0, 0, 0)
1119OPTION(1, 2653 /* -force-target-supports-gather-scatter-ops */, anonymous_11, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 2695, 0, 0, 0, 0)
1120OPTION(1, 2767 /* -force-target-supports-masked-memory-ops */, anonymous_12, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 2808, 0, 0, 0, 0)
1121OPTION(1, 2879 /* -force-target-supports-scalable-vectors */, anonymous_13, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 2919, 0, 0, 0, 0)
1122OPTION(1, 3048 /* -force-widen-divrem-via-masked-intrinsic */, anonymous_37, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3089, 0, 0, 0, 0)
1123OPTION(1, 3160 /* -hints-allow-reordering */, anonymous_8, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3184, 0, 0, 0, 0)
1124OPTION(1, 3256 /* -interleave-loops */, anonymous_38, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3274, 0, 0, 0, 0)
1125OPTION(1, 3328 /* -loop-idiom-vectorize-bytecmp-vf */, anonymous_3, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3361, 0, 0, 0, 0)
1126OPTION(1, 3412 /* -loop-idiom-vectorize-style */, anonymous_4, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3440, 0, 3489, 3509, 0)
1127OPTION(1, 3527 /* -loop-idiom-vectorize-verify */, anonymous_5, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3556, 0, 0, 0, 0)
1128OPTION(1, 3605 /* -loop-vectorize-with-block-frequency */, anonymous_39, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3642, 0, 0, 0, 0)
1129OPTION(1, 3794 /* -low-trip-count-loop-body-size-limit */, anonymous_40, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3831, 0, 0, 0, 0)
1130OPTION(1, 3927 /* -lv-strided-pointer-ivs */, anonymous_9, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 3951, 0, 0, 0, 0)
1131OPTION(1, 4022 /* -max-nested-scalar-reduction-interleave */, anonymous_41, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 4062, 0, 0, 0, 0)
1132OPTION(1, 4152 /* -pragma-vectorize-scev-check-threshold */, anonymous_42, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 4191, 0, 0, 0, 0)
1133OPTION(1, 4265 /* -prefer-inloop-reductions */, anonymous_14, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 4291, 0, 0, 0, 0)
1134OPTION(1, 4359 /* -prefer-predicated-reduction-select */, anonymous_43, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 4395, 0, 0, 0, 0)
1135OPTION(1, 4462 /* -sbvec-allow-files */, anonymous_64, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 4481, 0, 0, 0, 0)
1136OPTION(1, 4573 /* -sbvec-allow-non-pow2 */, anonymous_60, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 4595, 0, 0, 0, 0)
1137#if !defined(NDEBUG)
1138OPTION(1, 4630 /* -sbvec-always-verify */, anonymous_57, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 4651, 0, 0, 0, 0)
1139#endif
1140OPTION(1, 4740 /* -sbvec-collect-seeds */, anonymous_61, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 4761, 0, 0, 0, 0)
1141OPTION(1, 4851 /* -sbvec-cost-threshold */, anonymous_63, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 4873, 0, 0, 0, 0)
1142OPTION(1, 4902 /* -sbvec-max-users-to-consider */, anonymous_69, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 4931, 0, 0, 0, 0)
1143OPTION(1, 5066 /* -sbvec-passes */, anonymous_65, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 5080, 0, 0, 0, 0)
1144OPTION(1, 5165 /* -sbvec-print-pass-pipeline */, anonymous_66, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 5192, 0, 0, 0, 0)
1145OPTION(1, 5229 /* -sbvec-seed-bundle-size-limit */, anonymous_67, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 5259, 0, 0, 0, 0)
1146OPTION(1, 5317 /* -sbvec-seed-groups-limit */, anonymous_68, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 5342, 0, 0, 0, 0)
1147OPTION(1, 5417 /* -sbvec-stop-at */, anonymous_58, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 5432, 0, 0, 0, 0)
1148OPTION(1, 5507 /* -sbvec-stop-bndl */, anonymous_59, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 5524, 0, 0, 0, 0)
1149OPTION(1, 5558 /* -sbvec-vec-reg-bits */, anonymous_62, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 5578, 0, 0, 0, 0)
1150OPTION(1, 5662 /* -scalable-epilogue-vf-cost-scale-factor */, anonymous_15, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 5702, 0, 0, 0, 0)
1151OPTION(1, 5757 /* -scalable-vectorization */, anonymous_10, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 5781, 0, 5855, 5881, 0)
1152OPTION(1, 5905 /* -slp-copyable-elements */, anonymous_70, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 5928, 0, 0, 0, 0)
1153OPTION(1, 6008 /* -slp-cost-loop-trip-count */, anonymous_71, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 6034, 0, 0, 0, 0)
1154OPTION(1, 6143 /* -slp-disable-tree-reorder */, anonymous_72, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 6169, 0, 0, 0, 0)
1155OPTION(1, 6241 /* -slp-enable-masked-stores */, anonymous_73, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 6267, 0, 0, 0, 0)
1156OPTION(1, 6379 /* -slp-enable-strided-stores */, anonymous_74, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 6406, 0, 0, 0, 0)
1157OPTION(1, 6461 /* -slp-force-strided-loads */, anonymous_75, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 6486, 0, 0, 0, 0)
1158OPTION(1, 6564 /* -slp-inst-count-check */, anonymous_76, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 6586, 0, 0, 0, 0)
1159OPTION(1, 6668 /* -slp-max-look-ahead-depth */, anonymous_77, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 6694, 0, 0, 0, 0)
1160OPTION(1, 6753 /* -slp-max-reg-size */, anonymous_78, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 6771, 0, 0, 0, 0)
1161OPTION(1, 6823 /* -slp-max-root-look-ahead-depth */, anonymous_79, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 6854, 0, 0, 0, 0)
1162OPTION(1, 6917 /* -slp-max-runtime-alias-checks */, anonymous_80, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 6947, 0, 0, 0, 0)
1163OPTION(1, 7040 /* -slp-max-stride */, anonymous_81, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 7056, 0, 0, 0, 0)
1164OPTION(1, 7104 /* -slp-max-vf */, anonymous_82, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 7116, 0, 0, 0, 0)
1165OPTION(1, 7163 /* -slp-min-reg-size */, anonymous_83, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 6771, 0, 0, 0, 0)
1166OPTION(1, 7181 /* -slp-min-strided-loads */, anonymous_84, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 7204, 0, 0, 0, 0)
1167OPTION(1, 7310 /* -slp-min-strided-stores */, anonymous_85, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 7334, 0, 0, 0, 0)
1168OPTION(1, 7441 /* -slp-min-tree-size */, anonymous_86, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 7460, 0, 0, 0, 0)
1169OPTION(1, 7518 /* -slp-non-vectorizables-as-reductions */, anonymous_87, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 7555, 0, 0, 0, 0)
1170OPTION(1, 7619 /* -slp-per-lane-gather-scale */, anonymous_88, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 7646, 0, 0, 0, 0)
1171OPTION(1, 7757 /* -slp-phi-list-budget */, anonymous_89, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 7778, 0, 0, 0, 0)
1172OPTION(1, 7824 /* -slp-phi-vectorization-budget */, anonymous_90, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 7854, 0, 0, 0, 0)
1173OPTION(1, 8026 /* -slp-postprocess-stores-operands */, anonymous_91, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 8059, 0, 0, 0, 0)
1174OPTION(1, 8115 /* -slp-reassociate-ops */, anonymous_92, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 8136, 0, 0, 0, 0)
1175OPTION(1, 8195 /* -slp-reassociate-reorder-limit */, anonymous_93, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 8226, 0, 0, 0, 0)
1176OPTION(1, 8325 /* -slp-recursion-max-depth */, anonymous_94, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 8350, 0, 0, 0, 0)
1177OPTION(1, 8410 /* -slp-reduction-budget */, anonymous_95, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 8432, 0, 0, 0, 0)
1178OPTION(1, 8504 /* -slp-revec */, anonymous_96, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 8515, 0, 0, 0, 0)
1179OPTION(1, 8565 /* -slp-runtime-alias-checks-max-scalar-cost-percent */, anonymous_97, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 8615, 0, 0, 0, 0)
1180OPTION(1, 8780 /* -slp-schedule-budget */, anonymous_98, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 8801, 0, 0, 0, 0)
1181OPTION(1, 8855 /* -slp-split-alternate-instructions */, anonymous_99, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 8889, 0, 0, 0, 0)
1182OPTION(1, 8950 /* -slp-threshold */, anonymous_100, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 8965, 0, 0, 0, 0)
1183OPTION(1, 9014 /* -slp-vec-loop-rt-checks-cost-percent */, anonymous_101, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 9051, 0, 0, 0, 0)
1184OPTION(1, 9202 /* -slp-vectorize-hor-store */, anonymous_103, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 9227, 0, 0, 0, 0)
1185OPTION(1, 9291 /* -slp-vectorize-hor */, anonymous_102, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 9310, 0, 0, 0, 0)
1186OPTION(1, 9353 /* -slp-vectorize-loop-acc-rdx */, anonymous_104, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 9381, 0, 0, 0, 0)
1187OPTION(1, 9490 /* -slp-vectorize-non-power-of-2 */, anonymous_105, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 9520, 0, 0, 0, 0)
1188OPTION(1, 9576 /* -slp-vectorize-once-used */, anonymous_106, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 9601, 0, 0, 0, 0)
1189OPTION(1, 9673 /* -slp-vectorize-poor-throughput */, anonymous_107, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 9704, 0, 0, 0, 0)
1190OPTION(1, 9796 /* -slp-vectorize-with-runtime-alias-checks */, anonymous_108, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 9837, 0, 0, 0, 0)
1191OPTION(1, 9952 /* -small-loop-cost */, anonymous_44, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 9969, 0, 0, 0, 0)
1192OPTION(1, 10034 /* -tail-folding-policy */, anonymous_45, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 10055, 0, 10111, 10160, 0)
1193OPTION(1, 10207 /* -use-partial-reductions-by-default */, anonymous_115, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 10242, 0, 0, 0, 0)
1194OPTION(1, 10314 /* -vector-combine-max-scan-instrs */, anonymous_113, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 10346, 0, 0, 0, 0)
1195OPTION(1, 10402 /* -vectorize-loops */, anonymous_46, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 10419, 0, 0, 0, 0)
1196OPTION(1, 10453 /* -vectorize-num-stores-pred */, anonymous_47, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 10480, 0, 0, 0, 0)
1197OPTION(1, 10531 /* -vectorize-scev-check-threshold */, anonymous_48, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 10563, 0, 0, 0, 0)
1198OPTION(1, 10605 /* -vectorize-slp */, anonymous_109, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 10620, 0, 0, 0, 0)
1199OPTION(1, 10653 /* -vectorizer-consider-reg-pressure */, anonymous_16, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 10687, 0, 0, 0, 0)
1200OPTION(1, 10738 /* -vectorizer-maximize-bandwidth-for-vector-calls */, anonymous_18, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 10786, 0, 0, 0, 0)
1201OPTION(1, 10842 /* -vectorizer-maximize-bandwidth */, anonymous_17, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 10873, 0, 0, 0, 0)
1202OPTION(1, 10982 /* -vectorizer-min-trip-count */, anonymous_49, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 11009, 0, 0, 0, 0)
1203OPTION(1, 11140 /* -view-slp-tree */, anonymous_110, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 11155, 0, 0, 0, 0)
1204OPTION(1, 11191 /* -vplan-build-outerloop-stress-test */, anonymous_50, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 11226, 0, 0, 0, 0)
1205#if !defined(NDEBUG)
1206OPTION(1, 11401 /* -vplan-print-after-all */, anonymous_52, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 11424, 0, 0, 0, 0)
1207#endif
1208#if !defined(NDEBUG)
1209OPTION(1, 11469 /* -vplan-print-after */, anonymous_51, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 11488, 0, 0, 0, 0)
1210#endif
1211#if !defined(NDEBUG)
1212OPTION(1, 11548 /* -vplan-print-before-all */, anonymous_54, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 11572, 0, 0, 0, 0)
1213#endif
1214#if !defined(NDEBUG)
1215OPTION(1, 11618 /* -vplan-print-before */, anonymous_53, SeparateOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 11638, 0, 0, 0, 0)
1216#endif
1217OPTION(1, 11699 /* -vplan-print-in-dot-format */, anonymous_114, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 11726, 0, 0, 0, 0)
1218#if !defined(NDEBUG)
1219OPTION(1, 11783 /* -vplan-print-vector-region-scope */, anonymous_55, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 11816, 0, 0, 0, 0)
1220#endif
1221OPTION(1, 11904 /* -vplan-verify-each */, anonymous_56, FlagOrEq, INVALID, INVALID, 0, 0, static_cast<unsigned>(DefaultVis), 0, 11923, 0, 0, 0, 0)
1222#endif // OPTION
1223
1224#ifdef SIMPLE_ENUM_VALUE_TABLE
1225
1226struct SimpleEnumValue {
1227 const char *Name;
1228 unsigned Value;
1229};
1230
1231struct SimpleEnumValueTable {
1232 const SimpleEnumValue *Table;
1233 unsigned Size;
1234};
1235static const SimpleEnumValueTable SimpleEnumValueTables[] = {};
1236static const unsigned SimpleEnumValueTablesSize = std::size(SimpleEnumValueTables);
1237#endif // SIMPLE_ENUM_VALUE_TABLE
1238