1; Options for the IA-32 and AMD64 ports of the compiler.
2
3; Copyright (C) 2005-2020 Free Software Foundation, Inc.
4;
5; This file is part of GCC.
6;
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.
11;
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.
16;
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/>.
20
21HeaderInclude
22config/i386/i386-opts.h
23
24; Bit flags that specify the ISA we are compiling for.
25Variable
26HOST_WIDE_INT ix86_isa_flags = TARGET_64BIT_DEFAULT | TARGET_SUBTARGET_ISA_DEFAULT
27
28Variable
29HOST_WIDE_INT ix86_isa_flags2 = 0
30
31; A mask of ix86_isa_flags that includes bit X if X was set or cleared
32; on the command line.
33Variable
34HOST_WIDE_INT ix86_isa_flags_explicit
35
36Variable
37HOST_WIDE_INT ix86_isa_flags2_explicit
38
39; Additional target flags
40Variable
41int ix86_target_flags
42
43TargetVariable
44int recip_mask = RECIP_MASK_DEFAULT
45
46Variable
47int recip_mask_explicit
48
49TargetSave
50int x_recip_mask_explicit
51
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.
55TargetVariable
56enum excess_precision ix86_excess_precision = EXCESS_PRECISION_DEFAULT
57
58;; Similarly for flag_unsafe_math_optimizations.
59TargetVariable
60bool ix86_unsafe_math_optimizations = false
61
62;; Definitions to add to the cl_target_option structure
63;; -march= processor
64TargetSave
65unsigned char arch
66
67;; -mtune= processor
68TargetSave
69unsigned char tune
70
71;; -march= processor-string
72TargetSave
73const char *x_ix86_arch_string
74
75;; -mtune= processor-string
76TargetSave
77const char *x_ix86_tune_string
78
79;; CPU schedule model
80TargetSave
81unsigned char schedule
82
83;; True if processor has SSE prefetch instruction.
84TargetSave
85unsigned char prefetch_sse
86
87;; branch cost
88TargetSave
89unsigned char branch_cost
90
91;; which flags were passed by the user
92TargetSave
93HOST_WIDE_INT x_ix86_isa_flags2_explicit
94
95;; which flags were passed by the user
96TargetSave
97HOST_WIDE_INT x_ix86_isa_flags_explicit
98
99;; whether -mtune was not specified
100TargetSave
101unsigned char tune_defaulted
102
103;; whether -march was specified
104TargetSave
105unsigned char arch_specified
106
107;; -mcmodel= model
108TargetSave
109enum cmodel x_ix86_cmodel
110
111;; -mabi=
112TargetSave
113enum calling_abi x_ix86_abi
114
115;; -masm=
116TargetSave
117enum asm_dialect x_ix86_asm_dialect
118
119;; -mbranch-cost=
120TargetSave
121int x_ix86_branch_cost
122
123;; -mdump-tune-features=
124TargetSave
125int x_ix86_dump_tunes
126
127;; -mstackrealign=
128TargetSave
129int x_ix86_force_align_arg_pointer
130
131;; -mforce-drap=
132TargetSave
133int x_ix86_force_drap
134
135;; -mincoming-stack-boundary=
136TargetSave
137int x_ix86_incoming_stack_boundary_arg
138
139;; -maddress-mode=
140TargetSave
141enum pmode x_ix86_pmode
142
143;; -mpreferred-stack-boundary=
144TargetSave
145int x_ix86_preferred_stack_boundary_arg
146
147;; -mrecip=
148TargetSave
149const char *x_ix86_recip_name
150
151;; -mregparm=
152TargetSave
153int x_ix86_regparm
154
155;; -mlarge-data-threshold=
156TargetSave
157int x_ix86_section_threshold
158
159;; -msse2avx=
160TargetSave
161int x_ix86_sse2avx
162
163;; -mstack-protector-guard=
164TargetSave
165enum stack_protector_guard x_ix86_stack_protector_guard
166
167;; -mstringop-strategy=
168TargetSave
169enum stringop_alg x_ix86_stringop_alg
170
171;; -mtls-dialect=
172TargetSave
173enum tls_dialect x_ix86_tls_dialect
174
175;; -mtune-ctrl=
176TargetSave
177const char *x_ix86_tune_ctrl_string
178
179;; -mmemcpy-strategy=
180TargetSave
181const char *x_ix86_tune_memcpy_strategy
182
183;; -mmemset-strategy=
184TargetSave
185const char *x_ix86_tune_memset_strategy
186
187;; -mno-default=
188TargetSave
189int x_ix86_tune_no_default
190
191;; -mveclibabi=
192TargetSave
193enum ix86_veclibabi x_ix86_veclibabi_type
194
195;; x86 options
196m128bit-long-double
197Target RejectNegative Report Mask(128BIT_LONG_DOUBLE) Save
198sizeof(long double) is 16.
199
200m80387
201Target Report Mask(80387) Save
202Use hardware fp.
203
204m96bit-long-double
205Target RejectNegative Report InverseMask(128BIT_LONG_DOUBLE) Save
206sizeof(long double) is 12.
207
208mlong-double-80
209Target Report RejectNegative Negative(mlong-double-64) InverseMask(LONG_DOUBLE_64) Save
210Use 80-bit long double.
211
212mlong-double-64
213Target Report RejectNegative Negative(mlong-double-128) Mask(LONG_DOUBLE_64) InverseMask(LONG_DOUBLE_128) Save
214Use 64-bit long double.
215
216mlong-double-128
217Target Report RejectNegative Negative(mlong-double-80) Mask(LONG_DOUBLE_128) InverseMask(LONG_DOUBLE_64) Save
218Use 128-bit long double.
219
220maccumulate-outgoing-args
221Target Report Mask(ACCUMULATE_OUTGOING_ARGS) Save
222Reserve space for outgoing arguments in the function prologue.
223
224malign-double
225Target Report Mask(ALIGN_DOUBLE) Save
226Align some doubles on dword boundary.
227
228malign-functions=
229Target RejectNegative Joined UInteger
230Function starts are aligned to this power of 2.
231
232malign-jumps=
233Target RejectNegative Joined UInteger
234Jump targets are aligned to this power of 2.
235
236malign-loops=
237Target RejectNegative Joined UInteger
238Loop code aligned to this power of 2.
239
240malign-stringops
241Target RejectNegative Report InverseMask(NO_ALIGN_STRINGOPS, ALIGN_STRINGOPS) Save
242Align destination of the string operations.
243
244malign-data=
245Target RejectNegative Joined Var(ix86_align_data_type) Enum(ix86_align_data) Init(ix86_align_data_type_compat)
246Use the given data alignment.
247
248Enum
249Name(ix86_align_data) Type(enum ix86_align_data)
250Known data alignment choices (for use with the -malign-data= option):
251
252EnumValue
253Enum(ix86_align_data) String(compat) Value(ix86_align_data_type_compat)
254
255EnumValue
256Enum(ix86_align_data) String(abi) Value(ix86_align_data_type_abi)
257
258EnumValue
259Enum(ix86_align_data) String(cacheline) Value(ix86_align_data_type_cacheline)
260
261march=
262Target RejectNegative Negative(march=) Joined Var(ix86_arch_string)
263Generate code for given CPU.
264
265masm=
266Target RejectNegative Joined Enum(asm_dialect) Var(ix86_asm_dialect) Init(ASM_ATT)
267Use given assembler dialect.
268
269Enum
270Name(asm_dialect) Type(enum asm_dialect)
271Known assembler dialects (for use with the -masm= option):
272
273EnumValue
274Enum(asm_dialect) String(intel) Value(ASM_INTEL)
275
276EnumValue
277Enum(asm_dialect) String(att) Value(ASM_ATT)
278
279mbranch-cost=
280Target RejectNegative Joined UInteger Var(ix86_branch_cost) IntegerRange(0, 5)
281Branches are this expensive (arbitrary units).
282
283mlarge-data-threshold=
284Target 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.
286
287mcmodel=
288Target RejectNegative Joined Enum(cmodel) Var(ix86_cmodel) Init(CM_32)
289Use given x86-64 code model.
290
291Enum
292Name(cmodel) Type(enum cmodel)
293Known code models (for use with the -mcmodel= option):
294
295EnumValue
296Enum(cmodel) String(small) Value(CM_SMALL)
297
298EnumValue
299Enum(cmodel) String(medium) Value(CM_MEDIUM)
300
301EnumValue
302Enum(cmodel) String(large) Value(CM_LARGE)
303
304EnumValue
305Enum(cmodel) String(32) Value(CM_32)
306
307EnumValue
308Enum(cmodel) String(kernel) Value(CM_KERNEL)
309
310maddress-mode=
311Target RejectNegative Joined Enum(pmode) Var(ix86_pmode) Init(PMODE_SI)
312Use given address mode.
313
314Enum
315Name(pmode) Type(enum pmode)
316Known address mode (for use with the -maddress-mode= option):
317
318EnumValue
319Enum(pmode) String(short) Value(PMODE_SI)
320
321EnumValue
322Enum(pmode) String(long) Value(PMODE_DI)
323
324mcpu=
325Target RejectNegative Joined Undocumented Alias(mtune=) Warn(%<-mcpu=%> is deprecated; use %<-mtune=%> or %<-march=%> instead)
326
327mfancy-math-387
328Target RejectNegative Report InverseMask(NO_FANCY_MATH_387, USE_FANCY_MATH_387) Save
329Generate sin, cos, sqrt for FPU.
330
331mforce-drap
332Target Report Var(ix86_force_drap)
333Always use Dynamic Realigned Argument Pointer (DRAP) to realign stack.
334
335mfp-ret-in-387
336Target Report Mask(FLOAT_RETURNS) Save
337Return values of functions in FPU registers.
338
339mfpmath=
340Target RejectNegative Joined Var(ix86_fpmath) Enum(fpmath_unit) Init(FPMATH_387) Save
341Generate floating point mathematics using given instruction set.
342
343Enum
344Name(fpmath_unit) Type(enum fpmath_unit)
345Valid arguments to -mfpmath=:
346
347EnumValue
348Enum(fpmath_unit) String(387) Value(FPMATH_387)
349
350EnumValue
351Enum(fpmath_unit) String(sse) Value(FPMATH_SSE)
352
353EnumValue
354Enum(fpmath_unit) String(387,sse) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)})
355
356EnumValue
357Enum(fpmath_unit) String(387+sse) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)})
358
359EnumValue
360Enum(fpmath_unit) String(sse,387) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)})
361
362EnumValue
363Enum(fpmath_unit) String(sse+387) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)})
364
365EnumValue
366Enum(fpmath_unit) String(both) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)})
367
368mhard-float
369Target RejectNegative Mask(80387) Save
370Use hardware fp.
371
372mieee-fp
373Target Report Mask(IEEE_FP) Save
374Use IEEE math for fp comparisons.
375
376minline-all-stringops
377Target Report Mask(INLINE_ALL_STRINGOPS) Save
378Inline all known string operations.
379
380minline-stringops-dynamically
381Target Report Mask(INLINE_STRINGOPS_DYNAMICALLY) Save
382Inline memset/memcpy string operations, but perform inline version only for small blocks.
383
384mintel-syntax
385Target Undocumented Alias(masm=, intel, att) Warn(%<-mintel-syntax%> and %<-mno-intel-syntax%> are deprecated; use %<-masm=intel%> and %<-masm=att%> instead)
386
387mms-bitfields
388Target Report Mask(MS_BITFIELD_LAYOUT) Save
389Use native (MS) bitfield layout.
390
391mno-align-stringops
392Target RejectNegative Report Mask(NO_ALIGN_STRINGOPS) Undocumented Save
393
394mno-fancy-math-387
395Target RejectNegative Report Mask(NO_FANCY_MATH_387) Undocumented Save
396
397mno-push-args
398Target RejectNegative Report Mask(NO_PUSH_ARGS) Undocumented Save
399
400mno-red-zone
401Target RejectNegative Report Mask(NO_RED_ZONE) Undocumented Save
402
403momit-leaf-frame-pointer
404Target Report Mask(OMIT_LEAF_FRAME_POINTER) Save
405Omit the frame pointer in leaf functions.
406
407mpc32
408Target RejectNegative Report
409Set 80387 floating-point precision to 32-bit.
410
411mpc64
412Target RejectNegative Report
413Set 80387 floating-point precision to 64-bit.
414
415mpc80
416Target RejectNegative Report
417Set 80387 floating-point precision to 80-bit.
418
419mpreferred-stack-boundary=
420Target RejectNegative Joined UInteger Var(ix86_preferred_stack_boundary_arg)
421Attempt to keep stack aligned to this power of 2.
422
423mincoming-stack-boundary=
424Target RejectNegative Joined UInteger Var(ix86_incoming_stack_boundary_arg)
425Assume incoming stack aligned to this power of 2.
426
427mpush-args
428Target Report InverseMask(NO_PUSH_ARGS, PUSH_ARGS) Save
429Use push instructions to save outgoing arguments.
430
431mred-zone
432Target RejectNegative Report InverseMask(NO_RED_ZONE, RED_ZONE) Save
433Use red-zone in the x86-64 code.
434
435mregparm=
436Target RejectNegative Joined UInteger Var(ix86_regparm)
437Number of registers used to pass integer arguments.
438
439mrtd
440Target Report Mask(RTD) Save
441Alternate calling convention.
442
443msoft-float
444Target InverseMask(80387) Save
445Do not use hardware fp.
446
447msseregparm
448Target RejectNegative Mask(SSEREGPARM) Save
449Use SSE register passing conventions for SF and DF mode.
450
451mstackrealign
452Target Report Var(ix86_force_align_arg_pointer)
453Realign stack in prologue.
454
455mstack-arg-probe
456Target Report Mask(STACK_PROBE) Save
457Enable stack probing.
458
459mmemcpy-strategy=
460Target RejectNegative Joined Var(ix86_tune_memcpy_strategy)
461Specify memcpy expansion strategy when expected size is known.
462
463mmemset-strategy=
464Target RejectNegative Joined Var(ix86_tune_memset_strategy)
465Specify memset expansion strategy when expected size is known.
466
467mstringop-strategy=
468Target RejectNegative Joined Enum(stringop_alg) Var(ix86_stringop_alg) Init(no_stringop)
469Chose strategy to generate stringop using.
470
471Enum
472Name(stringop_alg) Type(enum stringop_alg)
473Valid arguments to -mstringop-strategy=:
474
475EnumValue
476Enum(stringop_alg) String(rep_byte) Value(rep_prefix_1_byte)
477
478EnumValue
479Enum(stringop_alg) String(libcall) Value(libcall)
480
481EnumValue
482Enum(stringop_alg) String(rep_4byte) Value(rep_prefix_4_byte)
483
484EnumValue
485Enum(stringop_alg) String(rep_8byte) Value(rep_prefix_8_byte)
486
487EnumValue
488Enum(stringop_alg) String(byte_loop) Value(loop_1_byte)
489
490EnumValue
491Enum(stringop_alg) String(loop) Value(loop)
492
493EnumValue
494Enum(stringop_alg) String(unrolled_loop) Value(unrolled_loop)
495
496EnumValue
497Enum(stringop_alg) String(vector_loop) Value(vector_loop)
498
499mtls-dialect=
500Target RejectNegative Joined Var(ix86_tls_dialect) Enum(tls_dialect) Init(TLS_DIALECT_GNU)
501Use given thread-local storage dialect.
502
503Enum
504Name(tls_dialect) Type(enum tls_dialect)
505Known TLS dialects (for use with the -mtls-dialect= option):
506
507EnumValue
508Enum(tls_dialect) String(gnu) Value(TLS_DIALECT_GNU)
509
510EnumValue
511Enum(tls_dialect) String(gnu2) Value(TLS_DIALECT_GNU2)
512
513mtls-direct-seg-refs
514Target Report Mask(TLS_DIRECT_SEG_REFS)
515Use direct references against %gs when accessing tls data.
516
517mtune=
518Target RejectNegative Negative(mtune=) Joined Var(ix86_tune_string)
519Schedule code for given CPU.
520
521mtune-ctrl=
522Target RejectNegative Joined Var(ix86_tune_ctrl_string)
523Fine grain control of tune features.
524
525mno-default
526Target RejectNegative Var(ix86_tune_no_default)
527Clear all tune features.
528
529mdump-tune-features
530Target RejectNegative Var(ix86_dump_tunes)
531
532miamcu
533Target Report Mask(IAMCU)
534Generate code that conforms to Intel MCU psABI.
535
536mabi=
537Target RejectNegative Joined Var(ix86_abi) Enum(calling_abi) Init(SYSV_ABI)
538Generate code that conforms to the given ABI.
539
540Enum
541Name(calling_abi) Type(enum calling_abi)
542Known ABIs (for use with the -mabi= option):
543
544EnumValue
545Enum(calling_abi) String(sysv) Value(SYSV_ABI)
546
547EnumValue
548Enum(calling_abi) String(ms) Value(MS_ABI)
549
550mcall-ms2sysv-xlogues
551Target Report Mask(CALL_MS2SYSV_XLOGUES) Save
552Use libgcc stubs to save and restore registers clobbered by 64-bit Microsoft to System V ABI calls.
553
554mveclibabi=
555Target RejectNegative Joined Var(ix86_veclibabi_type) Enum(ix86_veclibabi) Init(ix86_veclibabi_type_none)
556Vector library ABI to use.
557
558Enum
559Name(ix86_veclibabi) Type(enum ix86_veclibabi)
560Known vectorization library ABIs (for use with the -mveclibabi= option):
561
562EnumValue
563Enum(ix86_veclibabi) String(svml) Value(ix86_veclibabi_type_svml)
564
565EnumValue
566Enum(ix86_veclibabi) String(acml) Value(ix86_veclibabi_type_acml)
567
568mvect8-ret-in-mem
569Target Report Mask(VECT8_RETURNS) Save
570Return 8-byte vectors in memory.
571
572mrecip
573Target Report Mask(RECIP) Save
574Generate reciprocals instead of divss and sqrtss.
575
576mrecip=
577Target Report RejectNegative Joined Var(ix86_recip_name)
578Control generation of reciprocal estimates.
579
580mcld
581Target Report Mask(CLD) Save
582Generate cld instruction in the function prologue.
583
584mvzeroupper
585Target Report Mask(VZEROUPPER) Save
586Generate vzeroupper instruction before a transfer of control flow out of
587the function.
588
589mstv
590Target Report Mask(STV) Save
591Disable Scalar to Vector optimization pass transforming 64-bit integer
592computations into a vector ones.
593
594mdispatch-scheduler
595Target RejectNegative Var(flag_dispatch_scheduler)
596Do dispatch scheduling if processor is bdver1, bdver2, bdver3, bdver4
597or znver1 and Haifa scheduling is selected.
598
599mprefer-avx128
600Target Alias(mprefer-vector-width=, 128, 256)
601Use 128-bit AVX instructions instead of 256-bit AVX instructions in the auto-vectorizer.
602
603mprefer-vector-width=
604Target Report RejectNegative Joined Var(prefer_vector_width_type) Enum(prefer_vector_width) Init(PVW_NONE) Save
605Use given register vector width instructions instead of maximum register width in the auto-vectorizer.
606
607Enum
608Name(prefer_vector_width) Type(enum prefer_vector_width)
609Known preferred register vector length (to use with the -mprefer-vector-width= option):
610
611EnumValue
612Enum(prefer_vector_width) String(none) Value(PVW_NONE)
613
614EnumValue
615Enum(prefer_vector_width) String(128) Value(PVW_AVX128)
616
617EnumValue
618Enum(prefer_vector_width) String(256) Value(PVW_AVX256)
619
620EnumValue
621Enum(prefer_vector_width) String(512) Value(PVW_AVX512)
622
623;; ISA support
624
625m32
626Target RejectNegative Negative(m64) Report InverseMask(ISA_64BIT) Var(ix86_isa_flags) Save
627Generate 32bit i386 code.
628
629m64
630Target RejectNegative Negative(mx32) Report Mask(ABI_64) Var(ix86_isa_flags) Save
631Generate 64bit x86-64 code.
632
633mx32
634Target RejectNegative Negative(m16) Report Mask(ABI_X32) Var(ix86_isa_flags) Save
635Generate 32bit x86-64 code.
636
637m16
638Target RejectNegative Negative(m32) Report Mask(CODE16) InverseMask(ISA_64BIT) Var(ix86_isa_flags) Save
639Generate 16bit i386 code.
640
641mmmx
642Target Report Mask(ISA_MMX) Var(ix86_isa_flags) Save
643Support MMX built-in functions.
644
645m3dnow
646Target Report Mask(ISA_3DNOW) Var(ix86_isa_flags) Save
647Support 3DNow! built-in functions.
648
649m3dnowa
650Target Report Mask(ISA_3DNOW_A) Var(ix86_isa_flags) Save
651Support Athlon 3Dnow! built-in functions.
652
653msse
654Target Report Mask(ISA_SSE) Var(ix86_isa_flags) Save
655Support MMX and SSE built-in functions and code generation.
656
657msse2
658Target Report Mask(ISA_SSE2) Var(ix86_isa_flags) Save
659Support MMX, SSE and SSE2 built-in functions and code generation.
660
661msse3
662Target Report Mask(ISA_SSE3) Var(ix86_isa_flags) Save
663Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation.
664
665mssse3
666Target Report Mask(ISA_SSSE3) Var(ix86_isa_flags) Save
667Support MMX, SSE, SSE2, SSE3 and SSSE3 built-in functions and code generation.
668
669msse4.1
670Target Report Mask(ISA_SSE4_1) Var(ix86_isa_flags) Save
671Support MMX, SSE, SSE2, SSE3, SSSE3 and SSE4.1 built-in functions and code generation.
672
673msse4.2
674Target Report Mask(ISA_SSE4_2) Var(ix86_isa_flags) Save
675Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and code generation.
676
677msse4
678Target RejectNegative Report Mask(ISA_SSE4_2) Var(ix86_isa_flags) Save
679Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and code generation.
680
681mno-sse4
682Target RejectNegative Report InverseMask(ISA_SSE4_1) Var(ix86_isa_flags) Save
683Do not support SSE4.1 and SSE4.2 built-in functions and code generation.
684
685msse5
686Target Undocumented Alias(mavx) Warn(%<-msse5%> was removed)
687;; Deprecated
688
689mavx
690Target Report Mask(ISA_AVX) Var(ix86_isa_flags) Save
691Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 and AVX built-in functions and code generation.
692
693mavx2
694Target Report Mask(ISA_AVX2) Var(ix86_isa_flags) Save
695Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and AVX2 built-in functions and code generation.
696
697mavx512f
698Target Report Mask(ISA_AVX512F) Var(ix86_isa_flags) Save
699Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F built-in functions and code generation.
700
701mavx512pf
702Target Report Mask(ISA_AVX512PF) Var(ix86_isa_flags) Save
703Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512PF built-in functions and code generation.
704
705mavx512er
706Target Report Mask(ISA_AVX512ER) Var(ix86_isa_flags) Save
707Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512ER built-in functions and code generation.
708
709mavx512cd
710Target Report Mask(ISA_AVX512CD) Var(ix86_isa_flags) Save
711Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512CD built-in functions and code generation.
712
713mavx512dq
714Target Report Mask(ISA_AVX512DQ) Var(ix86_isa_flags) Save
715Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512DQ built-in functions and code generation.
716
717mavx512bw
718Target Report Mask(ISA_AVX512BW) Var(ix86_isa_flags) Save
719Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512BW built-in functions and code generation.
720
721mavx512vl
722Target Report Mask(ISA_AVX512VL) Var(ix86_isa_flags) Save
723Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512VL built-in functions and code generation.
724
725mavx512ifma
726Target Report Mask(ISA_AVX512IFMA) Var(ix86_isa_flags) Save
727Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512IFMA built-in functions and code generation.
728
729mavx512vbmi
730Target Report Mask(ISA_AVX512VBMI) Var(ix86_isa_flags) Save
731Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512VBMI built-in functions and code generation.
732
733mavx5124fmaps
734Target Report Mask(ISA2_AVX5124FMAPS) Var(ix86_isa_flags2) Save
735Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX5124FMAPS built-in functions and code generation.
736
737mavx5124vnniw
738Target Report Mask(ISA2_AVX5124VNNIW) Var(ix86_isa_flags2) Save
739Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX5124VNNIW built-in functions and code generation.
740
741mavx512vpopcntdq
742Target Report Mask(ISA_AVX512VPOPCNTDQ) Var(ix86_isa_flags) Save
743Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512VPOPCNTDQ built-in functions and code generation.
744
745mavx512vbmi2
746Target Report Mask(ISA_AVX512VBMI2) Var(ix86_isa_flags) Save
747Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512VBMI2 built-in functions and code generation.
748
749mavx512vnni
750Target Report Mask(ISA_AVX512VNNI) Var(ix86_isa_flags) Save
751Support AVX512VNNI built-in functions and code generation.
752
753mavx512bitalg
754Target Report Mask(ISA_AVX512BITALG) Var(ix86_isa_flags) Save
755Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512BITALG built-in functions and code generation.
756
757mavx512vp2intersect
758Target Report Mask(ISA2_AVX512VP2INTERSECT) Var(ix86_isa_flags2) Save
759Support AVX512VP2INTERSECT built-in functions and code generation.
760
761mfma
762Target Report Mask(ISA_FMA) Var(ix86_isa_flags) Save
763Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and FMA built-in functions and code generation.
764
765msse4a
766Target Report Mask(ISA_SSE4A) Var(ix86_isa_flags) Save
767Support MMX, SSE, SSE2, SSE3 and SSE4A built-in functions and code generation.
768
769mfma4
770Target Report Mask(ISA_FMA4) Var(ix86_isa_flags) Save
771Support FMA4 built-in functions and code generation.
772
773mxop
774Target Report Mask(ISA_XOP) Var(ix86_isa_flags) Save
775Support XOP built-in functions and code generation.
776
777mlwp
778Target Report Mask(ISA_LWP) Var(ix86_isa_flags) Save
779Support LWP built-in functions and code generation.
780
781mabm
782Target Report Mask(ISA_ABM) Var(ix86_isa_flags) Save
783Support code generation of Advanced Bit Manipulation (ABM) instructions.
784
785mpopcnt
786Target Report Mask(ISA_POPCNT) Var(ix86_isa_flags) Save
787Support code generation of popcnt instruction.
788
789mpconfig
790Target Report Mask(ISA2_PCONFIG) Var(ix86_isa_flags2) Save
791Support PCONFIG built-in functions and code generation.
792
793mwbnoinvd
794Target Report Mask(ISA2_WBNOINVD) Var(ix86_isa_flags2) Save
795Support WBNOINVD built-in functions and code generation.
796
797mptwrite
798Target Report Mask(ISA2_PTWRITE) Var(ix86_isa_flags2) Save
799Support PTWRITE built-in functions and code generation.
800
801msgx
802Target Report Mask(ISA2_SGX) Var(ix86_isa_flags2) Save
803Support SGX built-in functions and code generation.
804
805mrdpid
806Target Report Mask(ISA2_RDPID) Var(ix86_isa_flags2) Save
807Support RDPID built-in functions and code generation.
808
809mgfni
810Target Report Mask(ISA_GFNI) Var(ix86_isa_flags) Save
811Support GFNI built-in functions and code generation.
812
813mvaes
814Target Report Mask(ISA2_VAES) Var(ix86_isa_flags2) Save
815Support VAES built-in functions and code generation.
816
817mvpclmulqdq
818Target Report Mask(ISA_VPCLMULQDQ) Var(ix86_isa_flags) Save
819Support VPCLMULQDQ built-in functions and code generation.
820
821mbmi
822Target Report Mask(ISA_BMI) Var(ix86_isa_flags) Save
823Support BMI built-in functions and code generation.
824
825mbmi2
826Target Report Mask(ISA_BMI2) Var(ix86_isa_flags) Save
827Support BMI2 built-in functions and code generation.
828
829mlzcnt
830Target Report Mask(ISA_LZCNT) Var(ix86_isa_flags) Save
831Support LZCNT built-in function and code generation.
832
833mhle
834Target Report Mask(ISA2_HLE) Var(ix86_isa_flags2) Save
835Support Hardware Lock Elision prefixes.
836
837mrdseed
838Target Report Mask(ISA_RDSEED) Var(ix86_isa_flags) Save
839Support RDSEED instruction.
840
841mprfchw
842Target Report Mask(ISA_PRFCHW) Var(ix86_isa_flags) Save
843Support PREFETCHW instruction.
844
845madx
846Target Report Mask(ISA_ADX) Var(ix86_isa_flags) Save
847Support flag-preserving add-carry instructions.
848
849mclflushopt
850Target Report Mask(ISA_CLFLUSHOPT) Var(ix86_isa_flags) Save
851Support CLFLUSHOPT instructions.
852
853mclwb
854Target Report Mask(ISA_CLWB) Var(ix86_isa_flags) Save
855Support CLWB instruction.
856
857mpcommit
858Target WarnRemoved
859
860mfxsr
861Target Report Mask(ISA_FXSR) Var(ix86_isa_flags) Save
862Support FXSAVE and FXRSTOR instructions.
863
864mxsave
865Target Report Mask(ISA_XSAVE) Var(ix86_isa_flags) Save
866Support XSAVE and XRSTOR instructions.
867
868mxsaveopt
869Target Report Mask(ISA_XSAVEOPT) Var(ix86_isa_flags) Save
870Support XSAVEOPT instruction.
871
872mxsavec
873Target Report Mask(ISA_XSAVEC) Var(ix86_isa_flags) Save
874Support XSAVEC instructions.
875
876mxsaves
877Target Report Mask(ISA_XSAVES) Var(ix86_isa_flags) Save
878Support XSAVES and XRSTORS instructions.
879
880mtbm
881Target Report Mask(ISA_TBM) Var(ix86_isa_flags) Save
882Support TBM built-in functions and code generation.
883
884mcx16
885Target Report Mask(ISA2_CX16) Var(ix86_isa_flags2) Save
886Support code generation of cmpxchg16b instruction.
887
888msahf
889Target Report Mask(ISA_SAHF) Var(ix86_isa_flags) Save
890Support code generation of sahf instruction in 64bit x86-64 code.
891
892mmovbe
893Target Report Mask(ISA2_MOVBE) Var(ix86_isa_flags2) Save
894Support code generation of movbe instruction.
895
896mcrc32
897Target Report Mask(ISA_CRC32) Var(ix86_isa_flags) Save
898Support code generation of crc32 instruction.
899
900maes
901Target Report Mask(ISA_AES) Var(ix86_isa_flags) Save
902Support AES built-in functions and code generation.
903
904msha
905Target Report Mask(ISA_SHA) Var(ix86_isa_flags) Save
906Support SHA1 and SHA256 built-in functions and code generation.
907
908mpclmul
909Target Report Mask(ISA_PCLMUL) Var(ix86_isa_flags) Save
910Support PCLMUL built-in functions and code generation.
911
912msse2avx
913Target Report Var(ix86_sse2avx)
914Encode SSE instructions with VEX prefix.
915
916mfsgsbase
917Target Report Mask(ISA_FSGSBASE) Var(ix86_isa_flags) Save
918Support FSGSBASE built-in functions and code generation.
919
920mrdrnd
921Target Report Mask(ISA_RDRND) Var(ix86_isa_flags) Save
922Support RDRND built-in functions and code generation.
923
924mf16c
925Target Report Mask(ISA_F16C) Var(ix86_isa_flags) Save
926Support F16C built-in functions and code generation.
927
928mprefetchwt1
929Target Report Mask(ISA_PREFETCHWT1) Var(ix86_isa_flags) Save
930Support PREFETCHWT1 built-in functions and code generation.
931
932mfentry
933Target Report Var(flag_fentry)
934Emit profiling counter call at function entry before prologue.
935
936mrecord-mcount
937Target Report Var(flag_record_mcount)
938Generate __mcount_loc section with all mcount or __fentry__ calls.
939
940mnop-mcount
941Target Report Var(flag_nop_mcount)
942Generate mcount/__fentry__ calls as nops. To activate they need to be
943patched in.
944
945mfentry-name=
946Target RejectNegative Joined Var(fentry_name)
947Set name of __fentry__ symbol called at function entry.
948
949mfentry-section=
950Target RejectNegative Joined Var(fentry_section)
951Set name of section to record mrecord-mcount calls.
952
953mskip-rax-setup
954Target Report Var(flag_skip_rax_setup)
955Skip setting up RAX register when passing variable arguments.
956
957m8bit-idiv
958Target Report Mask(USE_8BIT_IDIV) Save
959Expand 32bit/64bit integer divide into 8bit unsigned integer divide with run-time check.
960
961mavx256-split-unaligned-load
962Target Report Mask(AVX256_SPLIT_UNALIGNED_LOAD) Save
963Split 32-byte AVX unaligned load.
964
965mavx256-split-unaligned-store
966Target Report Mask(AVX256_SPLIT_UNALIGNED_STORE) Save
967Split 32-byte AVX unaligned store.
968
969mrtm
970Target Report Mask(ISA_RTM) Var(ix86_isa_flags) Save
971Support RTM built-in functions and code generation.
972
973mmpx
974Target WarnRemoved
975Removed in GCC 9.  This switch has no effect.
976
977mmwaitx
978Target Report Mask(ISA2_MWAITX) Var(ix86_isa_flags2) Save
979Support MWAITX and MONITORX built-in functions and code generation.
980
981mclzero
982Target Report Mask(ISA2_CLZERO) Var(ix86_isa_flags2) Save
983Support CLZERO built-in functions and code generation.
984
985mpku
986Target Report Mask(ISA_PKU) Var(ix86_isa_flags) Save
987Support PKU built-in functions and code generation.
988
989mstack-protector-guard=
990Target RejectNegative Joined Enum(stack_protector_guard) Var(ix86_stack_protector_guard) Init(SSP_TLS)
991Use given stack-protector guard.
992
993Enum
994Name(stack_protector_guard) Type(enum stack_protector_guard)
995Known stack protector guard (for use with the -mstack-protector-guard= option):
996
997EnumValue
998Enum(stack_protector_guard) String(tls) Value(SSP_TLS)
999
1000EnumValue
1001Enum(stack_protector_guard) String(global) Value(SSP_GLOBAL)
1002
1003mstack-protector-guard-reg=
1004Target RejectNegative Joined Var(ix86_stack_protector_guard_reg_str)
1005Use the given base register for addressing the stack-protector guard.
1006
1007TargetVariable
1008addr_space_t ix86_stack_protector_guard_reg = ADDR_SPACE_GENERIC
1009
1010mstack-protector-guard-offset=
1011Target RejectNegative Joined Integer Var(ix86_stack_protector_guard_offset_str)
1012Use the given offset for addressing the stack-protector guard.
1013
1014TargetVariable
1015HOST_WIDE_INT ix86_stack_protector_guard_offset = 0
1016
1017mstack-protector-guard-symbol=
1018Target RejectNegative Joined Integer Var(ix86_stack_protector_guard_symbol_str)
1019Use the given symbol for addressing the stack-protector guard.
1020
1021mmitigate-rop
1022Target WarnRemoved
1023
1024mgeneral-regs-only
1025Target Report RejectNegative Mask(GENERAL_REGS_ONLY) Var(ix86_target_flags) Save
1026Generate code which uses only the general registers.
1027
1028mshstk
1029Target Report Mask(ISA_SHSTK) Var(ix86_isa_flags) Save
1030Enable shadow stack built-in functions from Control-flow Enforcement
1031Technology (CET).
1032
1033mcet-switch
1034Target Report Undocumented Var(flag_cet_switch) Init(0)
1035Turn on CET instrumentation for switch statements that use a jump table and
1036an indirect jump.
1037
1038mmanual-endbr
1039Target Report Var(flag_manual_endbr) Init(0)
1040Insert ENDBR instruction at function entry only via cf_check attribute
1041for CET instrumentation.
1042
1043mforce-indirect-call
1044Target Report Var(flag_force_indirect_call) Init(0)
1045Make all function calls indirect.
1046
1047mindirect-branch=
1048Target Report RejectNegative Joined Enum(indirect_branch) Var(ix86_indirect_branch) Init(indirect_branch_keep)
1049Convert indirect call and jump to call and return thunks.
1050
1051mfunction-return=
1052Target Report RejectNegative Joined Enum(indirect_branch) Var(ix86_function_return) Init(indirect_branch_keep)
1053Convert function return to call and return thunk.
1054
1055Enum
1056Name(indirect_branch) Type(enum indirect_branch)
1057Known indirect branch choices (for use with the -mindirect-branch=/-mfunction-return= options):
1058
1059EnumValue
1060Enum(indirect_branch) String(keep) Value(indirect_branch_keep)
1061
1062EnumValue
1063Enum(indirect_branch) String(thunk) Value(indirect_branch_thunk)
1064
1065EnumValue
1066Enum(indirect_branch) String(thunk-inline) Value(indirect_branch_thunk_inline)
1067
1068EnumValue
1069Enum(indirect_branch) String(thunk-extern) Value(indirect_branch_thunk_extern)
1070
1071mindirect-branch-register
1072Target Report Var(ix86_indirect_branch_register) Init(0)
1073Force indirect call and jump via register.
1074
1075mmovdiri
1076Target Report Mask(ISA_MOVDIRI) Var(ix86_isa_flags) Save
1077Support MOVDIRI built-in functions and code generation.
1078
1079mmovdir64b
1080Target Report Mask(ISA2_MOVDIR64B) Var(ix86_isa_flags2) Save
1081Support MOVDIR64B built-in functions and code generation.
1082
1083mwaitpkg
1084Target Report Mask(ISA2_WAITPKG) Var(ix86_isa_flags2) Save
1085Support WAITPKG built-in functions and code generation.
1086
1087mcldemote
1088Target Report Mask(ISA2_CLDEMOTE) Var(ix86_isa_flags2) Save
1089Support CLDEMOTE built-in functions and code generation.
1090
1091minstrument-return=
1092Target Report RejectNegative Joined Enum(instrument_return) Var(ix86_instrument_return) Init(instrument_return_none)
1093Instrument function exit in instrumented functions with __fentry__.
1094
1095Enum
1096Name(instrument_return) Type(enum instrument_return)
1097Known choices for return instrumentation with -minstrument-return=:
1098
1099EnumValue
1100Enum(instrument_return) String(none) Value(instrument_return_none)
1101
1102EnumValue
1103Enum(instrument_return) String(call) Value(instrument_return_call)
1104
1105EnumValue
1106Enum(instrument_return) String(nop5) Value(instrument_return_nop5)
1107
1108mrecord-return
1109Target Report Var(ix86_flag_record_return) Init(0)
1110Generate a __return_loc section pointing to all return instrumentation code.
1111
1112mavx512bf16
1113Target Report Mask(ISA2_AVX512BF16) Var(ix86_isa_flags2) Save
1114Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and
1115AVX512BF16 built-in functions and code generation.
1116
1117menqcmd
1118Target Report Mask(ISA2_ENQCMD) Var(ix86_isa_flags2) Save
1119Support ENQCMD built-in functions and code generation.
1120