Merge from mainline (163495:164578).
[official-gcc/graphite-test-results.git] / gcc / config / i386 / i386.opt
blob38a53f616c7f516c33893671ba67c0e8f81b2228
1 ; Options for the IA-32 and AMD64 ports of the compiler.
3 ; Copyright (C) 2005, 2006, 2007, 2008, 2009,
4 ; 2010 Free Software Foundation, Inc.
6 ; This file is part of GCC.
8 ; GCC is free software; you can redistribute it and/or modify it under
9 ; the terms of the GNU General Public License as published by the Free
10 ; Software Foundation; either version 3, or (at your option) any later
11 ; version.
13 ; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
14 ; WARRANTY; without even the implied warranty of MERCHANTABILITY or
15 ; FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
16 ; for more details.
18 ; You should have received a copy of the GNU General Public License
19 ; along with GCC; see the file COPYING3.  If not see
20 ; <http://www.gnu.org/licenses/>.
22 ; Bit flags that specify the ISA we are compiling for.
23 Variable
24 int ix86_isa_flags = TARGET_64BIT_DEFAULT | TARGET_SUBTARGET_ISA_DEFAULT
26 ;; Definitions to add to the cl_target_option structure
27 ;; -march= processor
28 TargetSave
29 unsigned char arch
31 ;; -mtune= processor
32 TargetSave
33 unsigned char tune
35 ;; -mfpath=
36 TargetSave
37 unsigned char fpmath
39 ;; CPU schedule model
40 TargetSave
41 unsigned char schedule
43 ;; branch cost
44 TargetSave
45 unsigned char branch_cost
47 ;; which flags were passed by the user
48 TargetSave
49 int ix86_isa_flags_explicit
51 ;; which flags were passed by the user
52 TargetSave
53 int target_flags_explicit
55 ;; whether -mtune was not specified
56 TargetSave
57 unsigned char tune_defaulted
59 ;; whether -march was specified
60 TargetSave
61 unsigned char arch_specified
63 ;; x86 options
64 m128bit-long-double
65 Target RejectNegative Report Mask(128BIT_LONG_DOUBLE) Save
66 sizeof(long double) is 16
68 m80387
69 Target Report Mask(80387) Save
70 Use hardware fp
72 m96bit-long-double
73 Target RejectNegative Report InverseMask(128BIT_LONG_DOUBLE) Save
74 sizeof(long double) is 12
76 maccumulate-outgoing-args
77 Target Report Mask(ACCUMULATE_OUTGOING_ARGS) Save
78 Reserve space for outgoing arguments in the function prologue
80 malign-double
81 Target Report Mask(ALIGN_DOUBLE) Save
82 Align some doubles on dword boundary
84 malign-functions=
85 Target RejectNegative Joined Var(ix86_align_funcs_string)
86 Function starts are aligned to this power of 2
88 malign-jumps=
89 Target RejectNegative Joined Var(ix86_align_jumps_string)
90 Jump targets are aligned to this power of 2
92 malign-loops=
93 Target RejectNegative Joined Var(ix86_align_loops_string)
94 Loop code aligned to this power of 2
96 malign-stringops
97 Target RejectNegative Report InverseMask(NO_ALIGN_STRINGOPS, ALIGN_STRINGOPS) Save
98 Align destination of the string operations
100 march=
101 Target RejectNegative Joined Var(ix86_arch_string)
102 Generate code for given CPU
104 masm=
105 Target RejectNegative Joined Var(ix86_asm_string)
106 Use given assembler dialect
108 mbranch-cost=
109 Target RejectNegative Joined Var(ix86_branch_cost_string)
110 Branches are this expensive (1-5, arbitrary units)
112 mlarge-data-threshold=
113 Target RejectNegative Joined Var(ix86_section_threshold_string)
114 Data greater than given threshold will go into .ldata section in x86-64 medium model
116 mcmodel=
117 Target RejectNegative Joined Var(ix86_cmodel_string)
118 Use given x86-64 code model
120 mcpu=
121 Target RejectNegative Joined Undocumented Alias(mtune=) Warn(%<-mcpu=%> is deprecated; use %<-mtune=%> or %<-march=%> instead)
123 mfancy-math-387
124 Target RejectNegative Report InverseMask(NO_FANCY_MATH_387, USE_FANCY_MATH_387) Save
125 Generate sin, cos, sqrt for FPU
127 mforce-drap
128 Target Report Var(ix86_force_drap)
129 Always use Dynamic Realigned Argument Pointer (DRAP) to realign stack
131 mfp-ret-in-387
132 Target Report Mask(FLOAT_RETURNS) Save
133 Return values of functions in FPU registers
135 mfpmath=
136 Target RejectNegative Joined Var(ix86_fpmath_string)
137 Generate floating point mathematics using given instruction set
139 mhard-float
140 Target RejectNegative Mask(80387) MaskExists Save
141 Use hardware fp
143 mieee-fp
144 Target Report Mask(IEEE_FP) Save
145 Use IEEE math for fp comparisons
147 minline-all-stringops
148 Target Report Mask(INLINE_ALL_STRINGOPS) Save
149 Inline all known string operations
151 minline-stringops-dynamically
152 Target Report Mask(INLINE_STRINGOPS_DYNAMICALLY) Save
153 Inline memset/memcpy string operations, but perform inline version only for small blocks
155 mintel-syntax
156 Target Undocumented Alias(masm=, intel, att) Warn(%<-mintel-syntax%> and %<-mno-intel-syntax%> are deprecated; use %<-masm=intel%> and %<-masm=att%> instead)
157 ;; Deprecated
159 mms-bitfields
160 Target Report Mask(MS_BITFIELD_LAYOUT) Save
161 Use native (MS) bitfield layout
163 mno-align-stringops
164 Target RejectNegative Report Mask(NO_ALIGN_STRINGOPS) Undocumented Save
166 mno-fancy-math-387
167 Target RejectNegative Report Mask(NO_FANCY_MATH_387) Undocumented Save
169 mno-push-args
170 Target RejectNegative Report Mask(NO_PUSH_ARGS) Undocumented Save
172 mno-red-zone
173 Target RejectNegative Report Mask(NO_RED_ZONE) Undocumented Save
175 momit-leaf-frame-pointer
176 Target Report Mask(OMIT_LEAF_FRAME_POINTER) Save
177 Omit the frame pointer in leaf functions
180 Target RejectNegative Report Joined Var(ix87_precision_string)
181 Set 80387 floating-point precision (-mpc32, -mpc64, -mpc80)
183 mpreferred-stack-boundary=
184 Target RejectNegative Joined Var(ix86_preferred_stack_boundary_string)
185 Attempt to keep stack aligned to this power of 2
187 mincoming-stack-boundary=
188 Target RejectNegative Joined Var(ix86_incoming_stack_boundary_string)
189 Assume incoming stack aligned to this power of 2
191 mpush-args
192 Target Report InverseMask(NO_PUSH_ARGS, PUSH_ARGS) Save
193 Use push instructions to save outgoing arguments
195 mred-zone
196 Target RejectNegative Report InverseMask(NO_RED_ZONE, RED_ZONE) Save
197 Use red-zone in the x86-64 code
199 mregparm=
200 Target RejectNegative Joined Var(ix86_regparm_string)
201 Number of registers used to pass integer arguments
203 mrtd
204 Target Report Mask(RTD) Save
205 Alternate calling convention
207 msoft-float
208 Target InverseMask(80387) Save
209 Do not use hardware fp
211 msseregparm
212 Target RejectNegative Mask(SSEREGPARM) Save
213 Use SSE register passing conventions for SF and DF mode
215 mstackrealign
216 Target Report Var(ix86_force_align_arg_pointer) Init(-1)
217 Realign stack in prologue
219 mstack-arg-probe
220 Target Report Mask(STACK_PROBE) Save
221 Enable stack probing
223 mstringop-strategy=
224 Target RejectNegative Joined Var(ix86_stringop_string)
225 Chose strategy to generate stringop using
227 mtls-dialect=
228 Target RejectNegative Joined Var(ix86_tls_dialect_string)
229 Use given thread-local storage dialect
231 mtls-direct-seg-refs
232 Target Report Mask(TLS_DIRECT_SEG_REFS)
233 Use direct references against %gs when accessing tls data
235 mtune=
236 Target RejectNegative Joined Var(ix86_tune_string)
237 Schedule code for given CPU
239 mabi=
240 Target RejectNegative Joined Var(ix86_abi_string)
241 Generate code that conforms to the given ABI
243 mveclibabi=
244 Target RejectNegative Joined Var(ix86_veclibabi_string)
245 Vector library ABI to use
247 mrecip
248 Target Report Mask(RECIP) Save
249 Generate reciprocals instead of divss and sqrtss.
251 mcld
252 Target Report Mask(CLD) Save
253 Generate cld instruction in the function prologue.
255 mfused-madd
256 Target Report Mask(FUSED_MADD) Save
257 Enable automatic generation of fused floating point multiply-add instructions
258 if the ISA supports such instructions.  The -mfused-madd option is on by
259 default.
261 mdispatch-scheduler
262 Target RejectNegative Var(flag_dispatch_scheduler)
263 Do dispatch scheduling if processor is bdver1 and Haifa scheduling
264 is selected.
266 ;; ISA support
269 Target RejectNegative Negative(m64) Report InverseMask(ISA_64BIT) Var(ix86_isa_flags) VarExists Save
270 Generate 32bit i386 code
273 Target RejectNegative Negative(m32) Report Mask(ISA_64BIT) Var(ix86_isa_flags) VarExists Save
274 Generate 64bit x86-64 code
276 mmmx
277 Target Report Mask(ISA_MMX) Var(ix86_isa_flags) VarExists Save
278 Support MMX built-in functions
280 m3dnow
281 Target Report Mask(ISA_3DNOW) Var(ix86_isa_flags) VarExists Save
282 Support 3DNow! built-in functions
284 m3dnowa
285 Target Undocumented Mask(ISA_3DNOW_A) Var(ix86_isa_flags) VarExists Save
286 Support Athlon 3Dnow! built-in functions
288 msse
289 Target Report Mask(ISA_SSE) Var(ix86_isa_flags) VarExists Save
290 Support MMX and SSE built-in functions and code generation
292 msse2
293 Target Report Mask(ISA_SSE2) Var(ix86_isa_flags) VarExists Save
294 Support MMX, SSE and SSE2 built-in functions and code generation
296 msse3
297 Target Report Mask(ISA_SSE3) Var(ix86_isa_flags) VarExists Save
298 Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation
300 mssse3
301 Target Report Mask(ISA_SSSE3) Var(ix86_isa_flags) VarExists Save
302 Support MMX, SSE, SSE2, SSE3 and SSSE3 built-in functions and code generation
304 msse4.1
305 Target Report Mask(ISA_SSE4_1) Var(ix86_isa_flags) VarExists Save
306 Support MMX, SSE, SSE2, SSE3, SSSE3 and SSE4.1 built-in functions and code generation
308 msse4.2
309 Target Report Mask(ISA_SSE4_2) Var(ix86_isa_flags) VarExists Save
310 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and code generation
312 msse4
313 Target RejectNegative Report Mask(ISA_SSE4_2) MaskExists Var(ix86_isa_flags) VarExists Save
314 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and code generation
316 mno-sse4
317 Target RejectNegative Report InverseMask(ISA_SSE4_1) MaskExists Var(ix86_isa_flags) VarExists Save
318 Do not support SSE4.1 and SSE4.2 built-in functions and code generation
320 mavx
321 Target Report Mask(ISA_AVX) Var(ix86_isa_flags) VarExists
322 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 and AVX built-in functions and code generation
324 mfma
325 Target Report Mask(ISA_FMA) Var(ix86_isa_flags) VarExists
326 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and FMA built-in functions and code generation
328 msse4a
329 Target Report Mask(ISA_SSE4A) Var(ix86_isa_flags) VarExists Save
330 Support MMX, SSE, SSE2, SSE3 and SSE4A built-in functions and code generation
332 mfma4
333 Target Report Mask(ISA_FMA4) Var(ix86_isa_flags) VarExists Save
334 Support FMA4 built-in functions and code generation 
336 mxop
337 Target Report Mask(ISA_XOP) Var(ix86_isa_flags) VarExists Save
338 Support XOP built-in functions and code generation 
340 mlwp
341 Target Report Mask(ISA_LWP) Var(ix86_isa_flags) VarExists Save
342 Support LWP built-in functions and code generation 
344 mabm
345 Target Report Mask(ISA_ABM) Var(ix86_isa_flags) VarExists Save
346 Support code generation of Advanced Bit Manipulation (ABM) instructions.
348 mpopcnt
349 Target Report Mask(ISA_POPCNT) Var(ix86_isa_flags) VarExists Save
350 Support code generation of popcnt instruction.
352 mcx16
353 Target Report Mask(ISA_CX16) Var(ix86_isa_flags) VarExists Save
354 Support code generation of cmpxchg16b instruction.
356 msahf
357 Target Report Mask(ISA_SAHF) Var(ix86_isa_flags) VarExists Save
358 Support code generation of sahf instruction in 64bit x86-64 code.
360 mmovbe
361 Target Report Mask(ISA_MOVBE) Var(ix86_isa_flags) VarExists Save
362 Support code generation of movbe instruction.
364 mcrc32
365 Target Report Mask(ISA_CRC32) Var(ix86_isa_flags) VarExists Save
366 Support code generation of crc32 instruction.
368 maes
369 Target Report Mask(ISA_AES) Var(ix86_isa_flags) VarExists Save
370 Support AES built-in functions and code generation
372 mpclmul
373 Target Report Mask(ISA_PCLMUL) Var(ix86_isa_flags) VarExists Save
374 Support PCLMUL built-in functions and code generation
376 msse2avx
377 Target Report Var(ix86_sse2avx)
378 Encode SSE instructions with VEX prefix
380 mfsgsbase
381 Target Report Mask(ISA_FSGSBASE) Var(ix86_isa_flags) VarExists Save
382 Support FSGSBASE built-in functions and code generation
384 mrdrnd
385 Target Report Mask(ISA_RDRND) Var(ix86_isa_flags) VarExists Save
386 Support RDRND built-in functions and code generation
388 mf16c
389 Target Report Mask(ISA_F16C) Var(ix86_isa_flags) VarExists Save
390 Support F16C built-in functions and code generation
392 mfentry
393 Target Report Var(flag_fentry) Init(-1)
394 Emit profiling counter call at function entry before prologue.
396 m8bit-idiv
397 Target Report Mask(USE_8BIT_IDIV) Save
398 Expand 32bit/64bit integer divide into 8bit unsigned integer divide with run-time check