1 ; Options for the IA-32 and AMD64 ports of the compiler.
3 ; Copyright (C) 2005-2016 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 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-dialect= 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)
271 Branches are this expensive (1-5, arbitrary units).
273 mlarge-data-threshold=
274 Target RejectNegative Joined UInteger Var(ix86_section_threshold) Init(DEFAULT_LARGE_SECTION_THRESHOLD)
275 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)
379 Target Report Mask(MS_BITFIELD_LAYOUT) Save
380 Use native (MS) bitfield layout.
383 Target RejectNegative Report Mask(NO_ALIGN_STRINGOPS) Undocumented Save
386 Target RejectNegative Report Mask(NO_FANCY_MATH_387) Undocumented Save
389 Target RejectNegative Report Mask(NO_PUSH_ARGS) Undocumented Save
392 Target RejectNegative Report Mask(NO_RED_ZONE) Undocumented Save
394 momit-leaf-frame-pointer
395 Target Report Mask(OMIT_LEAF_FRAME_POINTER) Save
396 Omit the frame pointer in leaf functions.
399 Target RejectNegative Report
400 Set 80387 floating-point precision to 32-bit.
403 Target RejectNegative Report
404 Set 80387 floating-point precision to 64-bit.
407 Target RejectNegative Report
408 Set 80387 floating-point precision to 80-bit.
410 mpreferred-stack-boundary=
411 Target RejectNegative Joined UInteger Var(ix86_preferred_stack_boundary_arg)
412 Attempt to keep stack aligned to this power of 2.
414 mincoming-stack-boundary=
415 Target RejectNegative Joined UInteger Var(ix86_incoming_stack_boundary_arg)
416 Assume incoming stack aligned to this power of 2.
419 Target Report InverseMask(NO_PUSH_ARGS, PUSH_ARGS) Save
420 Use push instructions to save outgoing arguments.
423 Target RejectNegative Report InverseMask(NO_RED_ZONE, RED_ZONE) Save
424 Use red-zone in the x86-64 code.
427 Target RejectNegative Joined UInteger Var(ix86_regparm)
428 Number of registers used to pass integer arguments.
431 Target Report Mask(RTD) Save
432 Alternate calling convention.
435 Target InverseMask(80387) Save
436 Do not use hardware fp.
439 Target RejectNegative Mask(SSEREGPARM) Save
440 Use SSE register passing conventions for SF and DF mode.
443 Target Report Var(ix86_force_align_arg_pointer) Init(-1)
444 Realign stack in prologue.
447 Target Report Mask(STACK_PROBE) Save
448 Enable stack probing.
451 Target RejectNegative Joined Var(ix86_tune_memcpy_strategy)
452 Specify memcpy expansion strategy when expected size is known.
455 Target RejectNegative Joined Var(ix86_tune_memset_strategy)
456 Specify memset expansion strategy when expected size is known.
459 Target RejectNegative Joined Enum(stringop_alg) Var(ix86_stringop_alg) Init(no_stringop)
460 Chose strategy to generate stringop using.
463 Name(stringop_alg) Type(enum stringop_alg)
464 Valid arguments to -mstringop-strategy=:
467 Enum(stringop_alg) String(rep_byte) Value(rep_prefix_1_byte)
470 Enum(stringop_alg) String(libcall) Value(libcall)
473 Enum(stringop_alg) String(rep_4byte) Value(rep_prefix_4_byte)
476 Enum(stringop_alg) String(rep_8byte) Value(rep_prefix_8_byte)
479 Enum(stringop_alg) String(byte_loop) Value(loop_1_byte)
482 Enum(stringop_alg) String(loop) Value(loop)
485 Enum(stringop_alg) String(unrolled_loop) Value(unrolled_loop)
488 Enum(stringop_alg) String(vector_loop) Value(vector_loop)
491 Target RejectNegative Joined Var(ix86_tls_dialect) Enum(tls_dialect) Init(TLS_DIALECT_GNU)
492 Use given thread-local storage dialect.
495 Name(tls_dialect) Type(enum tls_dialect)
496 Known TLS dialects (for use with the -mtls-dialect= option):
499 Enum(tls_dialect) String(gnu) Value(TLS_DIALECT_GNU)
502 Enum(tls_dialect) String(gnu2) Value(TLS_DIALECT_GNU2)
505 Target Report Mask(TLS_DIRECT_SEG_REFS)
506 Use direct references against %gs when accessing tls data.
509 Target RejectNegative Joined Var(ix86_tune_string)
510 Schedule code for given CPU.
513 Target RejectNegative Joined Var(ix86_tune_ctrl_string)
514 Fine grain control of tune features.
517 Target RejectNegative Var(ix86_tune_no_default) Init(0)
518 Clear all tune features.
521 Target RejectNegative Var(ix86_dump_tunes) Init(0)
524 Target Report Mask(IAMCU)
525 Generate code that conforms to Intel MCU psABI.
528 Target RejectNegative Joined Var(ix86_abi) Enum(calling_abi) Init(SYSV_ABI)
529 Generate code that conforms to the given ABI.
532 Name(calling_abi) Type(enum calling_abi)
533 Known ABIs (for use with the -mabi= option):
536 Enum(calling_abi) String(sysv) Value(SYSV_ABI)
539 Enum(calling_abi) String(ms) Value(MS_ABI)
542 Target RejectNegative Joined Var(ix86_veclibabi_type) Enum(ix86_veclibabi) Init(ix86_veclibabi_type_none)
543 Vector library ABI to use.
546 Name(ix86_veclibabi) Type(enum ix86_veclibabi)
547 Known vectorization library ABIs (for use with the -mveclibabi= option):
550 Enum(ix86_veclibabi) String(svml) Value(ix86_veclibabi_type_svml)
553 Enum(ix86_veclibabi) String(acml) Value(ix86_veclibabi_type_acml)
556 Target Report Mask(VECT8_RETURNS) Save
557 Return 8-byte vectors in memory.
560 Target Report Mask(RECIP) Save
561 Generate reciprocals instead of divss and sqrtss.
564 Target Report RejectNegative Joined Var(ix86_recip_name)
565 Control generation of reciprocal estimates.
568 Target Report Mask(CLD) Save
569 Generate cld instruction in the function prologue.
572 Target Report Mask(VZEROUPPER) Save
573 Generate vzeroupper instruction before a transfer of control flow out of
577 Target Report Mask(STV) Save
578 Disable Scalar to Vector optimization pass transforming 64-bit integer
579 computations into a vector ones.
582 Target RejectNegative Var(flag_dispatch_scheduler)
583 Do dispatch scheduling if processor is bdver1, bdver2, bdver3, bdver4
584 or znver1 and Haifa scheduling is selected.
587 Target Report Mask(PREFER_AVX128) SAVE
588 Use 128-bit AVX instructions instead of 256-bit AVX instructions in the auto-vectorizer.
593 Target RejectNegative Negative(m64) Report InverseMask(ISA_64BIT) Var(ix86_isa_flags) Save
594 Generate 32bit i386 code.
597 Target RejectNegative Negative(mx32) Report Mask(ABI_64) Var(ix86_isa_flags) Save
598 Generate 64bit x86-64 code.
601 Target RejectNegative Negative(m16) Report Mask(ABI_X32) Var(ix86_isa_flags) Save
602 Generate 32bit x86-64 code.
605 Target RejectNegative Negative(m32) Report Mask(CODE16) InverseMask(ISA_64BIT) Var(ix86_isa_flags) Save
606 Generate 16bit i386 code.
609 Target Report Mask(ISA_MMX) Var(ix86_isa_flags) Save
610 Support MMX built-in functions.
613 Target Report Mask(ISA_3DNOW) Var(ix86_isa_flags) Save
614 Support 3DNow! built-in functions.
617 Target Undocumented Mask(ISA_3DNOW_A) Var(ix86_isa_flags) Save
618 Support Athlon 3Dnow! built-in functions.
621 Target Report Mask(ISA_SSE) Var(ix86_isa_flags) Save
622 Support MMX and SSE built-in functions and code generation.
625 Target Report Mask(ISA_SSE2) Var(ix86_isa_flags) Save
626 Support MMX, SSE and SSE2 built-in functions and code generation.
629 Target Report Mask(ISA_SSE3) Var(ix86_isa_flags) Save
630 Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation.
633 Target Report Mask(ISA_SSSE3) Var(ix86_isa_flags) Save
634 Support MMX, SSE, SSE2, SSE3 and SSSE3 built-in functions and code generation.
637 Target Report Mask(ISA_SSE4_1) Var(ix86_isa_flags) Save
638 Support MMX, SSE, SSE2, SSE3, SSSE3 and SSE4.1 built-in functions and code generation.
641 Target Report Mask(ISA_SSE4_2) Var(ix86_isa_flags) Save
642 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and code generation.
645 Target RejectNegative Report Mask(ISA_SSE4_2) Var(ix86_isa_flags) Save
646 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and code generation.
649 Target RejectNegative Report InverseMask(ISA_SSE4_1) Var(ix86_isa_flags) Save
650 Do not support SSE4.1 and SSE4.2 built-in functions and code generation.
653 Target Undocumented Alias(mavx) Warn(%<-msse5%> was removed)
657 Target Report Mask(ISA_AVX) Var(ix86_isa_flags) Save
658 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 and AVX built-in functions and code generation.
661 Target Report Mask(ISA_AVX2) Var(ix86_isa_flags) Save
662 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and AVX2 built-in functions and code generation.
665 Target Report Mask(ISA_AVX512F) Var(ix86_isa_flags) Save
666 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F built-in functions and code generation.
669 Target Report Mask(ISA_AVX512PF) Var(ix86_isa_flags) Save
670 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512PF built-in functions and code generation.
673 Target Report Mask(ISA_AVX512ER) Var(ix86_isa_flags) Save
674 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512ER built-in functions and code generation.
677 Target Report Mask(ISA_AVX512CD) Var(ix86_isa_flags) Save
678 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512CD built-in functions and code generation.
681 Target Report Mask(ISA_AVX512DQ) Var(ix86_isa_flags) Save
682 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512DQ built-in functions and code generation.
685 Target Report Mask(ISA_AVX512BW) Var(ix86_isa_flags) Save
686 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512BW built-in functions and code generation.
689 Target Report Mask(ISA_AVX512VL) Var(ix86_isa_flags) Save
690 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512VL built-in functions and code generation.
693 Target Report Mask(ISA_AVX512IFMA) Var(ix86_isa_flags) Save
694 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512IFMA built-in functions and code generation.
697 Target Report Mask(ISA_AVX512VBMI) Var(ix86_isa_flags) Save
698 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512VBMI built-in functions and code generation.
701 Target Report Mask(ISA_AVX5124FMAPS) Var(ix86_isa_flags2) Save
702 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX5124FMAPS built-in functions and code generation.
705 Target Report Mask(ISA_AVX5124VNNIW) Var(ix86_isa_flags2) Save
706 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX5124VNNIW built-in functions and code generation.
709 Target Report Mask(ISA_FMA) Var(ix86_isa_flags) Save
710 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and FMA built-in functions and code generation.
713 Target Report Mask(ISA_SSE4A) Var(ix86_isa_flags) Save
714 Support MMX, SSE, SSE2, SSE3 and SSE4A built-in functions and code generation.
717 Target Report Mask(ISA_FMA4) Var(ix86_isa_flags) Save
718 Support FMA4 built-in functions and code generation.
721 Target Report Mask(ISA_XOP) Var(ix86_isa_flags) Save
722 Support XOP built-in functions and code generation.
725 Target Report Mask(ISA_LWP) Var(ix86_isa_flags) Save
726 Support LWP built-in functions and code generation.
729 Target Report Mask(ISA_ABM) Var(ix86_isa_flags) Save
730 Support code generation of Advanced Bit Manipulation (ABM) instructions.
733 Target Report Mask(ISA_POPCNT) Var(ix86_isa_flags) Save
734 Support code generation of popcnt instruction.
737 Target Report Mask(ISA_BMI) Var(ix86_isa_flags) Save
738 Support BMI built-in functions and code generation.
741 Target Report Mask(ISA_BMI2) Var(ix86_isa_flags) Save
742 Support BMI2 built-in functions and code generation.
745 Target Report Mask(ISA_LZCNT) Var(ix86_isa_flags) Save
746 Support LZCNT built-in function and code generation.
749 Target Report Mask(ISA_HLE) Var(ix86_isa_flags) Save
750 Support Hardware Lock Elision prefixes.
753 Target Report Mask(ISA_RDSEED) Var(ix86_isa_flags) Save
754 Support RDSEED instruction.
757 Target Report Mask(ISA_PRFCHW) Var(ix86_isa_flags) Save
758 Support PREFETCHW instruction.
761 Target Report Mask(ISA_ADX) Var(ix86_isa_flags) Save
762 Support flag-preserving add-carry instructions.
765 Target Report Mask(ISA_CLFLUSHOPT) Var(ix86_isa_flags) Save
766 Support CLFLUSHOPT instructions.
769 Target Report Mask(ISA_CLWB) Var(ix86_isa_flags) Save
770 Support CLWB instruction.
773 Target Undocumented Warn(%<-mpcommit%> was deprecated)
777 Target Report Mask(ISA_FXSR) Var(ix86_isa_flags) Save
778 Support FXSAVE and FXRSTOR instructions.
781 Target Report Mask(ISA_XSAVE) Var(ix86_isa_flags) Save
782 Support XSAVE and XRSTOR instructions.
785 Target Report Mask(ISA_XSAVEOPT) Var(ix86_isa_flags) Save
786 Support XSAVEOPT instruction.
789 Target Report Mask(ISA_XSAVEC) Var(ix86_isa_flags) Save
790 Support XSAVEC instructions.
793 Target Report Mask(ISA_XSAVES) Var(ix86_isa_flags) Save
794 Support XSAVES and XRSTORS instructions.
797 Target Report Mask(ISA_TBM) Var(ix86_isa_flags) Save
798 Support TBM built-in functions and code generation.
801 Target Report Mask(ISA_CX16) Var(ix86_isa_flags) Save
802 Support code generation of cmpxchg16b instruction.
805 Target Report Mask(ISA_SAHF) Var(ix86_isa_flags) Save
806 Support code generation of sahf instruction in 64bit x86-64 code.
809 Target Report Mask(ISA_MOVBE) Var(ix86_isa_flags) Save
810 Support code generation of movbe instruction.
813 Target Report Mask(ISA_CRC32) Var(ix86_isa_flags) Save
814 Support code generation of crc32 instruction.
817 Target Report Mask(ISA_AES) Var(ix86_isa_flags) Save
818 Support AES built-in functions and code generation.
821 Target Report Mask(ISA_SHA) Var(ix86_isa_flags) Save
822 Support SHA1 and SHA256 built-in functions and code generation.
825 Target Report Mask(ISA_PCLMUL) Var(ix86_isa_flags) Save
826 Support PCLMUL built-in functions and code generation.
829 Target Report Var(ix86_sse2avx)
830 Encode SSE instructions with VEX prefix.
833 Target Report Mask(ISA_FSGSBASE) Var(ix86_isa_flags) Save
834 Support FSGSBASE built-in functions and code generation.
837 Target Report Mask(ISA_RDRND) Var(ix86_isa_flags) Save
838 Support RDRND built-in functions and code generation.
841 Target Report Mask(ISA_F16C) Var(ix86_isa_flags) Save
842 Support F16C built-in functions and code generation.
845 Target Report Mask(ISA_PREFETCHWT1) Var(ix86_isa_flags) Save
846 Support PREFETCHWT1 built-in functions and code generation.
849 Target Report Var(flag_fentry) Init(-1)
850 Emit profiling counter call at function entry before prologue.
853 Target Report Var(flag_record_mcount) Init(0)
854 Generate __mcount_loc section with all mcount or __fentry__ calls.
857 Target Report Var(flag_nop_mcount) Init(0)
858 Generate mcount/__fentry__ calls as nops. To activate they need to be
862 Target Report Var(flag_skip_rax_setup) Init(0)
863 Skip setting up RAX register when passing variable arguments.
866 Target Report Mask(USE_8BIT_IDIV) Save
867 Expand 32bit/64bit integer divide into 8bit unsigned integer divide with run-time check.
869 mavx256-split-unaligned-load
870 Target Report Mask(AVX256_SPLIT_UNALIGNED_LOAD) Save
871 Split 32-byte AVX unaligned load.
873 mavx256-split-unaligned-store
874 Target Report Mask(AVX256_SPLIT_UNALIGNED_STORE) Save
875 Split 32-byte AVX unaligned store.
878 Target Report Mask(ISA_RTM) Var(ix86_isa_flags) Save
879 Support RTM built-in functions and code generation.
882 Target Report Mask(ISA_MPX) Var(ix86_isa_flags) Save
883 Support MPX code generation.
886 Target Report Mask(ISA_MWAITX) Var(ix86_isa_flags) Save
887 Support MWAITX and MONITORX built-in functions and code generation.
890 Target Report Mask(ISA_CLZERO) Var(ix86_isa_flags) Save
891 Support CLZERO built-in functions and code generation.
894 Target Report Mask(ISA_PKU) Var(ix86_isa_flags) Save
895 Support PKU built-in functions and code generation.
897 mstack-protector-guard=
898 Target RejectNegative Joined Enum(stack_protector_guard) Var(ix86_stack_protector_guard) Init(SSP_TLS)
899 Use given stack-protector guard.
902 Name(stack_protector_guard) Type(enum stack_protector_guard)
903 Known stack protector guard (for use with the -mstack-protector-guard= option):
906 Enum(stack_protector_guard) String(tls) Value(SSP_TLS)
909 Enum(stack_protector_guard) String(global) Value(SSP_GLOBAL)
912 Target Var(flag_mitigate_rop) Init(0)
913 Attempt to avoid generating instruction sequences containing ret bytes.
916 Target Report RejectNegative Mask(GENERAL_REGS_ONLY) Var(ix86_target_flags) Save
917 Generate code which uses only the general registers.