xref: /dflybsd-src/contrib/gcc-8.0/gcc/config/i386/i386.opt (revision 38fd149817dfbff97799f62fcb70be98c4e32523)
1*38fd1498Szrj; Options for the IA-32 and AMD64 ports of the compiler.
2*38fd1498Szrj
3*38fd1498Szrj; Copyright (C) 2005-2018 Free Software Foundation, Inc.
4*38fd1498Szrj;
5*38fd1498Szrj; This file is part of GCC.
6*38fd1498Szrj;
7*38fd1498Szrj; GCC is free software; you can redistribute it and/or modify it under
8*38fd1498Szrj; the terms of the GNU General Public License as published by the Free
9*38fd1498Szrj; Software Foundation; either version 3, or (at your option) any later
10*38fd1498Szrj; version.
11*38fd1498Szrj;
12*38fd1498Szrj; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
13*38fd1498Szrj; WARRANTY; without even the implied warranty of MERCHANTABILITY or
14*38fd1498Szrj; FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
15*38fd1498Szrj; for more details.
16*38fd1498Szrj;
17*38fd1498Szrj; You should have received a copy of the GNU General Public License
18*38fd1498Szrj; along with GCC; see the file COPYING3.  If not see
19*38fd1498Szrj; <http://www.gnu.org/licenses/>.
20*38fd1498Szrj
21*38fd1498SzrjHeaderInclude
22*38fd1498Szrjconfig/i386/i386-opts.h
23*38fd1498Szrj
24*38fd1498Szrj; Bit flags that specify the ISA we are compiling for.
25*38fd1498SzrjVariable
26*38fd1498SzrjHOST_WIDE_INT ix86_isa_flags = TARGET_64BIT_DEFAULT | TARGET_SUBTARGET_ISA_DEFAULT
27*38fd1498Szrj
28*38fd1498SzrjVariable
29*38fd1498SzrjHOST_WIDE_INT ix86_isa_flags2 = 0
30*38fd1498Szrj
31*38fd1498Szrj; A mask of ix86_isa_flags that includes bit X if X was set or cleared
32*38fd1498Szrj; on the command line.
33*38fd1498SzrjVariable
34*38fd1498SzrjHOST_WIDE_INT ix86_isa_flags_explicit
35*38fd1498Szrj
36*38fd1498SzrjVariable
37*38fd1498SzrjHOST_WIDE_INT ix86_isa_flags2_explicit
38*38fd1498Szrj
39*38fd1498Szrj; Additional target flags
40*38fd1498SzrjVariable
41*38fd1498Szrjint ix86_target_flags
42*38fd1498Szrj
43*38fd1498SzrjTargetVariable
44*38fd1498Szrjint recip_mask = RECIP_MASK_DEFAULT
45*38fd1498Szrj
46*38fd1498SzrjVariable
47*38fd1498Szrjint recip_mask_explicit
48*38fd1498Szrj
49*38fd1498SzrjTargetSave
50*38fd1498Szrjint x_recip_mask_explicit
51*38fd1498Szrj
52*38fd1498Szrj;; Definitions to add to the cl_target_option structure
53*38fd1498Szrj;; -march= processor
54*38fd1498SzrjTargetSave
55*38fd1498Szrjunsigned char arch
56*38fd1498Szrj
57*38fd1498Szrj;; -mtune= processor
58*38fd1498SzrjTargetSave
59*38fd1498Szrjunsigned char tune
60*38fd1498Szrj
61*38fd1498Szrj;; -march= processor-string
62*38fd1498SzrjTargetSave
63*38fd1498Szrjconst char *x_ix86_arch_string
64*38fd1498Szrj
65*38fd1498Szrj;; -mtune= processor-string
66*38fd1498SzrjTargetSave
67*38fd1498Szrjconst char *x_ix86_tune_string
68*38fd1498Szrj
69*38fd1498Szrj;; CPU schedule model
70*38fd1498SzrjTargetSave
71*38fd1498Szrjunsigned char schedule
72*38fd1498Szrj
73*38fd1498Szrj;; True if processor has SSE prefetch instruction.
74*38fd1498SzrjTargetSave
75*38fd1498Szrjunsigned char prefetch_sse
76*38fd1498Szrj
77*38fd1498Szrj;; branch cost
78*38fd1498SzrjTargetSave
79*38fd1498Szrjunsigned char branch_cost
80*38fd1498Szrj
81*38fd1498Szrj;; which flags were passed by the user
82*38fd1498SzrjTargetSave
83*38fd1498SzrjHOST_WIDE_INT x_ix86_isa_flags2_explicit
84*38fd1498Szrj
85*38fd1498Szrj;; which flags were passed by the user
86*38fd1498SzrjTargetSave
87*38fd1498SzrjHOST_WIDE_INT x_ix86_isa_flags_explicit
88*38fd1498Szrj
89*38fd1498Szrj;; whether -mtune was not specified
90*38fd1498SzrjTargetSave
91*38fd1498Szrjunsigned char tune_defaulted
92*38fd1498Szrj
93*38fd1498Szrj;; whether -march was specified
94*38fd1498SzrjTargetSave
95*38fd1498Szrjunsigned char arch_specified
96*38fd1498Szrj
97*38fd1498Szrj;; -mcmodel= model
98*38fd1498SzrjTargetSave
99*38fd1498Szrjenum cmodel x_ix86_cmodel
100*38fd1498Szrj
101*38fd1498Szrj;; -mabi=
102*38fd1498SzrjTargetSave
103*38fd1498Szrjenum calling_abi x_ix86_abi
104*38fd1498Szrj
105*38fd1498Szrj;; -masm=
106*38fd1498SzrjTargetSave
107*38fd1498Szrjenum asm_dialect x_ix86_asm_dialect
108*38fd1498Szrj
109*38fd1498Szrj;; -mbranch-cost=
110*38fd1498SzrjTargetSave
111*38fd1498Szrjint x_ix86_branch_cost
112*38fd1498Szrj
113*38fd1498Szrj;; -mdump-tune-features=
114*38fd1498SzrjTargetSave
115*38fd1498Szrjint x_ix86_dump_tunes
116*38fd1498Szrj
117*38fd1498Szrj;; -mstackrealign=
118*38fd1498SzrjTargetSave
119*38fd1498Szrjint x_ix86_force_align_arg_pointer
120*38fd1498Szrj
121*38fd1498Szrj;; -mforce-drap=
122*38fd1498SzrjTargetSave
123*38fd1498Szrjint x_ix86_force_drap
124*38fd1498Szrj
125*38fd1498Szrj;; -mincoming-stack-boundary=
126*38fd1498SzrjTargetSave
127*38fd1498Szrjint x_ix86_incoming_stack_boundary_arg
128*38fd1498Szrj
129*38fd1498Szrj;; -maddress-mode=
130*38fd1498SzrjTargetSave
131*38fd1498Szrjenum pmode x_ix86_pmode
132*38fd1498Szrj
133*38fd1498Szrj;; -mpreferred-stack-boundary=
134*38fd1498SzrjTargetSave
135*38fd1498Szrjint x_ix86_preferred_stack_boundary_arg
136*38fd1498Szrj
137*38fd1498Szrj;; -mrecip=
138*38fd1498SzrjTargetSave
139*38fd1498Szrjconst char *x_ix86_recip_name
140*38fd1498Szrj
141*38fd1498Szrj;; -mregparm=
142*38fd1498SzrjTargetSave
143*38fd1498Szrjint x_ix86_regparm
144*38fd1498Szrj
145*38fd1498Szrj;; -mlarge-data-threshold=
146*38fd1498SzrjTargetSave
147*38fd1498Szrjint x_ix86_section_threshold
148*38fd1498Szrj
149*38fd1498Szrj;; -msse2avx=
150*38fd1498SzrjTargetSave
151*38fd1498Szrjint x_ix86_sse2avx
152*38fd1498Szrj
153*38fd1498Szrj;; -mstack-protector-guard=
154*38fd1498SzrjTargetSave
155*38fd1498Szrjenum stack_protector_guard x_ix86_stack_protector_guard
156*38fd1498Szrj
157*38fd1498Szrj;; -mstringop-strategy=
158*38fd1498SzrjTargetSave
159*38fd1498Szrjenum stringop_alg x_ix86_stringop_alg
160*38fd1498Szrj
161*38fd1498Szrj;; -mtls-dialect=
162*38fd1498SzrjTargetSave
163*38fd1498Szrjenum tls_dialect x_ix86_tls_dialect
164*38fd1498Szrj
165*38fd1498Szrj;; -mtune-ctrl=
166*38fd1498SzrjTargetSave
167*38fd1498Szrjconst char *x_ix86_tune_ctrl_string
168*38fd1498Szrj
169*38fd1498Szrj;; -mmemcpy-strategy=
170*38fd1498SzrjTargetSave
171*38fd1498Szrjconst char *x_ix86_tune_memcpy_strategy
172*38fd1498Szrj
173*38fd1498Szrj;; -mmemset-strategy=
174*38fd1498SzrjTargetSave
175*38fd1498Szrjconst char *x_ix86_tune_memset_strategy
176*38fd1498Szrj
177*38fd1498Szrj;; -mno-default=
178*38fd1498SzrjTargetSave
179*38fd1498Szrjint x_ix86_tune_no_default
180*38fd1498Szrj
181*38fd1498Szrj;; -mveclibabi=
182*38fd1498SzrjTargetSave
183*38fd1498Szrjenum ix86_veclibabi x_ix86_veclibabi_type
184*38fd1498Szrj
185*38fd1498Szrj;; -mprefer-vector-width=
186*38fd1498SzrjTargetSave
187*38fd1498Szrjenum prefer_vector_width x_prefer_vector_width_type
188*38fd1498Szrj
189*38fd1498Szrj;; x86 options
190*38fd1498Szrjm128bit-long-double
191*38fd1498SzrjTarget RejectNegative Report Mask(128BIT_LONG_DOUBLE) Save
192*38fd1498Szrjsizeof(long double) is 16.
193*38fd1498Szrj
194*38fd1498Szrjm80387
195*38fd1498SzrjTarget Report Mask(80387) Save
196*38fd1498SzrjUse hardware fp.
197*38fd1498Szrj
198*38fd1498Szrjm96bit-long-double
199*38fd1498SzrjTarget RejectNegative Report InverseMask(128BIT_LONG_DOUBLE) Save
200*38fd1498Szrjsizeof(long double) is 12.
201*38fd1498Szrj
202*38fd1498Szrjmlong-double-80
203*38fd1498SzrjTarget Report RejectNegative Negative(mlong-double-64) InverseMask(LONG_DOUBLE_64) Save
204*38fd1498SzrjUse 80-bit long double.
205*38fd1498Szrj
206*38fd1498Szrjmlong-double-64
207*38fd1498SzrjTarget Report RejectNegative Negative(mlong-double-128) Mask(LONG_DOUBLE_64) InverseMask(LONG_DOUBLE_128) Save
208*38fd1498SzrjUse 64-bit long double.
209*38fd1498Szrj
210*38fd1498Szrjmlong-double-128
211*38fd1498SzrjTarget Report RejectNegative Negative(mlong-double-80) Mask(LONG_DOUBLE_128) InverseMask(LONG_DOUBLE_64) Save
212*38fd1498SzrjUse 128-bit long double.
213*38fd1498Szrj
214*38fd1498Szrjmaccumulate-outgoing-args
215*38fd1498SzrjTarget Report Mask(ACCUMULATE_OUTGOING_ARGS) Save
216*38fd1498SzrjReserve space for outgoing arguments in the function prologue.
217*38fd1498Szrj
218*38fd1498Szrjmalign-double
219*38fd1498SzrjTarget Report Mask(ALIGN_DOUBLE) Save
220*38fd1498SzrjAlign some doubles on dword boundary.
221*38fd1498Szrj
222*38fd1498Szrjmalign-functions=
223*38fd1498SzrjTarget RejectNegative Joined UInteger
224*38fd1498SzrjFunction starts are aligned to this power of 2.
225*38fd1498Szrj
226*38fd1498Szrjmalign-jumps=
227*38fd1498SzrjTarget RejectNegative Joined UInteger
228*38fd1498SzrjJump targets are aligned to this power of 2.
229*38fd1498Szrj
230*38fd1498Szrjmalign-loops=
231*38fd1498SzrjTarget RejectNegative Joined UInteger
232*38fd1498SzrjLoop code aligned to this power of 2.
233*38fd1498Szrj
234*38fd1498Szrjmalign-stringops
235*38fd1498SzrjTarget RejectNegative Report InverseMask(NO_ALIGN_STRINGOPS, ALIGN_STRINGOPS) Save
236*38fd1498SzrjAlign destination of the string operations.
237*38fd1498Szrj
238*38fd1498Szrjmalign-data=
239*38fd1498SzrjTarget RejectNegative Joined Var(ix86_align_data_type) Enum(ix86_align_data) Init(ix86_align_data_type_compat)
240*38fd1498SzrjUse the given data alignment.
241*38fd1498Szrj
242*38fd1498SzrjEnum
243*38fd1498SzrjName(ix86_align_data) Type(enum ix86_align_data)
244*38fd1498SzrjKnown data alignment choices (for use with the -malign-data= option):
245*38fd1498Szrj
246*38fd1498SzrjEnumValue
247*38fd1498SzrjEnum(ix86_align_data) String(compat) Value(ix86_align_data_type_compat)
248*38fd1498Szrj
249*38fd1498SzrjEnumValue
250*38fd1498SzrjEnum(ix86_align_data) String(abi) Value(ix86_align_data_type_abi)
251*38fd1498Szrj
252*38fd1498SzrjEnumValue
253*38fd1498SzrjEnum(ix86_align_data) String(cacheline) Value(ix86_align_data_type_cacheline)
254*38fd1498Szrj
255*38fd1498Szrjmarch=
256*38fd1498SzrjTarget RejectNegative Joined Var(ix86_arch_string)
257*38fd1498SzrjGenerate code for given CPU.
258*38fd1498Szrj
259*38fd1498Szrjmasm=
260*38fd1498SzrjTarget RejectNegative Joined Enum(asm_dialect) Var(ix86_asm_dialect) Init(ASM_ATT)
261*38fd1498SzrjUse given assembler dialect.
262*38fd1498Szrj
263*38fd1498SzrjEnum
264*38fd1498SzrjName(asm_dialect) Type(enum asm_dialect)
265*38fd1498SzrjKnown assembler dialects (for use with the -masm= option):
266*38fd1498Szrj
267*38fd1498SzrjEnumValue
268*38fd1498SzrjEnum(asm_dialect) String(intel) Value(ASM_INTEL)
269*38fd1498Szrj
270*38fd1498SzrjEnumValue
271*38fd1498SzrjEnum(asm_dialect) String(att) Value(ASM_ATT)
272*38fd1498Szrj
273*38fd1498Szrjmbranch-cost=
274*38fd1498SzrjTarget RejectNegative Joined UInteger Var(ix86_branch_cost) IntegerRange(0, 5)
275*38fd1498SzrjBranches are this expensive (arbitrary units).
276*38fd1498Szrj
277*38fd1498Szrjmlarge-data-threshold=
278*38fd1498SzrjTarget RejectNegative Joined UInteger Var(ix86_section_threshold) Init(DEFAULT_LARGE_SECTION_THRESHOLD)
279*38fd1498Szrj-mlarge-data-threshold=<number>	Data greater than given threshold will go into .ldata section in x86-64 medium model.
280*38fd1498Szrj
281*38fd1498Szrjmcmodel=
282*38fd1498SzrjTarget RejectNegative Joined Enum(cmodel) Var(ix86_cmodel) Init(CM_32)
283*38fd1498SzrjUse given x86-64 code model.
284*38fd1498Szrj
285*38fd1498SzrjEnum
286*38fd1498SzrjName(cmodel) Type(enum cmodel)
287*38fd1498SzrjKnown code models (for use with the -mcmodel= option):
288*38fd1498Szrj
289*38fd1498SzrjEnumValue
290*38fd1498SzrjEnum(cmodel) String(small) Value(CM_SMALL)
291*38fd1498Szrj
292*38fd1498SzrjEnumValue
293*38fd1498SzrjEnum(cmodel) String(medium) Value(CM_MEDIUM)
294*38fd1498Szrj
295*38fd1498SzrjEnumValue
296*38fd1498SzrjEnum(cmodel) String(large) Value(CM_LARGE)
297*38fd1498Szrj
298*38fd1498SzrjEnumValue
299*38fd1498SzrjEnum(cmodel) String(32) Value(CM_32)
300*38fd1498Szrj
301*38fd1498SzrjEnumValue
302*38fd1498SzrjEnum(cmodel) String(kernel) Value(CM_KERNEL)
303*38fd1498Szrj
304*38fd1498Szrjmaddress-mode=
305*38fd1498SzrjTarget RejectNegative Joined Enum(pmode) Var(ix86_pmode) Init(PMODE_SI)
306*38fd1498SzrjUse given address mode.
307*38fd1498Szrj
308*38fd1498SzrjEnum
309*38fd1498SzrjName(pmode) Type(enum pmode)
310*38fd1498SzrjKnown address mode (for use with the -maddress-mode= option):
311*38fd1498Szrj
312*38fd1498SzrjEnumValue
313*38fd1498SzrjEnum(pmode) String(short) Value(PMODE_SI)
314*38fd1498Szrj
315*38fd1498SzrjEnumValue
316*38fd1498SzrjEnum(pmode) String(long) Value(PMODE_DI)
317*38fd1498Szrj
318*38fd1498Szrjmcpu=
319*38fd1498SzrjTarget RejectNegative Joined Undocumented Alias(mtune=) Warn(%<-mcpu=%> is deprecated; use %<-mtune=%> or %<-march=%> instead)
320*38fd1498Szrj
321*38fd1498Szrjmfancy-math-387
322*38fd1498SzrjTarget RejectNegative Report InverseMask(NO_FANCY_MATH_387, USE_FANCY_MATH_387) Save
323*38fd1498SzrjGenerate sin, cos, sqrt for FPU.
324*38fd1498Szrj
325*38fd1498Szrjmforce-drap
326*38fd1498SzrjTarget Report Var(ix86_force_drap)
327*38fd1498SzrjAlways use Dynamic Realigned Argument Pointer (DRAP) to realign stack.
328*38fd1498Szrj
329*38fd1498Szrjmfp-ret-in-387
330*38fd1498SzrjTarget Report Mask(FLOAT_RETURNS) Save
331*38fd1498SzrjReturn values of functions in FPU registers.
332*38fd1498Szrj
333*38fd1498Szrjmfpmath=
334*38fd1498SzrjTarget RejectNegative Joined Var(ix86_fpmath) Enum(fpmath_unit) Init(FPMATH_387) Save
335*38fd1498SzrjGenerate floating point mathematics using given instruction set.
336*38fd1498Szrj
337*38fd1498SzrjEnum
338*38fd1498SzrjName(fpmath_unit) Type(enum fpmath_unit)
339*38fd1498SzrjValid arguments to -mfpmath=:
340*38fd1498Szrj
341*38fd1498SzrjEnumValue
342*38fd1498SzrjEnum(fpmath_unit) String(387) Value(FPMATH_387)
343*38fd1498Szrj
344*38fd1498SzrjEnumValue
345*38fd1498SzrjEnum(fpmath_unit) String(sse) Value(FPMATH_SSE)
346*38fd1498Szrj
347*38fd1498SzrjEnumValue
348*38fd1498SzrjEnum(fpmath_unit) String(387,sse) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)})
349*38fd1498Szrj
350*38fd1498SzrjEnumValue
351*38fd1498SzrjEnum(fpmath_unit) String(387+sse) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)})
352*38fd1498Szrj
353*38fd1498SzrjEnumValue
354*38fd1498SzrjEnum(fpmath_unit) String(sse,387) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)})
355*38fd1498Szrj
356*38fd1498SzrjEnumValue
357*38fd1498SzrjEnum(fpmath_unit) String(sse+387) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)})
358*38fd1498Szrj
359*38fd1498SzrjEnumValue
360*38fd1498SzrjEnum(fpmath_unit) String(both) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)})
361*38fd1498Szrj
362*38fd1498Szrjmhard-float
363*38fd1498SzrjTarget RejectNegative Mask(80387) Save
364*38fd1498SzrjUse hardware fp.
365*38fd1498Szrj
366*38fd1498Szrjmieee-fp
367*38fd1498SzrjTarget Report Mask(IEEE_FP) Save
368*38fd1498SzrjUse IEEE math for fp comparisons.
369*38fd1498Szrj
370*38fd1498Szrjminline-all-stringops
371*38fd1498SzrjTarget Report Mask(INLINE_ALL_STRINGOPS) Save
372*38fd1498SzrjInline all known string operations.
373*38fd1498Szrj
374*38fd1498Szrjminline-stringops-dynamically
375*38fd1498SzrjTarget Report Mask(INLINE_STRINGOPS_DYNAMICALLY) Save
376*38fd1498SzrjInline memset/memcpy string operations, but perform inline version only for small blocks.
377*38fd1498Szrj
378*38fd1498Szrjmintel-syntax
379*38fd1498SzrjTarget Undocumented Alias(masm=, intel, att) Warn(%<-mintel-syntax%> and %<-mno-intel-syntax%> are deprecated; use %<-masm=intel%> and %<-masm=att%> instead)
380*38fd1498Szrj;; Deprecated
381*38fd1498Szrj
382*38fd1498Szrjmms-bitfields
383*38fd1498SzrjTarget Report Mask(MS_BITFIELD_LAYOUT) Save
384*38fd1498SzrjUse native (MS) bitfield layout.
385*38fd1498Szrj
386*38fd1498Szrjmno-align-stringops
387*38fd1498SzrjTarget RejectNegative Report Mask(NO_ALIGN_STRINGOPS) Undocumented Save
388*38fd1498Szrj
389*38fd1498Szrjmno-fancy-math-387
390*38fd1498SzrjTarget RejectNegative Report Mask(NO_FANCY_MATH_387) Undocumented Save
391*38fd1498Szrj
392*38fd1498Szrjmno-push-args
393*38fd1498SzrjTarget RejectNegative Report Mask(NO_PUSH_ARGS) Undocumented Save
394*38fd1498Szrj
395*38fd1498Szrjmno-red-zone
396*38fd1498SzrjTarget RejectNegative Report Mask(NO_RED_ZONE) Undocumented Save
397*38fd1498Szrj
398*38fd1498Szrjmomit-leaf-frame-pointer
399*38fd1498SzrjTarget Report Mask(OMIT_LEAF_FRAME_POINTER) Save
400*38fd1498SzrjOmit the frame pointer in leaf functions.
401*38fd1498Szrj
402*38fd1498Szrjmpc32
403*38fd1498SzrjTarget RejectNegative Report
404*38fd1498SzrjSet 80387 floating-point precision to 32-bit.
405*38fd1498Szrj
406*38fd1498Szrjmpc64
407*38fd1498SzrjTarget RejectNegative Report
408*38fd1498SzrjSet 80387 floating-point precision to 64-bit.
409*38fd1498Szrj
410*38fd1498Szrjmpc80
411*38fd1498SzrjTarget RejectNegative Report
412*38fd1498SzrjSet 80387 floating-point precision to 80-bit.
413*38fd1498Szrj
414*38fd1498Szrjmpreferred-stack-boundary=
415*38fd1498SzrjTarget RejectNegative Joined UInteger Var(ix86_preferred_stack_boundary_arg)
416*38fd1498SzrjAttempt to keep stack aligned to this power of 2.
417*38fd1498Szrj
418*38fd1498Szrjmincoming-stack-boundary=
419*38fd1498SzrjTarget RejectNegative Joined UInteger Var(ix86_incoming_stack_boundary_arg)
420*38fd1498SzrjAssume incoming stack aligned to this power of 2.
421*38fd1498Szrj
422*38fd1498Szrjmpush-args
423*38fd1498SzrjTarget Report InverseMask(NO_PUSH_ARGS, PUSH_ARGS) Save
424*38fd1498SzrjUse push instructions to save outgoing arguments.
425*38fd1498Szrj
426*38fd1498Szrjmred-zone
427*38fd1498SzrjTarget RejectNegative Report InverseMask(NO_RED_ZONE, RED_ZONE) Save
428*38fd1498SzrjUse red-zone in the x86-64 code.
429*38fd1498Szrj
430*38fd1498Szrjmregparm=
431*38fd1498SzrjTarget RejectNegative Joined UInteger Var(ix86_regparm)
432*38fd1498SzrjNumber of registers used to pass integer arguments.
433*38fd1498Szrj
434*38fd1498Szrjmrtd
435*38fd1498SzrjTarget Report Mask(RTD) Save
436*38fd1498SzrjAlternate calling convention.
437*38fd1498Szrj
438*38fd1498Szrjmsoft-float
439*38fd1498SzrjTarget InverseMask(80387) Save
440*38fd1498SzrjDo not use hardware fp.
441*38fd1498Szrj
442*38fd1498Szrjmsseregparm
443*38fd1498SzrjTarget RejectNegative Mask(SSEREGPARM) Save
444*38fd1498SzrjUse SSE register passing conventions for SF and DF mode.
445*38fd1498Szrj
446*38fd1498Szrjmstackrealign
447*38fd1498SzrjTarget Report Var(ix86_force_align_arg_pointer)
448*38fd1498SzrjRealign stack in prologue.
449*38fd1498Szrj
450*38fd1498Szrjmstack-arg-probe
451*38fd1498SzrjTarget Report Mask(STACK_PROBE) Save
452*38fd1498SzrjEnable stack probing.
453*38fd1498Szrj
454*38fd1498Szrjmmemcpy-strategy=
455*38fd1498SzrjTarget RejectNegative Joined Var(ix86_tune_memcpy_strategy)
456*38fd1498SzrjSpecify memcpy expansion strategy when expected size is known.
457*38fd1498Szrj
458*38fd1498Szrjmmemset-strategy=
459*38fd1498SzrjTarget RejectNegative Joined Var(ix86_tune_memset_strategy)
460*38fd1498SzrjSpecify memset expansion strategy when expected size is known.
461*38fd1498Szrj
462*38fd1498Szrjmstringop-strategy=
463*38fd1498SzrjTarget RejectNegative Joined Enum(stringop_alg) Var(ix86_stringop_alg) Init(no_stringop)
464*38fd1498SzrjChose strategy to generate stringop using.
465*38fd1498Szrj
466*38fd1498SzrjEnum
467*38fd1498SzrjName(stringop_alg) Type(enum stringop_alg)
468*38fd1498SzrjValid arguments to -mstringop-strategy=:
469*38fd1498Szrj
470*38fd1498SzrjEnumValue
471*38fd1498SzrjEnum(stringop_alg) String(rep_byte) Value(rep_prefix_1_byte)
472*38fd1498Szrj
473*38fd1498SzrjEnumValue
474*38fd1498SzrjEnum(stringop_alg) String(libcall) Value(libcall)
475*38fd1498Szrj
476*38fd1498SzrjEnumValue
477*38fd1498SzrjEnum(stringop_alg) String(rep_4byte) Value(rep_prefix_4_byte)
478*38fd1498Szrj
479*38fd1498SzrjEnumValue
480*38fd1498SzrjEnum(stringop_alg) String(rep_8byte) Value(rep_prefix_8_byte)
481*38fd1498Szrj
482*38fd1498SzrjEnumValue
483*38fd1498SzrjEnum(stringop_alg) String(byte_loop) Value(loop_1_byte)
484*38fd1498Szrj
485*38fd1498SzrjEnumValue
486*38fd1498SzrjEnum(stringop_alg) String(loop) Value(loop)
487*38fd1498Szrj
488*38fd1498SzrjEnumValue
489*38fd1498SzrjEnum(stringop_alg) String(unrolled_loop) Value(unrolled_loop)
490*38fd1498Szrj
491*38fd1498SzrjEnumValue
492*38fd1498SzrjEnum(stringop_alg) String(vector_loop) Value(vector_loop)
493*38fd1498Szrj
494*38fd1498Szrjmtls-dialect=
495*38fd1498SzrjTarget RejectNegative Joined Var(ix86_tls_dialect) Enum(tls_dialect) Init(TLS_DIALECT_GNU)
496*38fd1498SzrjUse given thread-local storage dialect.
497*38fd1498Szrj
498*38fd1498SzrjEnum
499*38fd1498SzrjName(tls_dialect) Type(enum tls_dialect)
500*38fd1498SzrjKnown TLS dialects (for use with the -mtls-dialect= option):
501*38fd1498Szrj
502*38fd1498SzrjEnumValue
503*38fd1498SzrjEnum(tls_dialect) String(gnu) Value(TLS_DIALECT_GNU)
504*38fd1498Szrj
505*38fd1498SzrjEnumValue
506*38fd1498SzrjEnum(tls_dialect) String(gnu2) Value(TLS_DIALECT_GNU2)
507*38fd1498Szrj
508*38fd1498Szrjmtls-direct-seg-refs
509*38fd1498SzrjTarget Report Mask(TLS_DIRECT_SEG_REFS)
510*38fd1498SzrjUse direct references against %gs when accessing tls data.
511*38fd1498Szrj
512*38fd1498Szrjmtune=
513*38fd1498SzrjTarget RejectNegative Joined Var(ix86_tune_string)
514*38fd1498SzrjSchedule code for given CPU.
515*38fd1498Szrj
516*38fd1498Szrjmtune-ctrl=
517*38fd1498SzrjTarget RejectNegative Joined Var(ix86_tune_ctrl_string)
518*38fd1498SzrjFine grain control of tune features.
519*38fd1498Szrj
520*38fd1498Szrjmno-default
521*38fd1498SzrjTarget RejectNegative Var(ix86_tune_no_default)
522*38fd1498SzrjClear all tune features.
523*38fd1498Szrj
524*38fd1498Szrjmdump-tune-features
525*38fd1498SzrjTarget RejectNegative Var(ix86_dump_tunes)
526*38fd1498Szrj
527*38fd1498Szrjmiamcu
528*38fd1498SzrjTarget Report Mask(IAMCU)
529*38fd1498SzrjGenerate code that conforms to Intel MCU psABI.
530*38fd1498Szrj
531*38fd1498Szrjmabi=
532*38fd1498SzrjTarget RejectNegative Joined Var(ix86_abi) Enum(calling_abi) Init(SYSV_ABI)
533*38fd1498SzrjGenerate code that conforms to the given ABI.
534*38fd1498Szrj
535*38fd1498SzrjEnum
536*38fd1498SzrjName(calling_abi) Type(enum calling_abi)
537*38fd1498SzrjKnown ABIs (for use with the -mabi= option):
538*38fd1498Szrj
539*38fd1498SzrjEnumValue
540*38fd1498SzrjEnum(calling_abi) String(sysv) Value(SYSV_ABI)
541*38fd1498Szrj
542*38fd1498SzrjEnumValue
543*38fd1498SzrjEnum(calling_abi) String(ms) Value(MS_ABI)
544*38fd1498Szrj
545*38fd1498Szrjmcall-ms2sysv-xlogues
546*38fd1498SzrjTarget Report Mask(CALL_MS2SYSV_XLOGUES) Save
547*38fd1498SzrjUse libgcc stubs to save and restore registers clobbered by 64-bit Microsoft to System V ABI calls.
548*38fd1498Szrj
549*38fd1498Szrjmveclibabi=
550*38fd1498SzrjTarget RejectNegative Joined Var(ix86_veclibabi_type) Enum(ix86_veclibabi) Init(ix86_veclibabi_type_none)
551*38fd1498SzrjVector library ABI to use.
552*38fd1498Szrj
553*38fd1498SzrjEnum
554*38fd1498SzrjName(ix86_veclibabi) Type(enum ix86_veclibabi)
555*38fd1498SzrjKnown vectorization library ABIs (for use with the -mveclibabi= option):
556*38fd1498Szrj
557*38fd1498SzrjEnumValue
558*38fd1498SzrjEnum(ix86_veclibabi) String(svml) Value(ix86_veclibabi_type_svml)
559*38fd1498Szrj
560*38fd1498SzrjEnumValue
561*38fd1498SzrjEnum(ix86_veclibabi) String(acml) Value(ix86_veclibabi_type_acml)
562*38fd1498Szrj
563*38fd1498Szrjmvect8-ret-in-mem
564*38fd1498SzrjTarget Report Mask(VECT8_RETURNS) Save
565*38fd1498SzrjReturn 8-byte vectors in memory.
566*38fd1498Szrj
567*38fd1498Szrjmrecip
568*38fd1498SzrjTarget Report Mask(RECIP) Save
569*38fd1498SzrjGenerate reciprocals instead of divss and sqrtss.
570*38fd1498Szrj
571*38fd1498Szrjmrecip=
572*38fd1498SzrjTarget Report RejectNegative Joined Var(ix86_recip_name)
573*38fd1498SzrjControl generation of reciprocal estimates.
574*38fd1498Szrj
575*38fd1498Szrjmcld
576*38fd1498SzrjTarget Report Mask(CLD) Save
577*38fd1498SzrjGenerate cld instruction in the function prologue.
578*38fd1498Szrj
579*38fd1498Szrjmvzeroupper
580*38fd1498SzrjTarget Report Mask(VZEROUPPER) Save
581*38fd1498SzrjGenerate vzeroupper instruction before a transfer of control flow out of
582*38fd1498Szrjthe function.
583*38fd1498Szrj
584*38fd1498Szrjmstv
585*38fd1498SzrjTarget Report Mask(STV) Save
586*38fd1498SzrjDisable Scalar to Vector optimization pass transforming 64-bit integer
587*38fd1498Szrjcomputations into a vector ones.
588*38fd1498Szrj
589*38fd1498Szrjmdispatch-scheduler
590*38fd1498SzrjTarget RejectNegative Var(flag_dispatch_scheduler)
591*38fd1498SzrjDo dispatch scheduling if processor is bdver1, bdver2, bdver3, bdver4
592*38fd1498Szrjor znver1 and Haifa scheduling is selected.
593*38fd1498Szrj
594*38fd1498Szrjmprefer-avx128
595*38fd1498SzrjTarget Alias(mprefer-vector-width=, 128, 256)
596*38fd1498SzrjUse 128-bit AVX instructions instead of 256-bit AVX instructions in the auto-vectorizer.
597*38fd1498Szrj
598*38fd1498Szrjmprefer-vector-width=
599*38fd1498SzrjTarget Report RejectNegative Joined Var(prefer_vector_width_type) Enum(prefer_vector_width) Init(PVW_NONE)
600*38fd1498SzrjUse given register vector width instructions instead of maximum register width in the auto-vectorizer.
601*38fd1498Szrj
602*38fd1498SzrjEnum
603*38fd1498SzrjName(prefer_vector_width) Type(enum prefer_vector_width)
604*38fd1498SzrjKnown preferred register vector length (to use with the -mprefer-vector-width= option)
605*38fd1498Szrj
606*38fd1498SzrjEnumValue
607*38fd1498SzrjEnum(prefer_vector_width) String(none) Value(PVW_NONE)
608*38fd1498Szrj
609*38fd1498SzrjEnumValue
610*38fd1498SzrjEnum(prefer_vector_width) String(128) Value(PVW_AVX128)
611*38fd1498Szrj
612*38fd1498SzrjEnumValue
613*38fd1498SzrjEnum(prefer_vector_width) String(256) Value(PVW_AVX256)
614*38fd1498Szrj
615*38fd1498SzrjEnumValue
616*38fd1498SzrjEnum(prefer_vector_width) String(512) Value(PVW_AVX512)
617*38fd1498Szrj
618*38fd1498Szrj;; ISA support
619*38fd1498Szrj
620*38fd1498Szrjm32
621*38fd1498SzrjTarget RejectNegative Negative(m64) Report InverseMask(ISA_64BIT) Var(ix86_isa_flags) Save
622*38fd1498SzrjGenerate 32bit i386 code.
623*38fd1498Szrj
624*38fd1498Szrjm64
625*38fd1498SzrjTarget RejectNegative Negative(mx32) Report Mask(ABI_64) Var(ix86_isa_flags) Save
626*38fd1498SzrjGenerate 64bit x86-64 code.
627*38fd1498Szrj
628*38fd1498Szrjmx32
629*38fd1498SzrjTarget RejectNegative Negative(m16) Report Mask(ABI_X32) Var(ix86_isa_flags) Save
630*38fd1498SzrjGenerate 32bit x86-64 code.
631*38fd1498Szrj
632*38fd1498Szrjm16
633*38fd1498SzrjTarget RejectNegative Negative(m32) Report Mask(CODE16) InverseMask(ISA_64BIT) Var(ix86_isa_flags) Save
634*38fd1498SzrjGenerate 16bit i386 code.
635*38fd1498Szrj
636*38fd1498Szrjmmmx
637*38fd1498SzrjTarget Report Mask(ISA_MMX) Var(ix86_isa_flags) Save
638*38fd1498SzrjSupport MMX built-in functions.
639*38fd1498Szrj
640*38fd1498Szrjm3dnow
641*38fd1498SzrjTarget Report Mask(ISA_3DNOW) Var(ix86_isa_flags) Save
642*38fd1498SzrjSupport 3DNow! built-in functions.
643*38fd1498Szrj
644*38fd1498Szrjm3dnowa
645*38fd1498SzrjTarget Report Mask(ISA_3DNOW_A) Var(ix86_isa_flags) Save
646*38fd1498SzrjSupport Athlon 3Dnow! built-in functions.
647*38fd1498Szrj
648*38fd1498Szrjmsse
649*38fd1498SzrjTarget Report Mask(ISA_SSE) Var(ix86_isa_flags) Save
650*38fd1498SzrjSupport MMX and SSE built-in functions and code generation.
651*38fd1498Szrj
652*38fd1498Szrjmsse2
653*38fd1498SzrjTarget Report Mask(ISA_SSE2) Var(ix86_isa_flags) Save
654*38fd1498SzrjSupport MMX, SSE and SSE2 built-in functions and code generation.
655*38fd1498Szrj
656*38fd1498Szrjmsse3
657*38fd1498SzrjTarget Report Mask(ISA_SSE3) Var(ix86_isa_flags) Save
658*38fd1498SzrjSupport MMX, SSE, SSE2 and SSE3 built-in functions and code generation.
659*38fd1498Szrj
660*38fd1498Szrjmssse3
661*38fd1498SzrjTarget Report Mask(ISA_SSSE3) Var(ix86_isa_flags) Save
662*38fd1498SzrjSupport MMX, SSE, SSE2, SSE3 and SSSE3 built-in functions and code generation.
663*38fd1498Szrj
664*38fd1498Szrjmsse4.1
665*38fd1498SzrjTarget Report Mask(ISA_SSE4_1) Var(ix86_isa_flags) Save
666*38fd1498SzrjSupport MMX, SSE, SSE2, SSE3, SSSE3 and SSE4.1 built-in functions and code generation.
667*38fd1498Szrj
668*38fd1498Szrjmsse4.2
669*38fd1498SzrjTarget Report Mask(ISA_SSE4_2) Var(ix86_isa_flags) Save
670*38fd1498SzrjSupport MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and code generation.
671*38fd1498Szrj
672*38fd1498Szrjmsse4
673*38fd1498SzrjTarget RejectNegative Report Mask(ISA_SSE4_2) Var(ix86_isa_flags) Save
674*38fd1498SzrjSupport MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and code generation.
675*38fd1498Szrj
676*38fd1498Szrjmno-sse4
677*38fd1498SzrjTarget RejectNegative Report InverseMask(ISA_SSE4_1) Var(ix86_isa_flags) Save
678*38fd1498SzrjDo not support SSE4.1 and SSE4.2 built-in functions and code generation.
679*38fd1498Szrj
680*38fd1498Szrjmsse5
681*38fd1498SzrjTarget Undocumented Alias(mavx) Warn(%<-msse5%> was removed)
682*38fd1498Szrj;; Deprecated
683*38fd1498Szrj
684*38fd1498Szrjmavx
685*38fd1498SzrjTarget Report Mask(ISA_AVX) Var(ix86_isa_flags) Save
686*38fd1498SzrjSupport MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 and AVX built-in functions and code generation.
687*38fd1498Szrj
688*38fd1498Szrjmavx2
689*38fd1498SzrjTarget Report Mask(ISA_AVX2) Var(ix86_isa_flags) Save
690*38fd1498SzrjSupport MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and AVX2 built-in functions and code generation.
691*38fd1498Szrj
692*38fd1498Szrjmavx512f
693*38fd1498SzrjTarget Report Mask(ISA_AVX512F) Var(ix86_isa_flags) Save
694*38fd1498SzrjSupport MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F built-in functions and code generation.
695*38fd1498Szrj
696*38fd1498Szrjmavx512pf
697*38fd1498SzrjTarget Report Mask(ISA_AVX512PF) Var(ix86_isa_flags) Save
698*38fd1498SzrjSupport MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512PF built-in functions and code generation.
699*38fd1498Szrj
700*38fd1498Szrjmavx512er
701*38fd1498SzrjTarget Report Mask(ISA_AVX512ER) Var(ix86_isa_flags) Save
702*38fd1498SzrjSupport MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512ER built-in functions and code generation.
703*38fd1498Szrj
704*38fd1498Szrjmavx512cd
705*38fd1498SzrjTarget Report Mask(ISA_AVX512CD) Var(ix86_isa_flags) Save
706*38fd1498SzrjSupport MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512CD built-in functions and code generation.
707*38fd1498Szrj
708*38fd1498Szrjmavx512dq
709*38fd1498SzrjTarget Report Mask(ISA_AVX512DQ) Var(ix86_isa_flags) Save
710*38fd1498SzrjSupport MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512DQ built-in functions and code generation.
711*38fd1498Szrj
712*38fd1498Szrjmavx512bw
713*38fd1498SzrjTarget Report Mask(ISA_AVX512BW) Var(ix86_isa_flags) Save
714*38fd1498SzrjSupport MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512BW built-in functions and code generation.
715*38fd1498Szrj
716*38fd1498Szrjmavx512vl
717*38fd1498SzrjTarget Report Mask(ISA_AVX512VL) Var(ix86_isa_flags) Save
718*38fd1498SzrjSupport MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512VL built-in functions and code generation.
719*38fd1498Szrj
720*38fd1498Szrjmavx512ifma
721*38fd1498SzrjTarget Report Mask(ISA_AVX512IFMA) Var(ix86_isa_flags) Save
722*38fd1498SzrjSupport MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512IFMA built-in functions and code generation.
723*38fd1498Szrj
724*38fd1498Szrjmavx512vbmi
725*38fd1498SzrjTarget Report Mask(ISA_AVX512VBMI) Var(ix86_isa_flags) Save
726*38fd1498SzrjSupport MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512VBMI built-in functions and code generation.
727*38fd1498Szrj
728*38fd1498Szrjmavx5124fmaps
729*38fd1498SzrjTarget Report Mask(ISA_AVX5124FMAPS) Var(ix86_isa_flags2) Save
730*38fd1498SzrjSupport MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX5124FMAPS built-in functions and code generation.
731*38fd1498Szrj
732*38fd1498Szrjmavx5124vnniw
733*38fd1498SzrjTarget Report Mask(ISA_AVX5124VNNIW) Var(ix86_isa_flags2) Save
734*38fd1498SzrjSupport MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX5124VNNIW built-in functions and code generation.
735*38fd1498Szrj
736*38fd1498Szrjmavx512vpopcntdq
737*38fd1498SzrjTarget Report Mask(ISA_AVX512VPOPCNTDQ) Var(ix86_isa_flags) Save
738*38fd1498SzrjSupport MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512VPOPCNTDQ built-in functions and code generation.
739*38fd1498Szrj
740*38fd1498Szrjmavx512vbmi2
741*38fd1498SzrjTarget Report Mask(ISA_AVX512VBMI2) Var(ix86_isa_flags) Save
742*38fd1498SzrjSupport MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512VBMI2 built-in functions and code generation.
743*38fd1498Szrj
744*38fd1498Szrjmavx512vnni
745*38fd1498SzrjTarget Report Mask(ISA_AVX512VNNI) Var(ix86_isa_flags) Save
746*38fd1498SzrjSupport AVX512VNNI built-in functions and code generation.
747*38fd1498Szrj
748*38fd1498Szrjmavx512bitalg
749*38fd1498SzrjTarget Report Mask(ISA_AVX512BITALG) Var(ix86_isa_flags) Save
750*38fd1498SzrjSupport MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512BITALG built-in functions and code generation.
751*38fd1498Szrj
752*38fd1498Szrjmfma
753*38fd1498SzrjTarget Report Mask(ISA_FMA) Var(ix86_isa_flags) Save
754*38fd1498SzrjSupport MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and FMA built-in functions and code generation.
755*38fd1498Szrj
756*38fd1498Szrjmsse4a
757*38fd1498SzrjTarget Report Mask(ISA_SSE4A) Var(ix86_isa_flags) Save
758*38fd1498SzrjSupport MMX, SSE, SSE2, SSE3 and SSE4A built-in functions and code generation.
759*38fd1498Szrj
760*38fd1498Szrjmfma4
761*38fd1498SzrjTarget Report Mask(ISA_FMA4) Var(ix86_isa_flags) Save
762*38fd1498SzrjSupport FMA4 built-in functions and code generation.
763*38fd1498Szrj
764*38fd1498Szrjmxop
765*38fd1498SzrjTarget Report Mask(ISA_XOP) Var(ix86_isa_flags) Save
766*38fd1498SzrjSupport XOP built-in functions and code generation.
767*38fd1498Szrj
768*38fd1498Szrjmlwp
769*38fd1498SzrjTarget Report Mask(ISA_LWP) Var(ix86_isa_flags) Save
770*38fd1498SzrjSupport LWP built-in functions and code generation.
771*38fd1498Szrj
772*38fd1498Szrjmabm
773*38fd1498SzrjTarget Report Mask(ISA_ABM) Var(ix86_isa_flags) Save
774*38fd1498SzrjSupport code generation of Advanced Bit Manipulation (ABM) instructions.
775*38fd1498Szrj
776*38fd1498Szrjmpopcnt
777*38fd1498SzrjTarget Report Mask(ISA_POPCNT) Var(ix86_isa_flags) Save
778*38fd1498SzrjSupport code generation of popcnt instruction.
779*38fd1498Szrj
780*38fd1498Szrjmpconfig
781*38fd1498SzrjTarget Report Mask(ISA_PCONFIG) Var(ix86_isa_flags2) Save
782*38fd1498SzrjSupport PCONFIG built-in functions and code generation.
783*38fd1498Szrj
784*38fd1498Szrjmwbnoinvd
785*38fd1498SzrjTarget Report Mask(ISA_WBNOINVD) Var(ix86_isa_flags2) Save
786*38fd1498SzrjSupport WBNOINVD built-in functions and code generation.
787*38fd1498Szrj
788*38fd1498Szrjmsgx
789*38fd1498SzrjTarget Report Mask(ISA_SGX) Var(ix86_isa_flags2) Save
790*38fd1498SzrjSupport SGX built-in functions and code generation.
791*38fd1498Szrj
792*38fd1498Szrjmrdpid
793*38fd1498SzrjTarget Report Mask(ISA_RDPID) Var(ix86_isa_flags2) Save
794*38fd1498SzrjSupport RDPID built-in functions and code generation.
795*38fd1498Szrj
796*38fd1498Szrjmgfni
797*38fd1498SzrjTarget Report Mask(ISA_GFNI) Var(ix86_isa_flags) Save
798*38fd1498SzrjSupport GFNI built-in functions and code generation.
799*38fd1498Szrj
800*38fd1498Szrjmvaes
801*38fd1498SzrjTarget Report Mask(ISA_VAES) Var(ix86_isa_flags2) Save
802*38fd1498SzrjSupport VAES built-in functions and code generation.
803*38fd1498Szrj
804*38fd1498Szrjmvpclmulqdq
805*38fd1498SzrjTarget Report Mask(ISA_VPCLMULQDQ) Var(ix86_isa_flags) Save
806*38fd1498SzrjSupport VPCLMULQDQ built-in functions and code generation.
807*38fd1498Szrj
808*38fd1498Szrjmbmi
809*38fd1498SzrjTarget Report Mask(ISA_BMI) Var(ix86_isa_flags) Save
810*38fd1498SzrjSupport BMI built-in functions and code generation.
811*38fd1498Szrj
812*38fd1498Szrjmbmi2
813*38fd1498SzrjTarget Report Mask(ISA_BMI2) Var(ix86_isa_flags) Save
814*38fd1498SzrjSupport BMI2 built-in functions and code generation.
815*38fd1498Szrj
816*38fd1498Szrjmlzcnt
817*38fd1498SzrjTarget Report Mask(ISA_LZCNT) Var(ix86_isa_flags) Save
818*38fd1498SzrjSupport LZCNT built-in function and code generation.
819*38fd1498Szrj
820*38fd1498Szrjmhle
821*38fd1498SzrjTarget Report Mask(ISA_HLE) Var(ix86_isa_flags2) Save
822*38fd1498SzrjSupport Hardware Lock Elision prefixes.
823*38fd1498Szrj
824*38fd1498Szrjmrdseed
825*38fd1498SzrjTarget Report Mask(ISA_RDSEED) Var(ix86_isa_flags) Save
826*38fd1498SzrjSupport RDSEED instruction.
827*38fd1498Szrj
828*38fd1498Szrjmprfchw
829*38fd1498SzrjTarget Report Mask(ISA_PRFCHW) Var(ix86_isa_flags) Save
830*38fd1498SzrjSupport PREFETCHW instruction.
831*38fd1498Szrj
832*38fd1498Szrjmadx
833*38fd1498SzrjTarget Report Mask(ISA_ADX) Var(ix86_isa_flags) Save
834*38fd1498SzrjSupport flag-preserving add-carry instructions.
835*38fd1498Szrj
836*38fd1498Szrjmclflushopt
837*38fd1498SzrjTarget Report Mask(ISA_CLFLUSHOPT) Var(ix86_isa_flags) Save
838*38fd1498SzrjSupport CLFLUSHOPT instructions.
839*38fd1498Szrj
840*38fd1498Szrjmclwb
841*38fd1498SzrjTarget Report Mask(ISA_CLWB) Var(ix86_isa_flags) Save
842*38fd1498SzrjSupport CLWB instruction.
843*38fd1498Szrj
844*38fd1498Szrjmpcommit
845*38fd1498SzrjTarget Undocumented Warn(%<-mpcommit%> was deprecated)
846*38fd1498Szrj;; Deprecated
847*38fd1498Szrj
848*38fd1498Szrjmfxsr
849*38fd1498SzrjTarget Report Mask(ISA_FXSR) Var(ix86_isa_flags) Save
850*38fd1498SzrjSupport FXSAVE and FXRSTOR instructions.
851*38fd1498Szrj
852*38fd1498Szrjmxsave
853*38fd1498SzrjTarget Report Mask(ISA_XSAVE) Var(ix86_isa_flags) Save
854*38fd1498SzrjSupport XSAVE and XRSTOR instructions.
855*38fd1498Szrj
856*38fd1498Szrjmxsaveopt
857*38fd1498SzrjTarget Report Mask(ISA_XSAVEOPT) Var(ix86_isa_flags) Save
858*38fd1498SzrjSupport XSAVEOPT instruction.
859*38fd1498Szrj
860*38fd1498Szrjmxsavec
861*38fd1498SzrjTarget Report Mask(ISA_XSAVEC) Var(ix86_isa_flags) Save
862*38fd1498SzrjSupport XSAVEC instructions.
863*38fd1498Szrj
864*38fd1498Szrjmxsaves
865*38fd1498SzrjTarget Report Mask(ISA_XSAVES) Var(ix86_isa_flags) Save
866*38fd1498SzrjSupport XSAVES and XRSTORS instructions.
867*38fd1498Szrj
868*38fd1498Szrjmtbm
869*38fd1498SzrjTarget Report Mask(ISA_TBM) Var(ix86_isa_flags) Save
870*38fd1498SzrjSupport TBM built-in functions and code generation.
871*38fd1498Szrj
872*38fd1498Szrjmcx16
873*38fd1498SzrjTarget Report Mask(ISA_CX16) Var(ix86_isa_flags2) Save
874*38fd1498SzrjSupport code generation of cmpxchg16b instruction.
875*38fd1498Szrj
876*38fd1498Szrjmsahf
877*38fd1498SzrjTarget Report Mask(ISA_SAHF) Var(ix86_isa_flags) Save
878*38fd1498SzrjSupport code generation of sahf instruction in 64bit x86-64 code.
879*38fd1498Szrj
880*38fd1498Szrjmmovbe
881*38fd1498SzrjTarget Report Mask(ISA_MOVBE) Var(ix86_isa_flags2) Save
882*38fd1498SzrjSupport code generation of movbe instruction.
883*38fd1498Szrj
884*38fd1498Szrjmcrc32
885*38fd1498SzrjTarget Report Mask(ISA_CRC32) Var(ix86_isa_flags) Save
886*38fd1498SzrjSupport code generation of crc32 instruction.
887*38fd1498Szrj
888*38fd1498Szrjmaes
889*38fd1498SzrjTarget Report Mask(ISA_AES) Var(ix86_isa_flags) Save
890*38fd1498SzrjSupport AES built-in functions and code generation.
891*38fd1498Szrj
892*38fd1498Szrjmsha
893*38fd1498SzrjTarget Report Mask(ISA_SHA) Var(ix86_isa_flags) Save
894*38fd1498SzrjSupport SHA1 and SHA256 built-in functions and code generation.
895*38fd1498Szrj
896*38fd1498Szrjmpclmul
897*38fd1498SzrjTarget Report Mask(ISA_PCLMUL) Var(ix86_isa_flags) Save
898*38fd1498SzrjSupport PCLMUL built-in functions and code generation.
899*38fd1498Szrj
900*38fd1498Szrjmsse2avx
901*38fd1498SzrjTarget Report Var(ix86_sse2avx)
902*38fd1498SzrjEncode SSE instructions with VEX prefix.
903*38fd1498Szrj
904*38fd1498Szrjmfsgsbase
905*38fd1498SzrjTarget Report Mask(ISA_FSGSBASE) Var(ix86_isa_flags) Save
906*38fd1498SzrjSupport FSGSBASE built-in functions and code generation.
907*38fd1498Szrj
908*38fd1498Szrjmrdrnd
909*38fd1498SzrjTarget Report Mask(ISA_RDRND) Var(ix86_isa_flags) Save
910*38fd1498SzrjSupport RDRND built-in functions and code generation.
911*38fd1498Szrj
912*38fd1498Szrjmf16c
913*38fd1498SzrjTarget Report Mask(ISA_F16C) Var(ix86_isa_flags) Save
914*38fd1498SzrjSupport F16C built-in functions and code generation.
915*38fd1498Szrj
916*38fd1498Szrjmprefetchwt1
917*38fd1498SzrjTarget Report Mask(ISA_PREFETCHWT1) Var(ix86_isa_flags) Save
918*38fd1498SzrjSupport PREFETCHWT1 built-in functions and code generation.
919*38fd1498Szrj
920*38fd1498Szrjmfentry
921*38fd1498SzrjTarget Report Var(flag_fentry)
922*38fd1498SzrjEmit profiling counter call at function entry before prologue.
923*38fd1498Szrj
924*38fd1498Szrjmrecord-mcount
925*38fd1498SzrjTarget Report Var(flag_record_mcount)
926*38fd1498SzrjGenerate __mcount_loc section with all mcount or __fentry__ calls.
927*38fd1498Szrj
928*38fd1498Szrjmnop-mcount
929*38fd1498SzrjTarget Report Var(flag_nop_mcount)
930*38fd1498SzrjGenerate mcount/__fentry__ calls as nops. To activate they need to be
931*38fd1498Szrjpatched in.
932*38fd1498Szrj
933*38fd1498Szrjmskip-rax-setup
934*38fd1498SzrjTarget Report Var(flag_skip_rax_setup)
935*38fd1498SzrjSkip setting up RAX register when passing variable arguments.
936*38fd1498Szrj
937*38fd1498Szrjm8bit-idiv
938*38fd1498SzrjTarget Report Mask(USE_8BIT_IDIV) Save
939*38fd1498SzrjExpand 32bit/64bit integer divide into 8bit unsigned integer divide with run-time check.
940*38fd1498Szrj
941*38fd1498Szrjmavx256-split-unaligned-load
942*38fd1498SzrjTarget Report Mask(AVX256_SPLIT_UNALIGNED_LOAD) Save
943*38fd1498SzrjSplit 32-byte AVX unaligned load.
944*38fd1498Szrj
945*38fd1498Szrjmavx256-split-unaligned-store
946*38fd1498SzrjTarget Report Mask(AVX256_SPLIT_UNALIGNED_STORE) Save
947*38fd1498SzrjSplit 32-byte AVX unaligned store.
948*38fd1498Szrj
949*38fd1498Szrjmrtm
950*38fd1498SzrjTarget Report Mask(ISA_RTM) Var(ix86_isa_flags) Save
951*38fd1498SzrjSupport RTM built-in functions and code generation.
952*38fd1498Szrj
953*38fd1498Szrjmmpx
954*38fd1498SzrjTarget Report Mask(ISA_MPX) Var(ix86_isa_flags2) Save
955*38fd1498SzrjSupport MPX code generation.
956*38fd1498Szrj
957*38fd1498Szrjmmwaitx
958*38fd1498SzrjTarget Report Mask(ISA_MWAITX) Var(ix86_isa_flags2) Save
959*38fd1498SzrjSupport MWAITX and MONITORX built-in functions and code generation.
960*38fd1498Szrj
961*38fd1498Szrjmclzero
962*38fd1498SzrjTarget Report Mask(ISA_CLZERO) Var(ix86_isa_flags2) Save
963*38fd1498SzrjSupport CLZERO built-in functions and code generation.
964*38fd1498Szrj
965*38fd1498Szrjmpku
966*38fd1498SzrjTarget Report Mask(ISA_PKU) Var(ix86_isa_flags) Save
967*38fd1498SzrjSupport PKU built-in functions and code generation.
968*38fd1498Szrj
969*38fd1498Szrjmstack-protector-guard=
970*38fd1498SzrjTarget RejectNegative Joined Enum(stack_protector_guard) Var(ix86_stack_protector_guard) Init(SSP_TLS)
971*38fd1498SzrjUse given stack-protector guard.
972*38fd1498Szrj
973*38fd1498SzrjEnum
974*38fd1498SzrjName(stack_protector_guard) Type(enum stack_protector_guard)
975*38fd1498SzrjKnown stack protector guard (for use with the -mstack-protector-guard= option):
976*38fd1498Szrj
977*38fd1498SzrjEnumValue
978*38fd1498SzrjEnum(stack_protector_guard) String(tls) Value(SSP_TLS)
979*38fd1498Szrj
980*38fd1498SzrjEnumValue
981*38fd1498SzrjEnum(stack_protector_guard) String(global) Value(SSP_GLOBAL)
982*38fd1498Szrj
983*38fd1498Szrjmstack-protector-guard-reg=
984*38fd1498SzrjTarget RejectNegative Joined Var(ix86_stack_protector_guard_reg_str)
985*38fd1498SzrjUse the given base register for addressing the stack-protector guard.
986*38fd1498Szrj
987*38fd1498SzrjTargetVariable
988*38fd1498Szrjaddr_space_t ix86_stack_protector_guard_reg = ADDR_SPACE_GENERIC
989*38fd1498Szrj
990*38fd1498Szrjmstack-protector-guard-offset=
991*38fd1498SzrjTarget RejectNegative Joined Integer Var(ix86_stack_protector_guard_offset_str)
992*38fd1498SzrjUse the given offset for addressing the stack-protector guard.
993*38fd1498Szrj
994*38fd1498SzrjTargetVariable
995*38fd1498SzrjHOST_WIDE_INT ix86_stack_protector_guard_offset = 0
996*38fd1498Szrj
997*38fd1498Szrjmstack-protector-guard-symbol=
998*38fd1498SzrjTarget RejectNegative Joined Integer Var(ix86_stack_protector_guard_symbol_str)
999*38fd1498SzrjUse the given symbol for addressing the stack-protector guard.
1000*38fd1498Szrj
1001*38fd1498Szrjmmitigate-rop
1002*38fd1498SzrjTarget Var(flag_mitigate_rop)
1003*38fd1498SzrjAttempt to avoid generating instruction sequences containing ret bytes.
1004*38fd1498Szrj
1005*38fd1498Szrjmgeneral-regs-only
1006*38fd1498SzrjTarget Report RejectNegative Mask(GENERAL_REGS_ONLY) Var(ix86_target_flags) Save
1007*38fd1498SzrjGenerate code which uses only the general registers.
1008*38fd1498Szrj
1009*38fd1498Szrjmshstk
1010*38fd1498SzrjTarget Report Mask(ISA_SHSTK) Var(ix86_isa_flags) Save
1011*38fd1498SzrjEnable shadow stack built-in functions from Control-flow Enforcement
1012*38fd1498SzrjTechnology (CET).
1013*38fd1498Szrj
1014*38fd1498Szrjmcet-switch
1015*38fd1498SzrjTarget Report Undocumented Var(flag_cet_switch) Init(0)
1016*38fd1498SzrjTurn on CET instrumentation for switch statements that use a jump table and
1017*38fd1498Szrjan indirect jump.
1018*38fd1498Szrj
1019*38fd1498Szrjmforce-indirect-call
1020*38fd1498SzrjTarget Report Var(flag_force_indirect_call) Init(0)
1021*38fd1498SzrjMake all function calls indirect.
1022*38fd1498Szrj
1023*38fd1498Szrjmindirect-branch=
1024*38fd1498SzrjTarget Report RejectNegative Joined Enum(indirect_branch) Var(ix86_indirect_branch) Init(indirect_branch_keep)
1025*38fd1498SzrjConvert indirect call and jump to call and return thunks.
1026*38fd1498Szrj
1027*38fd1498Szrjmfunction-return=
1028*38fd1498SzrjTarget Report RejectNegative Joined Enum(indirect_branch) Var(ix86_function_return) Init(indirect_branch_keep)
1029*38fd1498SzrjConvert function return to call and return thunk.
1030*38fd1498Szrj
1031*38fd1498SzrjEnum
1032*38fd1498SzrjName(indirect_branch) Type(enum indirect_branch)
1033*38fd1498SzrjKnown indirect branch choices (for use with the -mindirect-branch=/-mfunction-return= options):
1034*38fd1498Szrj
1035*38fd1498SzrjEnumValue
1036*38fd1498SzrjEnum(indirect_branch) String(keep) Value(indirect_branch_keep)
1037*38fd1498Szrj
1038*38fd1498SzrjEnumValue
1039*38fd1498SzrjEnum(indirect_branch) String(thunk) Value(indirect_branch_thunk)
1040*38fd1498Szrj
1041*38fd1498SzrjEnumValue
1042*38fd1498SzrjEnum(indirect_branch) String(thunk-inline) Value(indirect_branch_thunk_inline)
1043*38fd1498Szrj
1044*38fd1498SzrjEnumValue
1045*38fd1498SzrjEnum(indirect_branch) String(thunk-extern) Value(indirect_branch_thunk_extern)
1046*38fd1498Szrj
1047*38fd1498Szrjmindirect-branch-register
1048*38fd1498SzrjTarget Report Var(ix86_indirect_branch_register) Init(0)
1049*38fd1498SzrjForce indirect call and jump via register.
1050*38fd1498Szrj
1051*38fd1498Szrjmmovdiri
1052*38fd1498SzrjTarget Report Mask(ISA_MOVDIRI) Var(ix86_isa_flags) Save
1053*38fd1498SzrjSupport MOVDIRI built-in functions and code generation.
1054*38fd1498Szrj
1055*38fd1498Szrjmmovdir64b
1056*38fd1498SzrjTarget Report Mask(ISA_MOVDIR64B) Var(ix86_isa_flags2) Save
1057*38fd1498SzrjSupport MOVDIR64B built-in functions and code generation.
1058