Allow target to override gnu-user.h crti and crtn
[official-gcc.git] / gcc / config / i386 / i386.opt
blob1705815a2ec586a86656140ac6662f81f96e4247
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 mptwrite
789 Target Report Mask(ISA_PTWRITE) Var(ix86_isa_flags2) Save
790 Support PTWRITE built-in functions and code generation.
792 msgx
793 Target Report Mask(ISA_SGX) Var(ix86_isa_flags2) Save
794 Support SGX built-in functions and code generation.
796 mrdpid
797 Target Report Mask(ISA_RDPID) Var(ix86_isa_flags2) Save
798 Support RDPID built-in functions and code generation.
800 mgfni
801 Target Report Mask(ISA_GFNI) Var(ix86_isa_flags) Save
802 Support GFNI built-in functions and code generation.
804 mvaes
805 Target Report Mask(ISA_VAES) Var(ix86_isa_flags2) Save
806 Support VAES built-in functions and code generation.
808 mvpclmulqdq
809 Target Report Mask(ISA_VPCLMULQDQ) Var(ix86_isa_flags) Save
810 Support VPCLMULQDQ built-in functions and code generation.
812 mbmi
813 Target Report Mask(ISA_BMI) Var(ix86_isa_flags) Save
814 Support BMI built-in functions and code generation.
816 mbmi2
817 Target Report Mask(ISA_BMI2) Var(ix86_isa_flags) Save
818 Support BMI2 built-in functions and code generation.
820 mlzcnt
821 Target Report Mask(ISA_LZCNT) Var(ix86_isa_flags) Save
822 Support LZCNT built-in function and code generation.
824 mhle
825 Target Report Mask(ISA_HLE) Var(ix86_isa_flags2) Save
826 Support Hardware Lock Elision prefixes.
828 mrdseed
829 Target Report Mask(ISA_RDSEED) Var(ix86_isa_flags) Save
830 Support RDSEED instruction.
832 mprfchw
833 Target Report Mask(ISA_PRFCHW) Var(ix86_isa_flags) Save
834 Support PREFETCHW instruction.
836 madx
837 Target Report Mask(ISA_ADX) Var(ix86_isa_flags) Save
838 Support flag-preserving add-carry instructions.
840 mclflushopt
841 Target Report Mask(ISA_CLFLUSHOPT) Var(ix86_isa_flags) Save
842 Support CLFLUSHOPT instructions.
844 mclwb
845 Target Report Mask(ISA_CLWB) Var(ix86_isa_flags) Save
846 Support CLWB instruction.
848 mpcommit
849 Target Deprecated
850 ;; Deprecated
852 mfxsr
853 Target Report Mask(ISA_FXSR) Var(ix86_isa_flags) Save
854 Support FXSAVE and FXRSTOR instructions.
856 mxsave
857 Target Report Mask(ISA_XSAVE) Var(ix86_isa_flags) Save
858 Support XSAVE and XRSTOR instructions.
860 mxsaveopt
861 Target Report Mask(ISA_XSAVEOPT) Var(ix86_isa_flags) Save
862 Support XSAVEOPT instruction.
864 mxsavec
865 Target Report Mask(ISA_XSAVEC) Var(ix86_isa_flags) Save
866 Support XSAVEC instructions.
868 mxsaves
869 Target Report Mask(ISA_XSAVES) Var(ix86_isa_flags) Save
870 Support XSAVES and XRSTORS instructions.
872 mtbm
873 Target Report Mask(ISA_TBM) Var(ix86_isa_flags) Save
874 Support TBM built-in functions and code generation.
876 mcx16
877 Target Report Mask(ISA_CX16) Var(ix86_isa_flags2) Save
878 Support code generation of cmpxchg16b instruction.
880 msahf
881 Target Report Mask(ISA_SAHF) Var(ix86_isa_flags) Save
882 Support code generation of sahf instruction in 64bit x86-64 code.
884 mmovbe
885 Target Report Mask(ISA_MOVBE) Var(ix86_isa_flags2) Save
886 Support code generation of movbe instruction.
888 mcrc32
889 Target Report Mask(ISA_CRC32) Var(ix86_isa_flags) Save
890 Support code generation of crc32 instruction.
892 maes
893 Target Report Mask(ISA_AES) Var(ix86_isa_flags) Save
894 Support AES built-in functions and code generation.
896 msha
897 Target Report Mask(ISA_SHA) Var(ix86_isa_flags) Save
898 Support SHA1 and SHA256 built-in functions and code generation.
900 mpclmul
901 Target Report Mask(ISA_PCLMUL) Var(ix86_isa_flags) Save
902 Support PCLMUL built-in functions and code generation.
904 msse2avx
905 Target Report Var(ix86_sse2avx)
906 Encode SSE instructions with VEX prefix.
908 mfsgsbase
909 Target Report Mask(ISA_FSGSBASE) Var(ix86_isa_flags) Save
910 Support FSGSBASE built-in functions and code generation.
912 mrdrnd
913 Target Report Mask(ISA_RDRND) Var(ix86_isa_flags) Save
914 Support RDRND built-in functions and code generation.
916 mf16c
917 Target Report Mask(ISA_F16C) Var(ix86_isa_flags) Save
918 Support F16C built-in functions and code generation.
920 mprefetchwt1
921 Target Report Mask(ISA_PREFETCHWT1) Var(ix86_isa_flags) Save
922 Support PREFETCHWT1 built-in functions and code generation.
924 mfentry
925 Target Report Var(flag_fentry)
926 Emit profiling counter call at function entry before prologue.
928 mrecord-mcount
929 Target Report Var(flag_record_mcount)
930 Generate __mcount_loc section with all mcount or __fentry__ calls.
932 mnop-mcount
933 Target Report Var(flag_nop_mcount)
934 Generate mcount/__fentry__ calls as nops. To activate they need to be
935 patched in.
937 mskip-rax-setup
938 Target Report Var(flag_skip_rax_setup)
939 Skip setting up RAX register when passing variable arguments.
941 m8bit-idiv
942 Target Report Mask(USE_8BIT_IDIV) Save
943 Expand 32bit/64bit integer divide into 8bit unsigned integer divide with run-time check.
945 mavx256-split-unaligned-load
946 Target Report Mask(AVX256_SPLIT_UNALIGNED_LOAD) Save
947 Split 32-byte AVX unaligned load.
949 mavx256-split-unaligned-store
950 Target Report Mask(AVX256_SPLIT_UNALIGNED_STORE) Save
951 Split 32-byte AVX unaligned store.
953 mrtm
954 Target Report Mask(ISA_RTM) Var(ix86_isa_flags) Save
955 Support RTM built-in functions and code generation.
957 mmpx
958 Target Deprecated
959 Deprecated in GCC 9.  This switch has no effect.
961 mmwaitx
962 Target Report Mask(ISA_MWAITX) Var(ix86_isa_flags2) Save
963 Support MWAITX and MONITORX built-in functions and code generation.
965 mclzero
966 Target Report Mask(ISA_CLZERO) Var(ix86_isa_flags2) Save
967 Support CLZERO built-in functions and code generation.
969 mpku
970 Target Report Mask(ISA_PKU) Var(ix86_isa_flags) Save
971 Support PKU built-in functions and code generation.
973 mstack-protector-guard=
974 Target RejectNegative Joined Enum(stack_protector_guard) Var(ix86_stack_protector_guard) Init(SSP_TLS)
975 Use given stack-protector guard.
977 Enum
978 Name(stack_protector_guard) Type(enum stack_protector_guard)
979 Known stack protector guard (for use with the -mstack-protector-guard= option):
981 EnumValue
982 Enum(stack_protector_guard) String(tls) Value(SSP_TLS)
984 EnumValue
985 Enum(stack_protector_guard) String(global) Value(SSP_GLOBAL)
987 mstack-protector-guard-reg=
988 Target RejectNegative Joined Var(ix86_stack_protector_guard_reg_str)
989 Use the given base register for addressing the stack-protector guard.
991 TargetVariable
992 addr_space_t ix86_stack_protector_guard_reg = ADDR_SPACE_GENERIC
994 mstack-protector-guard-offset=
995 Target RejectNegative Joined Integer Var(ix86_stack_protector_guard_offset_str)
996 Use the given offset for addressing the stack-protector guard.
998 TargetVariable
999 HOST_WIDE_INT ix86_stack_protector_guard_offset = 0
1001 mstack-protector-guard-symbol=
1002 Target RejectNegative Joined Integer Var(ix86_stack_protector_guard_symbol_str)
1003 Use the given symbol for addressing the stack-protector guard.
1005 mmitigate-rop
1006 Target Deprecated
1007 ;; Deprecated
1009 mgeneral-regs-only
1010 Target Report RejectNegative Mask(GENERAL_REGS_ONLY) Var(ix86_target_flags) Save
1011 Generate code which uses only the general registers.
1013 mshstk
1014 Target Report Mask(ISA_SHSTK) Var(ix86_isa_flags) Save
1015 Enable shadow stack built-in functions from Control-flow Enforcement
1016 Technology (CET).
1018 mcet-switch
1019 Target Report Undocumented Var(flag_cet_switch) Init(0)
1020 Turn on CET instrumentation for switch statements that use a jump table and
1021 an indirect jump.
1023 mforce-indirect-call
1024 Target Report Var(flag_force_indirect_call) Init(0)
1025 Make all function calls indirect.
1027 mindirect-branch=
1028 Target Report RejectNegative Joined Enum(indirect_branch) Var(ix86_indirect_branch) Init(indirect_branch_keep)
1029 Convert indirect call and jump to call and return thunks.
1031 mfunction-return=
1032 Target Report RejectNegative Joined Enum(indirect_branch) Var(ix86_function_return) Init(indirect_branch_keep)
1033 Convert function return to call and return thunk.
1035 Enum
1036 Name(indirect_branch) Type(enum indirect_branch)
1037 Known indirect branch choices (for use with the -mindirect-branch=/-mfunction-return= options):
1039 EnumValue
1040 Enum(indirect_branch) String(keep) Value(indirect_branch_keep)
1042 EnumValue
1043 Enum(indirect_branch) String(thunk) Value(indirect_branch_thunk)
1045 EnumValue
1046 Enum(indirect_branch) String(thunk-inline) Value(indirect_branch_thunk_inline)
1048 EnumValue
1049 Enum(indirect_branch) String(thunk-extern) Value(indirect_branch_thunk_extern)
1051 mindirect-branch-register
1052 Target Report Var(ix86_indirect_branch_register) Init(0)
1053 Force indirect call and jump via register.
1055 mmovdiri
1056 Target Report Mask(ISA_MOVDIRI) Var(ix86_isa_flags) Save
1057 Support MOVDIRI built-in functions and code generation.
1059 mmovdir64b
1060 Target Report Mask(ISA_MOVDIR64B) Var(ix86_isa_flags2) Save
1061 Support MOVDIR64B built-in functions and code generation.
1063 mwaitpkg
1064 Target Report Mask(ISA_WAITPKG) Var(ix86_isa_flags2) Save
1065 Support WAITPKG built-in functions and code generation.
1067 mcldemote
1068 Target Report Mask(ISA_CLDEMOTE) Var(ix86_isa_flags2) Save
1069 Support CLDEMOTE built-in functions and code generation.