]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/rs6000/rs6000.opt
Update copyright years.
[thirdparty/gcc.git] / gcc / config / rs6000 / rs6000.opt
CommitLineData
78f5898b
AH
1; Options for the rs6000 port of the compiler
2;
83ffe9cd 3; Copyright (C) 2005-2023 Free Software Foundation, Inc.
78f5898b
AH
4; Contributed by Aldy Hernandez <aldy@quesejoda.com>.
5;
6; This file is part of GCC.
7;
8; GCC is free software; you can redistribute it and/or modify it under
9; the terms of the GNU General Public License as published by the Free
2f83c7d6 10; Software Foundation; either version 3, or (at your option) any later
78f5898b
AH
11; version.
12;
13; GCC is distributed in the hope that it will be useful, but WITHOUT
14; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
15; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
16; License for more details.
17;
18; You should have received a copy of the GNU General Public License
2f83c7d6
NC
19; along with GCC; see the file COPYING3. If not see
20; <http://www.gnu.org/licenses/>.
78f5898b 21
fd438373
MM
22HeaderInclude
23config/rs6000/rs6000-opts.h
24
4d967549
MM
25;; ISA flag bits (on/off)
26Variable
27HOST_WIDE_INT rs6000_isa_flags = TARGET_DEFAULT
28
29TargetSave
30HOST_WIDE_INT x_rs6000_isa_flags
31
32;; Miscellaneous flag bits that were set explicitly by the user
d358fb9d
MM
33Variable
34HOST_WIDE_INT rs6000_isa_flags_explicit
35
4d967549
MM
36TargetSave
37HOST_WIDE_INT x_rs6000_isa_flags_explicit
38
fd438373
MM
39;; Current processor
40TargetVariable
f3061fa4 41enum processor_type rs6000_cpu = PROCESSOR_PPC603
fd438373 42
793fa2a4
SB
43;; Current tuning
44TargetVariable
45enum processor_type rs6000_tune = PROCESSOR_PPC603
46
fd438373
MM
47;; Always emit branch hint bits.
48TargetVariable
49unsigned char rs6000_always_hint
50
51;; Schedule instructions for group formation.
52TargetVariable
53unsigned char rs6000_sched_groups
54
55;; Align branch targets.
56TargetVariable
57unsigned char rs6000_align_branch_targets
58
59;; Support for -msched-costly-dep option.
60TargetVariable
61enum rs6000_dependence_cost rs6000_sched_costly_dep = no_dep_costly
62
63;; Support for -minsert-sched-nops option.
64TargetVariable
65enum rs6000_nop_insertion rs6000_sched_insert_nops = sched_finish_none
66
fd438373
MM
67;; Non-zero to allow overriding loop alignment.
68TargetVariable
69unsigned char can_override_loop_align
70
71;; Which small data model to use (for System V targets only)
72TargetVariable
73enum rs6000_sdata_type rs6000_sdata = SDATA_DATA
74
75;; Bit size of immediate TLS offsets and string from which it is decoded.
76TargetVariable
77int rs6000_tls_size = 32
78
79;; ABI enumeration available for subtarget to use.
80TargetVariable
81enum rs6000_abi rs6000_current_abi = ABI_NONE
82
83;; Type of traceback to use.
84TargetVariable
85enum rs6000_traceback_type rs6000_traceback = traceback_default
86
87;; Control alignment for fields within structures.
88TargetVariable
89unsigned char rs6000_alignment_flags
90
91;; Code model for 64-bit linux.
92TargetVariable
93enum rs6000_cmodel rs6000_current_cmodel = CMODEL_SMALL
94
95;; What type of reciprocal estimation instructions to generate
96TargetVariable
97unsigned int rs6000_recip_control
98
fd438373
MM
99;; Debug flags
100TargetVariable
101unsigned int rs6000_debug
102
bbd35101
MM
103;; Whether to enable the -mfloat128 stuff without necessarily enabling the
104;; __float128 keyword.
105TargetSave
106unsigned char x_TARGET_FLOAT128_TYPE
107
108Variable
109unsigned char TARGET_FLOAT128_TYPE
110
a441dedb 111;; This option existed in the past, but now is always on.
78f5898b 112mpowerpc
a441dedb 113Target RejectNegative Undocumented Ignore
78f5898b
AH
114
115mpowerpc64
eece52b5 116Target Mask(POWERPC64) Var(rs6000_isa_flags)
a7b2e184 117Use PowerPC-64 instruction set.
78f5898b 118
432218ba 119mpowerpc-gpopt
eece52b5 120Target Mask(PPC_GPOPT) Var(rs6000_isa_flags)
a7b2e184 121Use PowerPC General Purpose group optional instructions.
432218ba
DE
122
123mpowerpc-gfxopt
eece52b5 124Target Mask(PPC_GFXOPT) Var(rs6000_isa_flags)
a7b2e184 125Use PowerPC Graphics group optional instructions.
432218ba
DE
126
127mmfcrf
eece52b5 128Target Mask(MFCRF) Var(rs6000_isa_flags)
a7b2e184 129Use PowerPC V2.01 single field mfcr instruction.
432218ba
DE
130
131mpopcntb
eece52b5 132Target Mask(POPCNTB) Var(rs6000_isa_flags)
a7b2e184 133Use PowerPC V2.02 popcntb instruction.
9719f3b7
DE
134
135mfprnd
eece52b5 136Target Mask(FPRND) Var(rs6000_isa_flags)
a7b2e184 137Use PowerPC V2.02 floating point rounding instructions.
432218ba 138
b639c3c2 139mcmpb
eece52b5 140Target Mask(CMPB) Var(rs6000_isa_flags)
a7b2e184 141Use PowerPC V2.05 compare bytes instruction.
b639c3c2 142
fbd4b7f3
SB
143;; This option existed in the past, but now is always off.
144mno-mfpgpr
145Target RejectNegative Undocumented Ignore
146
44cd321e 147mmfpgpr
68a57628 148Target RejectNegative Undocumented WarnRemoved
44cd321e 149
78f5898b 150maltivec
eece52b5 151Target Mask(ALTIVEC) Var(rs6000_isa_flags)
a7b2e184 152Use AltiVec instructions.
78f5898b 153
47d94c1a 154mhard-dfp
eece52b5 155Target Mask(DFP) Var(rs6000_isa_flags)
a7b2e184 156Use decimal floating point instructions.
b639c3c2 157
131aeb82 158mmulhw
eece52b5 159Target Mask(MULHW) Var(rs6000_isa_flags)
a7b2e184 160Use 4xx half-word multiply instructions.
131aeb82 161
716019c0 162mdlmzb
eece52b5 163Target Mask(DLMZB) Var(rs6000_isa_flags)
a7b2e184 164Use 4xx string-search dlmzb instruction.
716019c0 165
432218ba 166mmultiple
eece52b5 167Target Mask(MULTIPLE) Var(rs6000_isa_flags)
a7b2e184 168Generate load/store multiple instructions.
432218ba 169
20c89ab7
SB
170;; This option existed in the past, but now is always off.
171mno-string
172Target RejectNegative Undocumented Ignore
173
432218ba 174mstring
68a57628 175Target RejectNegative Undocumented WarnRemoved
432218ba 176
78f5898b 177msoft-float
eece52b5 178Target RejectNegative Mask(SOFT_FLOAT) Var(rs6000_isa_flags)
a7b2e184 179Do not use hardware floating point.
78f5898b
AH
180
181mhard-float
eece52b5 182Target RejectNegative InverseMask(SOFT_FLOAT, HARD_FLOAT) Var(rs6000_isa_flags)
a7b2e184 183Use hardware floating point.
78f5898b 184
cacf1ca8 185mpopcntd
eece52b5 186Target Mask(POPCNTD) Var(rs6000_isa_flags)
a7b2e184 187Use PowerPC V2.06 popcntd instruction.
cacf1ca8 188
688e4919 189mfriz
eece52b5 190Target Var(TARGET_FRIZ) Init(-1) Save
a7b2e184 191Under -ffast-math, generate a FRIZ instruction for (double)(long long) conversions.
688e4919 192
b36cf9d2
MM
193mveclibabi=
194Target RejectNegative Joined Var(rs6000_veclibabi_name)
a7b2e184 195Vector library ABI to use.
8bcc0304 196
cacf1ca8 197mvsx
eece52b5 198Target Mask(VSX) Var(rs6000_isa_flags)
a7b2e184 199Use vector/scalar (VSX) instructions.
78f5898b 200
a72c65c7 201mvsx-align-128
eece52b5 202Target Undocumented Var(TARGET_VSX_ALIGN_128) Save
a72c65c7
MM
203; If -mvsx, set alignment to 128 bits instead of 32/64
204
205mallow-movmisalign
6d7d9f0e 206Target Undocumented Var(TARGET_ALLOW_MOVMISALIGN) Init(-1) Save
819c7145 207; Allow the movmisalign in DF/DI vectors
a72c65c7 208
860271ec 209mefficient-unaligned-vsx
eece52b5 210Target Undocumented Mask(EFFICIENT_UNALIGNED_VSX) Var(rs6000_isa_flags)
860271ec 211; Consider unaligned VSX vector and fp accesses to be efficient
047b83ff 212
a72c65c7 213msched-groups
eece52b5 214Target Undocumented Var(TARGET_SCHED_GROUPS) Init(-1) Save
819c7145 215; Explicitly set rs6000_sched_groups
a72c65c7
MM
216
217malways-hint
eece52b5 218Target Undocumented Var(TARGET_ALWAYS_HINT) Init(-1) Save
819c7145 219; Explicitly set rs6000_always_hint
a72c65c7
MM
220
221malign-branch-targets
eece52b5 222Target Undocumented Var(TARGET_ALIGN_BRANCH_TARGETS) Init(-1) Save
819c7145 223; Explicitly set rs6000_align_branch_targets
a72c65c7 224
ebde32fd 225mno-update
eece52b5 226Target RejectNegative Mask(NO_UPDATE) Var(rs6000_isa_flags)
a7b2e184 227Do not generate load/store with update instructions.
ebde32fd 228
78f5898b 229mupdate
eece52b5 230Target RejectNegative InverseMask(NO_UPDATE, UPDATE) Var(rs6000_isa_flags)
a7b2e184 231Generate load/store with update instructions.
78f5898b 232
042abba2 233msingle-pic-base
eece52b5 234Target Var(TARGET_SINGLE_PIC_BASE) Init(0)
a7b2e184 235Do not load the PIC register in function prologues.
042abba2 236
001b9eb6 237mavoid-indexed-addresses
eece52b5 238Target Var(TARGET_AVOID_XFORM) Init(-1) Save
a7b2e184 239Avoid generation of indexed load/store instructions when possible.
001b9eb6 240
df4ba119 241msched-epilog
fd438373 242Target Undocumented Var(TARGET_SCHED_PROLOG) Init(1) Save
df4ba119 243
78f5898b 244msched-prolog
eece52b5 245Target Var(TARGET_SCHED_PROLOG) Save
a7b2e184 246Schedule the start and end of the procedure.
78f5898b 247
78f5898b 248maix-struct-return
eece52b5 249Target RejectNegative Var(aix_struct_return) Save
a7b2e184 250Return all structures in memory (AIX default).
78f5898b
AH
251
252msvr4-struct-return
eece52b5 253Target RejectNegative Var(aix_struct_return,0) Save
a7b2e184 254Return small structures in registers (SVR4 default).
78f5898b 255
432218ba 256mxl-compat
eece52b5 257Target Var(TARGET_XL_COMPAT) Save
a7b2e184 258Conform more closely to IBM XLC semantics.
78f5898b 259
9c78b944 260mrecip
eece52b5 261Target
92902797
MM
262Generate software reciprocal divide and square root for better throughput.
263
264mrecip=
eece52b5 265Target RejectNegative Joined Var(rs6000_recip_name)
92902797
MM
266Generate software reciprocal divide and square root for better throughput.
267
268mrecip-precision
eece52b5 269Target Mask(RECIP_PRECISION) Var(rs6000_isa_flags)
92902797 270Assume that the reciprocal estimate instructions provide more accuracy.
ef765ea9 271
432218ba 272mno-fp-in-toc
eece52b5 273Target RejectNegative Var(TARGET_NO_FP_IN_TOC) Save
a7b2e184 274Do not place floating point constants in TOC.
78f5898b 275
432218ba 276mfp-in-toc
eece52b5 277Target RejectNegative Var(TARGET_NO_FP_IN_TOC,0) Save
a7b2e184 278Place floating point constants in TOC.
432218ba
DE
279
280mno-sum-in-toc
fd438373 281Target RejectNegative Var(TARGET_NO_SUM_IN_TOC) Save
a7b2e184 282Do not place symbol+offset constants in TOC.
432218ba
DE
283
284msum-in-toc
fd438373 285Target RejectNegative Var(TARGET_NO_SUM_IN_TOC,0) Save
a7b2e184 286Place symbol+offset constants in TOC.
432218ba
DE
287
288; Output only one TOC entry per module. Normally linking fails if
289; there are more than 16K unique variables/constants in an executable. With
290; this option, linking fails only if there are more than 16K modules, or
291; if there are more than 16K unique variables/constant in a single module.
292;
293; This is at the cost of having 2 extra loads and one extra store per
294; function, and one less allocable register.
295mminimal-toc
eece52b5 296Target Mask(MINIMAL_TOC) Var(rs6000_isa_flags)
a7b2e184 297Use only one TOC entry per procedure.
78f5898b
AH
298
299mfull-toc
eece52b5 300Target
a7b2e184 301Put everything in the regular TOC.
78f5898b
AH
302
303mvrsave
eece52b5 304Target Var(TARGET_ALTIVEC_VRSAVE) Save
a7b2e184 305Generate VRSAVE instructions when generating AltiVec code.
78f5898b 306
666a21a2 307mvrsave=no
f727d9af 308Target RejectNegative Alias(mvrsave) NegativeAlias Warn(%<-mvrsave=no%> is deprecated; use %<-mno-vrsave%> instead)
a7b2e184 309Deprecated option. Use -mno-vrsave instead.
666a21a2
JM
310
311mvrsave=yes
f727d9af 312Target RejectNegative Alias(mvrsave) Warn(%<-mvrsave=yes%> is deprecated; use %<-mvrsave%> instead)
a7b2e184 313Deprecated option. Use -mvrsave instead.
78f5898b 314
d95016e0 315mblock-move-inline-limit=
eece52b5 316Target Var(rs6000_block_move_inline_limit) Init(0) RejectNegative Joined UInteger Save
037cac8a 317Max number of bytes to move inline.
d95016e0 318
e398fcb9 319mblock-ops-unaligned-vsx
eece52b5 320Target Mask(BLOCK_OPS_UNALIGNED_VSX) Var(rs6000_isa_flags)
e398fcb9 321Generate unaligned VSX load/store for inline expansion of memcpy/memmove.
afd97163
AS
322
323mblock-ops-vector-pair
324Target Undocumented Mask(BLOCK_OPS_VECTOR_PAIR) Var(rs6000_isa_flags)
325Generate unaligned VSX vector pair load/store for inline expansion of memcpy/memmove.
e398fcb9 326
9f38dde2 327mblock-compare-inline-limit=
eece52b5 328Target Var(rs6000_block_compare_inline_limit) Init(63) RejectNegative Joined UInteger Save
037cac8a 329Max number of bytes to compare without loops.
5ec3397e
AS
330
331mblock-compare-inline-loop-limit=
eece52b5 332Target Var(rs6000_block_compare_inline_loop_limit) Init(-1) RejectNegative Joined UInteger Save
037cac8a 333Max number of bytes to compare with loops.
9f38dde2 334
e9c2033e 335mstring-compare-inline-limit=
eece52b5 336Target Var(rs6000_string_compare_inline_limit) Init(64) RejectNegative Joined UInteger Save
9d36bd3b 337Max number of bytes to compare.
e9c2033e 338
78f5898b 339misel
eece52b5 340Target Mask(ISEL) Var(rs6000_isa_flags)
a7b2e184 341Generate isel instructions.
78f5898b 342
78f5898b
AH
343mdebug=
344Target RejectNegative Joined
a7b2e184 345-mdebug= Enable debug output.
78f5898b 346
2e7750cb 347; Altivec ABI
d8f426ec
JM
348mabi=altivec
349Target RejectNegative Var(rs6000_altivec_abi) Save
a7b2e184 350Use the AltiVec ABI extensions.
d8f426ec
JM
351
352mabi=no-altivec
353Target RejectNegative Var(rs6000_altivec_abi, 0)
a7b2e184 354Do not use the AltiVec ABI extensions.
d8f426ec 355
2e7750cb
DE
356; AIX Extended vector ABI
357mabi=vec-extabi
358Target RejectNegative Var(rs6000_aix_extabi, 1) Save
349b909b 359Use the AIX Vector Extended ABI.
2e7750cb
DE
360
361mabi=vec-default
362Target RejectNegative Var(rs6000_aix_extabi, 0)
349b909b 363Do not use the AIX Vector Extended ABI.
2e7750cb
DE
364
365; PPC64 Linux ELF ABI
b54214fe
UW
366mabi=elfv1
367Target RejectNegative Var(rs6000_elf_abi, 1) Save
a7b2e184 368Use the ELFv1 ABI.
b54214fe
UW
369
370mabi=elfv2
371Target RejectNegative Var(rs6000_elf_abi, 2)
a7b2e184 372Use the ELFv2 ABI.
b54214fe 373
d8f426ec
JM
374; These are here for testing during development only, do not document
375; in the manual please.
376
377; If we want Darwin's struct-by-value-in-regs ABI.
378mabi=d64
379Target RejectNegative Undocumented Warn(using darwin64 ABI) Var(rs6000_darwin64_abi) Save
380
381mabi=d32
382Target RejectNegative Undocumented Warn(using old darwin ABI) Var(rs6000_darwin64_abi, 0)
383
384mabi=ieeelongdouble
73b0ac0b 385Target RejectNegative Var(rs6000_ieeequad) Save
d8f426ec
JM
386
387mabi=ibmlongdouble
73b0ac0b 388Target RejectNegative Var(rs6000_ieeequad, 0)
78f5898b
AH
389
390mcpu=
f10d3ac9 391Target RejectNegative Joined Var(rs6000_cpu_index) Init(-1) Enum(rs6000_cpu_opt_value) Save
a7b2e184 392-mcpu= Use features of and schedule code for given CPU.
78f5898b
AH
393
394mtune=
f10d3ac9 395Target RejectNegative Joined Var(rs6000_tune_index) Init(-1) Enum(rs6000_cpu_opt_value) Save
a7b2e184 396-mtune= Schedule code for given CPU.
78f5898b
AH
397
398mtraceback=
c860fe8c 399Target RejectNegative Joined Enum(rs6000_traceback_type) Var(rs6000_traceback)
ccdfb975 400-mtraceback=[full,part,no] Select type of traceback table.
78f5898b 401
c860fe8c
JM
402Enum
403Name(rs6000_traceback_type) Type(enum rs6000_traceback_type)
404
405EnumValue
406Enum(rs6000_traceback_type) String(full) Value(traceback_full)
407
408EnumValue
409Enum(rs6000_traceback_type) String(part) Value(traceback_part)
410
411EnumValue
412Enum(rs6000_traceback_type) String(no) Value(traceback_none)
413
78f5898b 414mlongcall
eece52b5 415Target Var(rs6000_default_long_calls) Save
a7b2e184 416Avoid all range limits on call instructions.
78f5898b 417
3f8efe25 418; This option existed in the past, but now is always on.
c921bad8 419mgen-cell-microcode
3f8efe25 420Target RejectNegative Undocumented Ignore
c921bad8 421
78f5898b 422mwarn-altivec-long
fd438373 423Target Var(rs6000_warn_altivec_long) Init(1) Save
a7b2e184 424Warn about deprecated 'vector long ...' AltiVec type usage.
78f5898b 425
78f5898b 426mlong-double-
c860fe8c 427Target RejectNegative Joined UInteger Var(rs6000_long_double_type_size) Save
9439378f
CL
428Use -mlong-double-64 for 64-bit IEEE floating point format. Use
429-mlong-double-128 for 128-bit floating point format (either IEEE or IBM).
78f5898b 430
7a5cbf29 431; This option existed in the past, but now is always on.
01b1efaa 432mlra
7a5cbf29 433Target RejectNegative Undocumented Ignore
01b1efaa 434
78f5898b 435msched-costly-dep=
c860fe8c 436Target RejectNegative Joined Var(rs6000_sched_costly_dep_str)
a7b2e184 437Determine which dependences between insns are considered costly.
78f5898b
AH
438
439minsert-sched-nops=
c860fe8c 440Target RejectNegative Joined Var(rs6000_sched_insert_nops_str)
a7b2e184 441Specify which post scheduling nop insertion scheme to apply.
78f5898b
AH
442
443malign-
c860fe8c 444Target RejectNegative Joined Enum(rs6000_alignment_flags) Var(rs6000_alignment_flags)
a7b2e184 445Specify alignment of structure fields default/natural.
78f5898b 446
c860fe8c
JM
447Enum
448Name(rs6000_alignment_flags) Type(unsigned char)
449Valid arguments to -malign-:
450
451EnumValue
452Enum(rs6000_alignment_flags) String(power) Value(MASK_ALIGN_POWER)
453
454EnumValue
455Enum(rs6000_alignment_flags) String(natural) Value(MASK_ALIGN_NATURAL)
456
78f5898b 457mprioritize-restricted-insns=
fd438373 458Target RejectNegative Joined UInteger Var(rs6000_sched_restricted_insns_priority) Save
a7b2e184 459Specify scheduling priority for dispatch slot restricted insns.
696e45ba 460
1db75f6c 461mpointers-to-nested-functions
eece52b5 462Target Var(TARGET_POINTERS_TO_NESTED_FUNCTIONS) Init(1) Save
819c7145 463Use r11 to hold the static link in calls to functions via pointers.
4849e836 464
76594d53 465msave-toc-indirect
eece52b5 466Target Mask(SAVE_TOC_INDIRECT) Var(rs6000_isa_flags)
819c7145 467Save the TOC in the prologue for indirect calls rather than inline.
c6d5ff83 468
4a89b7e7 469; This option existed in the past, but now is always the same as -mvsx.
c6d5ff83 470mvsx-timode
4a89b7e7 471Target RejectNegative Undocumented Ignore
f62511da
MM
472
473mpower8-fusion
eece52b5 474Target Mask(P8_FUSION) Var(rs6000_isa_flags)
a7b2e184 475Fuse certain integer operations together for better performance on power8.
f62511da
MM
476
477mpower8-fusion-sign
478Target Undocumented Mask(P8_FUSION_SIGN) Var(rs6000_isa_flags)
a7b2e184 479Allow sign extension in fusion operations.
f62511da
MM
480
481mpower8-vector
eece52b5 482Target Mask(P8_VECTOR) Var(rs6000_isa_flags)
819c7145 483Use vector and scalar instructions added in ISA 2.07.
f62511da 484
7a279bed 485mpower10-fusion
4984f882 486Target Undocumented Mask(P10_FUSION) Var(rs6000_isa_flags)
7a279bed
AS
487Fuse certain integer operations together for better performance on power10.
488
f62511da 489mcrypto
eece52b5 490Target Mask(CRYPTO) Var(rs6000_isa_flags)
a7b2e184 491Use ISA 2.07 Category:Vector.AES and Category:Vector.SHA2 instructions.
f62511da
MM
492
493mdirect-move
68a57628 494Target Undocumented Mask(DIRECT_MOVE) Var(rs6000_isa_flags) WarnRemoved
f62511da 495
0258b6e4 496mhtm
eece52b5 497Target Mask(HTM) Var(rs6000_isa_flags)
a7b2e184 498Use ISA 2.07 transactional memory (HTM) instructions.
0258b6e4 499
f62511da 500mquad-memory
eece52b5 501Target Mask(QUAD_MEMORY) Var(rs6000_isa_flags)
b846c948
MM
502Generate the quad word memory instructions (lq/stq).
503
504mquad-memory-atomic
eece52b5 505Target Mask(QUAD_MEMORY_ATOMIC) Var(rs6000_isa_flags)
b846c948 506Generate the quad word memory atomic instructions (lqarx/stqcx).
6469da2c
BS
507
508mcompat-align-parm
eece52b5 509Target Var(rs6000_compat_align_parm) Init(0) Save
6469da2c 510Generate aggregate parameter passing code with at most 64-bit alignment.
5e8586d7 511
6fa6eb35
BS
512moptimize-swaps
513Target Undocumented Var(rs6000_optimize_swaps) Init(1) Save
514Analyze and remove doubleword swaps from VSX computations.
6712d6fd 515
48f65795
JG
516munroll-only-small-loops
517Target Undocumented Var(unroll_only_small_loops) Init(0) Save
518; Use conservative small loop unrolling.
519
5a3a6a5e 520mpower9-misc
eece52b5 521Target Undocumented Mask(P9_MISC) Var(rs6000_isa_flags)
819c7145 522Use certain scalar instructions added in ISA 3.0.
5a3a6a5e 523
d1f0d376 524mpower9-vector
eece52b5 525Target Undocumented Mask(P9_VECTOR) Var(rs6000_isa_flags)
819c7145 526Use vector instructions added in ISA 3.0.
d1f0d376 527
d1f0d376
MM
528mpower9-minmax
529Target Undocumented Mask(P9_MINMAX) Var(rs6000_isa_flags)
819c7145 530Use the new min/max instructions defined in ISA 3.0.
d1f0d376 531
d1f0d376 532mmodulo
eece52b5 533Target Undocumented Mask(MODULO) Var(rs6000_isa_flags)
d1f0d376
MM
534Generate the integer modulo instructions.
535
bdb60a10 536mfloat128
eece52b5 537Target Mask(FLOAT128_KEYWORD) Var(rs6000_isa_flags)
819c7145 538Enable IEEE 128-bit floating point via the __float128 keyword.
d1f0d376
MM
539
540mfloat128-hardware
eece52b5 541Target Mask(FLOAT128_HW) Var(rs6000_isa_flags)
819c7145 542Enable using IEEE 128-bit floating point instructions.
ec21a884
MM
543
544mfloat128-convert
545Target Undocumented Mask(FLOAT128_CVT) Var(rs6000_isa_flags)
819c7145 546Enable default conversions between __float128 & long double.
787c7a65 547
1b3254e4
SB
548mstack-protector-guard=
549Target RejectNegative Joined Enum(stack_protector_guard) Var(rs6000_stack_protector_guard) Init(SSP_TLS)
550Use given stack-protector guard.
551
552Enum
553Name(stack_protector_guard) Type(enum stack_protector_guard)
554Valid arguments to -mstack-protector-guard=:
555
556EnumValue
557Enum(stack_protector_guard) String(tls) Value(SSP_TLS)
558
559EnumValue
560Enum(stack_protector_guard) String(global) Value(SSP_GLOBAL)
561
562mstack-protector-guard-reg=
563Target RejectNegative Joined Var(rs6000_stack_protector_guard_reg_str)
564Use the given base register for addressing the stack-protector guard.
565
566TargetVariable
567int rs6000_stack_protector_guard_reg = 0
568
569mstack-protector-guard-offset=
570Target RejectNegative Joined Integer Var(rs6000_stack_protector_guard_offset_str)
571Use the given offset for addressing the stack-protector guard.
572
573TargetVariable
574long rs6000_stack_protector_guard_offset = 0
b50e1649
BS
575
576;; -mno-speculate-indirect-jumps adds deliberate misprediction to indirect
577;; branches via the CTR.
578mspeculate-indirect-jumps
579Target Undocumented Var(rs6000_speculate_indirect_jumps) Init(1) Save
5fa3b3cb 580
5d9d0c94 581mpower10
4e577910 582Target Undocumented Mask(POWER10) Var(rs6000_isa_flags) WarnRemoved
91117603 583
7a775242 584mprefixed
eece52b5 585Target Mask(PREFIXED) Var(rs6000_isa_flags)
30f78ec7
BS
586Generate (do not generate) prefixed memory instructions.
587
91117603 588mpcrel
eece52b5 589Target Mask(PCREL) Var(rs6000_isa_flags)
91117603 590Generate (do not generate) pc-relative memory addressing.
f002c046 591
b8d85f56
AS
592mpcrel-opt
593Target Undocumented Mask(PCREL_OPT) Var(rs6000_isa_flags)
594Generate (do not generate) pc-relative memory optimizations for externals.
595
f002c046 596mmma
eece52b5 597Target Mask(MMA) Var(rs6000_isa_flags)
f002c046 598Generate (do not generate) MMA instructions.
3493b0c3
HG
599
600mrelative-jumptables
601Target Undocumented Var(rs6000_relative_jumptables) Init(1) Save
0df864ed
BS
602
603mrop-protect
604Target Var(rs6000_rop_protect) Init(0)
605Enable instructions that guard against return-oriented programming attacks.
606
607mprivileged
608Target Var(rs6000_privileged) Init(0)
609Generate code that will run in privileged state.
144c4984 610
d730aa8a
MM
611msplat-word-constant
612Target Var(TARGET_SPLAT_WORD_CONSTANT) Init(1) Save
613Generate (do not generate) code that uses the XXSPLTIW instruction.
614
8d443ac0
MM
615msplat-float-constant
616Target Var(TARGET_SPLAT_FLOAT_CONSTANT) Init(1) Save
617Generate (do not generate) code that uses the XXSPLTIDP instruction.
618
8ccd8b12
MM
619mieee128-constant
620Target Var(TARGET_IEEE128_CONSTANT) Init(1) Save
621Generate (do not generate) code that uses the LXVKQ instruction.
622
0ee1548d
KL
623; Documented parameters
624
625-param=rs6000-vect-unroll-limit=
626Target Joined UInteger Var(rs6000_vect_unroll_limit) Init(4) IntegerRange(1, 64) Param
627Used to limit unroll factor which indicates how much the autovectorizer may
628unroll a loop. The default value is 4.
629
630; Undocumented parameters
144c4984
KL
631-param=rs6000-density-pct-threshold=
632Target Undocumented Joined UInteger Var(rs6000_density_pct_threshold) Init(85) IntegerRange(0, 100) Param
633When costing for loop vectorization, we probably need to penalize the loop body
634cost if the existing cost model may not adequately reflect delays from
635unavailable vector resources. We collect the cost for vectorized statements
636and non-vectorized statements separately, check the proportion of vec_cost to
637total cost of vec_cost and non vec_cost, and penalize only if the proportion
638exceeds the threshold specified by this parameter. The default value is 85.
639
640-param=rs6000-density-size-threshold=
641Target Undocumented Joined UInteger Var(rs6000_density_size_threshold) Init(70) IntegerRange(0, 1000) Param
642Like parameter rs6000-density-pct-threshold, we also check the total sum of
643vec_cost and non vec_cost, and penalize only if the sum exceeds the threshold
644specified by this parameter. The default value is 70.
645
646-param=rs6000-density-penalty=
647Target Undocumented Joined UInteger Var(rs6000_density_penalty) Init(10) IntegerRange(0, 1000) Param
648When both heuristics with rs6000-density-pct-threshold and
649rs6000-density-size-threshold are satisfied, we decide to penalize the loop
650body cost by the value which is specified by this parameter. The default
651value is 10.
652
653-param=rs6000-density-load-pct-threshold=
654Target Undocumented Joined UInteger Var(rs6000_density_load_pct_threshold) Init(45) IntegerRange(0, 100) Param
655When costing for loop vectorization, we probably need to penalize the loop body
656cost by accounting for excess strided or elementwise loads. We collect the
657numbers for general statements and load statements according to the information
658for statements to be vectorized, check the proportion of load statements, and
659penalize only if the proportion exceeds the threshold specified by this
660parameter. The default value is 45.
661
662-param=rs6000-density-load-num-threshold=
663Target Undocumented Joined UInteger Var(rs6000_density_load_num_threshold) Init(20) IntegerRange(0, 1000) Param
664Like parameter rs6000-density-load-pct-threshold, we also check if the total
665number of load statements exceeds the threshold specified by this parameter,
666and penalize only if it's satisfied. The default value is 20.
667
0ee1548d
KL
668-param=rs6000-vect-unroll-issue=
669Target Undocumented Joined UInteger Var(rs6000_vect_unroll_issue) Init(4) IntegerRange(1, 128) Param
670Indicate how many non memory access vector instructions can be issued per
671cycle, it's used in unroll factor determination for autovectorizer. The
672default value is 4.
673
674-param=rs6000-vect-unroll-reduc-threshold=
675Target Undocumented Joined UInteger Var(rs6000_vect_unroll_reduc_threshold) Init(1) Param
676When reduction factor computed for a loop exceeds the threshold specified by
677this parameter, prefer to unroll this loop. The default value is 1.