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