aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/rs6000/rs6000.opt
blob: 30f9b3988c0ed33b41d2a02ce8422224426ed3df (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
; Options for the rs6000 port of the compiler
;
; Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
; Contributed by Aldy Hernandez <aldy@quesejoda.com>.
;
; This file is part of GCC.
;
; GCC is free software; you can redistribute it and/or modify it under
; the terms of the GNU General Public License as published by the Free
; Software Foundation; either version 3, or (at your option) any later
; version.
;
; GCC is distributed in the hope that it will be useful, but WITHOUT
; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
; or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
; License for more details.
;
; You should have received a copy of the GNU General Public License
; along with GCC; see the file COPYING3.  If not see
; <http://www.gnu.org/licenses/>.

mpower
Target Report RejectNegative Mask(POWER)
Use POWER instruction set

mno-power
Target Report RejectNegative
Do not use POWER instruction set

mpower2
Target Report Mask(POWER2)
Use POWER2 instruction set

mpowerpc
Target Report RejectNegative Mask(POWERPC)
Use PowerPC instruction set

mno-powerpc
Target Report RejectNegative
Do not use PowerPC instruction set

mpowerpc64
Target Report Mask(POWERPC64)
Use PowerPC-64 instruction set

mpowerpc-gpopt
Target Report Mask(PPC_GPOPT)
Use PowerPC General Purpose group optional instructions

mpowerpc-gfxopt
Target Report Mask(PPC_GFXOPT)
Use PowerPC Graphics group optional instructions

mmfcrf
Target Report Mask(MFCRF)
Use PowerPC V2.01 single field mfcr instruction

mpopcntb
Target Report Mask(POPCNTB)
Use PowerPC V2.02 popcntb instruction

mfprnd
Target Report Mask(FPRND)
Use PowerPC V2.02 floating point rounding instructions

mcmpb
Target Report Mask(CMPB)
Use PowerPC V2.05 compare bytes instruction

mmfpgpr
Target Report Mask(MFPGPR)
Use extended PowerPC V2.05 move floating point to/from GPR instructions

maltivec
Target Report Mask(ALTIVEC)
Use AltiVec instructions

mhard-dfp
Target Report Mask(DFP)
Use decimal floating point instructions

mmulhw
Target Report Mask(MULHW)
Use 4xx half-word multiply instructions

mdlmzb
Target Report Mask(DLMZB)
Use 4xx string-search dlmzb instruction

mmultiple
Target Report Mask(MULTIPLE)
Generate load/store multiple instructions

mstring
Target Report Mask(STRING)
Generate string instructions for block moves

mnew-mnemonics
Target Report RejectNegative Mask(NEW_MNEMONICS)
Use new mnemonics for PowerPC architecture

mold-mnemonics
Target Report RejectNegative InverseMask(NEW_MNEMONICS)
Use old mnemonics for PowerPC architecture

msoft-float
Target Report RejectNegative Mask(SOFT_FLOAT)
Do not use hardware floating point

mhard-float
Target Report RejectNegative InverseMask(SOFT_FLOAT, HARD_FLOAT)
Use hardware floating point

mpopcntd
Target Report Mask(POPCNTD)
Use PowerPC V2.06 popcntd instruction

mvsx
Target Report Mask(VSX)
Use vector/scalar (VSX) instructions

mvsx-scalar-double
Target Undocumented Report Var(TARGET_VSX_SCALAR_DOUBLE) Init(-1)
; If -mvsx, use VSX arithmetic instructions for scalar double (on by default)

mvsx-scalar-memory
Target Undocumented Report Var(TARGET_VSX_SCALAR_MEMORY)
; If -mvsx, use VSX scalar memory reference instructions for scalar double (off by default)

mvsx-align-128
Target Undocumented Report Var(TARGET_VSX_ALIGN_128)
; If -mvsx, set alignment to 128 bits instead of 32/64

mallow-movmisalign
Target Undocumented Var(TARGET_ALLOW_MOVMISALIGN) Init(-1)
; Allow/disallow the movmisalign in DF/DI vectors

mallow-df-permute
Target Undocumented Var(TARGET_ALLOW_DF_PERMUTE)
; Allow/disallow permutation of DF/DI vectors

msched-groups
Target Undocumented Report Var(TARGET_SCHED_GROUPS) Init(-1)
; Explicitly set/unset whether rs6000_sched_groups is set

malways-hint
Target Undocumented Report Var(TARGET_ALWAYS_HINT) Init(-1)
; Explicitly set/unset whether rs6000_always_hint is set

malign-branch-targets
Target Undocumented Report Var(TARGET_ALIGN_BRANCH_TARGETS) Init(-1)
; Explicitly set/unset whether rs6000_align_branch_targets is set

mvectorize-builtins
Target Undocumented Report Var(TARGET_VECTORIZE_BUILTINS) Init(-1)
; Explicitly control whether we vectorize the builtins or not.

mno-update
Target Report RejectNegative Mask(NO_UPDATE)
Do not generate load/store with update instructions

mupdate
Target Report RejectNegative InverseMask(NO_UPDATE, UPDATE)
Generate load/store with update instructions

mavoid-indexed-addresses
Target Report Var(TARGET_AVOID_XFORM) Init(-1)
Avoid generation of indexed load/store instructions when possible

mfused-madd
Target Report Var(TARGET_FUSED_MADD) Init(1)
Generate fused multiply/add instructions

mtls-markers
Target Report Var(tls_markers) Init(1)
Mark __tls_get_addr calls with argument info

msched-epilog
Target Undocumented Var(TARGET_SCHED_PROLOG) Init(1)

msched-prolog
Target Report Var(TARGET_SCHED_PROLOG) VarExists
Schedule the start and end of the procedure

maix-struct-return
Target Report RejectNegative Var(aix_struct_return)
Return all structures in memory (AIX default)

msvr4-struct-return
Target Report RejectNegative Var(aix_struct_return,0) VarExists
Return small structures in registers (SVR4 default)

mxl-compat
Target Report Var(TARGET_XL_COMPAT)
Conform more closely to IBM XLC semantics

mrecip
Target Report
Generate software reciprocal divide and square root for better throughput.

mrecip=
Target Report RejectNegative Joined
Generate software reciprocal divide and square root for better throughput.

mrecip-precision
Target Report Mask(RECIP_PRECISION)
Assume that the reciprocal estimate instructions provide more accuracy.

mno-fp-in-toc
Target Report RejectNegative Var(TARGET_NO_FP_IN_TOC)
Do not place floating point constants in TOC

mfp-in-toc
Target Report RejectNegative Var(TARGET_NO_FP_IN_TOC,0)
Place floating point constants in TOC

mno-sum-in-toc
Target RejectNegative Var(TARGET_NO_SUM_IN_TOC)
Do not place symbol+offset constants in TOC

msum-in-toc
Target RejectNegative Var(TARGET_NO_SUM_IN_TOC,0) VarExists
Place symbol+offset constants in TOC

;  Output only one TOC entry per module.  Normally linking fails if
;   there are more than 16K unique variables/constants in an executable.  With
;   this option, linking fails only if there are more than 16K modules, or
;   if there are more than 16K unique variables/constant in a single module.
;
;   This is at the cost of having 2 extra loads and one extra store per
;   function, and one less allocable register.
mminimal-toc
Target Report Mask(MINIMAL_TOC)
Use only one TOC entry per procedure

mfull-toc
Target Report
Put everything in the regular TOC

mvrsave
Target Report Var(TARGET_ALTIVEC_VRSAVE)
Generate VRSAVE instructions when generating AltiVec code

mvrsave=
Target RejectNegative Joined
-mvrsave=yes/no	Deprecated option.  Use -mvrsave/-mno-vrsave instead

mblock-move-inline-limit=
Target Report Var(rs6000_block_move_inline_limit) Init(0) RejectNegative Joined UInteger
Specify how many bytes should be moved inline before calling out to memcpy/memmove

misel
Target Report Mask(ISEL)
Generate isel instructions

misel=
Target RejectNegative Joined
-misel=yes/no	Deprecated option.  Use -misel/-mno-isel instead

mspe
Target
Generate SPE SIMD instructions on E500

mpaired
Target Var(rs6000_paired_float)
Generate PPC750CL paired-single instructions

mspe=
Target RejectNegative Joined
-mspe=yes/no	Deprecated option.  Use -mspe/-mno-spe instead

mdebug=
Target RejectNegative Joined
-mdebug=	Enable debug output

mabi=
Target RejectNegative Joined
-mabi=	Specify ABI to use

mcpu=
Target RejectNegative Joined
-mcpu=	Use features of and schedule code for given CPU

mtune=
Target RejectNegative Joined
-mtune=	Schedule code for given CPU

mtraceback=
Target RejectNegative Joined
-mtraceback=	Select full, part, or no traceback table

mlongcall
Target Report Var(rs6000_default_long_calls)
Avoid all range limits on call instructions

mgen-cell-microcode
Target Report Var(rs6000_gen_cell_microcode) Init(-1)
Generate Cell microcode

mwarn-cell-microcode
Target Var(rs6000_warn_cell_microcode) Init(0) Warning
Warn when a Cell microcoded instruction is emitted

mwarn-altivec-long
Target Var(rs6000_warn_altivec_long) Init(1)
Warn about deprecated 'vector long ...' AltiVec type usage

mfloat-gprs=
Target RejectNegative Joined
-mfloat-gprs=	Select GPR floating point method

mlong-double-
Target RejectNegative Joined UInteger
-mlong-double-<n>	Specify size of long double (64 or 128 bits)

msched-costly-dep=
Target RejectNegative Joined 
Determine which dependences between insns are considered costly

minsert-sched-nops=
Target RejectNegative Joined
Specify which post scheduling nop insertion scheme to apply

malign-
Target RejectNegative Joined
Specify alignment of structure fields default/natural

mprioritize-restricted-insns=
Target RejectNegative Joined UInteger Var(rs6000_sched_restricted_insns_priority)
Specify scheduling priority for dispatch slot restricted insns

msingle-float
Target RejectNegative Var(rs6000_single_float)
Single-precision floating point unit

mdouble-float
Target RejectNegative Var(rs6000_double_float)
Double-precision floating point unit

msimple-fpu
Target RejectNegative Var(rs6000_simple_fpu)
Floating point unit does not support divide & sqrt

mfpu=
Target RejectNegative Joined 
-mfpu=	Specify FP (sp, dp, sp-lite, dp-lite) (implies -mxilinx-fpu)

mxilinx-fpu
Target Var(rs6000_xilinx_fpu)
Specify Xilinx FPU.