1 ; Options for the IA-32 and AMD64 ports of the compiler.
3 ; Copyright (C) 2005-2020 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
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
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/>.
22 config/i386/i386-opts.h
24 ; Bit flags that specify the ISA we are compiling for.
26 HOST_WIDE_INT ix86_isa_flags = TARGET_64BIT_DEFAULT | TARGET_SUBTARGET_ISA_DEFAULT
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.
34 HOST_WIDE_INT ix86_isa_flags_explicit
37 HOST_WIDE_INT ix86_isa_flags2_explicit
39 ; Additional target flags
44 int recip_mask = RECIP_MASK_DEFAULT
47 int recip_mask_explicit
50 int x_recip_mask_explicit
52 ;; Definitions to add to the cl_target_option structure
61 ;; -march= processor-string
63 const char *x_ix86_arch_string
65 ;; -mtune= processor-string
67 const char *x_ix86_tune_string
71 unsigned char schedule
73 ;; True if processor has SSE prefetch instruction.
75 unsigned char prefetch_sse
79 unsigned char branch_cost
81 ;; which flags were passed by the user
83 HOST_WIDE_INT x_ix86_isa_flags2_explicit
85 ;; which flags were passed by the user
87 HOST_WIDE_INT x_ix86_isa_flags_explicit
89 ;; whether -mtune was not specified
91 unsigned char tune_defaulted
93 ;; whether -march was specified
95 unsigned char arch_specified
99 enum cmodel x_ix86_cmodel
103 enum calling_abi x_ix86_abi
107 enum asm_dialect x_ix86_asm_dialect
111 int x_ix86_branch_cost
113 ;; -mdump-tune-features=
115 int x_ix86_dump_tunes
119 int x_ix86_force_align_arg_pointer
123 int x_ix86_force_drap
125 ;; -mincoming-stack-boundary=
127 int x_ix86_incoming_stack_boundary_arg
131 enum pmode x_ix86_pmode
133 ;; -mpreferred-stack-boundary=
135 int x_ix86_preferred_stack_boundary_arg
139 const char *x_ix86_recip_name
145 ;; -mlarge-data-threshold=
147 int x_ix86_section_threshold
153 ;; -mstack-protector-guard=
155 enum stack_protector_guard x_ix86_stack_protector_guard
157 ;; -mstringop-strategy=
159 enum stringop_alg x_ix86_stringop_alg
163 enum tls_dialect x_ix86_tls_dialect
167 const char *x_ix86_tune_ctrl_string
169 ;; -mmemcpy-strategy=
171 const char *x_ix86_tune_memcpy_strategy
173 ;; -mmemset-strategy=
175 const char *x_ix86_tune_memset_strategy
179 int x_ix86_tune_no_default
183 enum ix86_veclibabi x_ix86_veclibabi_type
187 Target RejectNegative Report Mask(128BIT_LONG_DOUBLE) Save
188 sizeof(long double) is 16.
191 Target Report Mask(80387) Save
195 Target RejectNegative Report InverseMask(128BIT_LONG_DOUBLE) Save
196 sizeof(long double) is 12.
199 Target Report RejectNegative Negative(mlong-double-64) InverseMask(LONG_DOUBLE_64) Save
200 Use 80-bit long double.
203 Target Report RejectNegative Negative(mlong-double-128) Mask(LONG_DOUBLE_64) InverseMask(LONG_DOUBLE_128) Save
204 Use 64-bit long double.
207 Target Report RejectNegative Negative(mlong-double-80) Mask(LONG_DOUBLE_128) InverseMask(LONG_DOUBLE_64) Save
208 Use 128-bit long double.
210 maccumulate-outgoing-args
211 Target Report Mask(ACCUMULATE_OUTGOING_ARGS) Save
212 Reserve space for outgoing arguments in the function prologue.
215 Target Report Mask(ALIGN_DOUBLE) Save
216 Align some doubles on dword boundary.
219 Target RejectNegative Joined UInteger
220 Function starts are aligned to this power of 2.
223 Target RejectNegative Joined UInteger
224 Jump targets are aligned to this power of 2.
227 Target RejectNegative Joined UInteger
228 Loop code aligned to this power of 2.
231 Target RejectNegative Report InverseMask(NO_ALIGN_STRINGOPS, ALIGN_STRINGOPS) Save
232 Align destination of the string operations.
235 Target RejectNegative Joined Var(ix86_align_data_type) Enum(ix86_align_data) Init(ix86_align_data_type_compat)
236 Use the given data alignment.
239 Name(ix86_align_data) Type(enum ix86_align_data)
240 Known data alignment choices (for use with the -malign-data= option):
243 Enum(ix86_align_data) String(compat) Value(ix86_align_data_type_compat)
246 Enum(ix86_align_data) String(abi) Value(ix86_align_data_type_abi)
249 Enum(ix86_align_data) String(cacheline) Value(ix86_align_data_type_cacheline)
252 Target RejectNegative Negative(march=) Joined Var(ix86_arch_string)
253 Generate code for given CPU.
256 Target RejectNegative Joined Enum(asm_dialect) Var(ix86_asm_dialect) Init(ASM_ATT)
257 Use given assembler dialect.
260 Name(asm_dialect) Type(enum asm_dialect)
261 Known assembler dialects (for use with the -masm= option):
264 Enum(asm_dialect) String(intel) Value(ASM_INTEL)
267 Enum(asm_dialect) String(att) Value(ASM_ATT)
270 Target RejectNegative Joined UInteger Var(ix86_branch_cost) IntegerRange(0, 5)
271 Branches are this expensive (arbitrary units).
273 mlarge-data-threshold=
274 Target RejectNegative Joined UInteger Var(ix86_section_threshold) Init(DEFAULT_LARGE_SECTION_THRESHOLD)
275 -mlarge-data-threshold=<number> Data greater than given threshold will go into .ldata section in x86-64 medium model.
278 Target RejectNegative Joined Enum(cmodel) Var(ix86_cmodel) Init(CM_32)
279 Use given x86-64 code model.
282 Name(cmodel) Type(enum cmodel)
283 Known code models (for use with the -mcmodel= option):
286 Enum(cmodel) String(small) Value(CM_SMALL)
289 Enum(cmodel) String(medium) Value(CM_MEDIUM)
292 Enum(cmodel) String(large) Value(CM_LARGE)
295 Enum(cmodel) String(32) Value(CM_32)
298 Enum(cmodel) String(kernel) Value(CM_KERNEL)
301 Target RejectNegative Joined Enum(pmode) Var(ix86_pmode) Init(PMODE_SI)
302 Use given address mode.
305 Name(pmode) Type(enum pmode)
306 Known address mode (for use with the -maddress-mode= option):
309 Enum(pmode) String(short) Value(PMODE_SI)
312 Enum(pmode) String(long) Value(PMODE_DI)
315 Target RejectNegative Joined Undocumented Alias(mtune=) Warn(%<-mcpu=%> is deprecated; use %<-mtune=%> or %<-march=%> instead)
318 Target RejectNegative Report InverseMask(NO_FANCY_MATH_387, USE_FANCY_MATH_387) Save
319 Generate sin, cos, sqrt for FPU.
322 Target Report Var(ix86_force_drap)
323 Always use Dynamic Realigned Argument Pointer (DRAP) to realign stack.
326 Target Report Mask(FLOAT_RETURNS) Save
327 Return values of functions in FPU registers.
330 Target RejectNegative Joined Var(ix86_fpmath) Enum(fpmath_unit) Init(FPMATH_387) Save
331 Generate floating point mathematics using given instruction set.
334 Name(fpmath_unit) Type(enum fpmath_unit)
335 Valid arguments to -mfpmath=:
338 Enum(fpmath_unit) String(387) Value(FPMATH_387)
341 Enum(fpmath_unit) String(sse) Value(FPMATH_SSE)
344 Enum(fpmath_unit) String(387,sse) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)})
347 Enum(fpmath_unit) String(387+sse) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)})
350 Enum(fpmath_unit) String(sse,387) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)})
353 Enum(fpmath_unit) String(sse+387) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)})
356 Enum(fpmath_unit) String(both) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)})
359 Target RejectNegative Mask(80387) Save
363 Target Report Mask(IEEE_FP) Save
364 Use IEEE math for fp comparisons.
366 minline-all-stringops
367 Target Report Mask(INLINE_ALL_STRINGOPS) Save
368 Inline all known string operations.
370 minline-stringops-dynamically
371 Target Report Mask(INLINE_STRINGOPS_DYNAMICALLY) Save
372 Inline memset/memcpy string operations, but perform inline version only for small blocks.
375 Target Undocumented Alias(masm=, intel, att) Warn(%<-mintel-syntax%> and %<-mno-intel-syntax%> are deprecated; use %<-masm=intel%> and %<-masm=att%> instead)
378 Target Report Mask(MS_BITFIELD_LAYOUT) Save
379 Use native (MS) bitfield layout.
382 Target RejectNegative Report Mask(NO_ALIGN_STRINGOPS) Undocumented Save
385 Target RejectNegative Report Mask(NO_FANCY_MATH_387) Undocumented Save
388 Target RejectNegative Report Mask(NO_PUSH_ARGS) Undocumented Save
391 Target RejectNegative Report Mask(NO_RED_ZONE) Undocumented Save
393 momit-leaf-frame-pointer
394 Target Report Mask(OMIT_LEAF_FRAME_POINTER) Save
395 Omit the frame pointer in leaf functions.
398 Target RejectNegative Report
399 Set 80387 floating-point precision to 32-bit.
402 Target RejectNegative Report
403 Set 80387 floating-point precision to 64-bit.
406 Target RejectNegative Report
407 Set 80387 floating-point precision to 80-bit.
409 mpreferred-stack-boundary=
410 Target RejectNegative Joined UInteger Var(ix86_preferred_stack_boundary_arg)
411 Attempt to keep stack aligned to this power of 2.
413 mincoming-stack-boundary=
414 Target RejectNegative Joined UInteger Var(ix86_incoming_stack_boundary_arg)
415 Assume incoming stack aligned to this power of 2.
418 Target Report InverseMask(NO_PUSH_ARGS, PUSH_ARGS) Save
419 Use push instructions to save outgoing arguments.
422 Target RejectNegative Report InverseMask(NO_RED_ZONE, RED_ZONE) Save
423 Use red-zone in the x86-64 code.
426 Target RejectNegative Joined UInteger Var(ix86_regparm)
427 Number of registers used to pass integer arguments.
430 Target Report Mask(RTD) Save
431 Alternate calling convention.
434 Target InverseMask(80387) Save
435 Do not use hardware fp.
438 Target RejectNegative Mask(SSEREGPARM) Save
439 Use SSE register passing conventions for SF and DF mode.
442 Target Report Var(ix86_force_align_arg_pointer)
443 Realign stack in prologue.
446 Target Report Mask(STACK_PROBE) Save
447 Enable stack probing.
450 Target RejectNegative Joined Var(ix86_tune_memcpy_strategy)
451 Specify memcpy expansion strategy when expected size is known.
454 Target RejectNegative Joined Var(ix86_tune_memset_strategy)
455 Specify memset expansion strategy when expected size is known.
458 Target RejectNegative Joined Enum(stringop_alg) Var(ix86_stringop_alg) Init(no_stringop)
459 Chose strategy to generate stringop using.
462 Name(stringop_alg) Type(enum stringop_alg)
463 Valid arguments to -mstringop-strategy=:
466 Enum(stringop_alg) String(rep_byte) Value(rep_prefix_1_byte)
469 Enum(stringop_alg) String(libcall) Value(libcall)
472 Enum(stringop_alg) String(rep_4byte) Value(rep_prefix_4_byte)
475 Enum(stringop_alg) String(rep_8byte) Value(rep_prefix_8_byte)
478 Enum(stringop_alg) String(byte_loop) Value(loop_1_byte)
481 Enum(stringop_alg) String(loop) Value(loop)
484 Enum(stringop_alg) String(unrolled_loop) Value(unrolled_loop)
487 Enum(stringop_alg) String(vector_loop) Value(vector_loop)
490 Target RejectNegative Joined Var(ix86_tls_dialect) Enum(tls_dialect) Init(TLS_DIALECT_GNU)
491 Use given thread-local storage dialect.
494 Name(tls_dialect) Type(enum tls_dialect)
495 Known TLS dialects (for use with the -mtls-dialect= option):
498 Enum(tls_dialect) String(gnu) Value(TLS_DIALECT_GNU)
501 Enum(tls_dialect) String(gnu2) Value(TLS_DIALECT_GNU2)
504 Target Report Mask(TLS_DIRECT_SEG_REFS)
505 Use direct references against %gs when accessing tls data.
508 Target RejectNegative Negative(mtune=) Joined Var(ix86_tune_string)
509 Schedule code for given CPU.
512 Target RejectNegative Joined Var(ix86_tune_ctrl_string)
513 Fine grain control of tune features.
516 Target RejectNegative Var(ix86_tune_no_default)
517 Clear all tune features.
520 Target RejectNegative Var(ix86_dump_tunes)
523 Target Report Mask(IAMCU)
524 Generate code that conforms to Intel MCU psABI.
527 Target RejectNegative Joined Var(ix86_abi) Enum(calling_abi) Init(SYSV_ABI)
528 Generate code that conforms to the given ABI.
531 Name(calling_abi) Type(enum calling_abi)
532 Known ABIs (for use with the -mabi= option):
535 Enum(calling_abi) String(sysv) Value(SYSV_ABI)
538 Enum(calling_abi) String(ms) Value(MS_ABI)
540 mcall-ms2sysv-xlogues
541 Target Report Mask(CALL_MS2SYSV_XLOGUES) Save
542 Use libgcc stubs to save and restore registers clobbered by 64-bit Microsoft to System V ABI calls.
545 Target RejectNegative Joined Var(ix86_veclibabi_type) Enum(ix86_veclibabi) Init(ix86_veclibabi_type_none)
546 Vector library ABI to use.
549 Name(ix86_veclibabi) Type(enum ix86_veclibabi)
550 Known vectorization library ABIs (for use with the -mveclibabi= option):
553 Enum(ix86_veclibabi) String(svml) Value(ix86_veclibabi_type_svml)
556 Enum(ix86_veclibabi) String(acml) Value(ix86_veclibabi_type_acml)
559 Target Report Mask(VECT8_RETURNS) Save
560 Return 8-byte vectors in memory.
563 Target Report Mask(RECIP) Save
564 Generate reciprocals instead of divss and sqrtss.
567 Target Report RejectNegative Joined Var(ix86_recip_name)
568 Control generation of reciprocal estimates.
571 Target Report Mask(CLD) Save
572 Generate cld instruction in the function prologue.
575 Target Report Mask(VZEROUPPER) Save
576 Generate vzeroupper instruction before a transfer of control flow out of
580 Target Report Mask(STV) Save
581 Disable Scalar to Vector optimization pass transforming 64-bit integer
582 computations into a vector ones.
585 Target RejectNegative Var(flag_dispatch_scheduler)
586 Do dispatch scheduling if processor is bdver1, bdver2, bdver3, bdver4
587 or znver1 and Haifa scheduling is selected.
590 Target Alias(mprefer-vector-width=, 128, 256)
591 Use 128-bit AVX instructions instead of 256-bit AVX instructions in the auto-vectorizer.
593 mprefer-vector-width=
594 Target Report RejectNegative Joined Var(prefer_vector_width_type) Enum(prefer_vector_width) Init(PVW_NONE) Save
595 Use given register vector width instructions instead of maximum register width in the auto-vectorizer.
598 Name(prefer_vector_width) Type(enum prefer_vector_width)
599 Known preferred register vector length (to use with the -mprefer-vector-width= option):
602 Enum(prefer_vector_width) String(none) Value(PVW_NONE)
605 Enum(prefer_vector_width) String(128) Value(PVW_AVX128)
608 Enum(prefer_vector_width) String(256) Value(PVW_AVX256)
611 Enum(prefer_vector_width) String(512) Value(PVW_AVX512)
616 Target RejectNegative Negative(m64) Report InverseMask(ISA_64BIT) Var(ix86_isa_flags) Save
617 Generate 32bit i386 code.
620 Target RejectNegative Negative(mx32) Report Mask(ABI_64) Var(ix86_isa_flags) Save
621 Generate 64bit x86-64 code.
624 Target RejectNegative Negative(m16) Report Mask(ABI_X32) Var(ix86_isa_flags) Save
625 Generate 32bit x86-64 code.
628 Target RejectNegative Negative(m32) Report Mask(CODE16) InverseMask(ISA_64BIT) Var(ix86_isa_flags) Save
629 Generate 16bit i386 code.
632 Target Report Mask(ISA_MMX) Var(ix86_isa_flags) Save
633 Support MMX built-in functions.
636 Target Report Mask(ISA_3DNOW) Var(ix86_isa_flags) Save
637 Support 3DNow! built-in functions.
640 Target Report Mask(ISA_3DNOW_A) Var(ix86_isa_flags) Save
641 Support Athlon 3Dnow! built-in functions.
644 Target Report Mask(ISA_SSE) Var(ix86_isa_flags) Save
645 Support MMX and SSE built-in functions and code generation.
648 Target Report Mask(ISA_SSE2) Var(ix86_isa_flags) Save
649 Support MMX, SSE and SSE2 built-in functions and code generation.
652 Target Report Mask(ISA_SSE3) Var(ix86_isa_flags) Save
653 Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation.
656 Target Report Mask(ISA_SSSE3) Var(ix86_isa_flags) Save
657 Support MMX, SSE, SSE2, SSE3 and SSSE3 built-in functions and code generation.
660 Target Report Mask(ISA_SSE4_1) Var(ix86_isa_flags) Save
661 Support MMX, SSE, SSE2, SSE3, SSSE3 and SSE4.1 built-in functions and code generation.
664 Target Report Mask(ISA_SSE4_2) Var(ix86_isa_flags) Save
665 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and code generation.
668 Target RejectNegative Report Mask(ISA_SSE4_2) Var(ix86_isa_flags) Save
669 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and code generation.
672 Target RejectNegative Report InverseMask(ISA_SSE4_1) Var(ix86_isa_flags) Save
673 Do not support SSE4.1 and SSE4.2 built-in functions and code generation.
676 Target Undocumented Alias(mavx) Warn(%<-msse5%> was removed)
680 Target Report Mask(ISA_AVX) Var(ix86_isa_flags) Save
681 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 and AVX built-in functions and code generation.
684 Target Report Mask(ISA_AVX2) Var(ix86_isa_flags) Save
685 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and AVX2 built-in functions and code generation.
688 Target Report Mask(ISA_AVX512F) Var(ix86_isa_flags) Save
689 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F built-in functions and code generation.
692 Target Report Mask(ISA_AVX512PF) Var(ix86_isa_flags) Save
693 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512PF built-in functions and code generation.
696 Target Report Mask(ISA_AVX512ER) Var(ix86_isa_flags) Save
697 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512ER built-in functions and code generation.
700 Target Report Mask(ISA_AVX512CD) Var(ix86_isa_flags) Save
701 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512CD built-in functions and code generation.
704 Target Report Mask(ISA_AVX512DQ) Var(ix86_isa_flags) Save
705 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512DQ built-in functions and code generation.
708 Target Report Mask(ISA_AVX512BW) Var(ix86_isa_flags) Save
709 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512BW built-in functions and code generation.
712 Target Report Mask(ISA_AVX512VL) Var(ix86_isa_flags) Save
713 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512VL built-in functions and code generation.
716 Target Report Mask(ISA_AVX512IFMA) Var(ix86_isa_flags) Save
717 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512IFMA built-in functions and code generation.
720 Target Report Mask(ISA_AVX512VBMI) Var(ix86_isa_flags) Save
721 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512VBMI built-in functions and code generation.
724 Target Report Mask(ISA2_AVX5124FMAPS) Var(ix86_isa_flags2) Save
725 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX5124FMAPS built-in functions and code generation.
728 Target Report Mask(ISA2_AVX5124VNNIW) Var(ix86_isa_flags2) Save
729 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX5124VNNIW built-in functions and code generation.
732 Target Report Mask(ISA_AVX512VPOPCNTDQ) Var(ix86_isa_flags) Save
733 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512VPOPCNTDQ built-in functions and code generation.
736 Target Report Mask(ISA_AVX512VBMI2) Var(ix86_isa_flags) Save
737 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512VBMI2 built-in functions and code generation.
740 Target Report Mask(ISA_AVX512VNNI) Var(ix86_isa_flags) Save
741 Support AVX512VNNI built-in functions and code generation.
744 Target Report Mask(ISA_AVX512BITALG) Var(ix86_isa_flags) Save
745 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512BITALG built-in functions and code generation.
748 Target Report Mask(ISA2_AVX512VP2INTERSECT) Var(ix86_isa_flags2) Save
749 Support AVX512VP2INTERSECT built-in functions and code generation.
752 Target Report Mask(ISA_FMA) Var(ix86_isa_flags) Save
753 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and FMA built-in functions and code generation.
756 Target Report Mask(ISA_SSE4A) Var(ix86_isa_flags) Save
757 Support MMX, SSE, SSE2, SSE3 and SSE4A built-in functions and code generation.
760 Target Report Mask(ISA_FMA4) Var(ix86_isa_flags) Save
761 Support FMA4 built-in functions and code generation.
764 Target Report Mask(ISA_XOP) Var(ix86_isa_flags) Save
765 Support XOP built-in functions and code generation.
768 Target Report Mask(ISA_LWP) Var(ix86_isa_flags) Save
769 Support LWP built-in functions and code generation.
772 Target Report Mask(ISA_ABM) Var(ix86_isa_flags) Save
773 Support code generation of Advanced Bit Manipulation (ABM) instructions.
776 Target Report Mask(ISA_POPCNT) Var(ix86_isa_flags) Save
777 Support code generation of popcnt instruction.
780 Target Report Mask(ISA2_PCONFIG) Var(ix86_isa_flags2) Save
781 Support PCONFIG built-in functions and code generation.
784 Target Report Mask(ISA2_WBNOINVD) Var(ix86_isa_flags2) Save
785 Support WBNOINVD built-in functions and code generation.
788 Target Report Mask(ISA2_PTWRITE) Var(ix86_isa_flags2) Save
789 Support PTWRITE built-in functions and code generation.
792 Target Report Mask(ISA2_SGX) Var(ix86_isa_flags2) Save
793 Support SGX built-in functions and code generation.
796 Target Report Mask(ISA2_RDPID) Var(ix86_isa_flags2) Save
797 Support RDPID built-in functions and code generation.
800 Target Report Mask(ISA_GFNI) Var(ix86_isa_flags) Save
801 Support GFNI built-in functions and code generation.
804 Target Report Mask(ISA2_VAES) Var(ix86_isa_flags2) Save
805 Support VAES built-in functions and code generation.
808 Target Report Mask(ISA_VPCLMULQDQ) Var(ix86_isa_flags) Save
809 Support VPCLMULQDQ built-in functions and code generation.
812 Target Report Mask(ISA_BMI) Var(ix86_isa_flags) Save
813 Support BMI built-in functions and code generation.
816 Target Report Mask(ISA_BMI2) Var(ix86_isa_flags) Save
817 Support BMI2 built-in functions and code generation.
820 Target Report Mask(ISA_LZCNT) Var(ix86_isa_flags) Save
821 Support LZCNT built-in function and code generation.
824 Target Report Mask(ISA2_HLE) Var(ix86_isa_flags2) Save
825 Support Hardware Lock Elision prefixes.
828 Target Report Mask(ISA_RDSEED) Var(ix86_isa_flags) Save
829 Support RDSEED instruction.
832 Target Report Mask(ISA_PRFCHW) Var(ix86_isa_flags) Save
833 Support PREFETCHW instruction.
836 Target Report Mask(ISA_ADX) Var(ix86_isa_flags) Save
837 Support flag-preserving add-carry instructions.
840 Target Report Mask(ISA_CLFLUSHOPT) Var(ix86_isa_flags) Save
841 Support CLFLUSHOPT instructions.
844 Target Report Mask(ISA_CLWB) Var(ix86_isa_flags) Save
845 Support CLWB instruction.
851 Target Report Mask(ISA_FXSR) Var(ix86_isa_flags) Save
852 Support FXSAVE and FXRSTOR instructions.
855 Target Report Mask(ISA_XSAVE) Var(ix86_isa_flags) Save
856 Support XSAVE and XRSTOR instructions.
859 Target Report Mask(ISA_XSAVEOPT) Var(ix86_isa_flags) Save
860 Support XSAVEOPT instruction.
863 Target Report Mask(ISA_XSAVEC) Var(ix86_isa_flags) Save
864 Support XSAVEC instructions.
867 Target Report Mask(ISA_XSAVES) Var(ix86_isa_flags) Save
868 Support XSAVES and XRSTORS instructions.
871 Target Report Mask(ISA_TBM) Var(ix86_isa_flags) Save
872 Support TBM built-in functions and code generation.
875 Target Report Mask(ISA2_CX16) Var(ix86_isa_flags2) Save
876 Support code generation of cmpxchg16b instruction.
879 Target Report Mask(ISA_SAHF) Var(ix86_isa_flags) Save
880 Support code generation of sahf instruction in 64bit x86-64 code.
883 Target Report Mask(ISA2_MOVBE) Var(ix86_isa_flags2) Save
884 Support code generation of movbe instruction.
887 Target Report Mask(ISA_CRC32) Var(ix86_isa_flags) Save
888 Support code generation of crc32 instruction.
891 Target Report Mask(ISA_AES) Var(ix86_isa_flags) Save
892 Support AES built-in functions and code generation.
895 Target Report Mask(ISA_SHA) Var(ix86_isa_flags) Save
896 Support SHA1 and SHA256 built-in functions and code generation.
899 Target Report Mask(ISA_PCLMUL) Var(ix86_isa_flags) Save
900 Support PCLMUL built-in functions and code generation.
903 Target Report Var(ix86_sse2avx)
904 Encode SSE instructions with VEX prefix.
907 Target Report Mask(ISA_FSGSBASE) Var(ix86_isa_flags) Save
908 Support FSGSBASE built-in functions and code generation.
911 Target Report Mask(ISA_RDRND) Var(ix86_isa_flags) Save
912 Support RDRND built-in functions and code generation.
915 Target Report Mask(ISA_F16C) Var(ix86_isa_flags) Save
916 Support F16C built-in functions and code generation.
919 Target Report Mask(ISA_PREFETCHWT1) Var(ix86_isa_flags) Save
920 Support PREFETCHWT1 built-in functions and code generation.
923 Target Report Var(flag_fentry)
924 Emit profiling counter call at function entry before prologue.
927 Target Report Var(flag_record_mcount)
928 Generate __mcount_loc section with all mcount or __fentry__ calls.
931 Target Report Var(flag_nop_mcount)
932 Generate mcount/__fentry__ calls as nops. To activate they need to be
936 Target RejectNegative Joined Var(fentry_name)
937 Set name of __fentry__ symbol called at function entry.
940 Target RejectNegative Joined Var(fentry_section)
941 Set name of section to record mrecord-mcount calls.
944 Target Report Var(flag_skip_rax_setup)
945 Skip setting up RAX register when passing variable arguments.
948 Target Report Mask(USE_8BIT_IDIV) Save
949 Expand 32bit/64bit integer divide into 8bit unsigned integer divide with run-time check.
951 mavx256-split-unaligned-load
952 Target Report Mask(AVX256_SPLIT_UNALIGNED_LOAD) Save
953 Split 32-byte AVX unaligned load.
955 mavx256-split-unaligned-store
956 Target Report Mask(AVX256_SPLIT_UNALIGNED_STORE) Save
957 Split 32-byte AVX unaligned store.
960 Target Report Mask(ISA_RTM) Var(ix86_isa_flags) Save
961 Support RTM built-in functions and code generation.
965 Removed in GCC 9. This switch has no effect.
968 Target Report Mask(ISA2_MWAITX) Var(ix86_isa_flags2) Save
969 Support MWAITX and MONITORX built-in functions and code generation.
972 Target Report Mask(ISA2_CLZERO) Var(ix86_isa_flags2) Save
973 Support CLZERO built-in functions and code generation.
976 Target Report Mask(ISA_PKU) Var(ix86_isa_flags) Save
977 Support PKU built-in functions and code generation.
979 mstack-protector-guard=
980 Target RejectNegative Joined Enum(stack_protector_guard) Var(ix86_stack_protector_guard) Init(SSP_TLS)
981 Use given stack-protector guard.
984 Name(stack_protector_guard) Type(enum stack_protector_guard)
985 Known stack protector guard (for use with the -mstack-protector-guard= option):
988 Enum(stack_protector_guard) String(tls) Value(SSP_TLS)
991 Enum(stack_protector_guard) String(global) Value(SSP_GLOBAL)
993 mstack-protector-guard-reg=
994 Target RejectNegative Joined Var(ix86_stack_protector_guard_reg_str)
995 Use the given base register for addressing the stack-protector guard.
998 addr_space_t ix86_stack_protector_guard_reg = ADDR_SPACE_GENERIC
1000 mstack-protector-guard-offset=
1001 Target RejectNegative Joined Integer Var(ix86_stack_protector_guard_offset_str)
1002 Use the given offset for addressing the stack-protector guard.
1005 HOST_WIDE_INT ix86_stack_protector_guard_offset = 0
1007 mstack-protector-guard-symbol=
1008 Target RejectNegative Joined Integer Var(ix86_stack_protector_guard_symbol_str)
1009 Use the given symbol for addressing the stack-protector guard.
1015 Target Report RejectNegative Mask(GENERAL_REGS_ONLY) Var(ix86_target_flags) Save
1016 Generate code which uses only the general registers.
1019 Target Report Mask(ISA_SHSTK) Var(ix86_isa_flags) Save
1020 Enable shadow stack built-in functions from Control-flow Enforcement
1024 Target Report Undocumented Var(flag_cet_switch) Init(0)
1025 Turn on CET instrumentation for switch statements that use a jump table and
1029 Target Report Var(flag_manual_endbr) Init(0)
1030 Insert ENDBR instruction at function entry only via cf_check attribute
1031 for CET instrumentation.
1033 mforce-indirect-call
1034 Target Report Var(flag_force_indirect_call) Init(0)
1035 Make all function calls indirect.
1038 Target Report RejectNegative Joined Enum(indirect_branch) Var(ix86_indirect_branch) Init(indirect_branch_keep)
1039 Convert indirect call and jump to call and return thunks.
1042 Target Report RejectNegative Joined Enum(indirect_branch) Var(ix86_function_return) Init(indirect_branch_keep)
1043 Convert function return to call and return thunk.
1046 Name(indirect_branch) Type(enum indirect_branch)
1047 Known indirect branch choices (for use with the -mindirect-branch=/-mfunction-return= options):
1050 Enum(indirect_branch) String(keep) Value(indirect_branch_keep)
1053 Enum(indirect_branch) String(thunk) Value(indirect_branch_thunk)
1056 Enum(indirect_branch) String(thunk-inline) Value(indirect_branch_thunk_inline)
1059 Enum(indirect_branch) String(thunk-extern) Value(indirect_branch_thunk_extern)
1061 mindirect-branch-register
1062 Target Report Var(ix86_indirect_branch_register) Init(0)
1063 Force indirect call and jump via register.
1066 Target Report Mask(ISA_MOVDIRI) Var(ix86_isa_flags) Save
1067 Support MOVDIRI built-in functions and code generation.
1070 Target Report Mask(ISA2_MOVDIR64B) Var(ix86_isa_flags2) Save
1071 Support MOVDIR64B built-in functions and code generation.
1074 Target Report Mask(ISA2_WAITPKG) Var(ix86_isa_flags2) Save
1075 Support WAITPKG built-in functions and code generation.
1078 Target Report Mask(ISA2_CLDEMOTE) Var(ix86_isa_flags2) Save
1079 Support CLDEMOTE built-in functions and code generation.
1082 Target Report RejectNegative Joined Enum(instrument_return) Var(ix86_instrument_return) Init(instrument_return_none)
1083 Instrument function exit in instrumented functions with __fentry__.
1086 Name(instrument_return) Type(enum instrument_return)
1087 Known choices for return instrumentation with -minstrument-return=:
1090 Enum(instrument_return) String(none) Value(instrument_return_none)
1093 Enum(instrument_return) String(call) Value(instrument_return_call)
1096 Enum(instrument_return) String(nop5) Value(instrument_return_nop5)
1099 Target Report Var(ix86_flag_record_return) Init(0)
1100 Generate a __return_loc section pointing to all return instrumentation code.
1103 Target Report Mask(ISA2_AVX512BF16) Var(ix86_isa_flags2) Save
1104 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and
1105 AVX512BF16 built-in functions and code generation.
1108 Target Report Mask(ISA2_ENQCMD) Var(ix86_isa_flags2) Save
1109 Support ENQCMD built-in functions and code generation.