1 ; Options for the IA-32 and AMD64 ports of the compiler.
3 ; Copyright (C) 2005-2023 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 ;; A copy of flag_excess_precision as a target variable that should
53 ;; force a different DECL_FUNCTION_SPECIFIC_TARGET upon
54 ;; flag_excess_precision changes.
56 enum excess_precision ix86_excess_precision = EXCESS_PRECISION_DEFAULT
58 ;; Similarly for flag_unsafe_math_optimizations.
60 bool ix86_unsafe_math_optimizations = false
62 ;; Definitions to add to the cl_target_option structure
71 ;; -march= processor-string
73 const char *x_ix86_arch_string
75 ;; -mtune= processor-string
77 const char *x_ix86_tune_string
81 unsigned char schedule
83 ;; True if processor has SSE prefetch instruction.
85 unsigned char prefetch_sse
89 unsigned char branch_cost
91 ;; which flags were passed by the user
93 HOST_WIDE_INT x_ix86_isa_flags2_explicit
95 ;; which flags were passed by the user
97 HOST_WIDE_INT x_ix86_isa_flags_explicit
99 ;; whether -mtune was not specified
101 unsigned char tune_defaulted
103 ;; whether -march was specified
105 unsigned char arch_specified
109 enum cmodel ix86_cmodel = CM_32
113 enum calling_abi ix86_abi = SYSV_ABI
117 enum asm_dialect x_ix86_asm_dialect
121 int x_ix86_branch_cost
123 ;; -mdump-tune-features=
125 int x_ix86_dump_tunes
129 int x_ix86_force_align_arg_pointer
133 int x_ix86_force_drap
135 ;; -mincoming-stack-boundary=
137 int ix86_incoming_stack_boundary_arg
141 enum pmode ix86_pmode = PMODE_SI
143 ;; -mpreferred-stack-boundary=
145 int ix86_preferred_stack_boundary_arg
149 const char *x_ix86_recip_name
155 ;; -mlarge-data-threshold=
157 int x_ix86_section_threshold
163 ;; -mstack-protector-guard=
165 enum stack_protector_guard x_ix86_stack_protector_guard
167 ;; -mstringop-strategy=
169 enum stringop_alg x_ix86_stringop_alg
173 enum tls_dialect x_ix86_tls_dialect
177 const char *x_ix86_tune_ctrl_string
179 ;; -mmemcpy-strategy=
181 const char *x_ix86_tune_memcpy_strategy
183 ;; -mmemset-strategy=
185 const char *x_ix86_tune_memset_strategy
189 int x_ix86_tune_no_default
193 enum ix86_veclibabi ix86_veclibabi_type = ix86_veclibabi_type_none
197 Target RejectNegative Mask(128BIT_LONG_DOUBLE) Save
198 sizeof(long double) is 16.
201 Target Mask(80387) Save
205 Target RejectNegative InverseMask(128BIT_LONG_DOUBLE) Save
206 sizeof(long double) is 12.
209 Target RejectNegative Negative(mlong-double-64) InverseMask(LONG_DOUBLE_64) Save
210 Use 80-bit long double.
213 Target RejectNegative Negative(mlong-double-128) Mask(LONG_DOUBLE_64) InverseMask(LONG_DOUBLE_128) Save
214 Use 64-bit long double.
217 Target RejectNegative Negative(mlong-double-80) Mask(LONG_DOUBLE_128) InverseMask(LONG_DOUBLE_64) Save
218 Use 128-bit long double.
220 maccumulate-outgoing-args
221 Target Mask(ACCUMULATE_OUTGOING_ARGS) Save
222 Reserve space for outgoing arguments in the function prologue.
225 Target Mask(ALIGN_DOUBLE) Save
226 Align some doubles on dword boundary.
229 Target RejectNegative Joined UInteger
230 Function starts are aligned to this power of 2.
233 Target RejectNegative Joined UInteger
234 Jump targets are aligned to this power of 2.
237 Target RejectNegative Joined UInteger
238 Loop code aligned to this power of 2.
241 Target RejectNegative InverseMask(NO_ALIGN_STRINGOPS, ALIGN_STRINGOPS) Save
242 Align destination of the string operations.
245 Target RejectNegative Joined Var(ix86_align_data_type) Enum(ix86_align_data) Init(ix86_align_data_type_compat)
246 Use the given data alignment.
249 Name(ix86_align_data) Type(enum ix86_align_data)
250 Known data alignment choices (for use with the -malign-data= option):
253 Enum(ix86_align_data) String(compat) Value(ix86_align_data_type_compat)
256 Enum(ix86_align_data) String(abi) Value(ix86_align_data_type_abi)
259 Enum(ix86_align_data) String(cacheline) Value(ix86_align_data_type_cacheline)
262 Target RejectNegative Negative(march=) Joined Var(ix86_arch_string)
263 Generate code for given CPU.
266 Target RejectNegative Joined Enum(asm_dialect) Var(ix86_asm_dialect) Init(ASM_ATT)
267 Use given assembler dialect.
270 Name(asm_dialect) Type(enum asm_dialect)
271 Known assembler dialects (for use with the -masm= option):
274 Enum(asm_dialect) String(intel) Value(ASM_INTEL)
277 Enum(asm_dialect) String(att) Value(ASM_ATT)
280 Target RejectNegative Joined UInteger Var(ix86_branch_cost) IntegerRange(0, 5)
281 Branches are this expensive (arbitrary units).
283 mlarge-data-threshold=
284 Target RejectNegative Joined UInteger Var(ix86_section_threshold) Init(DEFAULT_LARGE_SECTION_THRESHOLD)
285 -mlarge-data-threshold=<number> Data greater than given threshold will go into .ldata section in x86-64 medium model.
288 Target RejectNegative Joined Enum(cmodel) Var(ix86_cmodel) Init(CM_32)
289 Use given x86-64 code model.
292 Name(cmodel) Type(enum cmodel)
293 Known code models (for use with the -mcmodel= option):
296 Enum(cmodel) String(small) Value(CM_SMALL)
299 Enum(cmodel) String(medium) Value(CM_MEDIUM)
302 Enum(cmodel) String(large) Value(CM_LARGE)
305 Enum(cmodel) String(32) Value(CM_32)
308 Enum(cmodel) String(kernel) Value(CM_KERNEL)
311 Target RejectNegative Joined Enum(pmode) Var(ix86_pmode) Init(PMODE_SI)
312 Use given address mode.
315 Name(pmode) Type(enum pmode)
316 Known address mode (for use with the -maddress-mode= option):
319 Enum(pmode) String(short) Value(PMODE_SI)
322 Enum(pmode) String(long) Value(PMODE_DI)
325 Target RejectNegative Joined Undocumented Alias(mtune=) Warn(%<-mcpu=%> is deprecated; use %<-mtune=%> or %<-march=%> instead)
328 Target RejectNegative InverseMask(NO_FANCY_MATH_387, USE_FANCY_MATH_387) Save
329 Generate sin, cos, sqrt for FPU.
332 Target Var(ix86_force_drap)
333 Always use Dynamic Realigned Argument Pointer (DRAP) to realign stack.
336 Target Mask(FLOAT_RETURNS) Save
337 Return values of functions in FPU registers.
340 Target RejectNegative Joined Var(ix86_fpmath) Enum(fpmath_unit) Init(FPMATH_387) Save
341 Generate floating point mathematics using given instruction set.
344 Name(fpmath_unit) Type(enum fpmath_unit)
345 Valid arguments to -mfpmath=:
348 Enum(fpmath_unit) String(387) Value(FPMATH_387)
351 Enum(fpmath_unit) String(sse) Value(FPMATH_SSE)
354 Enum(fpmath_unit) String(387,sse) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)})
357 Enum(fpmath_unit) String(387+sse) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)})
360 Enum(fpmath_unit) String(sse,387) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)})
363 Enum(fpmath_unit) String(sse+387) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)})
366 Enum(fpmath_unit) String(both) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)})
369 Target RejectNegative Mask(80387) Save
373 Target Mask(IEEE_FP) Save
374 Use IEEE math for fp comparisons.
376 minline-all-stringops
377 Target Mask(INLINE_ALL_STRINGOPS) Save
378 Inline all known string operations.
380 minline-stringops-dynamically
381 Target Mask(INLINE_STRINGOPS_DYNAMICALLY) Save
382 Inline memset/memcpy string operations, but perform inline version only for small blocks.
385 Target Undocumented Alias(masm=, intel, att) Warn(%<-mintel-syntax%> and %<-mno-intel-syntax%> are deprecated; use %<-masm=intel%> and %<-masm=att%> instead)
388 Target Mask(MS_BITFIELD_LAYOUT) Save
389 Use native (MS) bitfield layout.
392 Target RejectNegative Mask(NO_ALIGN_STRINGOPS) Undocumented Save
395 Target RejectNegative Mask(NO_FANCY_MATH_387) Undocumented Save
398 Target RejectNegative Mask(NO_PUSH_ARGS) Undocumented Save
401 Target RejectNegative Mask(NO_RED_ZONE) Undocumented Save
403 momit-leaf-frame-pointer
404 Target Mask(OMIT_LEAF_FRAME_POINTER) Save
405 Omit the frame pointer in leaf functions.
408 Target Mask(RELAX_CMPXCHG_LOOP) Save
409 Relax cmpxchg loop for atomic_fetch_{or,xor,and,nand} by adding load and cmp before cmpxchg, execute pause and loop back to load and compare if load value is not expected.
412 Target RejectNegative
413 Set 80387 floating-point precision to 32-bit.
416 Target RejectNegative
417 Set 80387 floating-point precision to 64-bit.
420 Target RejectNegative
421 Set 80387 floating-point precision to 80-bit.
425 Set the FTZ and DAZ Flags.
427 mpreferred-stack-boundary=
428 Target RejectNegative Joined UInteger Var(ix86_preferred_stack_boundary_arg)
429 Attempt to keep stack aligned to this power of 2.
431 mincoming-stack-boundary=
432 Target RejectNegative Joined UInteger Var(ix86_incoming_stack_boundary_arg)
433 Assume incoming stack aligned to this power of 2.
436 Target InverseMask(NO_PUSH_ARGS, PUSH_ARGS) Save
437 Use push instructions to save outgoing arguments.
440 Target RejectNegative InverseMask(NO_RED_ZONE, RED_ZONE) Save
441 Use red-zone in the x86-64 code.
444 Target RejectNegative Joined UInteger Var(ix86_regparm)
445 Number of registers used to pass integer arguments.
448 Target Mask(RTD) Save
449 Alternate calling convention.
452 Target InverseMask(80387) Save
453 Do not use hardware fp.
456 Target RejectNegative Mask(SSEREGPARM) Save
457 Use SSE register passing conventions for SF and DF mode.
460 Target Var(ix86_force_align_arg_pointer)
461 Realign stack in prologue.
464 Target Mask(STACK_PROBE) Save
465 Enable stack probing.
468 Target RejectNegative Joined Var(ix86_tune_memcpy_strategy)
469 Specify memcpy expansion strategy when expected size is known.
472 Target RejectNegative Joined Var(ix86_tune_memset_strategy)
473 Specify memset expansion strategy when expected size is known.
476 Target RejectNegative Joined Enum(stringop_alg) Var(ix86_stringop_alg) Init(no_stringop)
477 Chose strategy to generate stringop using.
480 Name(stringop_alg) Type(enum stringop_alg)
481 Valid arguments to -mstringop-strategy=:
484 Enum(stringop_alg) String(rep_byte) Value(rep_prefix_1_byte)
487 Enum(stringop_alg) String(libcall) Value(libcall)
490 Enum(stringop_alg) String(rep_4byte) Value(rep_prefix_4_byte)
493 Enum(stringop_alg) String(rep_8byte) Value(rep_prefix_8_byte)
496 Enum(stringop_alg) String(byte_loop) Value(loop_1_byte)
499 Enum(stringop_alg) String(loop) Value(loop)
502 Enum(stringop_alg) String(unrolled_loop) Value(unrolled_loop)
505 Enum(stringop_alg) String(vector_loop) Value(vector_loop)
508 Target RejectNegative Joined Var(ix86_tls_dialect) Enum(tls_dialect) Init(TLS_DIALECT_GNU)
509 Use given thread-local storage dialect.
512 Name(tls_dialect) Type(enum tls_dialect)
513 Known TLS dialects (for use with the -mtls-dialect= option):
516 Enum(tls_dialect) String(gnu) Value(TLS_DIALECT_GNU)
519 Enum(tls_dialect) String(gnu2) Value(TLS_DIALECT_GNU2)
522 Target Mask(TLS_DIRECT_SEG_REFS)
523 Use direct references against %gs when accessing tls data.
526 Target RejectNegative Negative(mtune=) Joined Var(ix86_tune_string)
527 Schedule code for given CPU.
530 Target RejectNegative Joined Var(ix86_tune_ctrl_string)
531 Fine grain control of tune features.
534 Target RejectNegative Var(ix86_tune_no_default)
535 Clear all tune features.
538 Target RejectNegative Var(ix86_dump_tunes)
542 Generate code that conforms to Intel MCU psABI.
545 Target RejectNegative Joined Var(ix86_abi) Enum(calling_abi) Init(SYSV_ABI)
546 Generate code that conforms to the given ABI.
549 Name(calling_abi) Type(enum calling_abi)
550 Known ABIs (for use with the -mabi= option):
553 Enum(calling_abi) String(sysv) Value(SYSV_ABI)
556 Enum(calling_abi) String(ms) Value(MS_ABI)
558 mcall-ms2sysv-xlogues
559 Target Mask(CALL_MS2SYSV_XLOGUES) Save
560 Use libgcc stubs to save and restore registers clobbered by 64-bit Microsoft to System V ABI calls.
563 Target RejectNegative Joined Var(ix86_veclibabi_type) Enum(ix86_veclibabi) Init(ix86_veclibabi_type_none)
564 Vector library ABI to use.
567 Name(ix86_veclibabi) Type(enum ix86_veclibabi)
568 Known vectorization library ABIs (for use with the -mveclibabi= option):
571 Enum(ix86_veclibabi) String(svml) Value(ix86_veclibabi_type_svml)
574 Enum(ix86_veclibabi) String(acml) Value(ix86_veclibabi_type_acml)
577 Target Mask(VECT8_RETURNS) Save
578 Return 8-byte vectors in memory.
581 Target Mask(RECIP) Save
582 Generate reciprocals instead of divss and sqrtss.
585 Target RejectNegative Joined Var(ix86_recip_name)
586 Control generation of reciprocal estimates.
589 Target Mask(CLD) Save
590 Generate cld instruction in the function prologue.
593 Target Mask(VZEROUPPER) Save
594 Generate vzeroupper instruction before a transfer of control flow out of
598 Target Mask(STV) Save
599 Disable Scalar to Vector optimization pass transforming 64-bit integer
600 computations into a vector ones.
603 Target RejectNegative Var(flag_dispatch_scheduler)
604 Do dispatch scheduling if processor is bdver1, bdver2, bdver3, bdver4
605 or znver1 and Haifa scheduling is selected.
608 Target Alias(mprefer-vector-width=, 128, 256)
609 Use 128-bit AVX instructions instead of 256-bit AVX instructions in the auto-vectorizer.
611 mprefer-vector-width=
612 Target RejectNegative Joined Var(prefer_vector_width_type) Enum(prefer_vector_width) Init(PVW_NONE) Save
613 Use given register vector width instructions instead of maximum register width in the auto-vectorizer.
616 Name(prefer_vector_width) Type(enum prefer_vector_width)
617 Known preferred register vector length (to use with the -mprefer-vector-width= option):
620 Enum(prefer_vector_width) String(none) Value(PVW_NONE)
623 Enum(prefer_vector_width) String(128) Value(PVW_AVX128)
626 Enum(prefer_vector_width) String(256) Value(PVW_AVX256)
629 Enum(prefer_vector_width) String(512) Value(PVW_AVX512)
632 Target RejectNegative Joined Var(ix86_move_max) Enum(prefer_vector_width) Init(PVW_NONE) Save
633 Maximum number of bits that can be moved from memory to memory efficiently.
636 Target RejectNegative Joined Var(ix86_store_max) Enum(prefer_vector_width) Init(PVW_NONE) Save
637 Maximum number of bits that can be stored to memory efficiently.
642 Target RejectNegative Negative(m64) InverseMask(ISA_64BIT) Var(ix86_isa_flags) Save
643 Generate 32bit i386 code.
646 Target RejectNegative Negative(mx32) Mask(ABI_64) Var(ix86_isa_flags) Save
647 Generate 64bit x86-64 code.
650 Target RejectNegative Negative(m16) Mask(ABI_X32) Var(ix86_isa_flags) Save
651 Generate 32bit x86-64 code.
654 Target RejectNegative Negative(m32) Mask(CODE16) InverseMask(ISA_64BIT) Var(ix86_isa_flags) Save
655 Generate 16bit i386 code.
658 Target Mask(ISA_MMX) Var(ix86_isa_flags) Save
659 Support MMX built-in functions.
662 Target Mask(ISA_3DNOW) Var(ix86_isa_flags) Save
663 Support 3DNow! built-in functions.
666 Target Mask(ISA_3DNOW_A) Var(ix86_isa_flags) Save
667 Support Athlon 3Dnow! built-in functions.
670 Target Mask(ISA_SSE) Var(ix86_isa_flags) Save
671 Support MMX and SSE built-in functions and code generation.
674 Target Mask(ISA_SSE2) Var(ix86_isa_flags) Save
675 Support MMX, SSE and SSE2 built-in functions and code generation.
678 Target Mask(ISA_SSE3) Var(ix86_isa_flags) Save
679 Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation.
682 Target Mask(ISA_SSSE3) Var(ix86_isa_flags) Save
683 Support MMX, SSE, SSE2, SSE3 and SSSE3 built-in functions and code generation.
686 Target Mask(ISA_SSE4_1) Var(ix86_isa_flags) Save
687 Support MMX, SSE, SSE2, SSE3, SSSE3 and SSE4.1 built-in functions and code generation.
690 Target Mask(ISA_SSE4_2) Var(ix86_isa_flags) Save
691 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and code generation.
694 Target RejectNegative Mask(ISA_SSE4_2) Var(ix86_isa_flags) Save
695 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and code generation.
698 Target RejectNegative InverseMask(ISA_SSE4_1) Var(ix86_isa_flags) Save
699 Do not support SSE4.1 and SSE4.2 built-in functions and code generation.
702 Target Undocumented Alias(mavx) Warn(%<-msse5%> was removed)
706 Target Mask(ISA_AVX) Var(ix86_isa_flags) Save
707 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 and AVX built-in functions and code generation.
710 Target Mask(ISA_AVX2) Var(ix86_isa_flags) Save
711 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and AVX2 built-in functions and code generation.
714 Target Mask(ISA_AVX512F) Var(ix86_isa_flags) Save
715 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F built-in functions and code generation.
718 Target Mask(ISA_AVX512PF) Var(ix86_isa_flags) Save
719 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512PF built-in functions and code generation.
722 Target Mask(ISA_AVX512ER) Var(ix86_isa_flags) Save
723 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512ER built-in functions and code generation.
726 Target Mask(ISA_AVX512CD) Var(ix86_isa_flags) Save
727 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512CD built-in functions and code generation.
730 Target Mask(ISA_AVX512DQ) Var(ix86_isa_flags) Save
731 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512DQ built-in functions and code generation.
734 Target Mask(ISA_AVX512BW) Var(ix86_isa_flags) Save
735 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512BW built-in functions and code generation.
738 Target Mask(ISA_AVX512VL) Var(ix86_isa_flags) Save
739 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512VL built-in functions and code generation.
742 Target Mask(ISA_AVX512IFMA) Var(ix86_isa_flags) Save
743 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512IFMA built-in functions and code generation.
746 Target Mask(ISA_AVX512VBMI) Var(ix86_isa_flags) Save
747 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512VBMI built-in functions and code generation.
750 Target Mask(ISA2_AVX5124FMAPS) Var(ix86_isa_flags2) Save
751 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX5124FMAPS built-in functions and code generation.
754 Target Mask(ISA2_AVX5124VNNIW) Var(ix86_isa_flags2) Save
755 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX5124VNNIW built-in functions and code generation.
758 Target Mask(ISA_AVX512VPOPCNTDQ) Var(ix86_isa_flags) Save
759 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512VPOPCNTDQ built-in functions and code generation.
762 Target Mask(ISA_AVX512VBMI2) Var(ix86_isa_flags) Save
763 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512VBMI2 built-in functions and code generation.
766 Target Mask(ISA_AVX512VNNI) Var(ix86_isa_flags) Save
767 Support AVX512VNNI built-in functions and code generation.
770 Target Mask(ISA_AVX512BITALG) Var(ix86_isa_flags) Save
771 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512BITALG built-in functions and code generation.
774 Target Mask(ISA2_AVX512VP2INTERSECT) Var(ix86_isa_flags2) Save
775 Support AVX512VP2INTERSECT built-in functions and code generation.
778 Target Mask(ISA_FMA) Var(ix86_isa_flags) Save
779 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and FMA built-in functions and code generation.
782 Target Mask(ISA_SSE4A) Var(ix86_isa_flags) Save
783 Support MMX, SSE, SSE2, SSE3 and SSE4A built-in functions and code generation.
786 Target Mask(ISA_FMA4) Var(ix86_isa_flags) Save
787 Support FMA4 built-in functions and code generation.
790 Target Mask(ISA_XOP) Var(ix86_isa_flags) Save
791 Support XOP built-in functions and code generation.
794 Target Mask(ISA_LWP) Var(ix86_isa_flags) Save
795 Support LWP built-in functions and code generation.
798 Target Mask(ISA_ABM) Var(ix86_isa_flags) Save
799 Support code generation of Advanced Bit Manipulation (ABM) instructions.
802 Target Mask(ISA_POPCNT) Var(ix86_isa_flags) Save
803 Support code generation of popcnt instruction.
806 Target Mask(ISA2_PCONFIG) Var(ix86_isa_flags2) Save
807 Support PCONFIG built-in functions and code generation.
810 Target Mask(ISA2_WBNOINVD) Var(ix86_isa_flags2) Save
811 Support WBNOINVD built-in functions and code generation.
814 Target Mask(ISA2_PTWRITE) Var(ix86_isa_flags2) Save
815 Support PTWRITE built-in functions and code generation.
818 Target Mask(ISA2_UINTR) Var(ix86_isa_flags2) Save
819 Support UINTR built-in functions and code generation.
822 Target Mask(ISA2_SGX) Var(ix86_isa_flags2) Save
823 Support SGX built-in functions and code generation.
826 Target Mask(ISA2_RDPID) Var(ix86_isa_flags2) Save
827 Support RDPID built-in functions and code generation.
830 Target Mask(ISA_GFNI) Var(ix86_isa_flags) Save
831 Support GFNI built-in functions and code generation.
834 Target Mask(ISA2_VAES) Var(ix86_isa_flags2) Save
835 Support VAES built-in functions and code generation.
838 Target Mask(ISA_VPCLMULQDQ) Var(ix86_isa_flags) Save
839 Support VPCLMULQDQ built-in functions and code generation.
842 Target Mask(ISA_BMI) Var(ix86_isa_flags) Save
843 Support BMI built-in functions and code generation.
846 Target Mask(ISA_BMI2) Var(ix86_isa_flags) Save
847 Support BMI2 built-in functions and code generation.
850 Target Mask(ISA_LZCNT) Var(ix86_isa_flags) Save
851 Support LZCNT built-in function and code generation.
854 Target Mask(ISA2_HLE) Var(ix86_isa_flags2) Save
855 Support Hardware Lock Elision prefixes.
858 Target Mask(ISA_RDSEED) Var(ix86_isa_flags) Save
859 Support RDSEED instruction.
862 Target Mask(ISA_PRFCHW) Var(ix86_isa_flags) Save
863 Support PREFETCHW instruction.
866 Target Mask(ISA_ADX) Var(ix86_isa_flags) Save
867 Support flag-preserving add-carry instructions.
870 Target Mask(ISA_CLFLUSHOPT) Var(ix86_isa_flags) Save
871 Support CLFLUSHOPT instructions.
874 Target Mask(ISA_CLWB) Var(ix86_isa_flags) Save
875 Support CLWB instruction.
881 Target Mask(ISA_FXSR) Var(ix86_isa_flags) Save
882 Support FXSAVE and FXRSTOR instructions.
885 Target Mask(ISA_XSAVE) Var(ix86_isa_flags) Save
886 Support XSAVE and XRSTOR instructions.
889 Target Mask(ISA_XSAVEOPT) Var(ix86_isa_flags) Save
890 Support XSAVEOPT instruction.
893 Target Mask(ISA_XSAVEC) Var(ix86_isa_flags) Save
894 Support XSAVEC instructions.
897 Target Mask(ISA_XSAVES) Var(ix86_isa_flags) Save
898 Support XSAVES and XRSTORS instructions.
901 Target Mask(ISA_TBM) Var(ix86_isa_flags) Save
902 Support TBM built-in functions and code generation.
905 Target Mask(ISA2_CX16) Var(ix86_isa_flags2) Save
906 Support code generation of cmpxchg16b instruction.
909 Target Mask(ISA_SAHF) Var(ix86_isa_flags) Save
910 Support code generation of sahf instruction in 64bit x86-64 code.
913 Target Mask(ISA2_MOVBE) Var(ix86_isa_flags2) Save
914 Support code generation of movbe instruction.
917 Target Mask(ISA_CRC32) Var(ix86_isa_flags) Save
918 Support code generation of crc32 instruction.
921 Target Mask(ISA_AES) Var(ix86_isa_flags) Save
922 Support AES built-in functions and code generation.
925 Target Mask(ISA_SHA) Var(ix86_isa_flags) Save
926 Support SHA1 and SHA256 built-in functions and code generation.
929 Target Mask(ISA_PCLMUL) Var(ix86_isa_flags) Save
930 Support PCLMUL built-in functions and code generation.
933 Target Var(ix86_sse2avx)
934 Encode SSE instructions with VEX prefix.
937 Target Mask(ISA_FSGSBASE) Var(ix86_isa_flags) Save
938 Support FSGSBASE built-in functions and code generation.
941 Target Mask(ISA_RDRND) Var(ix86_isa_flags) Save
942 Support RDRND built-in functions and code generation.
945 Target Mask(ISA_F16C) Var(ix86_isa_flags) Save
946 Support F16C built-in functions and code generation.
949 Target Mask(ISA_PREFETCHWT1) Var(ix86_isa_flags) Save
950 Support PREFETCHWT1 built-in functions and code generation.
953 Target Save Var(flag_fentry)
954 Emit profiling counter call at function entry before prologue.
957 Target Var(flag_record_mcount)
958 Generate __mcount_loc section with all mcount or __fentry__ calls.
961 Target Var(flag_nop_mcount)
962 Generate mcount/__fentry__ calls as nops. To activate they need to be
966 Target RejectNegative Joined Var(fentry_name)
967 Set name of __fentry__ symbol called at function entry.
970 Target RejectNegative Joined Var(fentry_section)
971 Set name of section to record mrecord-mcount calls.
974 Target Var(flag_skip_rax_setup)
975 Skip setting up RAX register when passing variable arguments.
978 Target Mask(USE_8BIT_IDIV) Save
979 Expand 32bit/64bit integer divide into 8bit unsigned integer divide with run-time check.
981 mavx256-split-unaligned-load
982 Target Mask(AVX256_SPLIT_UNALIGNED_LOAD) Save
983 Split 32-byte AVX unaligned load.
985 mavx256-split-unaligned-store
986 Target Mask(AVX256_SPLIT_UNALIGNED_STORE) Save
987 Split 32-byte AVX unaligned store.
990 Target Mask(ISA_RTM) Var(ix86_isa_flags) Save
991 Support RTM built-in functions and code generation.
995 Removed in GCC 9. This switch has no effect.
998 Target Mask(ISA2_MWAITX) Var(ix86_isa_flags2) Save
999 Support MWAITX and MONITORX built-in functions and code generation.
1002 Target Mask(ISA2_CLZERO) Var(ix86_isa_flags2) Save
1003 Support CLZERO built-in functions and code generation.
1006 Target Mask(ISA_PKU) Var(ix86_isa_flags) Save
1007 Support PKU built-in functions and code generation.
1009 mstack-protector-guard=
1010 Target RejectNegative Joined Enum(stack_protector_guard) Var(ix86_stack_protector_guard) Init(SSP_TLS)
1011 Use given stack-protector guard.
1014 Name(stack_protector_guard) Type(enum stack_protector_guard)
1015 Known stack protector guard (for use with the -mstack-protector-guard= option):
1018 Enum(stack_protector_guard) String(tls) Value(SSP_TLS)
1021 Enum(stack_protector_guard) String(global) Value(SSP_GLOBAL)
1023 mstack-protector-guard-reg=
1024 Target Save RejectNegative Joined Var(ix86_stack_protector_guard_reg_str)
1025 Use the given base register for addressing the stack-protector guard.
1028 addr_space_t ix86_stack_protector_guard_reg = ADDR_SPACE_GENERIC
1030 mstack-protector-guard-offset=
1031 Target Save RejectNegative Joined Integer Var(ix86_stack_protector_guard_offset_str)
1032 Use the given offset for addressing the stack-protector guard.
1035 HOST_WIDE_INT ix86_stack_protector_guard_offset = 0
1037 mstack-protector-guard-symbol=
1038 Target Save RejectNegative Joined Integer Var(ix86_stack_protector_guard_symbol_str)
1039 Use the given symbol for addressing the stack-protector guard.
1045 Target RejectNegative Mask(GENERAL_REGS_ONLY) Var(ix86_target_flags) Save
1046 Generate code which uses only the general registers.
1049 Target Mask(ISA_SHSTK) Var(ix86_isa_flags) Save
1050 Enable shadow stack built-in functions from Control-flow Enforcement
1054 Target Var(flag_cet_switch) Init(0)
1055 Turn on CET instrumentation for switch statements that use a jump table and
1059 Target Var(flag_manual_endbr) Init(0)
1060 Insert ENDBR instruction at function entry only via cf_check attribute
1061 for CET instrumentation.
1063 mforce-indirect-call
1064 Target Var(flag_force_indirect_call) Init(0)
1065 Make all function calls indirect.
1068 Target RejectNegative Joined Enum(indirect_branch) Var(ix86_indirect_branch) Init(indirect_branch_keep)
1069 Convert indirect call and jump to call and return thunks.
1072 Target RejectNegative Joined Enum(indirect_branch) Var(ix86_function_return) Init(indirect_branch_keep)
1073 Convert function return to call and return thunk.
1076 Name(indirect_branch) Type(enum indirect_branch)
1077 Known indirect branch choices (for use with the -mindirect-branch=/-mfunction-return= options):
1080 Enum(indirect_branch) String(keep) Value(indirect_branch_keep)
1083 Enum(indirect_branch) String(thunk) Value(indirect_branch_thunk)
1086 Enum(indirect_branch) String(thunk-inline) Value(indirect_branch_thunk_inline)
1089 Enum(indirect_branch) String(thunk-extern) Value(indirect_branch_thunk_extern)
1091 mindirect-branch-cs-prefix
1092 Target Var(ix86_indirect_branch_cs_prefix) Init(0)
1093 Add CS prefix to call and jmp to indirect thunk with branch target in r8-r15 registers.
1095 mindirect-branch-register
1096 Target Var(ix86_indirect_branch_register) Init(0)
1097 Force indirect call and jump via register.
1100 Target Mask(ISA_MOVDIRI) Var(ix86_isa_flags) Save
1101 Support MOVDIRI built-in functions and code generation.
1104 Target Mask(ISA2_MOVDIR64B) Var(ix86_isa_flags2) Save
1105 Support MOVDIR64B built-in functions and code generation.
1108 Target Mask(ISA2_WAITPKG) Var(ix86_isa_flags2) Save
1109 Support WAITPKG built-in functions and code generation.
1112 Target Mask(ISA2_CLDEMOTE) Var(ix86_isa_flags2) Save
1113 Support CLDEMOTE built-in functions and code generation.
1116 Target RejectNegative Joined Enum(instrument_return) Var(ix86_instrument_return) Init(instrument_return_none)
1117 Instrument function exit in instrumented functions with __fentry__.
1120 Name(instrument_return) Type(enum instrument_return)
1121 Known choices for return instrumentation with -minstrument-return=:
1124 Enum(instrument_return) String(none) Value(instrument_return_none)
1127 Enum(instrument_return) String(call) Value(instrument_return_call)
1130 Enum(instrument_return) String(nop5) Value(instrument_return_nop5)
1133 Target Var(ix86_flag_record_return) Init(0)
1134 Generate a __return_loc section pointing to all return instrumentation code.
1137 Target RejectNegative Joined Enum(harden_sls) Var(ix86_harden_sls) Init(harden_sls_none)
1138 Generate code to mitigate against straight line speculation.
1141 Name(harden_sls) Type(enum harden_sls)
1142 Known choices for mitigation against straight line speculation with -mharden-sls=:
1145 Enum(harden_sls) String(none) Value(harden_sls_none)
1148 Enum(harden_sls) String(return) Value(harden_sls_return)
1151 Enum(harden_sls) String(indirect-jmp) Value(harden_sls_indirect_jmp)
1154 Enum(harden_sls) String(all) Value(harden_sls_all)
1157 Target Mask(ISA2_AVX512BF16) Var(ix86_isa_flags2) Save
1158 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and
1159 AVX512BF16 built-in functions and code generation.
1162 Target Mask(ISA2_ENQCMD) Var(ix86_isa_flags2) Save
1163 Support ENQCMD built-in functions and code generation.
1166 Target Mask(ISA2_SERIALIZE) Var(ix86_isa_flags2) Save
1167 Support SERIALIZE built-in functions and code generation.
1170 Target Mask(ISA2_TSXLDTRK) Var(ix86_isa_flags2) Save
1171 Support TSXLDTRK built-in functions and code generation.
1174 Target Mask(ISA2_AMX_TILE) Var(ix86_isa_flags2) Save
1175 Support AMX-TILE built-in functions and code generation.
1178 Target Mask(ISA2_AMX_INT8) Var(ix86_isa_flags2) Save
1179 Support AMX-INT8 built-in functions and code generation.
1182 Target Mask(ISA2_AMX_BF16) Var(ix86_isa_flags2) Save
1183 Support AMX-BF16 built-in functions and code generation.
1186 Target Mask(ISA2_HRESET) Var(ix86_isa_flags2) Save
1187 Support HRESET built-in functions and code generation.
1190 Target Mask(ISA2_KL) Var(ix86_isa_flags2) Save
1191 Support KL built-in functions and code generation.
1194 Target Mask(ISA2_WIDEKL) Var(ix86_isa_flags2) Save
1195 Support WIDEKL built-in functions and code generation.
1198 Target Mask(ISA2_AVXVNNI) Var(ix86_isa_flags2) Save
1199 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and
1200 AVXVNNI built-in functions and code generation.
1203 Target Var(ix86_needed) Save
1204 Emit GNU_PROPERTY_X86_ISA_1_NEEDED GNU property.
1207 Target Mask(ISA2_MWAIT) Var(ix86_isa_flags2) Save
1208 Support MWAIT and MONITOR built-in functions and code generation.
1211 Target Mask(ISA2_AVX512FP16) Var(ix86_isa_flags2) Save
1212 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512FP16 built-in functions and code generation.
1214 mdirect-extern-access
1215 Target Var(ix86_direct_extern_access) Init(1)
1216 Do not use GOT to access external symbols.
1218 -param=x86-stlf-window-ninsns=
1219 Target Joined UInteger Var(x86_stlf_window_ninsns) Init(64) Param
1220 Instructions number above which STFL stall penalty can be compensated.
1223 Target Mask(ISA2_AVXIFMA) Var(ix86_isa_flags2) Save
1224 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and
1225 AVXIFMA built-in functions and code generation.
1228 Target Mask(ISA2_AVXVNNIINT8) Var(ix86_isa_flags2) Save
1229 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and
1230 AVXVNNIINT8 built-in functions and code generation.
1233 Target Mask(ISA2_AVXNECONVERT) Var(ix86_isa_flags2) Save
1234 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and
1235 AVXNECONVERT build-in functions and code generation.
1238 Target Mask(ISA2_CMPCCXADD) Var(ix86_isa_flags2) Save
1239 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and
1240 CMPCCXADD build-in functions and code generation.
1243 Target Mask(ISA2_AMX_FP16) Var(ix86_isa_flags2) Save
1244 Support AMX-FP16 built-in functions and code generation.
1247 Target Mask(ISA2_PREFETCHI) Var(ix86_isa_flags2) Save
1248 Support PREFETCHI built-in functions and code generation.
1251 Target Mask(ISA2_RAOINT) Var(ix86_isa_flags2) Save
1252 Support RAOINT built-in functions and code generation.
1254 munroll-only-small-loops
1255 Target Var(ix86_unroll_only_small_loops) Init(0) Save
1256 Enable conservative small loop unrolling.
1259 Target RejectNegative Joined Enum(lam_type) Var(ix86_lam_type) Init(lam_none)
1260 -mlam=[none|u48|u57] Instrument meta data position in user data pointers.
1263 Name(lam_type) Type(enum lam_type) UnknownError(unknown lam type %qs)
1266 Enum(lam_type) String(none) Value(lam_none)
1269 Enum(lam_type) String(u48) Value(lam_u48)
1272 Enum(lam_type) String(u57) Value(lam_u57)