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