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