i386.opt revision 1.1.1.9 1 ; Options for the IA-32 and AMD64 ports of the compiler.
2
3 ; Copyright (C) 2005-2020 Free Software Foundation, Inc.
4 ;
5 ; This file is part of GCC.
6 ;
7 ; GCC is free software; you can redistribute it and/or modify it under
8 ; the terms of the GNU General Public License as published by the Free
9 ; Software Foundation; either version 3, or (at your option) any later
10 ; version.
11 ;
12 ; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
13 ; WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 ; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15 ; for more details.
16 ;
17 ; You should have received a copy of the GNU General Public License
18 ; along with GCC; see the file COPYING3. If not see
19 ; <http://www.gnu.org/licenses/>.
20
21 HeaderInclude
22 config/i386/i386-opts.h
23
24 ; Bit flags that specify the ISA we are compiling for.
25 Variable
26 HOST_WIDE_INT ix86_isa_flags = TARGET_64BIT_DEFAULT | TARGET_SUBTARGET_ISA_DEFAULT
27
28 Variable
29 HOST_WIDE_INT ix86_isa_flags2 = 0
30
31 ; A mask of ix86_isa_flags that includes bit X if X was set or cleared
32 ; on the command line.
33 Variable
34 HOST_WIDE_INT ix86_isa_flags_explicit
35
36 Variable
37 HOST_WIDE_INT ix86_isa_flags2_explicit
38
39 ; Additional target flags
40 Variable
41 int ix86_target_flags
42
43 TargetVariable
44 int recip_mask = RECIP_MASK_DEFAULT
45
46 Variable
47 int recip_mask_explicit
48
49 TargetSave
50 int x_recip_mask_explicit
51
52 ;; A copy of flag_excess_precision as a target variable that should
53 ;; force a different DECL_FUNCTION_SPECIFIC_TARGET upon
54 ;; flag_excess_precision changes.
55 TargetVariable
56 enum excess_precision ix86_excess_precision = EXCESS_PRECISION_DEFAULT
57
58 ;; Similarly for flag_unsafe_math_optimizations.
59 TargetVariable
60 bool ix86_unsafe_math_optimizations = false
61
62 ;; Definitions to add to the cl_target_option structure
63 ;; -march= processor
64 TargetSave
65 unsigned char arch
66
67 ;; -mtune= processor
68 TargetSave
69 unsigned char tune
70
71 ;; -march= processor-string
72 TargetSave
73 const char *x_ix86_arch_string
74
75 ;; -mtune= processor-string
76 TargetSave
77 const char *x_ix86_tune_string
78
79 ;; CPU schedule model
80 TargetSave
81 unsigned char schedule
82
83 ;; True if processor has SSE prefetch instruction.
84 TargetSave
85 unsigned char prefetch_sse
86
87 ;; branch cost
88 TargetSave
89 unsigned char branch_cost
90
91 ;; which flags were passed by the user
92 TargetSave
93 HOST_WIDE_INT x_ix86_isa_flags2_explicit
94
95 ;; which flags were passed by the user
96 TargetSave
97 HOST_WIDE_INT x_ix86_isa_flags_explicit
98
99 ;; whether -mtune was not specified
100 TargetSave
101 unsigned char tune_defaulted
102
103 ;; whether -march was specified
104 TargetSave
105 unsigned char arch_specified
106
107 ;; -mcmodel= model
108 TargetSave
109 enum cmodel x_ix86_cmodel
110
111 ;; -mabi=
112 TargetSave
113 enum calling_abi x_ix86_abi
114
115 ;; -masm=
116 TargetSave
117 enum asm_dialect x_ix86_asm_dialect
118
119 ;; -mbranch-cost=
120 TargetSave
121 int x_ix86_branch_cost
122
123 ;; -mdump-tune-features=
124 TargetSave
125 int x_ix86_dump_tunes
126
127 ;; -mstackrealign=
128 TargetSave
129 int x_ix86_force_align_arg_pointer
130
131 ;; -mforce-drap=
132 TargetSave
133 int x_ix86_force_drap
134
135 ;; -mincoming-stack-boundary=
136 TargetSave
137 int x_ix86_incoming_stack_boundary_arg
138
139 ;; -maddress-mode=
140 TargetSave
141 enum pmode x_ix86_pmode
142
143 ;; -mpreferred-stack-boundary=
144 TargetSave
145 int x_ix86_preferred_stack_boundary_arg
146
147 ;; -mrecip=
148 TargetSave
149 const char *x_ix86_recip_name
150
151 ;; -mregparm=
152 TargetSave
153 int x_ix86_regparm
154
155 ;; -mlarge-data-threshold=
156 TargetSave
157 int x_ix86_section_threshold
158
159 ;; -msse2avx=
160 TargetSave
161 int x_ix86_sse2avx
162
163 ;; -mstack-protector-guard=
164 TargetSave
165 enum stack_protector_guard x_ix86_stack_protector_guard
166
167 ;; -mstringop-strategy=
168 TargetSave
169 enum stringop_alg x_ix86_stringop_alg
170
171 ;; -mtls-dialect=
172 TargetSave
173 enum tls_dialect x_ix86_tls_dialect
174
175 ;; -mtune-ctrl=
176 TargetSave
177 const char *x_ix86_tune_ctrl_string
178
179 ;; -mmemcpy-strategy=
180 TargetSave
181 const char *x_ix86_tune_memcpy_strategy
182
183 ;; -mmemset-strategy=
184 TargetSave
185 const char *x_ix86_tune_memset_strategy
186
187 ;; -mno-default=
188 TargetSave
189 int x_ix86_tune_no_default
190
191 ;; -mveclibabi=
192 TargetSave
193 enum ix86_veclibabi x_ix86_veclibabi_type
194
195 ;; x86 options
196 m128bit-long-double
197 Target RejectNegative Report Mask(128BIT_LONG_DOUBLE) Save
198 sizeof(long double) is 16.
199
200 m80387
201 Target Report Mask(80387) Save
202 Use hardware fp.
203
204 m96bit-long-double
205 Target RejectNegative Report InverseMask(128BIT_LONG_DOUBLE) Save
206 sizeof(long double) is 12.
207
208 mlong-double-80
209 Target Report RejectNegative Negative(mlong-double-64) InverseMask(LONG_DOUBLE_64) Save
210 Use 80-bit long double.
211
212 mlong-double-64
213 Target Report RejectNegative Negative(mlong-double-128) Mask(LONG_DOUBLE_64) InverseMask(LONG_DOUBLE_128) Save
214 Use 64-bit long double.
215
216 mlong-double-128
217 Target Report RejectNegative Negative(mlong-double-80) Mask(LONG_DOUBLE_128) InverseMask(LONG_DOUBLE_64) Save
218 Use 128-bit long double.
219
220 maccumulate-outgoing-args
221 Target Report Mask(ACCUMULATE_OUTGOING_ARGS) Save
222 Reserve space for outgoing arguments in the function prologue.
223
224 malign-double
225 Target Report Mask(ALIGN_DOUBLE) Save
226 Align some doubles on dword boundary.
227
228 malign-functions=
229 Target RejectNegative Joined UInteger
230 Function starts are aligned to this power of 2.
231
232 malign-jumps=
233 Target RejectNegative Joined UInteger
234 Jump targets are aligned to this power of 2.
235
236 malign-loops=
237 Target RejectNegative Joined UInteger
238 Loop code aligned to this power of 2.
239
240 malign-stringops
241 Target RejectNegative Report InverseMask(NO_ALIGN_STRINGOPS, ALIGN_STRINGOPS) Save
242 Align destination of the string operations.
243
244 malign-data=
245 Target RejectNegative Joined Var(ix86_align_data_type) Enum(ix86_align_data) Init(ix86_align_data_type_compat)
246 Use the given data alignment.
247
248 Enum
249 Name(ix86_align_data) Type(enum ix86_align_data)
250 Known data alignment choices (for use with the -malign-data= option):
251
252 EnumValue
253 Enum(ix86_align_data) String(compat) Value(ix86_align_data_type_compat)
254
255 EnumValue
256 Enum(ix86_align_data) String(abi) Value(ix86_align_data_type_abi)
257
258 EnumValue
259 Enum(ix86_align_data) String(cacheline) Value(ix86_align_data_type_cacheline)
260
261 march=
262 Target RejectNegative Negative(march=) Joined Var(ix86_arch_string)
263 Generate code for given CPU.
264
265 masm=
266 Target RejectNegative Joined Enum(asm_dialect) Var(ix86_asm_dialect) Init(ASM_ATT)
267 Use given assembler dialect.
268
269 Enum
270 Name(asm_dialect) Type(enum asm_dialect)
271 Known assembler dialects (for use with the -masm= option):
272
273 EnumValue
274 Enum(asm_dialect) String(intel) Value(ASM_INTEL)
275
276 EnumValue
277 Enum(asm_dialect) String(att) Value(ASM_ATT)
278
279 mbranch-cost=
280 Target RejectNegative Joined UInteger Var(ix86_branch_cost) IntegerRange(0, 5)
281 Branches are this expensive (arbitrary units).
282
283 mlarge-data-threshold=
284 Target RejectNegative Joined UInteger Var(ix86_section_threshold) Init(DEFAULT_LARGE_SECTION_THRESHOLD)
285 -mlarge-data-threshold=<number> Data greater than given threshold will go into .ldata section in x86-64 medium model.
286
287 mcmodel=
288 Target RejectNegative Joined Enum(cmodel) Var(ix86_cmodel) Init(CM_32)
289 Use given x86-64 code model.
290
291 Enum
292 Name(cmodel) Type(enum cmodel)
293 Known code models (for use with the -mcmodel= option):
294
295 EnumValue
296 Enum(cmodel) String(small) Value(CM_SMALL)
297
298 EnumValue
299 Enum(cmodel) String(medium) Value(CM_MEDIUM)
300
301 EnumValue
302 Enum(cmodel) String(large) Value(CM_LARGE)
303
304 EnumValue
305 Enum(cmodel) String(32) Value(CM_32)
306
307 EnumValue
308 Enum(cmodel) String(kernel) Value(CM_KERNEL)
309
310 maddress-mode=
311 Target RejectNegative Joined Enum(pmode) Var(ix86_pmode) Init(PMODE_SI)
312 Use given address mode.
313
314 Enum
315 Name(pmode) Type(enum pmode)
316 Known address mode (for use with the -maddress-mode= option):
317
318 EnumValue
319 Enum(pmode) String(short) Value(PMODE_SI)
320
321 EnumValue
322 Enum(pmode) String(long) Value(PMODE_DI)
323
324 mcpu=
325 Target RejectNegative Joined Undocumented Alias(mtune=) Warn(%<-mcpu=%> is deprecated; use %<-mtune=%> or %<-march=%> instead)
326
327 mfancy-math-387
328 Target RejectNegative Report InverseMask(NO_FANCY_MATH_387, USE_FANCY_MATH_387) Save
329 Generate sin, cos, sqrt for FPU.
330
331 mforce-drap
332 Target Report Var(ix86_force_drap)
333 Always use Dynamic Realigned Argument Pointer (DRAP) to realign stack.
334
335 mfp-ret-in-387
336 Target Report Mask(FLOAT_RETURNS) Save
337 Return values of functions in FPU registers.
338
339 mfpmath=
340 Target RejectNegative Joined Var(ix86_fpmath) Enum(fpmath_unit) Init(FPMATH_387) Save
341 Generate floating point mathematics using given instruction set.
342
343 Enum
344 Name(fpmath_unit) Type(enum fpmath_unit)
345 Valid arguments to -mfpmath=:
346
347 EnumValue
348 Enum(fpmath_unit) String(387) Value(FPMATH_387)
349
350 EnumValue
351 Enum(fpmath_unit) String(sse) Value(FPMATH_SSE)
352
353 EnumValue
354 Enum(fpmath_unit) String(387,sse) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)})
355
356 EnumValue
357 Enum(fpmath_unit) String(387+sse) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)})
358
359 EnumValue
360 Enum(fpmath_unit) String(sse,387) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)})
361
362 EnumValue
363 Enum(fpmath_unit) String(sse+387) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)})
364
365 EnumValue
366 Enum(fpmath_unit) String(both) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)})
367
368 mhard-float
369 Target RejectNegative Mask(80387) Save
370 Use hardware fp.
371
372 mieee-fp
373 Target Report Mask(IEEE_FP) Save
374 Use IEEE math for fp comparisons.
375
376 minline-all-stringops
377 Target Report Mask(INLINE_ALL_STRINGOPS) Save
378 Inline all known string operations.
379
380 minline-stringops-dynamically
381 Target Report Mask(INLINE_STRINGOPS_DYNAMICALLY) Save
382 Inline memset/memcpy string operations, but perform inline version only for small blocks.
383
384 mintel-syntax
385 Target Undocumented Alias(masm=, intel, att) Warn(%<-mintel-syntax%> and %<-mno-intel-syntax%> are deprecated; use %<-masm=intel%> and %<-masm=att%> instead)
386
387 mms-bitfields
388 Target Report Mask(MS_BITFIELD_LAYOUT) Save
389 Use native (MS) bitfield layout.
390
391 mno-align-stringops
392 Target RejectNegative Report Mask(NO_ALIGN_STRINGOPS) Undocumented Save
393
394 mno-fancy-math-387
395 Target RejectNegative Report Mask(NO_FANCY_MATH_387) Undocumented Save
396
397 mno-push-args
398 Target RejectNegative Report Mask(NO_PUSH_ARGS) Undocumented Save
399
400 mno-red-zone
401 Target RejectNegative Report Mask(NO_RED_ZONE) Undocumented Save
402
403 momit-leaf-frame-pointer
404 Target Report Mask(OMIT_LEAF_FRAME_POINTER) Save
405 Omit the frame pointer in leaf functions.
406
407 mpc32
408 Target RejectNegative Report
409 Set 80387 floating-point precision to 32-bit.
410
411 mpc64
412 Target RejectNegative Report
413 Set 80387 floating-point precision to 64-bit.
414
415 mpc80
416 Target RejectNegative Report
417 Set 80387 floating-point precision to 80-bit.
418
419 mpreferred-stack-boundary=
420 Target RejectNegative Joined UInteger Var(ix86_preferred_stack_boundary_arg)
421 Attempt to keep stack aligned to this power of 2.
422
423 mincoming-stack-boundary=
424 Target RejectNegative Joined UInteger Var(ix86_incoming_stack_boundary_arg)
425 Assume incoming stack aligned to this power of 2.
426
427 mpush-args
428 Target Report InverseMask(NO_PUSH_ARGS, PUSH_ARGS) Save
429 Use push instructions to save outgoing arguments.
430
431 mred-zone
432 Target RejectNegative Report InverseMask(NO_RED_ZONE, RED_ZONE) Save
433 Use red-zone in the x86-64 code.
434
435 mregparm=
436 Target RejectNegative Joined UInteger Var(ix86_regparm)
437 Number of registers used to pass integer arguments.
438
439 mrtd
440 Target Report Mask(RTD) Save
441 Alternate calling convention.
442
443 msoft-float
444 Target InverseMask(80387) Save
445 Do not use hardware fp.
446
447 msseregparm
448 Target RejectNegative Mask(SSEREGPARM) Save
449 Use SSE register passing conventions for SF and DF mode.
450
451 mstackrealign
452 Target Report Var(ix86_force_align_arg_pointer)
453 Realign stack in prologue.
454
455 mstack-arg-probe
456 Target Report Mask(STACK_PROBE) Save
457 Enable stack probing.
458
459 mmemcpy-strategy=
460 Target RejectNegative Joined Var(ix86_tune_memcpy_strategy)
461 Specify memcpy expansion strategy when expected size is known.
462
463 mmemset-strategy=
464 Target RejectNegative Joined Var(ix86_tune_memset_strategy)
465 Specify memset expansion strategy when expected size is known.
466
467 mstringop-strategy=
468 Target RejectNegative Joined Enum(stringop_alg) Var(ix86_stringop_alg) Init(no_stringop)
469 Chose strategy to generate stringop using.
470
471 Enum
472 Name(stringop_alg) Type(enum stringop_alg)
473 Valid arguments to -mstringop-strategy=:
474
475 EnumValue
476 Enum(stringop_alg) String(rep_byte) Value(rep_prefix_1_byte)
477
478 EnumValue
479 Enum(stringop_alg) String(libcall) Value(libcall)
480
481 EnumValue
482 Enum(stringop_alg) String(rep_4byte) Value(rep_prefix_4_byte)
483
484 EnumValue
485 Enum(stringop_alg) String(rep_8byte) Value(rep_prefix_8_byte)
486
487 EnumValue
488 Enum(stringop_alg) String(byte_loop) Value(loop_1_byte)
489
490 EnumValue
491 Enum(stringop_alg) String(loop) Value(loop)
492
493 EnumValue
494 Enum(stringop_alg) String(unrolled_loop) Value(unrolled_loop)
495
496 EnumValue
497 Enum(stringop_alg) String(vector_loop) Value(vector_loop)
498
499 mtls-dialect=
500 Target RejectNegative Joined Var(ix86_tls_dialect) Enum(tls_dialect) Init(TLS_DIALECT_GNU)
501 Use given thread-local storage dialect.
502
503 Enum
504 Name(tls_dialect) Type(enum tls_dialect)
505 Known TLS dialects (for use with the -mtls-dialect= option):
506
507 EnumValue
508 Enum(tls_dialect) String(gnu) Value(TLS_DIALECT_GNU)
509
510 EnumValue
511 Enum(tls_dialect) String(gnu2) Value(TLS_DIALECT_GNU2)
512
513 mtls-direct-seg-refs
514 Target Report Mask(TLS_DIRECT_SEG_REFS)
515 Use direct references against %gs when accessing tls data.
516
517 mtune=
518 Target RejectNegative Negative(mtune=) Joined Var(ix86_tune_string)
519 Schedule code for given CPU.
520
521 mtune-ctrl=
522 Target RejectNegative Joined Var(ix86_tune_ctrl_string)
523 Fine grain control of tune features.
524
525 mno-default
526 Target RejectNegative Var(ix86_tune_no_default)
527 Clear all tune features.
528
529 mdump-tune-features
530 Target RejectNegative Var(ix86_dump_tunes)
531
532 miamcu
533 Target Report Mask(IAMCU)
534 Generate code that conforms to Intel MCU psABI.
535
536 mabi=
537 Target RejectNegative Joined Var(ix86_abi) Enum(calling_abi) Init(SYSV_ABI)
538 Generate code that conforms to the given ABI.
539
540 Enum
541 Name(calling_abi) Type(enum calling_abi)
542 Known ABIs (for use with the -mabi= option):
543
544 EnumValue
545 Enum(calling_abi) String(sysv) Value(SYSV_ABI)
546
547 EnumValue
548 Enum(calling_abi) String(ms) Value(MS_ABI)
549
550 mcall-ms2sysv-xlogues
551 Target Report Mask(CALL_MS2SYSV_XLOGUES) Save
552 Use libgcc stubs to save and restore registers clobbered by 64-bit Microsoft to System V ABI calls.
553
554 mveclibabi=
555 Target RejectNegative Joined Var(ix86_veclibabi_type) Enum(ix86_veclibabi) Init(ix86_veclibabi_type_none)
556 Vector library ABI to use.
557
558 Enum
559 Name(ix86_veclibabi) Type(enum ix86_veclibabi)
560 Known vectorization library ABIs (for use with the -mveclibabi= option):
561
562 EnumValue
563 Enum(ix86_veclibabi) String(svml) Value(ix86_veclibabi_type_svml)
564
565 EnumValue
566 Enum(ix86_veclibabi) String(acml) Value(ix86_veclibabi_type_acml)
567
568 mvect8-ret-in-mem
569 Target Report Mask(VECT8_RETURNS) Save
570 Return 8-byte vectors in memory.
571
572 mrecip
573 Target Report Mask(RECIP) Save
574 Generate reciprocals instead of divss and sqrtss.
575
576 mrecip=
577 Target Report RejectNegative Joined Var(ix86_recip_name)
578 Control generation of reciprocal estimates.
579
580 mcld
581 Target Report Mask(CLD) Save
582 Generate cld instruction in the function prologue.
583
584 mvzeroupper
585 Target Report Mask(VZEROUPPER) Save
586 Generate vzeroupper instruction before a transfer of control flow out of
587 the function.
588
589 mstv
590 Target Report Mask(STV) Save
591 Disable Scalar to Vector optimization pass transforming 64-bit integer
592 computations into a vector ones.
593
594 mdispatch-scheduler
595 Target RejectNegative Var(flag_dispatch_scheduler)
596 Do dispatch scheduling if processor is bdver1, bdver2, bdver3, bdver4
597 or znver1 and Haifa scheduling is selected.
598
599 mprefer-avx128
600 Target Alias(mprefer-vector-width=, 128, 256)
601 Use 128-bit AVX instructions instead of 256-bit AVX instructions in the auto-vectorizer.
602
603 mprefer-vector-width=
604 Target Report RejectNegative Joined Var(prefer_vector_width_type) Enum(prefer_vector_width) Init(PVW_NONE) Save
605 Use given register vector width instructions instead of maximum register width in the auto-vectorizer.
606
607 Enum
608 Name(prefer_vector_width) Type(enum prefer_vector_width)
609 Known preferred register vector length (to use with the -mprefer-vector-width= option):
610
611 EnumValue
612 Enum(prefer_vector_width) String(none) Value(PVW_NONE)
613
614 EnumValue
615 Enum(prefer_vector_width) String(128) Value(PVW_AVX128)
616
617 EnumValue
618 Enum(prefer_vector_width) String(256) Value(PVW_AVX256)
619
620 EnumValue
621 Enum(prefer_vector_width) String(512) Value(PVW_AVX512)
622
623 ;; ISA support
624
625 m32
626 Target RejectNegative Negative(m64) Report InverseMask(ISA_64BIT) Var(ix86_isa_flags) Save
627 Generate 32bit i386 code.
628
629 m64
630 Target RejectNegative Negative(mx32) Report Mask(ABI_64) Var(ix86_isa_flags) Save
631 Generate 64bit x86-64 code.
632
633 mx32
634 Target RejectNegative Negative(m16) Report Mask(ABI_X32) Var(ix86_isa_flags) Save
635 Generate 32bit x86-64 code.
636
637 m16
638 Target RejectNegative Negative(m32) Report Mask(CODE16) InverseMask(ISA_64BIT) Var(ix86_isa_flags) Save
639 Generate 16bit i386 code.
640
641 mmmx
642 Target Report Mask(ISA_MMX) Var(ix86_isa_flags) Save
643 Support MMX built-in functions.
644
645 m3dnow
646 Target Report Mask(ISA_3DNOW) Var(ix86_isa_flags) Save
647 Support 3DNow! built-in functions.
648
649 m3dnowa
650 Target Report Mask(ISA_3DNOW_A) Var(ix86_isa_flags) Save
651 Support Athlon 3Dnow! built-in functions.
652
653 msse
654 Target Report Mask(ISA_SSE) Var(ix86_isa_flags) Save
655 Support MMX and SSE built-in functions and code generation.
656
657 msse2
658 Target Report Mask(ISA_SSE2) Var(ix86_isa_flags) Save
659 Support MMX, SSE and SSE2 built-in functions and code generation.
660
661 msse3
662 Target Report Mask(ISA_SSE3) Var(ix86_isa_flags) Save
663 Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation.
664
665 mssse3
666 Target Report Mask(ISA_SSSE3) Var(ix86_isa_flags) Save
667 Support MMX, SSE, SSE2, SSE3 and SSSE3 built-in functions and code generation.
668
669 msse4.1
670 Target Report Mask(ISA_SSE4_1) Var(ix86_isa_flags) Save
671 Support MMX, SSE, SSE2, SSE3, SSSE3 and SSE4.1 built-in functions and code generation.
672
673 msse4.2
674 Target Report Mask(ISA_SSE4_2) Var(ix86_isa_flags) Save
675 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and code generation.
676
677 msse4
678 Target RejectNegative Report Mask(ISA_SSE4_2) Var(ix86_isa_flags) Save
679 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and code generation.
680
681 mno-sse4
682 Target RejectNegative Report InverseMask(ISA_SSE4_1) Var(ix86_isa_flags) Save
683 Do not support SSE4.1 and SSE4.2 built-in functions and code generation.
684
685 msse5
686 Target Undocumented Alias(mavx) Warn(%<-msse5%> was removed)
687 ;; Deprecated
688
689 mavx
690 Target Report Mask(ISA_AVX) Var(ix86_isa_flags) Save
691 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 and AVX built-in functions and code generation.
692
693 mavx2
694 Target Report Mask(ISA_AVX2) Var(ix86_isa_flags) Save
695 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and AVX2 built-in functions and code generation.
696
697 mavx512f
698 Target Report Mask(ISA_AVX512F) Var(ix86_isa_flags) Save
699 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F built-in functions and code generation.
700
701 mavx512pf
702 Target Report Mask(ISA_AVX512PF) Var(ix86_isa_flags) Save
703 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512PF built-in functions and code generation.
704
705 mavx512er
706 Target Report Mask(ISA_AVX512ER) Var(ix86_isa_flags) Save
707 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512ER built-in functions and code generation.
708
709 mavx512cd
710 Target Report Mask(ISA_AVX512CD) Var(ix86_isa_flags) Save
711 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512CD built-in functions and code generation.
712
713 mavx512dq
714 Target Report Mask(ISA_AVX512DQ) Var(ix86_isa_flags) Save
715 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512DQ built-in functions and code generation.
716
717 mavx512bw
718 Target Report Mask(ISA_AVX512BW) Var(ix86_isa_flags) Save
719 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512BW built-in functions and code generation.
720
721 mavx512vl
722 Target Report Mask(ISA_AVX512VL) Var(ix86_isa_flags) Save
723 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512VL built-in functions and code generation.
724
725 mavx512ifma
726 Target Report Mask(ISA_AVX512IFMA) Var(ix86_isa_flags) Save
727 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512IFMA built-in functions and code generation.
728
729 mavx512vbmi
730 Target Report Mask(ISA_AVX512VBMI) Var(ix86_isa_flags) Save
731 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512VBMI built-in functions and code generation.
732
733 mavx5124fmaps
734 Target Report Mask(ISA2_AVX5124FMAPS) Var(ix86_isa_flags2) Save
735 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX5124FMAPS built-in functions and code generation.
736
737 mavx5124vnniw
738 Target Report Mask(ISA2_AVX5124VNNIW) Var(ix86_isa_flags2) Save
739 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX5124VNNIW built-in functions and code generation.
740
741 mavx512vpopcntdq
742 Target Report Mask(ISA_AVX512VPOPCNTDQ) Var(ix86_isa_flags) Save
743 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512VPOPCNTDQ built-in functions and code generation.
744
745 mavx512vbmi2
746 Target Report Mask(ISA_AVX512VBMI2) Var(ix86_isa_flags) Save
747 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512VBMI2 built-in functions and code generation.
748
749 mavx512vnni
750 Target Report Mask(ISA_AVX512VNNI) Var(ix86_isa_flags) Save
751 Support AVX512VNNI built-in functions and code generation.
752
753 mavx512bitalg
754 Target Report Mask(ISA_AVX512BITALG) Var(ix86_isa_flags) Save
755 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512BITALG built-in functions and code generation.
756
757 mavx512vp2intersect
758 Target Report Mask(ISA2_AVX512VP2INTERSECT) Var(ix86_isa_flags2) Save
759 Support AVX512VP2INTERSECT built-in functions and code generation.
760
761 mfma
762 Target Report Mask(ISA_FMA) Var(ix86_isa_flags) Save
763 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and FMA built-in functions and code generation.
764
765 msse4a
766 Target Report Mask(ISA_SSE4A) Var(ix86_isa_flags) Save
767 Support MMX, SSE, SSE2, SSE3 and SSE4A built-in functions and code generation.
768
769 mfma4
770 Target Report Mask(ISA_FMA4) Var(ix86_isa_flags) Save
771 Support FMA4 built-in functions and code generation.
772
773 mxop
774 Target Report Mask(ISA_XOP) Var(ix86_isa_flags) Save
775 Support XOP built-in functions and code generation.
776
777 mlwp
778 Target Report Mask(ISA_LWP) Var(ix86_isa_flags) Save
779 Support LWP built-in functions and code generation.
780
781 mabm
782 Target Report Mask(ISA_ABM) Var(ix86_isa_flags) Save
783 Support code generation of Advanced Bit Manipulation (ABM) instructions.
784
785 mpopcnt
786 Target Report Mask(ISA_POPCNT) Var(ix86_isa_flags) Save
787 Support code generation of popcnt instruction.
788
789 mpconfig
790 Target Report Mask(ISA2_PCONFIG) Var(ix86_isa_flags2) Save
791 Support PCONFIG built-in functions and code generation.
792
793 mwbnoinvd
794 Target Report Mask(ISA2_WBNOINVD) Var(ix86_isa_flags2) Save
795 Support WBNOINVD built-in functions and code generation.
796
797 mptwrite
798 Target Report Mask(ISA2_PTWRITE) Var(ix86_isa_flags2) Save
799 Support PTWRITE built-in functions and code generation.
800
801 msgx
802 Target Report Mask(ISA2_SGX) Var(ix86_isa_flags2) Save
803 Support SGX built-in functions and code generation.
804
805 mrdpid
806 Target Report Mask(ISA2_RDPID) Var(ix86_isa_flags2) Save
807 Support RDPID built-in functions and code generation.
808
809 mgfni
810 Target Report Mask(ISA_GFNI) Var(ix86_isa_flags) Save
811 Support GFNI built-in functions and code generation.
812
813 mvaes
814 Target Report Mask(ISA2_VAES) Var(ix86_isa_flags2) Save
815 Support VAES built-in functions and code generation.
816
817 mvpclmulqdq
818 Target Report Mask(ISA_VPCLMULQDQ) Var(ix86_isa_flags) Save
819 Support VPCLMULQDQ built-in functions and code generation.
820
821 mbmi
822 Target Report Mask(ISA_BMI) Var(ix86_isa_flags) Save
823 Support BMI built-in functions and code generation.
824
825 mbmi2
826 Target Report Mask(ISA_BMI2) Var(ix86_isa_flags) Save
827 Support BMI2 built-in functions and code generation.
828
829 mlzcnt
830 Target Report Mask(ISA_LZCNT) Var(ix86_isa_flags) Save
831 Support LZCNT built-in function and code generation.
832
833 mhle
834 Target Report Mask(ISA2_HLE) Var(ix86_isa_flags2) Save
835 Support Hardware Lock Elision prefixes.
836
837 mrdseed
838 Target Report Mask(ISA_RDSEED) Var(ix86_isa_flags) Save
839 Support RDSEED instruction.
840
841 mprfchw
842 Target Report Mask(ISA_PRFCHW) Var(ix86_isa_flags) Save
843 Support PREFETCHW instruction.
844
845 madx
846 Target Report Mask(ISA_ADX) Var(ix86_isa_flags) Save
847 Support flag-preserving add-carry instructions.
848
849 mclflushopt
850 Target Report Mask(ISA_CLFLUSHOPT) Var(ix86_isa_flags) Save
851 Support CLFLUSHOPT instructions.
852
853 mclwb
854 Target Report Mask(ISA_CLWB) Var(ix86_isa_flags) Save
855 Support CLWB instruction.
856
857 mpcommit
858 Target WarnRemoved
859
860 mfxsr
861 Target Report Mask(ISA_FXSR) Var(ix86_isa_flags) Save
862 Support FXSAVE and FXRSTOR instructions.
863
864 mxsave
865 Target Report Mask(ISA_XSAVE) Var(ix86_isa_flags) Save
866 Support XSAVE and XRSTOR instructions.
867
868 mxsaveopt
869 Target Report Mask(ISA_XSAVEOPT) Var(ix86_isa_flags) Save
870 Support XSAVEOPT instruction.
871
872 mxsavec
873 Target Report Mask(ISA_XSAVEC) Var(ix86_isa_flags) Save
874 Support XSAVEC instructions.
875
876 mxsaves
877 Target Report Mask(ISA_XSAVES) Var(ix86_isa_flags) Save
878 Support XSAVES and XRSTORS instructions.
879
880 mtbm
881 Target Report Mask(ISA_TBM) Var(ix86_isa_flags) Save
882 Support TBM built-in functions and code generation.
883
884 mcx16
885 Target Report Mask(ISA2_CX16) Var(ix86_isa_flags2) Save
886 Support code generation of cmpxchg16b instruction.
887
888 msahf
889 Target Report Mask(ISA_SAHF) Var(ix86_isa_flags) Save
890 Support code generation of sahf instruction in 64bit x86-64 code.
891
892 mmovbe
893 Target Report Mask(ISA2_MOVBE) Var(ix86_isa_flags2) Save
894 Support code generation of movbe instruction.
895
896 mcrc32
897 Target Report Mask(ISA_CRC32) Var(ix86_isa_flags) Save
898 Support code generation of crc32 instruction.
899
900 maes
901 Target Report Mask(ISA_AES) Var(ix86_isa_flags) Save
902 Support AES built-in functions and code generation.
903
904 msha
905 Target Report Mask(ISA_SHA) Var(ix86_isa_flags) Save
906 Support SHA1 and SHA256 built-in functions and code generation.
907
908 mpclmul
909 Target Report Mask(ISA_PCLMUL) Var(ix86_isa_flags) Save
910 Support PCLMUL built-in functions and code generation.
911
912 msse2avx
913 Target Report Var(ix86_sse2avx)
914 Encode SSE instructions with VEX prefix.
915
916 mfsgsbase
917 Target Report Mask(ISA_FSGSBASE) Var(ix86_isa_flags) Save
918 Support FSGSBASE built-in functions and code generation.
919
920 mrdrnd
921 Target Report Mask(ISA_RDRND) Var(ix86_isa_flags) Save
922 Support RDRND built-in functions and code generation.
923
924 mf16c
925 Target Report Mask(ISA_F16C) Var(ix86_isa_flags) Save
926 Support F16C built-in functions and code generation.
927
928 mprefetchwt1
929 Target Report Mask(ISA_PREFETCHWT1) Var(ix86_isa_flags) Save
930 Support PREFETCHWT1 built-in functions and code generation.
931
932 mfentry
933 Target Report Var(flag_fentry)
934 Emit profiling counter call at function entry before prologue.
935
936 mrecord-mcount
937 Target Report Var(flag_record_mcount)
938 Generate __mcount_loc section with all mcount or __fentry__ calls.
939
940 mnop-mcount
941 Target Report Var(flag_nop_mcount)
942 Generate mcount/__fentry__ calls as nops. To activate they need to be
943 patched in.
944
945 mfentry-name=
946 Target RejectNegative Joined Var(fentry_name)
947 Set name of __fentry__ symbol called at function entry.
948
949 mfentry-section=
950 Target RejectNegative Joined Var(fentry_section)
951 Set name of section to record mrecord-mcount calls.
952
953 mskip-rax-setup
954 Target Report Var(flag_skip_rax_setup)
955 Skip setting up RAX register when passing variable arguments.
956
957 m8bit-idiv
958 Target Report Mask(USE_8BIT_IDIV) Save
959 Expand 32bit/64bit integer divide into 8bit unsigned integer divide with run-time check.
960
961 mavx256-split-unaligned-load
962 Target Report Mask(AVX256_SPLIT_UNALIGNED_LOAD) Save
963 Split 32-byte AVX unaligned load.
964
965 mavx256-split-unaligned-store
966 Target Report Mask(AVX256_SPLIT_UNALIGNED_STORE) Save
967 Split 32-byte AVX unaligned store.
968
969 mrtm
970 Target Report Mask(ISA_RTM) Var(ix86_isa_flags) Save
971 Support RTM built-in functions and code generation.
972
973 mmpx
974 Target WarnRemoved
975 Removed in GCC 9. This switch has no effect.
976
977 mmwaitx
978 Target Report Mask(ISA2_MWAITX) Var(ix86_isa_flags2) Save
979 Support MWAITX and MONITORX built-in functions and code generation.
980
981 mclzero
982 Target Report Mask(ISA2_CLZERO) Var(ix86_isa_flags2) Save
983 Support CLZERO built-in functions and code generation.
984
985 mpku
986 Target Report Mask(ISA_PKU) Var(ix86_isa_flags) Save
987 Support PKU built-in functions and code generation.
988
989 mstack-protector-guard=
990 Target RejectNegative Joined Enum(stack_protector_guard) Var(ix86_stack_protector_guard) Init(SSP_TLS)
991 Use given stack-protector guard.
992
993 Enum
994 Name(stack_protector_guard) Type(enum stack_protector_guard)
995 Known stack protector guard (for use with the -mstack-protector-guard= option):
996
997 EnumValue
998 Enum(stack_protector_guard) String(tls) Value(SSP_TLS)
999
1000 EnumValue
1001 Enum(stack_protector_guard) String(global) Value(SSP_GLOBAL)
1002
1003 mstack-protector-guard-reg=
1004 Target RejectNegative Joined Var(ix86_stack_protector_guard_reg_str)
1005 Use the given base register for addressing the stack-protector guard.
1006
1007 TargetVariable
1008 addr_space_t ix86_stack_protector_guard_reg = ADDR_SPACE_GENERIC
1009
1010 mstack-protector-guard-offset=
1011 Target RejectNegative Joined Integer Var(ix86_stack_protector_guard_offset_str)
1012 Use the given offset for addressing the stack-protector guard.
1013
1014 TargetVariable
1015 HOST_WIDE_INT ix86_stack_protector_guard_offset = 0
1016
1017 mstack-protector-guard-symbol=
1018 Target RejectNegative Joined Integer Var(ix86_stack_protector_guard_symbol_str)
1019 Use the given symbol for addressing the stack-protector guard.
1020
1021 mmitigate-rop
1022 Target WarnRemoved
1023
1024 mgeneral-regs-only
1025 Target Report RejectNegative Mask(GENERAL_REGS_ONLY) Var(ix86_target_flags) Save
1026 Generate code which uses only the general registers.
1027
1028 mshstk
1029 Target Report Mask(ISA_SHSTK) Var(ix86_isa_flags) Save
1030 Enable shadow stack built-in functions from Control-flow Enforcement
1031 Technology (CET).
1032
1033 mcet-switch
1034 Target Report Undocumented Var(flag_cet_switch) Init(0)
1035 Turn on CET instrumentation for switch statements that use a jump table and
1036 an indirect jump.
1037
1038 mmanual-endbr
1039 Target Report Var(flag_manual_endbr) Init(0)
1040 Insert ENDBR instruction at function entry only via cf_check attribute
1041 for CET instrumentation.
1042
1043 mforce-indirect-call
1044 Target Report Var(flag_force_indirect_call) Init(0)
1045 Make all function calls indirect.
1046
1047 mindirect-branch=
1048 Target Report RejectNegative Joined Enum(indirect_branch) Var(ix86_indirect_branch) Init(indirect_branch_keep)
1049 Convert indirect call and jump to call and return thunks.
1050
1051 mfunction-return=
1052 Target Report RejectNegative Joined Enum(indirect_branch) Var(ix86_function_return) Init(indirect_branch_keep)
1053 Convert function return to call and return thunk.
1054
1055 Enum
1056 Name(indirect_branch) Type(enum indirect_branch)
1057 Known indirect branch choices (for use with the -mindirect-branch=/-mfunction-return= options):
1058
1059 EnumValue
1060 Enum(indirect_branch) String(keep) Value(indirect_branch_keep)
1061
1062 EnumValue
1063 Enum(indirect_branch) String(thunk) Value(indirect_branch_thunk)
1064
1065 EnumValue
1066 Enum(indirect_branch) String(thunk-inline) Value(indirect_branch_thunk_inline)
1067
1068 EnumValue
1069 Enum(indirect_branch) String(thunk-extern) Value(indirect_branch_thunk_extern)
1070
1071 mindirect-branch-register
1072 Target Report Var(ix86_indirect_branch_register) Init(0)
1073 Force indirect call and jump via register.
1074
1075 mmovdiri
1076 Target Report Mask(ISA_MOVDIRI) Var(ix86_isa_flags) Save
1077 Support MOVDIRI built-in functions and code generation.
1078
1079 mmovdir64b
1080 Target Report Mask(ISA2_MOVDIR64B) Var(ix86_isa_flags2) Save
1081 Support MOVDIR64B built-in functions and code generation.
1082
1083 mwaitpkg
1084 Target Report Mask(ISA2_WAITPKG) Var(ix86_isa_flags2) Save
1085 Support WAITPKG built-in functions and code generation.
1086
1087 mcldemote
1088 Target Report Mask(ISA2_CLDEMOTE) Var(ix86_isa_flags2) Save
1089 Support CLDEMOTE built-in functions and code generation.
1090
1091 minstrument-return=
1092 Target Report RejectNegative Joined Enum(instrument_return) Var(ix86_instrument_return) Init(instrument_return_none)
1093 Instrument function exit in instrumented functions with __fentry__.
1094
1095 Enum
1096 Name(instrument_return) Type(enum instrument_return)
1097 Known choices for return instrumentation with -minstrument-return=:
1098
1099 EnumValue
1100 Enum(instrument_return) String(none) Value(instrument_return_none)
1101
1102 EnumValue
1103 Enum(instrument_return) String(call) Value(instrument_return_call)
1104
1105 EnumValue
1106 Enum(instrument_return) String(nop5) Value(instrument_return_nop5)
1107
1108 mrecord-return
1109 Target Report Var(ix86_flag_record_return) Init(0)
1110 Generate a __return_loc section pointing to all return instrumentation code.
1111
1112 mavx512bf16
1113 Target Report Mask(ISA2_AVX512BF16) Var(ix86_isa_flags2) Save
1114 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and
1115 AVX512BF16 built-in functions and code generation.
1116
1117 menqcmd
1118 Target Report Mask(ISA2_ENQCMD) Var(ix86_isa_flags2) Save
1119 Support ENQCMD built-in functions and code generation.
1120