Fix typos (PR other/84819).
[official-gcc.git] / gcc / config / i386 / i386.opt
blobc063ae8b1aefea7a693f772ed329c0e81788bdc9
1 ; Options for the IA-32 and AMD64 ports of the compiler.
3 ; Copyright (C) 2005-2018 Free Software Foundation, Inc.
5 ; This file is part of GCC.
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.
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.
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/>.
21 HeaderInclude
22 config/i386/i386-opts.h
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
28 Variable
29 HOST_WIDE_INT ix86_isa_flags2 = 0
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
36 Variable
37 HOST_WIDE_INT ix86_isa_flags2_explicit
39 ; Additional target flags
40 Variable
41 int ix86_target_flags
43 TargetVariable
44 int recip_mask = RECIP_MASK_DEFAULT
46 Variable
47 int recip_mask_explicit
49 TargetSave
50 int x_recip_mask_explicit
52 ;; Definitions to add to the cl_target_option structure
53 ;; -march= processor
54 TargetSave
55 unsigned char arch
57 ;; -mtune= processor
58 TargetSave
59 unsigned char tune
61 ;; -march= processor-string
62 TargetSave
63 const char *x_ix86_arch_string
65 ;; -mtune= processor-string
66 TargetSave
67 const char *x_ix86_tune_string
69 ;; CPU schedule model
70 TargetSave
71 unsigned char schedule
73 ;; True if processor has SSE prefetch instruction.
74 TargetSave
75 unsigned char prefetch_sse
77 ;; branch cost
78 TargetSave
79 unsigned char branch_cost
81 ;; which flags were passed by the user
82 TargetSave
83 HOST_WIDE_INT x_ix86_isa_flags2_explicit
85 ;; which flags were passed by the user
86 TargetSave
87 HOST_WIDE_INT x_ix86_isa_flags_explicit
89 ;; whether -mtune was not specified
90 TargetSave
91 unsigned char tune_defaulted
93 ;; whether -march was specified
94 TargetSave
95 unsigned char arch_specified
97 ;; -mcmodel= model
98 TargetSave
99 enum cmodel x_ix86_cmodel
101 ;; -mabi=
102 TargetSave
103 enum calling_abi x_ix86_abi
105 ;; -masm=
106 TargetSave
107 enum asm_dialect x_ix86_asm_dialect
109 ;; -mbranch-cost=
110 TargetSave
111 int x_ix86_branch_cost
113 ;; -mdump-tune-features=
114 TargetSave
115 int x_ix86_dump_tunes
117 ;; -mstackrealign=
118 TargetSave
119 int x_ix86_force_align_arg_pointer
121 ;; -mforce-drap=
122 TargetSave
123 int x_ix86_force_drap
125 ;; -mincoming-stack-boundary=
126 TargetSave
127 int x_ix86_incoming_stack_boundary_arg
129 ;; -maddress-mode=
130 TargetSave
131 enum pmode x_ix86_pmode
133 ;; -mpreferred-stack-boundary=
134 TargetSave
135 int x_ix86_preferred_stack_boundary_arg
137 ;; -mrecip=
138 TargetSave
139 const char *x_ix86_recip_name
141 ;; -mregparm=
142 TargetSave
143 int x_ix86_regparm
145 ;; -mlarge-data-threshold=
146 TargetSave
147 int x_ix86_section_threshold
149 ;; -msse2avx=
150 TargetSave
151 int x_ix86_sse2avx
153 ;; -mstack-protector-guard=
154 TargetSave
155 enum stack_protector_guard x_ix86_stack_protector_guard
157 ;; -mstringop-strategy=
158 TargetSave
159 enum stringop_alg x_ix86_stringop_alg
161 ;; -mtls-dialect=
162 TargetSave
163 enum tls_dialect x_ix86_tls_dialect
165 ;; -mtune-ctrl=
166 TargetSave
167 const char *x_ix86_tune_ctrl_string
169 ;; -mmemcpy-strategy=
170 TargetSave
171 const char *x_ix86_tune_memcpy_strategy
173 ;; -mmemset-strategy=
174 TargetSave
175 const char *x_ix86_tune_memset_strategy
177 ;; -mno-default=
178 TargetSave
179 int x_ix86_tune_no_default
181 ;; -mveclibabi=
182 TargetSave
183 enum ix86_veclibabi x_ix86_veclibabi_type
185 ;; -mprefer-vector-width=
186 TargetSave
187 enum prefer_vector_width x_prefer_vector_width_type
189 ;; x86 options
190 m128bit-long-double
191 Target RejectNegative Report Mask(128BIT_LONG_DOUBLE) Save
192 sizeof(long double) is 16.
194 m80387
195 Target Report Mask(80387) Save
196 Use hardware fp.
198 m96bit-long-double
199 Target RejectNegative Report InverseMask(128BIT_LONG_DOUBLE) Save
200 sizeof(long double) is 12.
202 mlong-double-80
203 Target Report RejectNegative Negative(mlong-double-64) InverseMask(LONG_DOUBLE_64) Save
204 Use 80-bit long double.
206 mlong-double-64
207 Target Report RejectNegative Negative(mlong-double-128) Mask(LONG_DOUBLE_64) InverseMask(LONG_DOUBLE_128) Save
208 Use 64-bit long double.
210 mlong-double-128
211 Target Report RejectNegative Negative(mlong-double-80) Mask(LONG_DOUBLE_128) InverseMask(LONG_DOUBLE_64) Save
212 Use 128-bit long double.
214 maccumulate-outgoing-args
215 Target Report Mask(ACCUMULATE_OUTGOING_ARGS) Save
216 Reserve space for outgoing arguments in the function prologue.
218 malign-double
219 Target Report Mask(ALIGN_DOUBLE) Save
220 Align some doubles on dword boundary.
222 malign-functions=
223 Target RejectNegative Joined UInteger
224 Function starts are aligned to this power of 2.
226 malign-jumps=
227 Target RejectNegative Joined UInteger
228 Jump targets are aligned to this power of 2.
230 malign-loops=
231 Target RejectNegative Joined UInteger
232 Loop code aligned to this power of 2.
234 malign-stringops
235 Target RejectNegative Report InverseMask(NO_ALIGN_STRINGOPS, ALIGN_STRINGOPS) Save
236 Align destination of the string operations.
238 malign-data=
239 Target RejectNegative Joined Var(ix86_align_data_type) Enum(ix86_align_data) Init(ix86_align_data_type_compat)
240 Use the given data alignment.
242 Enum
243 Name(ix86_align_data) Type(enum ix86_align_data)
244 Known data alignment choices (for use with the -malign-data= option):
246 EnumValue
247 Enum(ix86_align_data) String(compat) Value(ix86_align_data_type_compat)
249 EnumValue
250 Enum(ix86_align_data) String(abi) Value(ix86_align_data_type_abi)
252 EnumValue
253 Enum(ix86_align_data) String(cacheline) Value(ix86_align_data_type_cacheline)
255 march=
256 Target RejectNegative Joined Var(ix86_arch_string)
257 Generate code for given CPU.
259 masm=
260 Target RejectNegative Joined Enum(asm_dialect) Var(ix86_asm_dialect) Init(ASM_ATT)
261 Use given assembler dialect.
263 Enum
264 Name(asm_dialect) Type(enum asm_dialect)
265 Known assembler dialects (for use with the -masm= option):
267 EnumValue
268 Enum(asm_dialect) String(intel) Value(ASM_INTEL)
270 EnumValue
271 Enum(asm_dialect) String(att) Value(ASM_ATT)
273 mbranch-cost=
274 Target RejectNegative Joined UInteger Var(ix86_branch_cost) IntegerRange(0, 5)
275 Branches are this expensive (arbitrary units).
277 mlarge-data-threshold=
278 Target RejectNegative Joined UInteger Var(ix86_section_threshold) Init(DEFAULT_LARGE_SECTION_THRESHOLD)
279 -mlarge-data-threshold=<number> Data greater than given threshold will go into .ldata section in x86-64 medium model.
281 mcmodel=
282 Target RejectNegative Joined Enum(cmodel) Var(ix86_cmodel) Init(CM_32)
283 Use given x86-64 code model.
285 Enum
286 Name(cmodel) Type(enum cmodel)
287 Known code models (for use with the -mcmodel= option):
289 EnumValue
290 Enum(cmodel) String(small) Value(CM_SMALL)
292 EnumValue
293 Enum(cmodel) String(medium) Value(CM_MEDIUM)
295 EnumValue
296 Enum(cmodel) String(large) Value(CM_LARGE)
298 EnumValue
299 Enum(cmodel) String(32) Value(CM_32)
301 EnumValue
302 Enum(cmodel) String(kernel) Value(CM_KERNEL)
304 maddress-mode=
305 Target RejectNegative Joined Enum(pmode) Var(ix86_pmode) Init(PMODE_SI)
306 Use given address mode.
308 Enum
309 Name(pmode) Type(enum pmode)
310 Known address mode (for use with the -maddress-mode= option):
312 EnumValue
313 Enum(pmode) String(short) Value(PMODE_SI)
315 EnumValue
316 Enum(pmode) String(long) Value(PMODE_DI)
318 mcpu=
319 Target RejectNegative Joined Undocumented Alias(mtune=) Warn(%<-mcpu=%> is deprecated; use %<-mtune=%> or %<-march=%> instead)
321 mfancy-math-387
322 Target RejectNegative Report InverseMask(NO_FANCY_MATH_387, USE_FANCY_MATH_387) Save
323 Generate sin, cos, sqrt for FPU.
325 mforce-drap
326 Target Report Var(ix86_force_drap)
327 Always use Dynamic Realigned Argument Pointer (DRAP) to realign stack.
329 mfp-ret-in-387
330 Target Report Mask(FLOAT_RETURNS) Save
331 Return values of functions in FPU registers.
333 mfpmath=
334 Target RejectNegative Joined Var(ix86_fpmath) Enum(fpmath_unit) Init(FPMATH_387) Save
335 Generate floating point mathematics using given instruction set.
337 Enum
338 Name(fpmath_unit) Type(enum fpmath_unit)
339 Valid arguments to -mfpmath=:
341 EnumValue
342 Enum(fpmath_unit) String(387) Value(FPMATH_387)
344 EnumValue
345 Enum(fpmath_unit) String(sse) Value(FPMATH_SSE)
347 EnumValue
348 Enum(fpmath_unit) String(387,sse) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)})
350 EnumValue
351 Enum(fpmath_unit) String(387+sse) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)})
353 EnumValue
354 Enum(fpmath_unit) String(sse,387) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)})
356 EnumValue
357 Enum(fpmath_unit) String(sse+387) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)})
359 EnumValue
360 Enum(fpmath_unit) String(both) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)})
362 mhard-float
363 Target RejectNegative Mask(80387) Save
364 Use hardware fp.
366 mieee-fp
367 Target Report Mask(IEEE_FP) Save
368 Use IEEE math for fp comparisons.
370 minline-all-stringops
371 Target Report Mask(INLINE_ALL_STRINGOPS) Save
372 Inline all known string operations.
374 minline-stringops-dynamically
375 Target Report Mask(INLINE_STRINGOPS_DYNAMICALLY) Save
376 Inline memset/memcpy string operations, but perform inline version only for small blocks.
378 mintel-syntax
379 Target Undocumented Alias(masm=, intel, att) Warn(%<-mintel-syntax%> and %<-mno-intel-syntax%> are deprecated; use %<-masm=intel%> and %<-masm=att%> instead)
380 ;; Deprecated
382 mms-bitfields
383 Target Report Mask(MS_BITFIELD_LAYOUT) Save
384 Use native (MS) bitfield layout.
386 mno-align-stringops
387 Target RejectNegative Report Mask(NO_ALIGN_STRINGOPS) Undocumented Save
389 mno-fancy-math-387
390 Target RejectNegative Report Mask(NO_FANCY_MATH_387) Undocumented Save
392 mno-push-args
393 Target RejectNegative Report Mask(NO_PUSH_ARGS) Undocumented Save
395 mno-red-zone
396 Target RejectNegative Report Mask(NO_RED_ZONE) Undocumented Save
398 momit-leaf-frame-pointer
399 Target Report Mask(OMIT_LEAF_FRAME_POINTER) Save
400 Omit the frame pointer in leaf functions.
402 mpc32
403 Target RejectNegative Report
404 Set 80387 floating-point precision to 32-bit.
406 mpc64
407 Target RejectNegative Report
408 Set 80387 floating-point precision to 64-bit.
410 mpc80
411 Target RejectNegative Report
412 Set 80387 floating-point precision to 80-bit.
414 mpreferred-stack-boundary=
415 Target RejectNegative Joined UInteger Var(ix86_preferred_stack_boundary_arg)
416 Attempt to keep stack aligned to this power of 2.
418 mincoming-stack-boundary=
419 Target RejectNegative Joined UInteger Var(ix86_incoming_stack_boundary_arg)
420 Assume incoming stack aligned to this power of 2.
422 mpush-args
423 Target Report InverseMask(NO_PUSH_ARGS, PUSH_ARGS) Save
424 Use push instructions to save outgoing arguments.
426 mred-zone
427 Target RejectNegative Report InverseMask(NO_RED_ZONE, RED_ZONE) Save
428 Use red-zone in the x86-64 code.
430 mregparm=
431 Target RejectNegative Joined UInteger Var(ix86_regparm)
432 Number of registers used to pass integer arguments.
434 mrtd
435 Target Report Mask(RTD) Save
436 Alternate calling convention.
438 msoft-float
439 Target InverseMask(80387) Save
440 Do not use hardware fp.
442 msseregparm
443 Target RejectNegative Mask(SSEREGPARM) Save
444 Use SSE register passing conventions for SF and DF mode.
446 mstackrealign
447 Target Report Var(ix86_force_align_arg_pointer)
448 Realign stack in prologue.
450 mstack-arg-probe
451 Target Report Mask(STACK_PROBE) Save
452 Enable stack probing.
454 mmemcpy-strategy=
455 Target RejectNegative Joined Var(ix86_tune_memcpy_strategy)
456 Specify memcpy expansion strategy when expected size is known.
458 mmemset-strategy=
459 Target RejectNegative Joined Var(ix86_tune_memset_strategy)
460 Specify memset expansion strategy when expected size is known.
462 mstringop-strategy=
463 Target RejectNegative Joined Enum(stringop_alg) Var(ix86_stringop_alg) Init(no_stringop)
464 Chose strategy to generate stringop using.
466 Enum
467 Name(stringop_alg) Type(enum stringop_alg)
468 Valid arguments to -mstringop-strategy=:
470 EnumValue
471 Enum(stringop_alg) String(rep_byte) Value(rep_prefix_1_byte)
473 EnumValue
474 Enum(stringop_alg) String(libcall) Value(libcall)
476 EnumValue
477 Enum(stringop_alg) String(rep_4byte) Value(rep_prefix_4_byte)
479 EnumValue
480 Enum(stringop_alg) String(rep_8byte) Value(rep_prefix_8_byte)
482 EnumValue
483 Enum(stringop_alg) String(byte_loop) Value(loop_1_byte)
485 EnumValue
486 Enum(stringop_alg) String(loop) Value(loop)
488 EnumValue
489 Enum(stringop_alg) String(unrolled_loop) Value(unrolled_loop)
491 EnumValue
492 Enum(stringop_alg) String(vector_loop) Value(vector_loop)
494 mtls-dialect=
495 Target RejectNegative Joined Var(ix86_tls_dialect) Enum(tls_dialect) Init(TLS_DIALECT_GNU)
496 Use given thread-local storage dialect.
498 Enum
499 Name(tls_dialect) Type(enum tls_dialect)
500 Known TLS dialects (for use with the -mtls-dialect= option):
502 EnumValue
503 Enum(tls_dialect) String(gnu) Value(TLS_DIALECT_GNU)
505 EnumValue
506 Enum(tls_dialect) String(gnu2) Value(TLS_DIALECT_GNU2)
508 mtls-direct-seg-refs
509 Target Report Mask(TLS_DIRECT_SEG_REFS)
510 Use direct references against %gs when accessing tls data.
512 mtune=
513 Target RejectNegative Joined Var(ix86_tune_string)
514 Schedule code for given CPU.
516 mtune-ctrl=
517 Target RejectNegative Joined Var(ix86_tune_ctrl_string)
518 Fine grain control of tune features.
520 mno-default
521 Target RejectNegative Var(ix86_tune_no_default)
522 Clear all tune features.
524 mdump-tune-features
525 Target RejectNegative Var(ix86_dump_tunes)
527 miamcu
528 Target Report Mask(IAMCU)
529 Generate code that conforms to Intel MCU psABI.
531 mabi=
532 Target RejectNegative Joined Var(ix86_abi) Enum(calling_abi) Init(SYSV_ABI)
533 Generate code that conforms to the given ABI.
535 Enum
536 Name(calling_abi) Type(enum calling_abi)
537 Known ABIs (for use with the -mabi= option):
539 EnumValue
540 Enum(calling_abi) String(sysv) Value(SYSV_ABI)
542 EnumValue
543 Enum(calling_abi) String(ms) Value(MS_ABI)
545 mcall-ms2sysv-xlogues
546 Target Report Mask(CALL_MS2SYSV_XLOGUES) Save
547 Use libgcc stubs to save and restore registers clobbered by 64-bit Microsoft to System V ABI calls.
549 mveclibabi=
550 Target RejectNegative Joined Var(ix86_veclibabi_type) Enum(ix86_veclibabi) Init(ix86_veclibabi_type_none)
551 Vector library ABI to use.
553 Enum
554 Name(ix86_veclibabi) Type(enum ix86_veclibabi)
555 Known vectorization library ABIs (for use with the -mveclibabi= option):
557 EnumValue
558 Enum(ix86_veclibabi) String(svml) Value(ix86_veclibabi_type_svml)
560 EnumValue
561 Enum(ix86_veclibabi) String(acml) Value(ix86_veclibabi_type_acml)
563 mvect8-ret-in-mem
564 Target Report Mask(VECT8_RETURNS) Save
565 Return 8-byte vectors in memory.
567 mrecip
568 Target Report Mask(RECIP) Save
569 Generate reciprocals instead of divss and sqrtss.
571 mrecip=
572 Target Report RejectNegative Joined Var(ix86_recip_name)
573 Control generation of reciprocal estimates.
575 mcld
576 Target Report Mask(CLD) Save
577 Generate cld instruction in the function prologue.
579 mvzeroupper
580 Target Report Mask(VZEROUPPER) Save
581 Generate vzeroupper instruction before a transfer of control flow out of
582 the function.
584 mstv
585 Target Report Mask(STV) Save
586 Disable Scalar to Vector optimization pass transforming 64-bit integer
587 computations into a vector ones.
589 mdispatch-scheduler
590 Target RejectNegative Var(flag_dispatch_scheduler)
591 Do dispatch scheduling if processor is bdver1, bdver2, bdver3, bdver4
592 or znver1 and Haifa scheduling is selected.
594 mprefer-avx128
595 Target Alias(mprefer-vector-width=, 128, 256)
596 Use 128-bit AVX instructions instead of 256-bit AVX instructions in the auto-vectorizer.
598 mprefer-vector-width=
599 Target Report RejectNegative Joined Var(prefer_vector_width_type) Enum(prefer_vector_width) Init(PVW_NONE)
600 Use given register vector width instructions instead of maximum register width in the auto-vectorizer.
602 Enum
603 Name(prefer_vector_width) Type(enum prefer_vector_width)
604 Known preferred register vector length (to use with the -mprefer-vector-width= option)
606 EnumValue
607 Enum(prefer_vector_width) String(none) Value(PVW_NONE)
609 EnumValue
610 Enum(prefer_vector_width) String(128) Value(PVW_AVX128)
612 EnumValue
613 Enum(prefer_vector_width) String(256) Value(PVW_AVX256)
615 EnumValue
616 Enum(prefer_vector_width) String(512) Value(PVW_AVX512)
618 ;; ISA support
621 Target RejectNegative Negative(m64) Report InverseMask(ISA_64BIT) Var(ix86_isa_flags) Save
622 Generate 32bit i386 code.
625 Target RejectNegative Negative(mx32) Report Mask(ABI_64) Var(ix86_isa_flags) Save
626 Generate 64bit x86-64 code.
628 mx32
629 Target RejectNegative Negative(m16) Report Mask(ABI_X32) Var(ix86_isa_flags) Save
630 Generate 32bit x86-64 code.
633 Target RejectNegative Negative(m32) Report Mask(CODE16) InverseMask(ISA_64BIT) Var(ix86_isa_flags) Save
634 Generate 16bit i386 code.
636 mmmx
637 Target Report Mask(ISA_MMX) Var(ix86_isa_flags) Save
638 Support MMX built-in functions.
640 m3dnow
641 Target Report Mask(ISA_3DNOW) Var(ix86_isa_flags) Save
642 Support 3DNow! built-in functions.
644 m3dnowa
645 Target Report Mask(ISA_3DNOW_A) Var(ix86_isa_flags) Save
646 Support Athlon 3Dnow! built-in functions.
648 msse
649 Target Report Mask(ISA_SSE) Var(ix86_isa_flags) Save
650 Support MMX and SSE built-in functions and code generation.
652 msse2
653 Target Report Mask(ISA_SSE2) Var(ix86_isa_flags) Save
654 Support MMX, SSE and SSE2 built-in functions and code generation.
656 msse3
657 Target Report Mask(ISA_SSE3) Var(ix86_isa_flags) Save
658 Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation.
660 mssse3
661 Target Report Mask(ISA_SSSE3) Var(ix86_isa_flags) Save
662 Support MMX, SSE, SSE2, SSE3 and SSSE3 built-in functions and code generation.
664 msse4.1
665 Target Report Mask(ISA_SSE4_1) Var(ix86_isa_flags) Save
666 Support MMX, SSE, SSE2, SSE3, SSSE3 and SSE4.1 built-in functions and code generation.
668 msse4.2
669 Target Report Mask(ISA_SSE4_2) Var(ix86_isa_flags) Save
670 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and code generation.
672 msse4
673 Target RejectNegative Report Mask(ISA_SSE4_2) Var(ix86_isa_flags) Save
674 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and code generation.
676 mno-sse4
677 Target RejectNegative Report InverseMask(ISA_SSE4_1) Var(ix86_isa_flags) Save
678 Do not support SSE4.1 and SSE4.2 built-in functions and code generation.
680 msse5
681 Target Undocumented Alias(mavx) Warn(%<-msse5%> was removed)
682 ;; Deprecated
684 mavx
685 Target Report Mask(ISA_AVX) Var(ix86_isa_flags) Save
686 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 and AVX built-in functions and code generation.
688 mavx2
689 Target Report Mask(ISA_AVX2) Var(ix86_isa_flags) Save
690 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and AVX2 built-in functions and code generation.
692 mavx512f
693 Target Report Mask(ISA_AVX512F) Var(ix86_isa_flags) Save
694 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F built-in functions and code generation.
696 mavx512pf
697 Target Report Mask(ISA_AVX512PF) Var(ix86_isa_flags) Save
698 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512PF built-in functions and code generation.
700 mavx512er
701 Target Report Mask(ISA_AVX512ER) Var(ix86_isa_flags) Save
702 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512ER built-in functions and code generation.
704 mavx512cd
705 Target Report Mask(ISA_AVX512CD) Var(ix86_isa_flags) Save
706 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512CD built-in functions and code generation.
708 mavx512dq
709 Target Report Mask(ISA_AVX512DQ) Var(ix86_isa_flags) Save
710 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512DQ built-in functions and code generation.
712 mavx512bw
713 Target Report Mask(ISA_AVX512BW) Var(ix86_isa_flags) Save
714 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512BW built-in functions and code generation.
716 mavx512vl
717 Target Report Mask(ISA_AVX512VL) Var(ix86_isa_flags) Save
718 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512VL built-in functions and code generation.
720 mavx512ifma
721 Target Report Mask(ISA_AVX512IFMA) Var(ix86_isa_flags) Save
722 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512IFMA built-in functions and code generation.
724 mavx512vbmi
725 Target Report Mask(ISA_AVX512VBMI) Var(ix86_isa_flags) Save
726 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512VBMI built-in functions and code generation.
728 mavx5124fmaps
729 Target Report Mask(ISA_AVX5124FMAPS) Var(ix86_isa_flags2) Save
730 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX5124FMAPS built-in functions and code generation.
732 mavx5124vnniw
733 Target Report Mask(ISA_AVX5124VNNIW) Var(ix86_isa_flags2) Save
734 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX5124VNNIW built-in functions and code generation.
736 mavx512vpopcntdq
737 Target Report Mask(ISA_AVX512VPOPCNTDQ) Var(ix86_isa_flags) Save
738 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512VPOPCNTDQ built-in functions and code generation.
740 mavx512vbmi2
741 Target Report Mask(ISA_AVX512VBMI2) Var(ix86_isa_flags) Save
742 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512VBMI2 built-in functions and code generation.
744 mavx512vnni
745 Target Report Mask(ISA_AVX512VNNI) Var(ix86_isa_flags) Save
746 Support AVX512VNNI built-in functions and code generation.
748 mavx512bitalg
749 Target Report Mask(ISA_AVX512BITALG) Var(ix86_isa_flags) Save
750 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512BITALG built-in functions and code generation.
752 mfma
753 Target Report Mask(ISA_FMA) Var(ix86_isa_flags) Save
754 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and FMA built-in functions and code generation.
756 msse4a
757 Target Report Mask(ISA_SSE4A) Var(ix86_isa_flags) Save
758 Support MMX, SSE, SSE2, SSE3 and SSE4A built-in functions and code generation.
760 mfma4
761 Target Report Mask(ISA_FMA4) Var(ix86_isa_flags) Save
762 Support FMA4 built-in functions and code generation.
764 mxop
765 Target Report Mask(ISA_XOP) Var(ix86_isa_flags) Save
766 Support XOP built-in functions and code generation.
768 mlwp
769 Target Report Mask(ISA_LWP) Var(ix86_isa_flags) Save
770 Support LWP built-in functions and code generation.
772 mabm
773 Target Report Mask(ISA_ABM) Var(ix86_isa_flags) Save
774 Support code generation of Advanced Bit Manipulation (ABM) instructions.
776 mpopcnt
777 Target Report Mask(ISA_POPCNT) Var(ix86_isa_flags) Save
778 Support code generation of popcnt instruction.
780 mpconfig
781 Target Report Mask(ISA_PCONFIG) Var(ix86_isa_flags2) Save
782 Support PCONFIG built-in functions and code generation.
784 mwbnoinvd
785 Target Report Mask(ISA_WBNOINVD) Var(ix86_isa_flags2) Save
786 Support WBNOINVD built-in functions and code generation.
788 msgx
789 Target Report Mask(ISA_SGX) Var(ix86_isa_flags2) Save
790 Support SGX built-in functions and code generation.
792 mrdpid
793 Target Report Mask(ISA_RDPID) Var(ix86_isa_flags2) Save
794 Support RDPID built-in functions and code generation.
796 mgfni
797 Target Report Mask(ISA_GFNI) Var(ix86_isa_flags) Save
798 Support GFNI built-in functions and code generation.
800 mvaes
801 Target Report Mask(ISA_VAES) Var(ix86_isa_flags2) Save
802 Support VAES built-in functions and code generation.
804 mvpclmulqdq
805 Target Report Mask(ISA_VPCLMULQDQ) Var(ix86_isa_flags) Save
806 Support VPCLMULQDQ built-in functions and code generation.
808 mbmi
809 Target Report Mask(ISA_BMI) Var(ix86_isa_flags) Save
810 Support BMI built-in functions and code generation.
812 mbmi2
813 Target Report Mask(ISA_BMI2) Var(ix86_isa_flags) Save
814 Support BMI2 built-in functions and code generation.
816 mlzcnt
817 Target Report Mask(ISA_LZCNT) Var(ix86_isa_flags) Save
818 Support LZCNT built-in function and code generation.
820 mhle
821 Target Report Mask(ISA_HLE) Var(ix86_isa_flags2) Save
822 Support Hardware Lock Elision prefixes.
824 mrdseed
825 Target Report Mask(ISA_RDSEED) Var(ix86_isa_flags) Save
826 Support RDSEED instruction.
828 mprfchw
829 Target Report Mask(ISA_PRFCHW) Var(ix86_isa_flags) Save
830 Support PREFETCHW instruction.
832 madx
833 Target Report Mask(ISA_ADX) Var(ix86_isa_flags) Save
834 Support flag-preserving add-carry instructions.
836 mclflushopt
837 Target Report Mask(ISA_CLFLUSHOPT) Var(ix86_isa_flags) Save
838 Support CLFLUSHOPT instructions.
840 mclwb
841 Target Report Mask(ISA_CLWB) Var(ix86_isa_flags) Save
842 Support CLWB instruction.
844 mpcommit
845 Target Undocumented Warn(%<-mpcommit%> was deprecated)
846 ;; Deprecated
848 mfxsr
849 Target Report Mask(ISA_FXSR) Var(ix86_isa_flags) Save
850 Support FXSAVE and FXRSTOR instructions.
852 mxsave
853 Target Report Mask(ISA_XSAVE) Var(ix86_isa_flags) Save
854 Support XSAVE and XRSTOR instructions.
856 mxsaveopt
857 Target Report Mask(ISA_XSAVEOPT) Var(ix86_isa_flags) Save
858 Support XSAVEOPT instruction.
860 mxsavec
861 Target Report Mask(ISA_XSAVEC) Var(ix86_isa_flags) Save
862 Support XSAVEC instructions.
864 mxsaves
865 Target Report Mask(ISA_XSAVES) Var(ix86_isa_flags) Save
866 Support XSAVES and XRSTORS instructions.
868 mtbm
869 Target Report Mask(ISA_TBM) Var(ix86_isa_flags) Save
870 Support TBM built-in functions and code generation.
872 mcx16
873 Target Report Mask(ISA_CX16) Var(ix86_isa_flags2) Save
874 Support code generation of cmpxchg16b instruction.
876 msahf
877 Target Report Mask(ISA_SAHF) Var(ix86_isa_flags) Save
878 Support code generation of sahf instruction in 64bit x86-64 code.
880 mmovbe
881 Target Report Mask(ISA_MOVBE) Var(ix86_isa_flags2) Save
882 Support code generation of movbe instruction.
884 mcrc32
885 Target Report Mask(ISA_CRC32) Var(ix86_isa_flags) Save
886 Support code generation of crc32 instruction.
888 maes
889 Target Report Mask(ISA_AES) Var(ix86_isa_flags) Save
890 Support AES built-in functions and code generation.
892 msha
893 Target Report Mask(ISA_SHA) Var(ix86_isa_flags) Save
894 Support SHA1 and SHA256 built-in functions and code generation.
896 mpclmul
897 Target Report Mask(ISA_PCLMUL) Var(ix86_isa_flags) Save
898 Support PCLMUL built-in functions and code generation.
900 msse2avx
901 Target Report Var(ix86_sse2avx)
902 Encode SSE instructions with VEX prefix.
904 mfsgsbase
905 Target Report Mask(ISA_FSGSBASE) Var(ix86_isa_flags) Save
906 Support FSGSBASE built-in functions and code generation.
908 mrdrnd
909 Target Report Mask(ISA_RDRND) Var(ix86_isa_flags) Save
910 Support RDRND built-in functions and code generation.
912 mf16c
913 Target Report Mask(ISA_F16C) Var(ix86_isa_flags) Save
914 Support F16C built-in functions and code generation.
916 mprefetchwt1
917 Target Report Mask(ISA_PREFETCHWT1) Var(ix86_isa_flags) Save
918 Support PREFETCHWT1 built-in functions and code generation.
920 mfentry
921 Target Report Var(flag_fentry)
922 Emit profiling counter call at function entry before prologue.
924 mrecord-mcount
925 Target Report Var(flag_record_mcount)
926 Generate __mcount_loc section with all mcount or __fentry__ calls.
928 mnop-mcount
929 Target Report Var(flag_nop_mcount)
930 Generate mcount/__fentry__ calls as nops. To activate they need to be
931 patched in.
933 mskip-rax-setup
934 Target Report Var(flag_skip_rax_setup)
935 Skip setting up RAX register when passing variable arguments.
937 m8bit-idiv
938 Target Report Mask(USE_8BIT_IDIV) Save
939 Expand 32bit/64bit integer divide into 8bit unsigned integer divide with run-time check.
941 mavx256-split-unaligned-load
942 Target Report Mask(AVX256_SPLIT_UNALIGNED_LOAD) Save
943 Split 32-byte AVX unaligned load.
945 mavx256-split-unaligned-store
946 Target Report Mask(AVX256_SPLIT_UNALIGNED_STORE) Save
947 Split 32-byte AVX unaligned store.
949 mrtm
950 Target Report Mask(ISA_RTM) Var(ix86_isa_flags) Save
951 Support RTM built-in functions and code generation.
953 mmpx
954 Target Report Mask(ISA_MPX) Var(ix86_isa_flags2) Save
955 Support MPX code generation.
957 mmwaitx
958 Target Report Mask(ISA_MWAITX) Var(ix86_isa_flags2) Save
959 Support MWAITX and MONITORX built-in functions and code generation.
961 mclzero
962 Target Report Mask(ISA_CLZERO) Var(ix86_isa_flags2) Save
963 Support CLZERO built-in functions and code generation.
965 mpku
966 Target Report Mask(ISA_PKU) Var(ix86_isa_flags) Save
967 Support PKU built-in functions and code generation.
969 mstack-protector-guard=
970 Target RejectNegative Joined Enum(stack_protector_guard) Var(ix86_stack_protector_guard) Init(SSP_TLS)
971 Use given stack-protector guard.
973 Enum
974 Name(stack_protector_guard) Type(enum stack_protector_guard)
975 Known stack protector guard (for use with the -mstack-protector-guard= option):
977 EnumValue
978 Enum(stack_protector_guard) String(tls) Value(SSP_TLS)
980 EnumValue
981 Enum(stack_protector_guard) String(global) Value(SSP_GLOBAL)
983 mstack-protector-guard-reg=
984 Target RejectNegative Joined Var(ix86_stack_protector_guard_reg_str)
985 Use the given base register for addressing the stack-protector guard.
987 TargetVariable
988 addr_space_t ix86_stack_protector_guard_reg = ADDR_SPACE_GENERIC
990 mstack-protector-guard-offset=
991 Target RejectNegative Joined Integer Var(ix86_stack_protector_guard_offset_str)
992 Use the given offset for addressing the stack-protector guard.
994 TargetVariable
995 HOST_WIDE_INT ix86_stack_protector_guard_offset = 0
997 mstack-protector-guard-symbol=
998 Target RejectNegative Joined Integer Var(ix86_stack_protector_guard_symbol_str)
999 Use the given symbol for addressing the stack-protector guard.
1001 mmitigate-rop
1002 Target Var(flag_mitigate_rop)
1003 Attempt to avoid generating instruction sequences containing ret bytes.
1005 mgeneral-regs-only
1006 Target Report RejectNegative Mask(GENERAL_REGS_ONLY) Var(ix86_target_flags) Save
1007 Generate code which uses only the general registers.
1009 mcet
1010 Target Report Var(flag_cet) Init(0)
1011 Support Control-flow Enforcement Technology (CET) built-in functions
1012 and code generation.
1014 mibt
1015 Target Report Mask(ISA_IBT) Var(ix86_isa_flags2) Save
1016 Specifically enables an indirect branch tracking feature from Control-flow
1017 Enforcement Technology (CET).
1019 mshstk
1020 Target Report Mask(ISA_SHSTK) Var(ix86_isa_flags) Save
1021 Specifically enables an shadow stack support feature from Control-flow
1022 Enforcement Technology (CET).
1024 mcet-switch
1025 Target Report Undocumented Var(flag_cet_switch) Init(0)
1026 Turn on CET instrumentation for switch statements that use a jump table and
1027 an indirect jump.
1029 mforce-indirect-call
1030 Target Report Var(flag_force_indirect_call) Init(0)
1031 Make all function calls indirect.
1033 mindirect-branch=
1034 Target Report RejectNegative Joined Enum(indirect_branch) Var(ix86_indirect_branch) Init(indirect_branch_keep)
1035 Convert indirect call and jump to call and return thunks.
1037 mfunction-return=
1038 Target Report RejectNegative Joined Enum(indirect_branch) Var(ix86_function_return) Init(indirect_branch_keep)
1039 Convert function return to call and return thunk.
1041 Enum
1042 Name(indirect_branch) Type(enum indirect_branch)
1043 Known indirect branch choices (for use with the -mindirect-branch=/-mfunction-return= options):
1045 EnumValue
1046 Enum(indirect_branch) String(keep) Value(indirect_branch_keep)
1048 EnumValue
1049 Enum(indirect_branch) String(thunk) Value(indirect_branch_thunk)
1051 EnumValue
1052 Enum(indirect_branch) String(thunk-inline) Value(indirect_branch_thunk_inline)
1054 EnumValue
1055 Enum(indirect_branch) String(thunk-extern) Value(indirect_branch_thunk_extern)
1057 mindirect-branch-register
1058 Target Report Var(ix86_indirect_branch_register) Init(0)
1059 Force indirect call and jump via register.