1*e4b17023SJohn Marino; Options for the IA-32 and AMD64 ports of the compiler. 2*e4b17023SJohn Marino 3*e4b17023SJohn Marino; Copyright (C) 2005, 2006, 2007, 2008, 2009, 4*e4b17023SJohn Marino; 2010, 2011 Free Software Foundation, Inc. 5*e4b17023SJohn Marino; 6*e4b17023SJohn Marino; This file is part of GCC. 7*e4b17023SJohn Marino; 8*e4b17023SJohn Marino; GCC is free software; you can redistribute it and/or modify it under 9*e4b17023SJohn Marino; the terms of the GNU General Public License as published by the Free 10*e4b17023SJohn Marino; Software Foundation; either version 3, or (at your option) any later 11*e4b17023SJohn Marino; version. 12*e4b17023SJohn Marino; 13*e4b17023SJohn Marino; GCC is distributed in the hope that it will be useful, but WITHOUT ANY 14*e4b17023SJohn Marino; WARRANTY; without even the implied warranty of MERCHANTABILITY or 15*e4b17023SJohn Marino; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 16*e4b17023SJohn Marino; for more details. 17*e4b17023SJohn Marino; 18*e4b17023SJohn Marino; You should have received a copy of the GNU General Public License 19*e4b17023SJohn Marino; along with GCC; see the file COPYING3. If not see 20*e4b17023SJohn Marino; <http://www.gnu.org/licenses/>. 21*e4b17023SJohn Marino 22*e4b17023SJohn MarinoHeaderInclude 23*e4b17023SJohn Marinoconfig/i386/i386-opts.h 24*e4b17023SJohn Marino 25*e4b17023SJohn Marino; Bit flags that specify the ISA we are compiling for. 26*e4b17023SJohn MarinoVariable 27*e4b17023SJohn MarinoHOST_WIDE_INT ix86_isa_flags = TARGET_64BIT_DEFAULT | TARGET_SUBTARGET_ISA_DEFAULT 28*e4b17023SJohn Marino 29*e4b17023SJohn Marino; A mask of ix86_isa_flags that includes bit X if X was set or cleared 30*e4b17023SJohn Marino; on the command line. 31*e4b17023SJohn MarinoVariable 32*e4b17023SJohn MarinoHOST_WIDE_INT ix86_isa_flags_explicit 33*e4b17023SJohn Marino 34*e4b17023SJohn MarinoTargetVariable 35*e4b17023SJohn Marinoint recip_mask = RECIP_MASK_DEFAULT 36*e4b17023SJohn Marino 37*e4b17023SJohn MarinoVariable 38*e4b17023SJohn Marinoint recip_mask_explicit 39*e4b17023SJohn Marino 40*e4b17023SJohn MarinoTargetSave 41*e4b17023SJohn Marinoint x_recip_mask_explicit 42*e4b17023SJohn Marino 43*e4b17023SJohn Marino;; Definitions to add to the cl_target_option structure 44*e4b17023SJohn Marino;; -march= processor 45*e4b17023SJohn MarinoTargetSave 46*e4b17023SJohn Marinounsigned char arch 47*e4b17023SJohn Marino 48*e4b17023SJohn Marino;; -mtune= processor 49*e4b17023SJohn MarinoTargetSave 50*e4b17023SJohn Marinounsigned char tune 51*e4b17023SJohn Marino 52*e4b17023SJohn Marino;; CPU schedule model 53*e4b17023SJohn MarinoTargetSave 54*e4b17023SJohn Marinounsigned char schedule 55*e4b17023SJohn Marino 56*e4b17023SJohn Marino;; branch cost 57*e4b17023SJohn MarinoTargetSave 58*e4b17023SJohn Marinounsigned char branch_cost 59*e4b17023SJohn Marino 60*e4b17023SJohn Marino;; which flags were passed by the user 61*e4b17023SJohn MarinoTargetSave 62*e4b17023SJohn MarinoHOST_WIDE_INT x_ix86_isa_flags_explicit 63*e4b17023SJohn Marino 64*e4b17023SJohn Marino;; which flags were passed by the user 65*e4b17023SJohn MarinoTargetSave 66*e4b17023SJohn Marinoint ix86_target_flags_explicit 67*e4b17023SJohn Marino 68*e4b17023SJohn Marino;; whether -mtune was not specified 69*e4b17023SJohn MarinoTargetSave 70*e4b17023SJohn Marinounsigned char tune_defaulted 71*e4b17023SJohn Marino 72*e4b17023SJohn Marino;; whether -march was specified 73*e4b17023SJohn MarinoTargetSave 74*e4b17023SJohn Marinounsigned char arch_specified 75*e4b17023SJohn Marino 76*e4b17023SJohn Marino;; x86 options 77*e4b17023SJohn Marinom128bit-long-double 78*e4b17023SJohn MarinoTarget RejectNegative Report Mask(128BIT_LONG_DOUBLE) Save 79*e4b17023SJohn Marinosizeof(long double) is 16 80*e4b17023SJohn Marino 81*e4b17023SJohn Marinom80387 82*e4b17023SJohn MarinoTarget Report Mask(80387) Save 83*e4b17023SJohn MarinoUse hardware fp 84*e4b17023SJohn Marino 85*e4b17023SJohn Marinom96bit-long-double 86*e4b17023SJohn MarinoTarget RejectNegative Report InverseMask(128BIT_LONG_DOUBLE) Save 87*e4b17023SJohn Marinosizeof(long double) is 12 88*e4b17023SJohn Marino 89*e4b17023SJohn Marinomaccumulate-outgoing-args 90*e4b17023SJohn MarinoTarget Report Mask(ACCUMULATE_OUTGOING_ARGS) Save 91*e4b17023SJohn MarinoReserve space for outgoing arguments in the function prologue 92*e4b17023SJohn Marino 93*e4b17023SJohn Marinomalign-double 94*e4b17023SJohn MarinoTarget Report Mask(ALIGN_DOUBLE) Save 95*e4b17023SJohn MarinoAlign some doubles on dword boundary 96*e4b17023SJohn Marino 97*e4b17023SJohn Marinomalign-functions= 98*e4b17023SJohn MarinoTarget RejectNegative Joined UInteger 99*e4b17023SJohn MarinoFunction starts are aligned to this power of 2 100*e4b17023SJohn Marino 101*e4b17023SJohn Marinomalign-jumps= 102*e4b17023SJohn MarinoTarget RejectNegative Joined UInteger 103*e4b17023SJohn MarinoJump targets are aligned to this power of 2 104*e4b17023SJohn Marino 105*e4b17023SJohn Marinomalign-loops= 106*e4b17023SJohn MarinoTarget RejectNegative Joined UInteger 107*e4b17023SJohn MarinoLoop code aligned to this power of 2 108*e4b17023SJohn Marino 109*e4b17023SJohn Marinomalign-stringops 110*e4b17023SJohn MarinoTarget RejectNegative Report InverseMask(NO_ALIGN_STRINGOPS, ALIGN_STRINGOPS) Save 111*e4b17023SJohn MarinoAlign destination of the string operations 112*e4b17023SJohn Marino 113*e4b17023SJohn Marinomarch= 114*e4b17023SJohn MarinoTarget RejectNegative Joined Var(ix86_arch_string) 115*e4b17023SJohn MarinoGenerate code for given CPU 116*e4b17023SJohn Marino 117*e4b17023SJohn Marinomasm= 118*e4b17023SJohn MarinoTarget RejectNegative Joined Enum(asm_dialect) Var(ix86_asm_dialect) Init(ASM_ATT) 119*e4b17023SJohn MarinoUse given assembler dialect 120*e4b17023SJohn Marino 121*e4b17023SJohn MarinoEnum 122*e4b17023SJohn MarinoName(asm_dialect) Type(enum asm_dialect) 123*e4b17023SJohn MarinoKnown assembler dialects (for use with the -masm-dialect= option): 124*e4b17023SJohn Marino 125*e4b17023SJohn MarinoEnumValue 126*e4b17023SJohn MarinoEnum(asm_dialect) String(intel) Value(ASM_INTEL) 127*e4b17023SJohn Marino 128*e4b17023SJohn MarinoEnumValue 129*e4b17023SJohn MarinoEnum(asm_dialect) String(att) Value(ASM_ATT) 130*e4b17023SJohn Marino 131*e4b17023SJohn Marinombranch-cost= 132*e4b17023SJohn MarinoTarget RejectNegative Joined UInteger Var(ix86_branch_cost) 133*e4b17023SJohn MarinoBranches are this expensive (1-5, arbitrary units) 134*e4b17023SJohn Marino 135*e4b17023SJohn Marinomlarge-data-threshold= 136*e4b17023SJohn MarinoTarget RejectNegative Joined UInteger Var(ix86_section_threshold) Init(65536) 137*e4b17023SJohn MarinoData greater than given threshold will go into .ldata section in x86-64 medium model 138*e4b17023SJohn Marino 139*e4b17023SJohn Marinomcmodel= 140*e4b17023SJohn MarinoTarget RejectNegative Joined Enum(cmodel) Var(ix86_cmodel) Init(CM_32) 141*e4b17023SJohn MarinoUse given x86-64 code model 142*e4b17023SJohn Marino 143*e4b17023SJohn MarinoEnum 144*e4b17023SJohn MarinoName(cmodel) Type(enum cmodel) 145*e4b17023SJohn MarinoKnown code models (for use with the -mcmodel= option): 146*e4b17023SJohn Marino 147*e4b17023SJohn MarinoEnumValue 148*e4b17023SJohn MarinoEnum(cmodel) String(small) Value(CM_SMALL) 149*e4b17023SJohn Marino 150*e4b17023SJohn MarinoEnumValue 151*e4b17023SJohn MarinoEnum(cmodel) String(medium) Value(CM_MEDIUM) 152*e4b17023SJohn Marino 153*e4b17023SJohn MarinoEnumValue 154*e4b17023SJohn MarinoEnum(cmodel) String(large) Value(CM_LARGE) 155*e4b17023SJohn Marino 156*e4b17023SJohn MarinoEnumValue 157*e4b17023SJohn MarinoEnum(cmodel) String(32) Value(CM_32) 158*e4b17023SJohn Marino 159*e4b17023SJohn MarinoEnumValue 160*e4b17023SJohn MarinoEnum(cmodel) String(kernel) Value(CM_KERNEL) 161*e4b17023SJohn Marino 162*e4b17023SJohn Marinomcpu= 163*e4b17023SJohn MarinoTarget RejectNegative Joined Undocumented Alias(mtune=) Warn(%<-mcpu=%> is deprecated; use %<-mtune=%> or %<-march=%> instead) 164*e4b17023SJohn Marino 165*e4b17023SJohn Marinomfancy-math-387 166*e4b17023SJohn MarinoTarget RejectNegative Report InverseMask(NO_FANCY_MATH_387, USE_FANCY_MATH_387) Save 167*e4b17023SJohn MarinoGenerate sin, cos, sqrt for FPU 168*e4b17023SJohn Marino 169*e4b17023SJohn Marinomforce-drap 170*e4b17023SJohn MarinoTarget Report Var(ix86_force_drap) 171*e4b17023SJohn MarinoAlways use Dynamic Realigned Argument Pointer (DRAP) to realign stack 172*e4b17023SJohn Marino 173*e4b17023SJohn Marinomfp-ret-in-387 174*e4b17023SJohn MarinoTarget Report Mask(FLOAT_RETURNS) Save 175*e4b17023SJohn MarinoReturn values of functions in FPU registers 176*e4b17023SJohn Marino 177*e4b17023SJohn Marinomfpmath= 178*e4b17023SJohn MarinoTarget RejectNegative Joined Var(ix86_fpmath) Enum(fpmath_unit) Init(FPMATH_387) Save 179*e4b17023SJohn MarinoGenerate floating point mathematics using given instruction set 180*e4b17023SJohn Marino 181*e4b17023SJohn MarinoEnum 182*e4b17023SJohn MarinoName(fpmath_unit) Type(enum fpmath_unit) 183*e4b17023SJohn MarinoValid arguments to -mfpmath=: 184*e4b17023SJohn Marino 185*e4b17023SJohn MarinoEnumValue 186*e4b17023SJohn MarinoEnum(fpmath_unit) String(387) Value(FPMATH_387) 187*e4b17023SJohn Marino 188*e4b17023SJohn MarinoEnumValue 189*e4b17023SJohn MarinoEnum(fpmath_unit) String(sse) Value(FPMATH_SSE) 190*e4b17023SJohn Marino 191*e4b17023SJohn MarinoEnumValue 192*e4b17023SJohn MarinoEnum(fpmath_unit) String(387,sse) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)}) 193*e4b17023SJohn Marino 194*e4b17023SJohn MarinoEnumValue 195*e4b17023SJohn MarinoEnum(fpmath_unit) String(387+sse) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)}) 196*e4b17023SJohn Marino 197*e4b17023SJohn MarinoEnumValue 198*e4b17023SJohn MarinoEnum(fpmath_unit) String(sse,387) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)}) 199*e4b17023SJohn Marino 200*e4b17023SJohn MarinoEnumValue 201*e4b17023SJohn MarinoEnum(fpmath_unit) String(sse+387) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)}) 202*e4b17023SJohn Marino 203*e4b17023SJohn MarinoEnumValue 204*e4b17023SJohn MarinoEnum(fpmath_unit) String(both) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)}) 205*e4b17023SJohn Marino 206*e4b17023SJohn Marinomhard-float 207*e4b17023SJohn MarinoTarget RejectNegative Mask(80387) MaskExists Save 208*e4b17023SJohn MarinoUse hardware fp 209*e4b17023SJohn Marino 210*e4b17023SJohn Marinomieee-fp 211*e4b17023SJohn MarinoTarget Report Mask(IEEE_FP) Save 212*e4b17023SJohn MarinoUse IEEE math for fp comparisons 213*e4b17023SJohn Marino 214*e4b17023SJohn Marinominline-all-stringops 215*e4b17023SJohn MarinoTarget Report Mask(INLINE_ALL_STRINGOPS) Save 216*e4b17023SJohn MarinoInline all known string operations 217*e4b17023SJohn Marino 218*e4b17023SJohn Marinominline-stringops-dynamically 219*e4b17023SJohn MarinoTarget Report Mask(INLINE_STRINGOPS_DYNAMICALLY) Save 220*e4b17023SJohn MarinoInline memset/memcpy string operations, but perform inline version only for small blocks 221*e4b17023SJohn Marino 222*e4b17023SJohn Marinomintel-syntax 223*e4b17023SJohn MarinoTarget Undocumented Alias(masm=, intel, att) Warn(%<-mintel-syntax%> and %<-mno-intel-syntax%> are deprecated; use %<-masm=intel%> and %<-masm=att%> instead) 224*e4b17023SJohn Marino;; Deprecated 225*e4b17023SJohn Marino 226*e4b17023SJohn Marinomms-bitfields 227*e4b17023SJohn MarinoTarget Report Mask(MS_BITFIELD_LAYOUT) Save 228*e4b17023SJohn MarinoUse native (MS) bitfield layout 229*e4b17023SJohn Marino 230*e4b17023SJohn Marinomno-align-stringops 231*e4b17023SJohn MarinoTarget RejectNegative Report Mask(NO_ALIGN_STRINGOPS) Undocumented Save 232*e4b17023SJohn Marino 233*e4b17023SJohn Marinomno-fancy-math-387 234*e4b17023SJohn MarinoTarget RejectNegative Report Mask(NO_FANCY_MATH_387) Undocumented Save 235*e4b17023SJohn Marino 236*e4b17023SJohn Marinomno-push-args 237*e4b17023SJohn MarinoTarget RejectNegative Report Mask(NO_PUSH_ARGS) Undocumented Save 238*e4b17023SJohn Marino 239*e4b17023SJohn Marinomno-red-zone 240*e4b17023SJohn MarinoTarget RejectNegative Report Mask(NO_RED_ZONE) Undocumented Save 241*e4b17023SJohn Marino 242*e4b17023SJohn Marinomomit-leaf-frame-pointer 243*e4b17023SJohn MarinoTarget Report Mask(OMIT_LEAF_FRAME_POINTER) Save 244*e4b17023SJohn MarinoOmit the frame pointer in leaf functions 245*e4b17023SJohn Marino 246*e4b17023SJohn Marinompc32 247*e4b17023SJohn MarinoTarget RejectNegative Report 248*e4b17023SJohn MarinoSet 80387 floating-point precision to 32-bit 249*e4b17023SJohn Marino 250*e4b17023SJohn Marinompc64 251*e4b17023SJohn MarinoTarget RejectNegative Report 252*e4b17023SJohn MarinoSet 80387 floating-point precision to 64-bit 253*e4b17023SJohn Marino 254*e4b17023SJohn Marinompc80 255*e4b17023SJohn MarinoTarget RejectNegative Report 256*e4b17023SJohn MarinoSet 80387 floating-point precision to 80-bit 257*e4b17023SJohn Marino 258*e4b17023SJohn Marinompreferred-stack-boundary= 259*e4b17023SJohn MarinoTarget RejectNegative Joined UInteger Var(ix86_preferred_stack_boundary_arg) 260*e4b17023SJohn MarinoAttempt to keep stack aligned to this power of 2 261*e4b17023SJohn Marino 262*e4b17023SJohn Marinomincoming-stack-boundary= 263*e4b17023SJohn MarinoTarget RejectNegative Joined UInteger Var(ix86_incoming_stack_boundary_arg) 264*e4b17023SJohn MarinoAssume incoming stack aligned to this power of 2 265*e4b17023SJohn Marino 266*e4b17023SJohn Marinompush-args 267*e4b17023SJohn MarinoTarget Report InverseMask(NO_PUSH_ARGS, PUSH_ARGS) Save 268*e4b17023SJohn MarinoUse push instructions to save outgoing arguments 269*e4b17023SJohn Marino 270*e4b17023SJohn Marinomred-zone 271*e4b17023SJohn MarinoTarget RejectNegative Report InverseMask(NO_RED_ZONE, RED_ZONE) Save 272*e4b17023SJohn MarinoUse red-zone in the x86-64 code 273*e4b17023SJohn Marino 274*e4b17023SJohn Marinomregparm= 275*e4b17023SJohn MarinoTarget RejectNegative Joined UInteger Var(ix86_regparm) 276*e4b17023SJohn MarinoNumber of registers used to pass integer arguments 277*e4b17023SJohn Marino 278*e4b17023SJohn Marinomrtd 279*e4b17023SJohn MarinoTarget Report Mask(RTD) Save 280*e4b17023SJohn MarinoAlternate calling convention 281*e4b17023SJohn Marino 282*e4b17023SJohn Marinomsoft-float 283*e4b17023SJohn MarinoTarget InverseMask(80387) Save 284*e4b17023SJohn MarinoDo not use hardware fp 285*e4b17023SJohn Marino 286*e4b17023SJohn Marinomsseregparm 287*e4b17023SJohn MarinoTarget RejectNegative Mask(SSEREGPARM) Save 288*e4b17023SJohn MarinoUse SSE register passing conventions for SF and DF mode 289*e4b17023SJohn Marino 290*e4b17023SJohn Marinomstackrealign 291*e4b17023SJohn MarinoTarget Report Var(ix86_force_align_arg_pointer) Init(-1) 292*e4b17023SJohn MarinoRealign stack in prologue 293*e4b17023SJohn Marino 294*e4b17023SJohn Marinomstack-arg-probe 295*e4b17023SJohn MarinoTarget Report Mask(STACK_PROBE) Save 296*e4b17023SJohn MarinoEnable stack probing 297*e4b17023SJohn Marino 298*e4b17023SJohn Marinomstringop-strategy= 299*e4b17023SJohn MarinoTarget RejectNegative Joined Enum(stringop_alg) Var(ix86_stringop_alg) Init(no_stringop) 300*e4b17023SJohn MarinoChose strategy to generate stringop using 301*e4b17023SJohn Marino 302*e4b17023SJohn MarinoEnum 303*e4b17023SJohn MarinoName(stringop_alg) Type(enum stringop_alg) 304*e4b17023SJohn MarinoValid arguments to -mstringop-strategy=: 305*e4b17023SJohn Marino 306*e4b17023SJohn MarinoEnumValue 307*e4b17023SJohn MarinoEnum(stringop_alg) String(rep_byte) Value(rep_prefix_1_byte) 308*e4b17023SJohn Marino 309*e4b17023SJohn MarinoEnumValue 310*e4b17023SJohn MarinoEnum(stringop_alg) String(libcall) Value(libcall) 311*e4b17023SJohn Marino 312*e4b17023SJohn MarinoEnumValue 313*e4b17023SJohn MarinoEnum(stringop_alg) String(rep_4byte) Value(rep_prefix_4_byte) 314*e4b17023SJohn Marino 315*e4b17023SJohn MarinoEnumValue 316*e4b17023SJohn MarinoEnum(stringop_alg) String(rep_8byte) Value(rep_prefix_8_byte) 317*e4b17023SJohn Marino 318*e4b17023SJohn MarinoEnumValue 319*e4b17023SJohn MarinoEnum(stringop_alg) String(byte_loop) Value(loop_1_byte) 320*e4b17023SJohn Marino 321*e4b17023SJohn MarinoEnumValue 322*e4b17023SJohn MarinoEnum(stringop_alg) String(loop) Value(loop) 323*e4b17023SJohn Marino 324*e4b17023SJohn MarinoEnumValue 325*e4b17023SJohn MarinoEnum(stringop_alg) String(unrolled_loop) Value(unrolled_loop) 326*e4b17023SJohn Marino 327*e4b17023SJohn Marinomtls-dialect= 328*e4b17023SJohn MarinoTarget RejectNegative Joined Var(ix86_tls_dialect) Enum(tls_dialect) Init(TLS_DIALECT_GNU) 329*e4b17023SJohn MarinoUse given thread-local storage dialect 330*e4b17023SJohn Marino 331*e4b17023SJohn MarinoEnum 332*e4b17023SJohn MarinoName(tls_dialect) Type(enum tls_dialect) 333*e4b17023SJohn MarinoKnown TLS dialects (for use with the -mtls-dialect= option): 334*e4b17023SJohn Marino 335*e4b17023SJohn MarinoEnumValue 336*e4b17023SJohn MarinoEnum(tls_dialect) String(gnu) Value(TLS_DIALECT_GNU) 337*e4b17023SJohn Marino 338*e4b17023SJohn MarinoEnumValue 339*e4b17023SJohn MarinoEnum(tls_dialect) String(gnu2) Value(TLS_DIALECT_GNU2) 340*e4b17023SJohn Marino 341*e4b17023SJohn Marinomtls-direct-seg-refs 342*e4b17023SJohn MarinoTarget Report Mask(TLS_DIRECT_SEG_REFS) 343*e4b17023SJohn MarinoUse direct references against %gs when accessing tls data 344*e4b17023SJohn Marino 345*e4b17023SJohn Marinomtune= 346*e4b17023SJohn MarinoTarget RejectNegative Joined Var(ix86_tune_string) 347*e4b17023SJohn MarinoSchedule code for given CPU 348*e4b17023SJohn Marino 349*e4b17023SJohn Marinomabi= 350*e4b17023SJohn MarinoTarget RejectNegative Joined Var(ix86_abi) Enum(calling_abi) Init(SYSV_ABI) 351*e4b17023SJohn MarinoGenerate code that conforms to the given ABI 352*e4b17023SJohn Marino 353*e4b17023SJohn MarinoEnum 354*e4b17023SJohn MarinoName(calling_abi) Type(enum calling_abi) 355*e4b17023SJohn MarinoKnown ABIs (for use with the -mabi= option): 356*e4b17023SJohn Marino 357*e4b17023SJohn MarinoEnumValue 358*e4b17023SJohn MarinoEnum(calling_abi) String(sysv) Value(SYSV_ABI) 359*e4b17023SJohn Marino 360*e4b17023SJohn MarinoEnumValue 361*e4b17023SJohn MarinoEnum(calling_abi) String(ms) Value(MS_ABI) 362*e4b17023SJohn Marino 363*e4b17023SJohn Marinomveclibabi= 364*e4b17023SJohn MarinoTarget RejectNegative Joined Var(ix86_veclibabi_type) Enum(ix86_veclibabi) Init(ix86_veclibabi_type_none) 365*e4b17023SJohn MarinoVector library ABI to use 366*e4b17023SJohn Marino 367*e4b17023SJohn MarinoEnum 368*e4b17023SJohn MarinoName(ix86_veclibabi) Type(enum ix86_veclibabi) 369*e4b17023SJohn MarinoKnown vectorization library ABIs (for use with the -mveclibabi= option): 370*e4b17023SJohn Marino 371*e4b17023SJohn MarinoEnumValue 372*e4b17023SJohn MarinoEnum(ix86_veclibabi) String(svml) Value(ix86_veclibabi_type_svml) 373*e4b17023SJohn Marino 374*e4b17023SJohn MarinoEnumValue 375*e4b17023SJohn MarinoEnum(ix86_veclibabi) String(acml) Value(ix86_veclibabi_type_acml) 376*e4b17023SJohn Marino 377*e4b17023SJohn Marinomvect8-ret-in-mem 378*e4b17023SJohn MarinoTarget Report Mask(VECT8_RETURNS) Save 379*e4b17023SJohn MarinoReturn 8-byte vectors in memory 380*e4b17023SJohn Marino 381*e4b17023SJohn Marinomrecip 382*e4b17023SJohn MarinoTarget Report Mask(RECIP) Save 383*e4b17023SJohn MarinoGenerate reciprocals instead of divss and sqrtss. 384*e4b17023SJohn Marino 385*e4b17023SJohn Marinomrecip= 386*e4b17023SJohn MarinoTarget Report RejectNegative Joined Var(ix86_recip_name) 387*e4b17023SJohn MarinoControl generation of reciprocal estimates. 388*e4b17023SJohn Marino 389*e4b17023SJohn Marinomcld 390*e4b17023SJohn MarinoTarget Report Mask(CLD) Save 391*e4b17023SJohn MarinoGenerate cld instruction in the function prologue. 392*e4b17023SJohn Marino 393*e4b17023SJohn Marinomvzeroupper 394*e4b17023SJohn MarinoTarget Report Mask(VZEROUPPER) Save 395*e4b17023SJohn MarinoGenerate vzeroupper instruction before a transfer of control flow out of 396*e4b17023SJohn Marinothe function. 397*e4b17023SJohn Marino 398*e4b17023SJohn Marinomdispatch-scheduler 399*e4b17023SJohn MarinoTarget RejectNegative Var(flag_dispatch_scheduler) 400*e4b17023SJohn MarinoDo dispatch scheduling if processor is bdver1 or bdver2 and Haifa scheduling 401*e4b17023SJohn Marinois selected. 402*e4b17023SJohn Marino 403*e4b17023SJohn Marinomprefer-avx128 404*e4b17023SJohn MarinoTarget Report Mask(PREFER_AVX128) SAVE 405*e4b17023SJohn MarinoUse 128-bit AVX instructions instead of 256-bit AVX instructions in the auto-vectorizer. 406*e4b17023SJohn Marino 407*e4b17023SJohn Marino;; ISA support 408*e4b17023SJohn Marino 409*e4b17023SJohn Marinom32 410*e4b17023SJohn MarinoTarget RejectNegative Negative(m64) Report InverseMask(ISA_64BIT) Var(ix86_isa_flags) Save 411*e4b17023SJohn MarinoGenerate 32bit i386 code 412*e4b17023SJohn Marino 413*e4b17023SJohn Marinom64 414*e4b17023SJohn MarinoTarget RejectNegative Negative(mx32) Report Mask(ISA_64BIT) Var(ix86_isa_flags) Save 415*e4b17023SJohn MarinoGenerate 64bit x86-64 code 416*e4b17023SJohn Marino 417*e4b17023SJohn Marinomx32 418*e4b17023SJohn MarinoTarget RejectNegative Negative(m32) Report Mask(ISA_X32) Var(ix86_isa_flags) Save 419*e4b17023SJohn MarinoGenerate 32bit x86-64 code 420*e4b17023SJohn Marino 421*e4b17023SJohn Marinommmx 422*e4b17023SJohn MarinoTarget Report Mask(ISA_MMX) Var(ix86_isa_flags) Save 423*e4b17023SJohn MarinoSupport MMX built-in functions 424*e4b17023SJohn Marino 425*e4b17023SJohn Marinom3dnow 426*e4b17023SJohn MarinoTarget Report Mask(ISA_3DNOW) Var(ix86_isa_flags) Save 427*e4b17023SJohn MarinoSupport 3DNow! built-in functions 428*e4b17023SJohn Marino 429*e4b17023SJohn Marinom3dnowa 430*e4b17023SJohn MarinoTarget Undocumented Mask(ISA_3DNOW_A) Var(ix86_isa_flags) Save 431*e4b17023SJohn MarinoSupport Athlon 3Dnow! built-in functions 432*e4b17023SJohn Marino 433*e4b17023SJohn Marinomsse 434*e4b17023SJohn MarinoTarget Report Mask(ISA_SSE) Var(ix86_isa_flags) Save 435*e4b17023SJohn MarinoSupport MMX and SSE built-in functions and code generation 436*e4b17023SJohn Marino 437*e4b17023SJohn Marinomsse2 438*e4b17023SJohn MarinoTarget Report Mask(ISA_SSE2) Var(ix86_isa_flags) Save 439*e4b17023SJohn MarinoSupport MMX, SSE and SSE2 built-in functions and code generation 440*e4b17023SJohn Marino 441*e4b17023SJohn Marinomsse3 442*e4b17023SJohn MarinoTarget Report Mask(ISA_SSE3) Var(ix86_isa_flags) Save 443*e4b17023SJohn MarinoSupport MMX, SSE, SSE2 and SSE3 built-in functions and code generation 444*e4b17023SJohn Marino 445*e4b17023SJohn Marinomssse3 446*e4b17023SJohn MarinoTarget Report Mask(ISA_SSSE3) Var(ix86_isa_flags) Save 447*e4b17023SJohn MarinoSupport MMX, SSE, SSE2, SSE3 and SSSE3 built-in functions and code generation 448*e4b17023SJohn Marino 449*e4b17023SJohn Marinomsse4.1 450*e4b17023SJohn MarinoTarget Report Mask(ISA_SSE4_1) Var(ix86_isa_flags) Save 451*e4b17023SJohn MarinoSupport MMX, SSE, SSE2, SSE3, SSSE3 and SSE4.1 built-in functions and code generation 452*e4b17023SJohn Marino 453*e4b17023SJohn Marinomsse4.2 454*e4b17023SJohn MarinoTarget Report Mask(ISA_SSE4_2) Var(ix86_isa_flags) Save 455*e4b17023SJohn MarinoSupport MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and code generation 456*e4b17023SJohn Marino 457*e4b17023SJohn Marinomsse4 458*e4b17023SJohn MarinoTarget RejectNegative Report Mask(ISA_SSE4_2) MaskExists Var(ix86_isa_flags) Save 459*e4b17023SJohn MarinoSupport MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and code generation 460*e4b17023SJohn Marino 461*e4b17023SJohn Marinomno-sse4 462*e4b17023SJohn MarinoTarget RejectNegative Report InverseMask(ISA_SSE4_1) MaskExists Var(ix86_isa_flags) Save 463*e4b17023SJohn MarinoDo not support SSE4.1 and SSE4.2 built-in functions and code generation 464*e4b17023SJohn Marino 465*e4b17023SJohn Marinomsse5 466*e4b17023SJohn MarinoTarget Undocumented Alias(mavx) Warn(%<-msse5%> was removed) 467*e4b17023SJohn Marino;; Deprecated 468*e4b17023SJohn Marino 469*e4b17023SJohn Marinomavx 470*e4b17023SJohn MarinoTarget Report Mask(ISA_AVX) Var(ix86_isa_flags) Save 471*e4b17023SJohn MarinoSupport MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 and AVX built-in functions and code generation 472*e4b17023SJohn Marino 473*e4b17023SJohn Marinomavx2 474*e4b17023SJohn MarinoTarget Report Mask(ISA_AVX2) Var(ix86_isa_flags) Save 475*e4b17023SJohn MarinoSupport MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and AVX2 built-in functions and code generation 476*e4b17023SJohn Marino 477*e4b17023SJohn Marinomfma 478*e4b17023SJohn MarinoTarget Report Mask(ISA_FMA) Var(ix86_isa_flags) Save 479*e4b17023SJohn MarinoSupport MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and FMA built-in functions and code generation 480*e4b17023SJohn Marino 481*e4b17023SJohn Marinomsse4a 482*e4b17023SJohn MarinoTarget Report Mask(ISA_SSE4A) Var(ix86_isa_flags) Save 483*e4b17023SJohn MarinoSupport MMX, SSE, SSE2, SSE3 and SSE4A built-in functions and code generation 484*e4b17023SJohn Marino 485*e4b17023SJohn Marinomfma4 486*e4b17023SJohn MarinoTarget Report Mask(ISA_FMA4) Var(ix86_isa_flags) Save 487*e4b17023SJohn MarinoSupport FMA4 built-in functions and code generation 488*e4b17023SJohn Marino 489*e4b17023SJohn Marinomxop 490*e4b17023SJohn MarinoTarget Report Mask(ISA_XOP) Var(ix86_isa_flags) Save 491*e4b17023SJohn MarinoSupport XOP built-in functions and code generation 492*e4b17023SJohn Marino 493*e4b17023SJohn Marinomlwp 494*e4b17023SJohn MarinoTarget Report Mask(ISA_LWP) Var(ix86_isa_flags) Save 495*e4b17023SJohn MarinoSupport LWP built-in functions and code generation 496*e4b17023SJohn Marino 497*e4b17023SJohn Marinomabm 498*e4b17023SJohn MarinoTarget Report Mask(ISA_ABM) Var(ix86_isa_flags) Save 499*e4b17023SJohn MarinoSupport code generation of Advanced Bit Manipulation (ABM) instructions. 500*e4b17023SJohn Marino 501*e4b17023SJohn Marinompopcnt 502*e4b17023SJohn MarinoTarget Report Mask(ISA_POPCNT) Var(ix86_isa_flags) Save 503*e4b17023SJohn MarinoSupport code generation of popcnt instruction. 504*e4b17023SJohn Marino 505*e4b17023SJohn Marinombmi 506*e4b17023SJohn MarinoTarget Report Mask(ISA_BMI) Var(ix86_isa_flags) Save 507*e4b17023SJohn MarinoSupport BMI built-in functions and code generation 508*e4b17023SJohn Marino 509*e4b17023SJohn Marinombmi2 510*e4b17023SJohn MarinoTarget Report Mask(ISA_BMI2) Var(ix86_isa_flags) Save 511*e4b17023SJohn MarinoSupport BMI2 built-in functions and code generation 512*e4b17023SJohn Marino 513*e4b17023SJohn Marinomlzcnt 514*e4b17023SJohn MarinoTarget Report Mask(ISA_LZCNT) Var(ix86_isa_flags) Save 515*e4b17023SJohn MarinoSupport LZCNT built-in function and code generation 516*e4b17023SJohn Marino 517*e4b17023SJohn Marinomtbm 518*e4b17023SJohn MarinoTarget Report Mask(ISA_TBM) Var(ix86_isa_flags) Save 519*e4b17023SJohn MarinoSupport TBM built-in functions and code generation 520*e4b17023SJohn Marino 521*e4b17023SJohn Marinomcx16 522*e4b17023SJohn MarinoTarget Report Mask(ISA_CX16) Var(ix86_isa_flags) Save 523*e4b17023SJohn MarinoSupport code generation of cmpxchg16b instruction. 524*e4b17023SJohn Marino 525*e4b17023SJohn Marinomsahf 526*e4b17023SJohn MarinoTarget Report Mask(ISA_SAHF) Var(ix86_isa_flags) Save 527*e4b17023SJohn MarinoSupport code generation of sahf instruction in 64bit x86-64 code. 528*e4b17023SJohn Marino 529*e4b17023SJohn Marinommovbe 530*e4b17023SJohn MarinoTarget Report Mask(ISA_MOVBE) Var(ix86_isa_flags) Save 531*e4b17023SJohn MarinoSupport code generation of movbe instruction. 532*e4b17023SJohn Marino 533*e4b17023SJohn Marinomcrc32 534*e4b17023SJohn MarinoTarget Report Mask(ISA_CRC32) Var(ix86_isa_flags) Save 535*e4b17023SJohn MarinoSupport code generation of crc32 instruction. 536*e4b17023SJohn Marino 537*e4b17023SJohn Marinomaes 538*e4b17023SJohn MarinoTarget Report Mask(ISA_AES) Var(ix86_isa_flags) Save 539*e4b17023SJohn MarinoSupport AES built-in functions and code generation 540*e4b17023SJohn Marino 541*e4b17023SJohn Marinompclmul 542*e4b17023SJohn MarinoTarget Report Mask(ISA_PCLMUL) Var(ix86_isa_flags) Save 543*e4b17023SJohn MarinoSupport PCLMUL built-in functions and code generation 544*e4b17023SJohn Marino 545*e4b17023SJohn Marinomsse2avx 546*e4b17023SJohn MarinoTarget Report Var(ix86_sse2avx) 547*e4b17023SJohn MarinoEncode SSE instructions with VEX prefix 548*e4b17023SJohn Marino 549*e4b17023SJohn Marinomfsgsbase 550*e4b17023SJohn MarinoTarget Report Mask(ISA_FSGSBASE) Var(ix86_isa_flags) Save 551*e4b17023SJohn MarinoSupport FSGSBASE built-in functions and code generation 552*e4b17023SJohn Marino 553*e4b17023SJohn Marinomrdrnd 554*e4b17023SJohn MarinoTarget Report Mask(ISA_RDRND) Var(ix86_isa_flags) Save 555*e4b17023SJohn MarinoSupport RDRND built-in functions and code generation 556*e4b17023SJohn Marino 557*e4b17023SJohn Marinomf16c 558*e4b17023SJohn MarinoTarget Report Mask(ISA_F16C) Var(ix86_isa_flags) Save 559*e4b17023SJohn MarinoSupport F16C built-in functions and code generation 560*e4b17023SJohn Marino 561*e4b17023SJohn Marinomfentry 562*e4b17023SJohn MarinoTarget Report Var(flag_fentry) Init(-1) 563*e4b17023SJohn MarinoEmit profiling counter call at function entry before prologue. 564*e4b17023SJohn Marino 565*e4b17023SJohn Marinom8bit-idiv 566*e4b17023SJohn MarinoTarget Report Mask(USE_8BIT_IDIV) Save 567*e4b17023SJohn MarinoExpand 32bit/64bit integer divide into 8bit unsigned integer divide with run-time check 568*e4b17023SJohn Marino 569*e4b17023SJohn Marinomavx256-split-unaligned-load 570*e4b17023SJohn MarinoTarget Report Mask(AVX256_SPLIT_UNALIGNED_LOAD) Save 571*e4b17023SJohn MarinoSplit 32-byte AVX unaligned load 572*e4b17023SJohn Marino 573*e4b17023SJohn Marinomavx256-split-unaligned-store 574*e4b17023SJohn MarinoTarget Report Mask(AVX256_SPLIT_UNALIGNED_STORE) Save 575*e4b17023SJohn MarinoSplit 32-byte AVX unaligned store 576