Home | History | Annotate | Line # | Download | only in i386
i386.opt revision 1.1.1.1
      1 ; Options for the IA-32 and AMD64 ports of the compiler.
      2 
      3 ; Copyright (C) 2005, 2006, 2007, 2008 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 ;; Definitions to add to the cl_target_option structure
     22 ;; -march= processor
     23 TargetSave
     24 unsigned char arch
     25 
     26 ;; -mtune= processor
     27 TargetSave
     28 unsigned char tune
     29 
     30 ;; -mfpath=
     31 TargetSave
     32 unsigned char fpmath
     33 
     34 ;; CPU schedule model
     35 TargetSave
     36 unsigned char schedule
     37 
     38 ;; branch cost
     39 TargetSave
     40 unsigned char branch_cost
     41 
     42 ;; which flags were passed by the user
     43 TargetSave
     44 int ix86_isa_flags_explicit
     45 
     46 ;; which flags were passed by the user
     47 TargetSave
     48 int target_flags_explicit
     49 
     50 ;; whether -mtune was not specified
     51 TargetSave
     52 unsigned char tune_defaulted
     53 
     54 ;; whether -march was specified
     55 TargetSave
     56 unsigned char arch_specified
     57 
     58 ;; x86 options
     59 m128bit-long-double
     60 Target RejectNegative Report Mask(128BIT_LONG_DOUBLE) Save
     61 sizeof(long double) is 16
     62 
     63 m80387
     64 Target Report Mask(80387) Save
     65 Use hardware fp
     66 
     67 m96bit-long-double
     68 Target RejectNegative Report InverseMask(128BIT_LONG_DOUBLE) Save
     69 sizeof(long double) is 12
     70 
     71 maccumulate-outgoing-args
     72 Target Report Mask(ACCUMULATE_OUTGOING_ARGS) Save
     73 Reserve space for outgoing arguments in the function prologue
     74 
     75 malign-double
     76 Target Report Mask(ALIGN_DOUBLE) Save
     77 Align some doubles on dword boundary
     78 
     79 malign-functions=
     80 Target RejectNegative Joined Var(ix86_align_funcs_string)
     81 Function starts are aligned to this power of 2
     82 
     83 malign-jumps=
     84 Target RejectNegative Joined Var(ix86_align_jumps_string)
     85 Jump targets are aligned to this power of 2
     86 
     87 malign-loops=
     88 Target RejectNegative Joined Var(ix86_align_loops_string)
     89 Loop code aligned to this power of 2
     90 
     91 malign-stringops
     92 Target RejectNegative Report InverseMask(NO_ALIGN_STRINGOPS, ALIGN_STRINGOPS) Save
     93 Align destination of the string operations
     94 
     95 march=
     96 Target RejectNegative Joined Var(ix86_arch_string)
     97 Generate code for given CPU
     98 
     99 masm=
    100 Target RejectNegative Joined Var(ix86_asm_string)
    101 Use given assembler dialect
    102 
    103 mbranch-cost=
    104 Target RejectNegative Joined Var(ix86_branch_cost_string)
    105 Branches are this expensive (1-5, arbitrary units)
    106 
    107 mlarge-data-threshold=
    108 Target RejectNegative Joined Var(ix86_section_threshold_string)
    109 Data greater than given threshold will go into .ldata section in x86-64 medium model
    110 
    111 mcmodel=
    112 Target RejectNegative Joined Var(ix86_cmodel_string)
    113 Use given x86-64 code model
    114 
    115 mfancy-math-387
    116 Target RejectNegative Report InverseMask(NO_FANCY_MATH_387, USE_FANCY_MATH_387) Save
    117 Generate sin, cos, sqrt for FPU
    118 
    119 mforce-drap
    120 Target Report Var(ix86_force_drap)
    121 Always use Dynamic Realigned Argument Pointer (DRAP) to realign stack
    122 
    123 mfp-ret-in-387
    124 Target Report Mask(FLOAT_RETURNS) Save
    125 Return values of functions in FPU registers
    126 
    127 mfpmath=
    128 Target RejectNegative Joined Var(ix86_fpmath_string)
    129 Generate floating point mathematics using given instruction set
    130 
    131 mhard-float
    132 Target RejectNegative Mask(80387) MaskExists Save
    133 Use hardware fp
    134 
    135 mieee-fp
    136 Target Report Mask(IEEE_FP) Save
    137 Use IEEE math for fp comparisons
    138 
    139 minline-all-stringops
    140 Target Report Mask(INLINE_ALL_STRINGOPS) Save
    141 Inline all known string operations
    142 
    143 minline-stringops-dynamically
    144 Target Report Mask(INLINE_STRINGOPS_DYNAMICALLY) Save
    145 Inline memset/memcpy string operations, but perform inline version only for small blocks
    146 
    147 mintel-syntax
    148 Target Undocumented
    149 ;; Deprecated
    150 
    151 mms-bitfields
    152 Target Report Mask(MS_BITFIELD_LAYOUT) Save
    153 Use native (MS) bitfield layout
    154 
    155 mno-align-stringops
    156 Target RejectNegative Report Mask(NO_ALIGN_STRINGOPS) Undocumented Save
    157 
    158 mno-fancy-math-387
    159 Target RejectNegative Report Mask(NO_FANCY_MATH_387) Undocumented Save
    160 
    161 mno-push-args
    162 Target RejectNegative Report Mask(NO_PUSH_ARGS) Undocumented Save
    163 
    164 mno-red-zone
    165 Target RejectNegative Report Mask(NO_RED_ZONE) Undocumented Save
    166 
    167 momit-leaf-frame-pointer
    168 Target Report Mask(OMIT_LEAF_FRAME_POINTER) Save
    169 Omit the frame pointer in leaf functions
    170 
    171 mpc
    172 Target RejectNegative Report Joined Var(ix87_precision_string)
    173 Set 80387 floating-point precision (-mpc32, -mpc64, -mpc80)
    174 
    175 mpreferred-stack-boundary=
    176 Target RejectNegative Joined Var(ix86_preferred_stack_boundary_string)
    177 Attempt to keep stack aligned to this power of 2
    178 
    179 mincoming-stack-boundary=
    180 Target RejectNegative Joined Var(ix86_incoming_stack_boundary_string)
    181 Assume incoming stack aligned to this power of 2
    182 
    183 mpush-args
    184 Target Report InverseMask(NO_PUSH_ARGS, PUSH_ARGS) Save
    185 Use push instructions to save outgoing arguments
    186 
    187 mred-zone
    188 Target RejectNegative Report InverseMask(NO_RED_ZONE, RED_ZONE) Save
    189 Use red-zone in the x86-64 code
    190 
    191 mregparm=
    192 Target RejectNegative Joined Var(ix86_regparm_string)
    193 Number of registers used to pass integer arguments
    194 
    195 mrtd
    196 Target Report Mask(RTD) Save
    197 Alternate calling convention
    198 
    199 msoft-float
    200 Target InverseMask(80387) Save
    201 Do not use hardware fp
    202 
    203 msseregparm
    204 Target RejectNegative Mask(SSEREGPARM) Save
    205 Use SSE register passing conventions for SF and DF mode
    206 
    207 mstackrealign
    208 Target Report Var(ix86_force_align_arg_pointer) Init(-1)
    209 Realign stack in prologue
    210 
    211 mstack-arg-probe
    212 Target Report Mask(STACK_PROBE) Save
    213 Enable stack probing
    214 
    215 mstringop-strategy=
    216 Target RejectNegative Joined Var(ix86_stringop_string)
    217 Chose strategy to generate stringop using
    218 
    219 mtls-dialect=
    220 Target RejectNegative Joined Var(ix86_tls_dialect_string)
    221 Use given thread-local storage dialect
    222 
    223 mtls-direct-seg-refs
    224 Target Report Mask(TLS_DIRECT_SEG_REFS)
    225 Use direct references against %gs when accessing tls data
    226 
    227 mtune=
    228 Target RejectNegative Joined Var(ix86_tune_string)
    229 Schedule code for given CPU
    230 
    231 mabi=
    232 Target RejectNegative Joined Var(ix86_abi_string)
    233 Generate code that conforms to the given ABI
    234 
    235 mveclibabi=
    236 Target RejectNegative Joined Var(ix86_veclibabi_string)
    237 Vector library ABI to use
    238 
    239 mrecip
    240 Target Report Mask(RECIP) Save
    241 Generate reciprocals instead of divss and sqrtss.
    242 
    243 mcld
    244 Target Report Mask(CLD) Save
    245 Generate cld instruction in the function prologue.
    246 
    247 mfused-madd
    248 Target Report Mask(FUSED_MADD) Save
    249 Enable automatic generation of fused floating point multiply-add instructions
    250 if the ISA supports such instructions.  The -mfused-madd option is on by
    251 default.
    252 
    253 ;; ISA support
    254 
    255 m32
    256 Target RejectNegative Negative(m64) Report InverseMask(ISA_64BIT) Var(ix86_isa_flags) VarExists Save
    257 Generate 32bit i386 code
    258 
    259 m64
    260 Target RejectNegative Negative(m32) Report Mask(ISA_64BIT) Var(ix86_isa_flags) VarExists Save
    261 Generate 64bit x86-64 code
    262 
    263 mmmx
    264 Target Report Mask(ISA_MMX) Var(ix86_isa_flags) VarExists Save
    265 Support MMX built-in functions
    266 
    267 m3dnow
    268 Target Report Mask(ISA_3DNOW) Var(ix86_isa_flags) VarExists Save
    269 Support 3DNow! built-in functions
    270 
    271 m3dnowa
    272 Target Undocumented Mask(ISA_3DNOW_A) Var(ix86_isa_flags) VarExists Save
    273 Support Athlon 3Dnow! built-in functions
    274 
    275 msse
    276 Target Report Mask(ISA_SSE) Var(ix86_isa_flags) VarExists Save
    277 Support MMX and SSE built-in functions and code generation
    278 
    279 msse2
    280 Target Report Mask(ISA_SSE2) Var(ix86_isa_flags) VarExists Save
    281 Support MMX, SSE and SSE2 built-in functions and code generation
    282 
    283 msse3
    284 Target Report Mask(ISA_SSE3) Var(ix86_isa_flags) VarExists Save
    285 Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation
    286 
    287 mssse3
    288 Target Report Mask(ISA_SSSE3) Var(ix86_isa_flags) VarExists Save
    289 Support MMX, SSE, SSE2, SSE3 and SSSE3 built-in functions and code generation
    290 
    291 msse4.1
    292 Target Report Mask(ISA_SSE4_1) Var(ix86_isa_flags) VarExists Save
    293 Support MMX, SSE, SSE2, SSE3, SSSE3 and SSE4.1 built-in functions and code generation
    294 
    295 msse4.2
    296 Target Report Mask(ISA_SSE4_2) Var(ix86_isa_flags) VarExists Save
    297 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and code generation
    298 
    299 msse4
    300 Target RejectNegative Report Mask(ISA_SSE4_2) MaskExists Var(ix86_isa_flags) VarExists Save
    301 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and code generation
    302 
    303 mno-sse4
    304 Target RejectNegative Report InverseMask(ISA_SSE4_1) MaskExists Var(ix86_isa_flags) VarExists Save
    305 Do not support SSE4.1 and SSE4.2 built-in functions and code generation
    306 
    307 mavx
    308 Target Report Mask(ISA_AVX) Var(ix86_isa_flags) VarExists Save
    309 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 and AVX built-in functions and code generation
    310 
    311 mfma
    312 Target Report Mask(ISA_FMA) Var(ix86_isa_flags) VarExists Save
    313 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and FMA built-in functions and code generation
    314 
    315 msse4a
    316 Target Report Mask(ISA_SSE4A) Var(ix86_isa_flags) VarExists Save
    317 Support MMX, SSE, SSE2, SSE3 and SSE4A built-in functions and code generation
    318 
    319 mfma4
    320 Target Report Mask(ISA_FMA4) Var(ix86_isa_flags) VarExists Save
    321 Support FMA4 built-in functions and code generation 
    322 
    323 mxop
    324 Target Report Mask(ISA_XOP) Var(ix86_isa_flags) VarExists Save
    325 Support XOP built-in functions and code generation 
    326 
    327 mlwp
    328 Target Report Mask(ISA_LWP) Var(ix86_isa_flags) VarExists Save
    329 Support LWP built-in functions and code generation 
    330 
    331 mabm
    332 Target Report Mask(ISA_ABM) Var(ix86_isa_flags) VarExists Save
    333 Support code generation of Advanced Bit Manipulation (ABM) instructions.
    334 
    335 mpopcnt
    336 Target Report Mask(ISA_POPCNT) Var(ix86_isa_flags) VarExists Save
    337 Support code generation of popcnt instruction.
    338 
    339 mcx16
    340 Target Report Mask(ISA_CX16) Var(ix86_isa_flags) VarExists Save
    341 Support code generation of cmpxchg16b instruction.
    342 
    343 msahf
    344 Target Report Mask(ISA_SAHF) Var(ix86_isa_flags) VarExists Save
    345 Support code generation of sahf instruction in 64bit x86-64 code.
    346 
    347 mmovbe
    348 Target Report Mask(ISA_MOVBE) Var(ix86_isa_flags) VarExists Save
    349 Support code generation of movbe instruction.
    350 
    351 mcrc32
    352 Target Report Mask(ISA_CRC32) Var(ix86_isa_flags) VarExists Save
    353 Support code generation of crc32 instruction.
    354 
    355 maes
    356 Target Report Mask(ISA_AES) Var(ix86_isa_flags) VarExists Save
    357 Support AES built-in functions and code generation
    358 
    359 mpclmul
    360 Target Report Mask(ISA_PCLMUL) Var(ix86_isa_flags) VarExists Save
    361 Support PCLMUL built-in functions and code generation
    362 
    363 msse2avx
    364 Target Report Var(ix86_sse2avx)
    365 Encode SSE instructions with VEX prefix
    366