i386.opt revision 1.1.1.2 1 ; Options for the IA-32 and AMD64 ports of the compiler.
2
3 ; Copyright (C) 2005-2013 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
21 HeaderInclude
22 config/i386/i386-opts.h
23
24 ; Bit flags that specify the ISA we are compiling for.
25 Variable
26 HOST_WIDE_INT ix86_isa_flags = TARGET_64BIT_DEFAULT | TARGET_SUBTARGET_ISA_DEFAULT
27
28 ; A mask of ix86_isa_flags that includes bit X if X was set or cleared
29 ; on the command line.
30 Variable
31 HOST_WIDE_INT ix86_isa_flags_explicit
32
33 TargetVariable
34 int recip_mask = RECIP_MASK_DEFAULT
35
36 Variable
37 int recip_mask_explicit
38
39 TargetSave
40 int x_recip_mask_explicit
41
42 ;; Definitions to add to the cl_target_option structure
43 ;; -march= processor
44 TargetSave
45 unsigned char arch
46
47 ;; -mtune= processor
48 TargetSave
49 unsigned char tune
50
51 ;; CPU schedule model
52 TargetSave
53 unsigned char schedule
54
55 ;; branch cost
56 TargetSave
57 unsigned char branch_cost
58
59 ;; which flags were passed by the user
60 TargetSave
61 HOST_WIDE_INT x_ix86_isa_flags_explicit
62
63 ;; which flags were passed by the user
64 TargetSave
65 int ix86_target_flags_explicit
66
67 ;; whether -mtune was not specified
68 TargetSave
69 unsigned char tune_defaulted
70
71 ;; whether -march was specified
72 TargetSave
73 unsigned char arch_specified
74
75 ;; x86 options
76 m128bit-long-double
77 Target RejectNegative Report Mask(128BIT_LONG_DOUBLE) Save
78 sizeof(long double) is 16
79
80 m80387
81 Target Report Mask(80387) Save
82 Use hardware fp
83
84 m96bit-long-double
85 Target RejectNegative Report InverseMask(128BIT_LONG_DOUBLE) Save
86 sizeof(long double) is 12
87
88 mlong-double-80
89 Target Report RejectNegative InverseMask(LONG_DOUBLE_64) Save
90 Use 80-bit long double
91
92 mlong-double-64
93 Target Report RejectNegative Mask(LONG_DOUBLE_64) Save
94 Use 64-bit long double
95
96 maccumulate-outgoing-args
97 Target Report Mask(ACCUMULATE_OUTGOING_ARGS) Save
98 Reserve space for outgoing arguments in the function prologue
99
100 malign-double
101 Target Report Mask(ALIGN_DOUBLE) Save
102 Align some doubles on dword boundary
103
104 malign-functions=
105 Target RejectNegative Joined UInteger
106 Function starts are aligned to this power of 2
107
108 malign-jumps=
109 Target RejectNegative Joined UInteger
110 Jump targets are aligned to this power of 2
111
112 malign-loops=
113 Target RejectNegative Joined UInteger
114 Loop code aligned to this power of 2
115
116 malign-stringops
117 Target RejectNegative Report InverseMask(NO_ALIGN_STRINGOPS, ALIGN_STRINGOPS) Save
118 Align destination of the string operations
119
120 march=
121 Target RejectNegative Joined Var(ix86_arch_string)
122 Generate code for given CPU
123
124 masm=
125 Target RejectNegative Joined Enum(asm_dialect) Var(ix86_asm_dialect) Init(ASM_ATT)
126 Use given assembler dialect
127
128 Enum
129 Name(asm_dialect) Type(enum asm_dialect)
130 Known assembler dialects (for use with the -masm-dialect= option):
131
132 EnumValue
133 Enum(asm_dialect) String(intel) Value(ASM_INTEL)
134
135 EnumValue
136 Enum(asm_dialect) String(att) Value(ASM_ATT)
137
138 mbranch-cost=
139 Target RejectNegative Joined UInteger Var(ix86_branch_cost)
140 Branches are this expensive (1-5, arbitrary units)
141
142 mlarge-data-threshold=
143 Target RejectNegative Joined UInteger Var(ix86_section_threshold) Init(DEFAULT_LARGE_SECTION_THRESHOLD)
144 Data greater than given threshold will go into .ldata section in x86-64 medium model
145
146 mcmodel=
147 Target RejectNegative Joined Enum(cmodel) Var(ix86_cmodel) Init(CM_32)
148 Use given x86-64 code model
149
150 Enum
151 Name(cmodel) Type(enum cmodel)
152 Known code models (for use with the -mcmodel= option):
153
154 EnumValue
155 Enum(cmodel) String(small) Value(CM_SMALL)
156
157 EnumValue
158 Enum(cmodel) String(medium) Value(CM_MEDIUM)
159
160 EnumValue
161 Enum(cmodel) String(large) Value(CM_LARGE)
162
163 EnumValue
164 Enum(cmodel) String(32) Value(CM_32)
165
166 EnumValue
167 Enum(cmodel) String(kernel) Value(CM_KERNEL)
168
169 maddress-mode=
170 Target RejectNegative Joined Enum(pmode) Var(ix86_pmode) Init(PMODE_SI)
171 Use given address mode
172
173 Enum
174 Name(pmode) Type(enum pmode)
175 Known address mode (for use with the -maddress-mode= option):
176
177 EnumValue
178 Enum(pmode) String(short) Value(PMODE_SI)
179
180 EnumValue
181 Enum(pmode) String(long) Value(PMODE_DI)
182
183 mcpu=
184 Target RejectNegative Joined Undocumented Alias(mtune=) Warn(%<-mcpu=%> is deprecated; use %<-mtune=%> or %<-march=%> instead)
185
186 mfancy-math-387
187 Target RejectNegative Report InverseMask(NO_FANCY_MATH_387, USE_FANCY_MATH_387) Save
188 Generate sin, cos, sqrt for FPU
189
190 mforce-drap
191 Target Report Var(ix86_force_drap)
192 Always use Dynamic Realigned Argument Pointer (DRAP) to realign stack
193
194 mfp-ret-in-387
195 Target Report Mask(FLOAT_RETURNS) Save
196 Return values of functions in FPU registers
197
198 mfpmath=
199 Target RejectNegative Joined Var(ix86_fpmath) Enum(fpmath_unit) Init(FPMATH_387) Save
200 Generate floating point mathematics using given instruction set
201
202 Enum
203 Name(fpmath_unit) Type(enum fpmath_unit)
204 Valid arguments to -mfpmath=:
205
206 EnumValue
207 Enum(fpmath_unit) String(387) Value(FPMATH_387)
208
209 EnumValue
210 Enum(fpmath_unit) String(sse) Value(FPMATH_SSE)
211
212 EnumValue
213 Enum(fpmath_unit) String(387,sse) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)})
214
215 EnumValue
216 Enum(fpmath_unit) String(387+sse) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)})
217
218 EnumValue
219 Enum(fpmath_unit) String(sse,387) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)})
220
221 EnumValue
222 Enum(fpmath_unit) String(sse+387) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)})
223
224 EnumValue
225 Enum(fpmath_unit) String(both) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)})
226
227 mhard-float
228 Target RejectNegative Mask(80387) Save
229 Use hardware fp
230
231 mieee-fp
232 Target Report Mask(IEEE_FP) Save
233 Use IEEE math for fp comparisons
234
235 minline-all-stringops
236 Target Report Mask(INLINE_ALL_STRINGOPS) Save
237 Inline all known string operations
238
239 minline-stringops-dynamically
240 Target Report Mask(INLINE_STRINGOPS_DYNAMICALLY) Save
241 Inline memset/memcpy string operations, but perform inline version only for small blocks
242
243 mintel-syntax
244 Target Undocumented Alias(masm=, intel, att) Warn(%<-mintel-syntax%> and %<-mno-intel-syntax%> are deprecated; use %<-masm=intel%> and %<-masm=att%> instead)
245 ;; Deprecated
246
247 mms-bitfields
248 Target Report Mask(MS_BITFIELD_LAYOUT) Save
249 Use native (MS) bitfield layout
250
251 mno-align-stringops
252 Target RejectNegative Report Mask(NO_ALIGN_STRINGOPS) Undocumented Save
253
254 mno-fancy-math-387
255 Target RejectNegative Report Mask(NO_FANCY_MATH_387) Undocumented Save
256
257 mno-push-args
258 Target RejectNegative Report Mask(NO_PUSH_ARGS) Undocumented Save
259
260 mno-red-zone
261 Target RejectNegative Report Mask(NO_RED_ZONE) Undocumented Save
262
263 momit-leaf-frame-pointer
264 Target Report Mask(OMIT_LEAF_FRAME_POINTER) Save
265 Omit the frame pointer in leaf functions
266
267 mpc32
268 Target RejectNegative Report
269 Set 80387 floating-point precision to 32-bit
270
271 mpc64
272 Target RejectNegative Report
273 Set 80387 floating-point precision to 64-bit
274
275 mpc80
276 Target RejectNegative Report
277 Set 80387 floating-point precision to 80-bit
278
279 mpreferred-stack-boundary=
280 Target RejectNegative Joined UInteger Var(ix86_preferred_stack_boundary_arg)
281 Attempt to keep stack aligned to this power of 2
282
283 mincoming-stack-boundary=
284 Target RejectNegative Joined UInteger Var(ix86_incoming_stack_boundary_arg)
285 Assume incoming stack aligned to this power of 2
286
287 mpush-args
288 Target Report InverseMask(NO_PUSH_ARGS, PUSH_ARGS) Save
289 Use push instructions to save outgoing arguments
290
291 mred-zone
292 Target RejectNegative Report InverseMask(NO_RED_ZONE, RED_ZONE) Save
293 Use red-zone in the x86-64 code
294
295 mregparm=
296 Target RejectNegative Joined UInteger Var(ix86_regparm)
297 Number of registers used to pass integer arguments
298
299 mrtd
300 Target Report Mask(RTD) Save
301 Alternate calling convention
302
303 msoft-float
304 Target InverseMask(80387) Save
305 Do not use hardware fp
306
307 msseregparm
308 Target RejectNegative Mask(SSEREGPARM) Save
309 Use SSE register passing conventions for SF and DF mode
310
311 mstackrealign
312 Target Report Var(ix86_force_align_arg_pointer) Init(-1)
313 Realign stack in prologue
314
315 mstack-arg-probe
316 Target Report Mask(STACK_PROBE) Save
317 Enable stack probing
318
319 mstringop-strategy=
320 Target RejectNegative Joined Enum(stringop_alg) Var(ix86_stringop_alg) Init(no_stringop)
321 Chose strategy to generate stringop using
322
323 Enum
324 Name(stringop_alg) Type(enum stringop_alg)
325 Valid arguments to -mstringop-strategy=:
326
327 EnumValue
328 Enum(stringop_alg) String(rep_byte) Value(rep_prefix_1_byte)
329
330 EnumValue
331 Enum(stringop_alg) String(libcall) Value(libcall)
332
333 EnumValue
334 Enum(stringop_alg) String(rep_4byte) Value(rep_prefix_4_byte)
335
336 EnumValue
337 Enum(stringop_alg) String(rep_8byte) Value(rep_prefix_8_byte)
338
339 EnumValue
340 Enum(stringop_alg) String(byte_loop) Value(loop_1_byte)
341
342 EnumValue
343 Enum(stringop_alg) String(loop) Value(loop)
344
345 EnumValue
346 Enum(stringop_alg) String(unrolled_loop) Value(unrolled_loop)
347
348 mtls-dialect=
349 Target RejectNegative Joined Var(ix86_tls_dialect) Enum(tls_dialect) Init(TLS_DIALECT_GNU)
350 Use given thread-local storage dialect
351
352 Enum
353 Name(tls_dialect) Type(enum tls_dialect)
354 Known TLS dialects (for use with the -mtls-dialect= option):
355
356 EnumValue
357 Enum(tls_dialect) String(gnu) Value(TLS_DIALECT_GNU)
358
359 EnumValue
360 Enum(tls_dialect) String(gnu2) Value(TLS_DIALECT_GNU2)
361
362 mtls-direct-seg-refs
363 Target Report Mask(TLS_DIRECT_SEG_REFS)
364 Use direct references against %gs when accessing tls data
365
366 mtune=
367 Target RejectNegative Joined Var(ix86_tune_string)
368 Schedule code for given CPU
369
370 mabi=
371 Target RejectNegative Joined Var(ix86_abi) Enum(calling_abi) Init(SYSV_ABI)
372 Generate code that conforms to the given ABI
373
374 Enum
375 Name(calling_abi) Type(enum calling_abi)
376 Known ABIs (for use with the -mabi= option):
377
378 EnumValue
379 Enum(calling_abi) String(sysv) Value(SYSV_ABI)
380
381 EnumValue
382 Enum(calling_abi) String(ms) Value(MS_ABI)
383
384 mveclibabi=
385 Target RejectNegative Joined Var(ix86_veclibabi_type) Enum(ix86_veclibabi) Init(ix86_veclibabi_type_none)
386 Vector library ABI to use
387
388 Enum
389 Name(ix86_veclibabi) Type(enum ix86_veclibabi)
390 Known vectorization library ABIs (for use with the -mveclibabi= option):
391
392 EnumValue
393 Enum(ix86_veclibabi) String(svml) Value(ix86_veclibabi_type_svml)
394
395 EnumValue
396 Enum(ix86_veclibabi) String(acml) Value(ix86_veclibabi_type_acml)
397
398 mvect8-ret-in-mem
399 Target Report Mask(VECT8_RETURNS) Save
400 Return 8-byte vectors in memory
401
402 mrecip
403 Target Report Mask(RECIP) Save
404 Generate reciprocals instead of divss and sqrtss.
405
406 mrecip=
407 Target Report RejectNegative Joined Var(ix86_recip_name)
408 Control generation of reciprocal estimates.
409
410 mcld
411 Target Report Mask(CLD) Save
412 Generate cld instruction in the function prologue.
413
414 mvzeroupper
415 Target Report Mask(VZEROUPPER) Save
416 Generate vzeroupper instruction before a transfer of control flow out of
417 the function.
418
419 mdispatch-scheduler
420 Target RejectNegative Var(flag_dispatch_scheduler)
421 Do dispatch scheduling if processor is bdver1 or bdver2 or bdver3 and Haifa scheduling
422 is selected.
423
424 mprefer-avx128
425 Target Report Mask(PREFER_AVX128) SAVE
426 Use 128-bit AVX instructions instead of 256-bit AVX instructions in the auto-vectorizer.
427
428 ;; ISA support
429
430 m32
431 Target RejectNegative Negative(m64) Report InverseMask(ISA_64BIT) Var(ix86_isa_flags) Save
432 Generate 32bit i386 code
433
434 m64
435 Target RejectNegative Negative(mx32) Report Mask(ABI_64) Var(ix86_isa_flags) Save
436 Generate 64bit x86-64 code
437
438 mx32
439 Target RejectNegative Negative(m32) Report Mask(ABI_X32) Var(ix86_isa_flags) Save
440 Generate 32bit x86-64 code
441
442 mmmx
443 Target Report Mask(ISA_MMX) Var(ix86_isa_flags) Save
444 Support MMX built-in functions
445
446 m3dnow
447 Target Report Mask(ISA_3DNOW) Var(ix86_isa_flags) Save
448 Support 3DNow! built-in functions
449
450 m3dnowa
451 Target Undocumented Mask(ISA_3DNOW_A) Var(ix86_isa_flags) Save
452 Support Athlon 3Dnow! built-in functions
453
454 msse
455 Target Report Mask(ISA_SSE) Var(ix86_isa_flags) Save
456 Support MMX and SSE built-in functions and code generation
457
458 msse2
459 Target Report Mask(ISA_SSE2) Var(ix86_isa_flags) Save
460 Support MMX, SSE and SSE2 built-in functions and code generation
461
462 msse3
463 Target Report Mask(ISA_SSE3) Var(ix86_isa_flags) Save
464 Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation
465
466 mssse3
467 Target Report Mask(ISA_SSSE3) Var(ix86_isa_flags) Save
468 Support MMX, SSE, SSE2, SSE3 and SSSE3 built-in functions and code generation
469
470 msse4.1
471 Target Report Mask(ISA_SSE4_1) Var(ix86_isa_flags) Save
472 Support MMX, SSE, SSE2, SSE3, SSSE3 and SSE4.1 built-in functions and code generation
473
474 msse4.2
475 Target Report Mask(ISA_SSE4_2) Var(ix86_isa_flags) Save
476 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and code generation
477
478 msse4
479 Target RejectNegative Report Mask(ISA_SSE4_2) Var(ix86_isa_flags) Save
480 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and code generation
481
482 mno-sse4
483 Target RejectNegative Report InverseMask(ISA_SSE4_1) Var(ix86_isa_flags) Save
484 Do not support SSE4.1 and SSE4.2 built-in functions and code generation
485
486 msse5
487 Target Undocumented Alias(mavx) Warn(%<-msse5%> was removed)
488 ;; Deprecated
489
490 mavx
491 Target Report Mask(ISA_AVX) Var(ix86_isa_flags) Save
492 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 and AVX built-in functions and code generation
493
494 mavx2
495 Target Report Mask(ISA_AVX2) Var(ix86_isa_flags) Save
496 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and AVX2 built-in functions and code generation
497
498 mfma
499 Target Report Mask(ISA_FMA) Var(ix86_isa_flags) Save
500 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and FMA built-in functions and code generation
501
502 msse4a
503 Target Report Mask(ISA_SSE4A) Var(ix86_isa_flags) Save
504 Support MMX, SSE, SSE2, SSE3 and SSE4A built-in functions and code generation
505
506 mfma4
507 Target Report Mask(ISA_FMA4) Var(ix86_isa_flags) Save
508 Support FMA4 built-in functions and code generation
509
510 mxop
511 Target Report Mask(ISA_XOP) Var(ix86_isa_flags) Save
512 Support XOP built-in functions and code generation
513
514 mlwp
515 Target Report Mask(ISA_LWP) Var(ix86_isa_flags) Save
516 Support LWP built-in functions and code generation
517
518 mabm
519 Target Report Mask(ISA_ABM) Var(ix86_isa_flags) Save
520 Support code generation of Advanced Bit Manipulation (ABM) instructions.
521
522 mpopcnt
523 Target Report Mask(ISA_POPCNT) Var(ix86_isa_flags) Save
524 Support code generation of popcnt instruction.
525
526 mbmi
527 Target Report Mask(ISA_BMI) Var(ix86_isa_flags) Save
528 Support BMI built-in functions and code generation
529
530 mbmi2
531 Target Report Mask(ISA_BMI2) Var(ix86_isa_flags) Save
532 Support BMI2 built-in functions and code generation
533
534 mlzcnt
535 Target Report Mask(ISA_LZCNT) Var(ix86_isa_flags) Save
536 Support LZCNT built-in function and code generation
537
538 mhle
539 Target Report Mask(ISA_HLE) Var(ix86_isa_flags) Save
540 Support Hardware Lock Elision prefixes
541
542 mrdseed
543 Target Report Mask(ISA_RDSEED) Var(ix86_isa_flags) Save
544 Support RDSEED instruction
545
546 mprfchw
547 Target Report Mask(ISA_PRFCHW) Var(ix86_isa_flags) Save
548 Support PREFETCHW instruction
549
550 madx
551 Target Report Mask(ISA_ADX) Var(ix86_isa_flags) Save
552 Support flag-preserving add-carry instructions
553
554 mfxsr
555 Target Report Mask(ISA_FXSR) Var(ix86_isa_flags) Save
556 Support FXSAVE and FXRSTOR instructions
557
558 mxsave
559 Target Report Mask(ISA_XSAVE) Var(ix86_isa_flags) Save
560 Support XSAVE and XRSTOR instructions
561
562 mxsaveopt
563 Target Report Mask(ISA_XSAVEOPT) Var(ix86_isa_flags) Save
564 Support XSAVEOPT instruction
565
566 mtbm
567 Target Report Mask(ISA_TBM) Var(ix86_isa_flags) Save
568 Support TBM built-in functions and code generation
569
570 mcx16
571 Target Report Mask(ISA_CX16) Var(ix86_isa_flags) Save
572 Support code generation of cmpxchg16b instruction.
573
574 msahf
575 Target Report Mask(ISA_SAHF) Var(ix86_isa_flags) Save
576 Support code generation of sahf instruction in 64bit x86-64 code.
577
578 mmovbe
579 Target Report Mask(ISA_MOVBE) Var(ix86_isa_flags) Save
580 Support code generation of movbe instruction.
581
582 mcrc32
583 Target Report Mask(ISA_CRC32) Var(ix86_isa_flags) Save
584 Support code generation of crc32 instruction.
585
586 maes
587 Target Report Mask(ISA_AES) Var(ix86_isa_flags) Save
588 Support AES built-in functions and code generation
589
590 mpclmul
591 Target Report Mask(ISA_PCLMUL) Var(ix86_isa_flags) Save
592 Support PCLMUL built-in functions and code generation
593
594 msse2avx
595 Target Report Var(ix86_sse2avx)
596 Encode SSE instructions with VEX prefix
597
598 mfsgsbase
599 Target Report Mask(ISA_FSGSBASE) Var(ix86_isa_flags) Save
600 Support FSGSBASE built-in functions and code generation
601
602 mrdrnd
603 Target Report Mask(ISA_RDRND) Var(ix86_isa_flags) Save
604 Support RDRND built-in functions and code generation
605
606 mf16c
607 Target Report Mask(ISA_F16C) Var(ix86_isa_flags) Save
608 Support F16C built-in functions and code generation
609
610 mfentry
611 Target Report Var(flag_fentry) Init(-1)
612 Emit profiling counter call at function entry before prologue.
613
614 m8bit-idiv
615 Target Report Mask(USE_8BIT_IDIV) Save
616 Expand 32bit/64bit integer divide into 8bit unsigned integer divide with run-time check
617
618 mavx256-split-unaligned-load
619 Target Report Mask(AVX256_SPLIT_UNALIGNED_LOAD) Save
620 Split 32-byte AVX unaligned load
621
622 mavx256-split-unaligned-store
623 Target Report Mask(AVX256_SPLIT_UNALIGNED_STORE) Save
624 Split 32-byte AVX unaligned store
625
626 mrtm
627 Target Report Mask(ISA_RTM) Var(ix86_isa_flags) Save
628 Support RTM built-in functions and code generation
629