1 ; Options for the IA-32 and AMD64 ports of the compiler. 2 3 ; Copyright (C) 2005-2022 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 TargetVariable 109 enum cmodel ix86_cmodel = CM_32 110 111 ;; -mabi= 112 TargetVariable 113 enum calling_abi ix86_abi = SYSV_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 TargetVariable 137 int ix86_incoming_stack_boundary_arg 138 139 ;; -maddress-mode= 140 TargetVariable 141 enum pmode ix86_pmode = PMODE_SI 142 143 ;; -mpreferred-stack-boundary= 144 TargetVariable 145 int ix86_preferred_stack_boundary_arg 146 147 ;; -mrecip= 148 TargetSave 149 const char *x_ix86_recip_name 150 151 ;; -mregparm= 152 TargetVariable 153 int 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 TargetVariable 193 enum ix86_veclibabi ix86_veclibabi_type = ix86_veclibabi_type_none 194 195 ;; x86 options 196 m128bit-long-double 197 Target RejectNegative Mask(128BIT_LONG_DOUBLE) Save 198 sizeof(long double) is 16. 199 200 m80387 201 Target Mask(80387) Save 202 Use hardware fp. 203 204 m96bit-long-double 205 Target RejectNegative InverseMask(128BIT_LONG_DOUBLE) Save 206 sizeof(long double) is 12. 207 208 mlong-double-80 209 Target RejectNegative Negative(mlong-double-64) InverseMask(LONG_DOUBLE_64) Save 210 Use 80-bit long double. 211 212 mlong-double-64 213 Target 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 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 Mask(ACCUMULATE_OUTGOING_ARGS) Save 222 Reserve space for outgoing arguments in the function prologue. 223 224 malign-double 225 Target 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 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 InverseMask(NO_FANCY_MATH_387, USE_FANCY_MATH_387) Save 329 Generate sin, cos, sqrt for FPU. 330 331 mforce-drap 332 Target Var(ix86_force_drap) 333 Always use Dynamic Realigned Argument Pointer (DRAP) to realign stack. 334 335 mfp-ret-in-387 336 Target 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 Mask(IEEE_FP) Save 374 Use IEEE math for fp comparisons. 375 376 minline-all-stringops 377 Target Mask(INLINE_ALL_STRINGOPS) Save 378 Inline all known string operations. 379 380 minline-stringops-dynamically 381 Target 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 Mask(MS_BITFIELD_LAYOUT) Save 389 Use native (MS) bitfield layout. 390 391 mno-align-stringops 392 Target RejectNegative Mask(NO_ALIGN_STRINGOPS) Undocumented Save 393 394 mno-fancy-math-387 395 Target RejectNegative Mask(NO_FANCY_MATH_387) Undocumented Save 396 397 mno-push-args 398 Target RejectNegative Mask(NO_PUSH_ARGS) Undocumented Save 399 400 mno-red-zone 401 Target RejectNegative Mask(NO_RED_ZONE) Undocumented Save 402 403 momit-leaf-frame-pointer 404 Target Mask(OMIT_LEAF_FRAME_POINTER) Save 405 Omit the frame pointer in leaf functions. 406 407 mrelax-cmpxchg-loop 408 Target Mask(RELAX_CMPXCHG_LOOP) Save 409 Relax cmpxchg loop for atomic_fetch_{or,xor,and,nand} by adding load and cmp before cmpxchg, execute pause and loop back to load and compare if load value is not expected. 410 411 mpc32 412 Target RejectNegative 413 Set 80387 floating-point precision to 32-bit. 414 415 mpc64 416 Target RejectNegative 417 Set 80387 floating-point precision to 64-bit. 418 419 mpc80 420 Target RejectNegative 421 Set 80387 floating-point precision to 80-bit. 422 423 mdaz-ftz 424 Target 425 Set the FTZ and DAZ Flags. 426 427 mpreferred-stack-boundary= 428 Target RejectNegative Joined UInteger Var(ix86_preferred_stack_boundary_arg) 429 Attempt to keep stack aligned to this power of 2. 430 431 mincoming-stack-boundary= 432 Target RejectNegative Joined UInteger Var(ix86_incoming_stack_boundary_arg) 433 Assume incoming stack aligned to this power of 2. 434 435 mpush-args 436 Target InverseMask(NO_PUSH_ARGS, PUSH_ARGS) Save 437 Use push instructions to save outgoing arguments. 438 439 mred-zone 440 Target RejectNegative InverseMask(NO_RED_ZONE, RED_ZONE) Save 441 Use red-zone in the x86-64 code. 442 443 mregparm= 444 Target RejectNegative Joined UInteger Var(ix86_regparm) 445 Number of registers used to pass integer arguments. 446 447 mrtd 448 Target Mask(RTD) Save 449 Alternate calling convention. 450 451 msoft-float 452 Target InverseMask(80387) Save 453 Do not use hardware fp. 454 455 msseregparm 456 Target RejectNegative Mask(SSEREGPARM) Save 457 Use SSE register passing conventions for SF and DF mode. 458 459 mstackrealign 460 Target Var(ix86_force_align_arg_pointer) 461 Realign stack in prologue. 462 463 mstack-arg-probe 464 Target Mask(STACK_PROBE) Save 465 Enable stack probing. 466 467 mmemcpy-strategy= 468 Target RejectNegative Joined Var(ix86_tune_memcpy_strategy) 469 Specify memcpy expansion strategy when expected size is known. 470 471 mmemset-strategy= 472 Target RejectNegative Joined Var(ix86_tune_memset_strategy) 473 Specify memset expansion strategy when expected size is known. 474 475 mstringop-strategy= 476 Target RejectNegative Joined Enum(stringop_alg) Var(ix86_stringop_alg) Init(no_stringop) 477 Chose strategy to generate stringop using. 478 479 Enum 480 Name(stringop_alg) Type(enum stringop_alg) 481 Valid arguments to -mstringop-strategy=: 482 483 EnumValue 484 Enum(stringop_alg) String(rep_byte) Value(rep_prefix_1_byte) 485 486 EnumValue 487 Enum(stringop_alg) String(libcall) Value(libcall) 488 489 EnumValue 490 Enum(stringop_alg) String(rep_4byte) Value(rep_prefix_4_byte) 491 492 EnumValue 493 Enum(stringop_alg) String(rep_8byte) Value(rep_prefix_8_byte) 494 495 EnumValue 496 Enum(stringop_alg) String(byte_loop) Value(loop_1_byte) 497 498 EnumValue 499 Enum(stringop_alg) String(loop) Value(loop) 500 501 EnumValue 502 Enum(stringop_alg) String(unrolled_loop) Value(unrolled_loop) 503 504 EnumValue 505 Enum(stringop_alg) String(vector_loop) Value(vector_loop) 506 507 mtls-dialect= 508 Target RejectNegative Joined Var(ix86_tls_dialect) Enum(tls_dialect) Init(TLS_DIALECT_GNU) 509 Use given thread-local storage dialect. 510 511 Enum 512 Name(tls_dialect) Type(enum tls_dialect) 513 Known TLS dialects (for use with the -mtls-dialect= option): 514 515 EnumValue 516 Enum(tls_dialect) String(gnu) Value(TLS_DIALECT_GNU) 517 518 EnumValue 519 Enum(tls_dialect) String(gnu2) Value(TLS_DIALECT_GNU2) 520 521 mtls-direct-seg-refs 522 Target Mask(TLS_DIRECT_SEG_REFS) 523 Use direct references against %gs when accessing tls data. 524 525 mtune= 526 Target RejectNegative Negative(mtune=) Joined Var(ix86_tune_string) 527 Schedule code for given CPU. 528 529 mtune-ctrl= 530 Target RejectNegative Joined Var(ix86_tune_ctrl_string) 531 Fine grain control of tune features. 532 533 mno-default 534 Target RejectNegative Var(ix86_tune_no_default) 535 Clear all tune features. 536 537 mdump-tune-features 538 Target RejectNegative Var(ix86_dump_tunes) 539 540 miamcu 541 Target Mask(IAMCU) 542 Generate code that conforms to Intel MCU psABI. 543 544 mabi= 545 Target RejectNegative Joined Var(ix86_abi) Enum(calling_abi) Init(SYSV_ABI) 546 Generate code that conforms to the given ABI. 547 548 Enum 549 Name(calling_abi) Type(enum calling_abi) 550 Known ABIs (for use with the -mabi= option): 551 552 EnumValue 553 Enum(calling_abi) String(sysv) Value(SYSV_ABI) 554 555 EnumValue 556 Enum(calling_abi) String(ms) Value(MS_ABI) 557 558 mcall-ms2sysv-xlogues 559 Target Mask(CALL_MS2SYSV_XLOGUES) Save 560 Use libgcc stubs to save and restore registers clobbered by 64-bit Microsoft to System V ABI calls. 561 562 mveclibabi= 563 Target RejectNegative Joined Var(ix86_veclibabi_type) Enum(ix86_veclibabi) Init(ix86_veclibabi_type_none) 564 Vector library ABI to use. 565 566 Enum 567 Name(ix86_veclibabi) Type(enum ix86_veclibabi) 568 Known vectorization library ABIs (for use with the -mveclibabi= option): 569 570 EnumValue 571 Enum(ix86_veclibabi) String(svml) Value(ix86_veclibabi_type_svml) 572 573 EnumValue 574 Enum(ix86_veclibabi) String(acml) Value(ix86_veclibabi_type_acml) 575 576 mvect8-ret-in-mem 577 Target Mask(VECT8_RETURNS) Save 578 Return 8-byte vectors in memory. 579 580 mrecip 581 Target Mask(RECIP) Save 582 Generate reciprocals instead of divss and sqrtss. 583 584 mrecip= 585 Target RejectNegative Joined Var(ix86_recip_name) 586 Control generation of reciprocal estimates. 587 588 mcld 589 Target Mask(CLD) Save 590 Generate cld instruction in the function prologue. 591 592 mvzeroupper 593 Target Mask(VZEROUPPER) Save 594 Generate vzeroupper instruction before a transfer of control flow out of 595 the function. 596 597 mstv 598 Target Mask(STV) Save 599 Disable Scalar to Vector optimization pass transforming 64-bit integer 600 computations into a vector ones. 601 602 mdispatch-scheduler 603 Target RejectNegative Var(flag_dispatch_scheduler) 604 Do dispatch scheduling if processor is bdver1, bdver2, bdver3, bdver4 605 or znver1 and Haifa scheduling is selected. 606 607 mprefer-avx128 608 Target Alias(mprefer-vector-width=, 128, 256) 609 Use 128-bit AVX instructions instead of 256-bit AVX instructions in the auto-vectorizer. 610 611 mprefer-vector-width= 612 Target RejectNegative Joined Var(prefer_vector_width_type) Enum(prefer_vector_width) Init(PVW_NONE) Save 613 Use given register vector width instructions instead of maximum register width in the auto-vectorizer. 614 615 Enum 616 Name(prefer_vector_width) Type(enum prefer_vector_width) 617 Known preferred register vector length (to use with the -mprefer-vector-width= option): 618 619 EnumValue 620 Enum(prefer_vector_width) String(none) Value(PVW_NONE) 621 622 EnumValue 623 Enum(prefer_vector_width) String(128) Value(PVW_AVX128) 624 625 EnumValue 626 Enum(prefer_vector_width) String(256) Value(PVW_AVX256) 627 628 EnumValue 629 Enum(prefer_vector_width) String(512) Value(PVW_AVX512) 630 631 mmove-max= 632 Target RejectNegative Joined Var(ix86_move_max) Enum(prefer_vector_width) Init(PVW_NONE) Save 633 Maximum number of bits that can be moved from memory to memory efficiently. 634 635 mstore-max= 636 Target RejectNegative Joined Var(ix86_store_max) Enum(prefer_vector_width) Init(PVW_NONE) Save 637 Maximum number of bits that can be stored to memory efficiently. 638 639 ;; ISA support 640 641 m32 642 Target RejectNegative Negative(m64) InverseMask(ISA_64BIT) Var(ix86_isa_flags) Save 643 Generate 32bit i386 code. 644 645 m64 646 Target RejectNegative Negative(mx32) Mask(ABI_64) Var(ix86_isa_flags) Save 647 Generate 64bit x86-64 code. 648 649 mx32 650 Target RejectNegative Negative(m16) Mask(ABI_X32) Var(ix86_isa_flags) Save 651 Generate 32bit x86-64 code. 652 653 m16 654 Target RejectNegative Negative(m32) Mask(CODE16) InverseMask(ISA_64BIT) Var(ix86_isa_flags) Save 655 Generate 16bit i386 code. 656 657 mmmx 658 Target Mask(ISA_MMX) Var(ix86_isa_flags) Save 659 Support MMX built-in functions. 660 661 m3dnow 662 Target Mask(ISA_3DNOW) Var(ix86_isa_flags) Save 663 Support 3DNow! built-in functions. 664 665 m3dnowa 666 Target Mask(ISA_3DNOW_A) Var(ix86_isa_flags) Save 667 Support Athlon 3Dnow! built-in functions. 668 669 msse 670 Target Mask(ISA_SSE) Var(ix86_isa_flags) Save 671 Support MMX and SSE built-in functions and code generation. 672 673 msse2 674 Target Mask(ISA_SSE2) Var(ix86_isa_flags) Save 675 Support MMX, SSE and SSE2 built-in functions and code generation. 676 677 msse3 678 Target Mask(ISA_SSE3) Var(ix86_isa_flags) Save 679 Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation. 680 681 mssse3 682 Target Mask(ISA_SSSE3) Var(ix86_isa_flags) Save 683 Support MMX, SSE, SSE2, SSE3 and SSSE3 built-in functions and code generation. 684 685 msse4.1 686 Target Mask(ISA_SSE4_1) Var(ix86_isa_flags) Save 687 Support MMX, SSE, SSE2, SSE3, SSSE3 and SSE4.1 built-in functions and code generation. 688 689 msse4.2 690 Target Mask(ISA_SSE4_2) Var(ix86_isa_flags) Save 691 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and code generation. 692 693 msse4 694 Target RejectNegative Mask(ISA_SSE4_2) Var(ix86_isa_flags) Save 695 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and code generation. 696 697 mno-sse4 698 Target RejectNegative InverseMask(ISA_SSE4_1) Var(ix86_isa_flags) Save 699 Do not support SSE4.1 and SSE4.2 built-in functions and code generation. 700 701 msse5 702 Target Undocumented Alias(mavx) Warn(%<-msse5%> was removed) 703 ;; Deprecated 704 705 mavx 706 Target Mask(ISA_AVX) Var(ix86_isa_flags) Save 707 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 and AVX built-in functions and code generation. 708 709 mavx2 710 Target Mask(ISA_AVX2) Var(ix86_isa_flags) Save 711 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and AVX2 built-in functions and code generation. 712 713 mavx512f 714 Target Mask(ISA_AVX512F) Var(ix86_isa_flags) Save 715 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F built-in functions and code generation. 716 717 mavx512pf 718 Target Mask(ISA_AVX512PF) Var(ix86_isa_flags) Save 719 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512PF built-in functions and code generation. 720 721 mavx512er 722 Target Mask(ISA_AVX512ER) Var(ix86_isa_flags) Save 723 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512ER built-in functions and code generation. 724 725 mavx512cd 726 Target Mask(ISA_AVX512CD) Var(ix86_isa_flags) Save 727 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512CD built-in functions and code generation. 728 729 mavx512dq 730 Target Mask(ISA_AVX512DQ) Var(ix86_isa_flags) Save 731 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512DQ built-in functions and code generation. 732 733 mavx512bw 734 Target Mask(ISA_AVX512BW) Var(ix86_isa_flags) Save 735 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512BW built-in functions and code generation. 736 737 mavx512vl 738 Target Mask(ISA_AVX512VL) Var(ix86_isa_flags) Save 739 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512VL built-in functions and code generation. 740 741 mavx512ifma 742 Target Mask(ISA_AVX512IFMA) Var(ix86_isa_flags) Save 743 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512IFMA built-in functions and code generation. 744 745 mavx512vbmi 746 Target Mask(ISA_AVX512VBMI) Var(ix86_isa_flags) Save 747 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512VBMI built-in functions and code generation. 748 749 mavx5124fmaps 750 Target Mask(ISA2_AVX5124FMAPS) Var(ix86_isa_flags2) Save 751 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX5124FMAPS built-in functions and code generation. 752 753 mavx5124vnniw 754 Target Mask(ISA2_AVX5124VNNIW) Var(ix86_isa_flags2) Save 755 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX5124VNNIW built-in functions and code generation. 756 757 mavx512vpopcntdq 758 Target Mask(ISA_AVX512VPOPCNTDQ) Var(ix86_isa_flags) Save 759 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512VPOPCNTDQ built-in functions and code generation. 760 761 mavx512vbmi2 762 Target Mask(ISA_AVX512VBMI2) Var(ix86_isa_flags) Save 763 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512VBMI2 built-in functions and code generation. 764 765 mavx512vnni 766 Target Mask(ISA_AVX512VNNI) Var(ix86_isa_flags) Save 767 Support AVX512VNNI built-in functions and code generation. 768 769 mavx512bitalg 770 Target Mask(ISA_AVX512BITALG) Var(ix86_isa_flags) Save 771 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512BITALG built-in functions and code generation. 772 773 mavx512vp2intersect 774 Target Mask(ISA2_AVX512VP2INTERSECT) Var(ix86_isa_flags2) Save 775 Support AVX512VP2INTERSECT built-in functions and code generation. 776 777 mfma 778 Target Mask(ISA_FMA) Var(ix86_isa_flags) Save 779 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and FMA built-in functions and code generation. 780 781 msse4a 782 Target Mask(ISA_SSE4A) Var(ix86_isa_flags) Save 783 Support MMX, SSE, SSE2, SSE3 and SSE4A built-in functions and code generation. 784 785 mfma4 786 Target Mask(ISA_FMA4) Var(ix86_isa_flags) Save 787 Support FMA4 built-in functions and code generation. 788 789 mxop 790 Target Mask(ISA_XOP) Var(ix86_isa_flags) Save 791 Support XOP built-in functions and code generation. 792 793 mlwp 794 Target Mask(ISA_LWP) Var(ix86_isa_flags) Save 795 Support LWP built-in functions and code generation. 796 797 mabm 798 Target Mask(ISA_ABM) Var(ix86_isa_flags) Save 799 Support code generation of Advanced Bit Manipulation (ABM) instructions. 800 801 mpopcnt 802 Target Mask(ISA_POPCNT) Var(ix86_isa_flags) Save 803 Support code generation of popcnt instruction. 804 805 mpconfig 806 Target Mask(ISA2_PCONFIG) Var(ix86_isa_flags2) Save 807 Support PCONFIG built-in functions and code generation. 808 809 mwbnoinvd 810 Target Mask(ISA2_WBNOINVD) Var(ix86_isa_flags2) Save 811 Support WBNOINVD built-in functions and code generation. 812 813 mptwrite 814 Target Mask(ISA2_PTWRITE) Var(ix86_isa_flags2) Save 815 Support PTWRITE built-in functions and code generation. 816 817 muintr 818 Target Mask(ISA2_UINTR) Var(ix86_isa_flags2) Save 819 Support UINTR built-in functions and code generation. 820 821 msgx 822 Target Mask(ISA2_SGX) Var(ix86_isa_flags2) Save 823 Support SGX built-in functions and code generation. 824 825 mrdpid 826 Target Mask(ISA2_RDPID) Var(ix86_isa_flags2) Save 827 Support RDPID built-in functions and code generation. 828 829 mgfni 830 Target Mask(ISA_GFNI) Var(ix86_isa_flags) Save 831 Support GFNI built-in functions and code generation. 832 833 mvaes 834 Target Mask(ISA2_VAES) Var(ix86_isa_flags2) Save 835 Support VAES built-in functions and code generation. 836 837 mvpclmulqdq 838 Target Mask(ISA_VPCLMULQDQ) Var(ix86_isa_flags) Save 839 Support VPCLMULQDQ built-in functions and code generation. 840 841 mbmi 842 Target Mask(ISA_BMI) Var(ix86_isa_flags) Save 843 Support BMI built-in functions and code generation. 844 845 mbmi2 846 Target Mask(ISA_BMI2) Var(ix86_isa_flags) Save 847 Support BMI2 built-in functions and code generation. 848 849 mlzcnt 850 Target Mask(ISA_LZCNT) Var(ix86_isa_flags) Save 851 Support LZCNT built-in function and code generation. 852 853 mhle 854 Target Mask(ISA2_HLE) Var(ix86_isa_flags2) Save 855 Support Hardware Lock Elision prefixes. 856 857 mrdseed 858 Target Mask(ISA_RDSEED) Var(ix86_isa_flags) Save 859 Support RDSEED instruction. 860 861 mprfchw 862 Target Mask(ISA_PRFCHW) Var(ix86_isa_flags) Save 863 Support PREFETCHW instruction. 864 865 madx 866 Target Mask(ISA_ADX) Var(ix86_isa_flags) Save 867 Support flag-preserving add-carry instructions. 868 869 mclflushopt 870 Target Mask(ISA_CLFLUSHOPT) Var(ix86_isa_flags) Save 871 Support CLFLUSHOPT instructions. 872 873 mclwb 874 Target Mask(ISA_CLWB) Var(ix86_isa_flags) Save 875 Support CLWB instruction. 876 877 mpcommit 878 Target WarnRemoved 879 880 mfxsr 881 Target Mask(ISA_FXSR) Var(ix86_isa_flags) Save 882 Support FXSAVE and FXRSTOR instructions. 883 884 mxsave 885 Target Mask(ISA_XSAVE) Var(ix86_isa_flags) Save 886 Support XSAVE and XRSTOR instructions. 887 888 mxsaveopt 889 Target Mask(ISA_XSAVEOPT) Var(ix86_isa_flags) Save 890 Support XSAVEOPT instruction. 891 892 mxsavec 893 Target Mask(ISA_XSAVEC) Var(ix86_isa_flags) Save 894 Support XSAVEC instructions. 895 896 mxsaves 897 Target Mask(ISA_XSAVES) Var(ix86_isa_flags) Save 898 Support XSAVES and XRSTORS instructions. 899 900 mtbm 901 Target Mask(ISA_TBM) Var(ix86_isa_flags) Save 902 Support TBM built-in functions and code generation. 903 904 mcx16 905 Target Mask(ISA2_CX16) Var(ix86_isa_flags2) Save 906 Support code generation of cmpxchg16b instruction. 907 908 msahf 909 Target Mask(ISA_SAHF) Var(ix86_isa_flags) Save 910 Support code generation of sahf instruction in 64bit x86-64 code. 911 912 mmovbe 913 Target Mask(ISA2_MOVBE) Var(ix86_isa_flags2) Save 914 Support code generation of movbe instruction. 915 916 mcrc32 917 Target Mask(ISA_CRC32) Var(ix86_isa_flags) Save 918 Support code generation of crc32 instruction. 919 920 maes 921 Target Mask(ISA_AES) Var(ix86_isa_flags) Save 922 Support AES built-in functions and code generation. 923 924 msha 925 Target Mask(ISA_SHA) Var(ix86_isa_flags) Save 926 Support SHA1 and SHA256 built-in functions and code generation. 927 928 mpclmul 929 Target Mask(ISA_PCLMUL) Var(ix86_isa_flags) Save 930 Support PCLMUL built-in functions and code generation. 931 932 msse2avx 933 Target Var(ix86_sse2avx) 934 Encode SSE instructions with VEX prefix. 935 936 mfsgsbase 937 Target Mask(ISA_FSGSBASE) Var(ix86_isa_flags) Save 938 Support FSGSBASE built-in functions and code generation. 939 940 mrdrnd 941 Target Mask(ISA_RDRND) Var(ix86_isa_flags) Save 942 Support RDRND built-in functions and code generation. 943 944 mf16c 945 Target Mask(ISA_F16C) Var(ix86_isa_flags) Save 946 Support F16C built-in functions and code generation. 947 948 mprefetchwt1 949 Target Mask(ISA_PREFETCHWT1) Var(ix86_isa_flags) Save 950 Support PREFETCHWT1 built-in functions and code generation. 951 952 mfentry 953 Target Save Var(flag_fentry) 954 Emit profiling counter call at function entry before prologue. 955 956 mrecord-mcount 957 Target Var(flag_record_mcount) 958 Generate __mcount_loc section with all mcount or __fentry__ calls. 959 960 mnop-mcount 961 Target Var(flag_nop_mcount) 962 Generate mcount/__fentry__ calls as nops. To activate they need to be 963 patched in. 964 965 mfentry-name= 966 Target RejectNegative Joined Var(fentry_name) 967 Set name of __fentry__ symbol called at function entry. 968 969 mfentry-section= 970 Target RejectNegative Joined Var(fentry_section) 971 Set name of section to record mrecord-mcount calls. 972 973 mskip-rax-setup 974 Target Var(flag_skip_rax_setup) 975 Skip setting up RAX register when passing variable arguments. 976 977 m8bit-idiv 978 Target Mask(USE_8BIT_IDIV) Save 979 Expand 32bit/64bit integer divide into 8bit unsigned integer divide with run-time check. 980 981 mavx256-split-unaligned-load 982 Target Mask(AVX256_SPLIT_UNALIGNED_LOAD) Save 983 Split 32-byte AVX unaligned load. 984 985 mavx256-split-unaligned-store 986 Target Mask(AVX256_SPLIT_UNALIGNED_STORE) Save 987 Split 32-byte AVX unaligned store. 988 989 mrtm 990 Target Mask(ISA_RTM) Var(ix86_isa_flags) Save 991 Support RTM built-in functions and code generation. 992 993 mmpx 994 Target WarnRemoved 995 Removed in GCC 9. This switch has no effect. 996 997 mmwaitx 998 Target Mask(ISA2_MWAITX) Var(ix86_isa_flags2) Save 999 Support MWAITX and MONITORX built-in functions and code generation. 1000 1001 mclzero 1002 Target Mask(ISA2_CLZERO) Var(ix86_isa_flags2) Save 1003 Support CLZERO built-in functions and code generation. 1004 1005 mpku 1006 Target Mask(ISA_PKU) Var(ix86_isa_flags) Save 1007 Support PKU built-in functions and code generation. 1008 1009 mstack-protector-guard= 1010 Target RejectNegative Joined Enum(stack_protector_guard) Var(ix86_stack_protector_guard) Init(SSP_TLS) 1011 Use given stack-protector guard. 1012 1013 Enum 1014 Name(stack_protector_guard) Type(enum stack_protector_guard) 1015 Known stack protector guard (for use with the -mstack-protector-guard= option): 1016 1017 EnumValue 1018 Enum(stack_protector_guard) String(tls) Value(SSP_TLS) 1019 1020 EnumValue 1021 Enum(stack_protector_guard) String(global) Value(SSP_GLOBAL) 1022 1023 mstack-protector-guard-reg= 1024 Target Save RejectNegative Joined Var(ix86_stack_protector_guard_reg_str) 1025 Use the given base register for addressing the stack-protector guard. 1026 1027 TargetVariable 1028 addr_space_t ix86_stack_protector_guard_reg = ADDR_SPACE_GENERIC 1029 1030 mstack-protector-guard-offset= 1031 Target Save RejectNegative Joined Integer Var(ix86_stack_protector_guard_offset_str) 1032 Use the given offset for addressing the stack-protector guard. 1033 1034 TargetVariable 1035 HOST_WIDE_INT ix86_stack_protector_guard_offset = 0 1036 1037 mstack-protector-guard-symbol= 1038 Target Save RejectNegative Joined Integer Var(ix86_stack_protector_guard_symbol_str) 1039 Use the given symbol for addressing the stack-protector guard. 1040 1041 mmitigate-rop 1042 Target WarnRemoved 1043 1044 mgeneral-regs-only 1045 Target RejectNegative Mask(GENERAL_REGS_ONLY) Var(ix86_target_flags) Save 1046 Generate code which uses only the general registers. 1047 1048 mshstk 1049 Target Mask(ISA_SHSTK) Var(ix86_isa_flags) Save 1050 Enable shadow stack built-in functions from Control-flow Enforcement 1051 Technology (CET). 1052 1053 mcet-switch 1054 Target Undocumented Var(flag_cet_switch) Init(0) 1055 Turn on CET instrumentation for switch statements that use a jump table and 1056 an indirect jump. 1057 1058 mmanual-endbr 1059 Target Var(flag_manual_endbr) Init(0) 1060 Insert ENDBR instruction at function entry only via cf_check attribute 1061 for CET instrumentation. 1062 1063 mforce-indirect-call 1064 Target Var(flag_force_indirect_call) Init(0) 1065 Make all function calls indirect. 1066 1067 mindirect-branch= 1068 Target RejectNegative Joined Enum(indirect_branch) Var(ix86_indirect_branch) Init(indirect_branch_keep) 1069 Convert indirect call and jump to call and return thunks. 1070 1071 mfunction-return= 1072 Target RejectNegative Joined Enum(indirect_branch) Var(ix86_function_return) Init(indirect_branch_keep) 1073 Convert function return to call and return thunk. 1074 1075 Enum 1076 Name(indirect_branch) Type(enum indirect_branch) 1077 Known indirect branch choices (for use with the -mindirect-branch=/-mfunction-return= options): 1078 1079 EnumValue 1080 Enum(indirect_branch) String(keep) Value(indirect_branch_keep) 1081 1082 EnumValue 1083 Enum(indirect_branch) String(thunk) Value(indirect_branch_thunk) 1084 1085 EnumValue 1086 Enum(indirect_branch) String(thunk-inline) Value(indirect_branch_thunk_inline) 1087 1088 EnumValue 1089 Enum(indirect_branch) String(thunk-extern) Value(indirect_branch_thunk_extern) 1090 1091 mindirect-branch-cs-prefix 1092 Target Var(ix86_indirect_branch_cs_prefix) Init(0) 1093 Add CS prefix to call and jmp to indirect thunk with branch target in r8-r15 registers. 1094 1095 mindirect-branch-register 1096 Target Var(ix86_indirect_branch_register) Init(0) 1097 Force indirect call and jump via register. 1098 1099 mmovdiri 1100 Target Mask(ISA_MOVDIRI) Var(ix86_isa_flags) Save 1101 Support MOVDIRI built-in functions and code generation. 1102 1103 mmovdir64b 1104 Target Mask(ISA2_MOVDIR64B) Var(ix86_isa_flags2) Save 1105 Support MOVDIR64B built-in functions and code generation. 1106 1107 mwaitpkg 1108 Target Mask(ISA2_WAITPKG) Var(ix86_isa_flags2) Save 1109 Support WAITPKG built-in functions and code generation. 1110 1111 mcldemote 1112 Target Mask(ISA2_CLDEMOTE) Var(ix86_isa_flags2) Save 1113 Support CLDEMOTE built-in functions and code generation. 1114 1115 minstrument-return= 1116 Target RejectNegative Joined Enum(instrument_return) Var(ix86_instrument_return) Init(instrument_return_none) 1117 Instrument function exit in instrumented functions with __fentry__. 1118 1119 Enum 1120 Name(instrument_return) Type(enum instrument_return) 1121 Known choices for return instrumentation with -minstrument-return=: 1122 1123 EnumValue 1124 Enum(instrument_return) String(none) Value(instrument_return_none) 1125 1126 EnumValue 1127 Enum(instrument_return) String(call) Value(instrument_return_call) 1128 1129 EnumValue 1130 Enum(instrument_return) String(nop5) Value(instrument_return_nop5) 1131 1132 mrecord-return 1133 Target Var(ix86_flag_record_return) Init(0) 1134 Generate a __return_loc section pointing to all return instrumentation code. 1135 1136 mharden-sls= 1137 Target RejectNegative Joined Enum(harden_sls) Var(ix86_harden_sls) Init(harden_sls_none) 1138 Generate code to mitigate against straight line speculation. 1139 1140 Enum 1141 Name(harden_sls) Type(enum harden_sls) 1142 Known choices for mitigation against straight line speculation with -mharden-sls=: 1143 1144 EnumValue 1145 Enum(harden_sls) String(none) Value(harden_sls_none) 1146 1147 EnumValue 1148 Enum(harden_sls) String(return) Value(harden_sls_return) 1149 1150 EnumValue 1151 Enum(harden_sls) String(indirect-jmp) Value(harden_sls_indirect_jmp) 1152 1153 EnumValue 1154 Enum(harden_sls) String(all) Value(harden_sls_all) 1155 1156 mavx512bf16 1157 Target Mask(ISA2_AVX512BF16) Var(ix86_isa_flags2) Save 1158 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and 1159 AVX512BF16 built-in functions and code generation. 1160 1161 menqcmd 1162 Target Mask(ISA2_ENQCMD) Var(ix86_isa_flags2) Save 1163 Support ENQCMD built-in functions and code generation. 1164 1165 mserialize 1166 Target Mask(ISA2_SERIALIZE) Var(ix86_isa_flags2) Save 1167 Support SERIALIZE built-in functions and code generation. 1168 1169 mtsxldtrk 1170 Target Mask(ISA2_TSXLDTRK) Var(ix86_isa_flags2) Save 1171 Support TSXLDTRK built-in functions and code generation. 1172 1173 mamx-tile 1174 Target Mask(ISA2_AMX_TILE) Var(ix86_isa_flags2) Save 1175 Support AMX-TILE built-in functions and code generation. 1176 1177 mamx-int8 1178 Target Mask(ISA2_AMX_INT8) Var(ix86_isa_flags2) Save 1179 Support AMX-INT8 built-in functions and code generation. 1180 1181 mamx-bf16 1182 Target Mask(ISA2_AMX_BF16) Var(ix86_isa_flags2) Save 1183 Support AMX-BF16 built-in functions and code generation. 1184 1185 mhreset 1186 Target Mask(ISA2_HRESET) Var(ix86_isa_flags2) Save 1187 Support HRESET built-in functions and code generation. 1188 1189 mkl 1190 Target Mask(ISA2_KL) Var(ix86_isa_flags2) Save 1191 Support KL built-in functions and code generation. 1192 1193 mwidekl 1194 Target Mask(ISA2_WIDEKL) Var(ix86_isa_flags2) Save 1195 Support WIDEKL built-in functions and code generation. 1196 1197 mavxvnni 1198 Target Mask(ISA2_AVXVNNI) Var(ix86_isa_flags2) Save 1199 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and 1200 AVXVNNI built-in functions and code generation. 1201 1202 mneeded 1203 Target Var(ix86_needed) Save 1204 Emit GNU_PROPERTY_X86_ISA_1_NEEDED GNU property. 1205 1206 mmwait 1207 Target Mask(ISA2_MWAIT) Var(ix86_isa_flags2) Save 1208 Support MWAIT and MONITOR built-in functions and code generation. 1209 1210 mavx512fp16 1211 Target Mask(ISA2_AVX512FP16) Var(ix86_isa_flags2) Save 1212 Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512-FP16 built-in functions and code generation. 1213 1214 mdirect-extern-access 1215 Target Var(ix86_direct_extern_access) Init(1) 1216 Do not use GOT to access external symbols. 1217 1218 -param=x86-stlf-window-ninsns= 1219 Target Joined UInteger Var(x86_stlf_window_ninsns) Init(64) Param 1220 Instructions number above which STFL stall penalty can be compensated. 1221 1222 mgather 1223 Target Alias(mtune-ctrl=, use_gather, ^use_gather) 1224 Enable vectorization for gather instruction. 1225 1226 mscatter 1227 Target Alias(mtune-ctrl=, use_scatter, ^use_scatter) 1228 Enable vectorization for scatter instruction. 1229