OSDN Git Service

Add PowerPC target attribute/pragma support
[pf3gnuchains/gcc-fork.git] / gcc / config / rs6000 / rs6000.opt
1 ; Options for the rs6000 port of the compiler
2 ;
3 ; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Free Software
4 ; Foundation, Inc.
5 ; Contributed by Aldy Hernandez <aldy@quesejoda.com>.
6 ;
7 ; This file is part of GCC.
8 ;
9 ; GCC is free software; you can redistribute it and/or modify it under
10 ; the terms of the GNU General Public License as published by the Free
11 ; Software Foundation; either version 3, or (at your option) any later
12 ; version.
13 ;
14 ; GCC is distributed in the hope that it will be useful, but WITHOUT
15 ; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16 ; or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
17 ; License for more details.
18 ;
19 ; You should have received a copy of the GNU General Public License
20 ; along with GCC; see the file COPYING3.  If not see
21 ; <http://www.gnu.org/licenses/>.
22
23 HeaderInclude
24 config/rs6000/rs6000-opts.h
25
26 ;; Current processor
27 TargetVariable
28 enum processor_type rs6000_cpu = PROCESSOR_RIOS1
29
30 ;; Always emit branch hint bits.
31 TargetVariable
32 unsigned char rs6000_always_hint
33
34 ;; Schedule instructions for group formation.
35 TargetVariable
36 unsigned char rs6000_sched_groups
37
38 ;; Align branch targets.
39 TargetVariable
40 unsigned char rs6000_align_branch_targets
41
42 ;; Support for -msched-costly-dep option.
43 TargetVariable
44 enum rs6000_dependence_cost rs6000_sched_costly_dep = no_dep_costly
45
46 ;; Support for -minsert-sched-nops option.
47 TargetVariable
48 enum rs6000_nop_insertion rs6000_sched_insert_nops = sched_finish_none
49
50 ;; Size of long double.
51 TargetVariable
52 unsigned char rs6000_long_double_type_size
53
54 ;; IEEE quad extended precision long double.
55 TargetVariable
56 unsigned char rs6000_ieeequad
57
58 ;; Nonzero to use AltiVec ABI.
59 TargetVariable
60 unsigned char rs6000_altivec_abi
61
62 ;; Nonzero if we want SPE SIMD instructions.
63 TargetVariable
64 int rs6000_spe
65
66 ;; Nonzero if we want SPE ABI extensions.
67 TargetVariable
68 unsigned char rs6000_spe_abi
69
70 ;; Nonzero if floating point operations are done in the GPRs.
71 TargetVariable
72 unsigned char rs6000_float_gprs
73
74 ;; Nonzero if we want Darwin's struct-by-value-in-regs ABI.
75 TargetVariable
76 unsigned char rs6000_darwin64_abi
77
78 ;; Non-zero to allow overriding loop alignment.
79 TargetVariable
80 unsigned char can_override_loop_align
81
82 ;; Which small data model to use (for System V targets only)
83 TargetVariable
84 enum rs6000_sdata_type rs6000_sdata = SDATA_DATA
85
86 ;; Bit size of immediate TLS offsets and string from which it is decoded.
87 TargetVariable
88 int rs6000_tls_size = 32
89
90 ;; ABI enumeration available for subtarget to use.
91 TargetVariable
92 enum rs6000_abi rs6000_current_abi = ABI_NONE
93
94 ;; Type of traceback to use.
95 TargetVariable
96 enum rs6000_traceback_type rs6000_traceback = traceback_default
97
98 ;; Control alignment for fields within structures.
99 TargetVariable
100 unsigned char rs6000_alignment_flags
101
102 ;; Code model for 64-bit linux.
103 TargetVariable
104 enum rs6000_cmodel rs6000_current_cmodel = CMODEL_SMALL
105
106 ;; What type of reciprocal estimation instructions to generate
107 TargetVariable
108 unsigned int rs6000_recip_control
109
110 ;; -mcpu=<xxx> as an index into the processor_target_table or -1
111 TargetVariable
112 int rs6000_cpu_index = -1
113
114 ;; -mtune=<xxx> as an index into the processor_target_table or -1
115 TargetVariable
116 int rs6000_tune_index = -1
117
118 ;; Debug flags
119 TargetVariable
120 unsigned int rs6000_debug
121
122 ;; Save for target_flags_explicit
123 TargetSave
124 int rs6000_target_flags_explicit
125
126 mpower
127 Target Report RejectNegative Mask(POWER)
128 Use POWER instruction set
129
130 mno-power
131 Target Report RejectNegative
132 Do not use POWER instruction set
133
134 mpower2
135 Target Report Mask(POWER2)
136 Use POWER2 instruction set
137
138 mpowerpc
139 Target Report RejectNegative Mask(POWERPC)
140 Use PowerPC instruction set
141
142 mno-powerpc
143 Target Report RejectNegative
144 Do not use PowerPC instruction set
145
146 mpowerpc64
147 Target Report Mask(POWERPC64)
148 Use PowerPC-64 instruction set
149
150 mpowerpc-gpopt
151 Target Report Mask(PPC_GPOPT) Save
152 Use PowerPC General Purpose group optional instructions
153
154 mpowerpc-gfxopt
155 Target Report Mask(PPC_GFXOPT) Save
156 Use PowerPC Graphics group optional instructions
157
158 mmfcrf
159 Target Report Mask(MFCRF) Save
160 Use PowerPC V2.01 single field mfcr instruction
161
162 mpopcntb
163 Target Report Mask(POPCNTB) Save
164 Use PowerPC V2.02 popcntb instruction
165
166 mfprnd
167 Target Report Mask(FPRND) Save
168 Use PowerPC V2.02 floating point rounding instructions
169
170 mcmpb
171 Target Report Mask(CMPB) Save
172 Use PowerPC V2.05 compare bytes instruction
173
174 mmfpgpr
175 Target Report Mask(MFPGPR) Save
176 Use extended PowerPC V2.05 move floating point to/from GPR instructions
177
178 maltivec
179 Target Report Mask(ALTIVEC) Save
180 Use AltiVec instructions
181
182 mhard-dfp
183 Target Report Mask(DFP) Save
184 Use decimal floating point instructions
185
186 mmulhw
187 Target Report Mask(MULHW) Save
188 Use 4xx half-word multiply instructions
189
190 mdlmzb
191 Target Report Mask(DLMZB) Save
192 Use 4xx string-search dlmzb instruction
193
194 mmultiple
195 Target Report Mask(MULTIPLE) Save
196 Generate load/store multiple instructions
197
198 mstring
199 Target Report Mask(STRING) Save
200 Generate string instructions for block moves
201
202 mnew-mnemonics
203 Target Report RejectNegative Mask(NEW_MNEMONICS)
204 Use new mnemonics for PowerPC architecture
205
206 mold-mnemonics
207 Target Report RejectNegative InverseMask(NEW_MNEMONICS)
208 Use old mnemonics for PowerPC architecture
209
210 msoft-float
211 Target Report RejectNegative Mask(SOFT_FLOAT)
212 Do not use hardware floating point
213
214 mhard-float
215 Target Report RejectNegative InverseMask(SOFT_FLOAT, HARD_FLOAT)
216 Use hardware floating point
217
218 mpopcntd
219 Target Report Mask(POPCNTD) Save
220 Use PowerPC V2.06 popcntd instruction
221
222 mfriz
223 Target Report Var(TARGET_FRIZ) Init(-1) Save
224 Under -ffast-math, generate a FRIZ instruction for (double)(long long) conversions
225
226 mveclibabi=
227 Target RejectNegative Joined Var(rs6000_veclibabi_name)
228 Vector library ABI to use
229
230 mvsx
231 Target Report Mask(VSX) Save
232 Use vector/scalar (VSX) instructions
233
234 mvsx-scalar-double
235 Target Undocumented Report Var(TARGET_VSX_SCALAR_DOUBLE) Init(-1)
236 ; If -mvsx, use VSX arithmetic instructions for scalar double (on by default)
237
238 mvsx-scalar-memory
239 Target Undocumented Report Var(TARGET_VSX_SCALAR_MEMORY)
240 ; If -mvsx, use VSX scalar memory reference instructions for scalar double (off by default)
241
242 mvsx-align-128
243 Target Undocumented Report Var(TARGET_VSX_ALIGN_128)
244 ; If -mvsx, set alignment to 128 bits instead of 32/64
245
246 mallow-movmisalign
247 Target Undocumented Var(TARGET_ALLOW_MOVMISALIGN) Init(-1)
248 ; Allow/disallow the movmisalign in DF/DI vectors
249
250 mallow-df-permute
251 Target Undocumented Var(TARGET_ALLOW_DF_PERMUTE)
252 ; Allow/disallow permutation of DF/DI vectors
253
254 msched-groups
255 Target Undocumented Report Var(TARGET_SCHED_GROUPS) Init(-1)
256 ; Explicitly set/unset whether rs6000_sched_groups is set
257
258 malways-hint
259 Target Undocumented Report Var(TARGET_ALWAYS_HINT) Init(-1)
260 ; Explicitly set/unset whether rs6000_always_hint is set
261
262 malign-branch-targets
263 Target Undocumented Report Var(TARGET_ALIGN_BRANCH_TARGETS) Init(-1)
264 ; Explicitly set/unset whether rs6000_align_branch_targets is set
265
266 mvectorize-builtins
267 Target Undocumented Report Var(TARGET_VECTORIZE_BUILTINS) Init(-1)
268 ; Explicitly control whether we vectorize the builtins or not.
269
270 mno-update
271 Target Report RejectNegative Mask(NO_UPDATE) Save
272 Do not generate load/store with update instructions
273
274 mupdate
275 Target Report RejectNegative InverseMask(NO_UPDATE, UPDATE)
276 Generate load/store with update instructions
277
278 mavoid-indexed-addresses
279 Target Report Var(TARGET_AVOID_XFORM) Init(-1) Save
280 Avoid generation of indexed load/store instructions when possible
281
282 mtls-markers
283 Target Report Var(tls_markers) Init(1) Save
284 Mark __tls_get_addr calls with argument info
285
286 msched-epilog
287 Target Undocumented Var(TARGET_SCHED_PROLOG) Init(1) Save
288
289 msched-prolog
290 Target Report Var(TARGET_SCHED_PROLOG) Save
291 Schedule the start and end of the procedure
292
293 maix-struct-return
294 Target Report RejectNegative Var(aix_struct_return) Save
295 Return all structures in memory (AIX default)
296
297 msvr4-struct-return
298 Target Report RejectNegative Var(aix_struct_return,0) Save
299 Return small structures in registers (SVR4 default)
300
301 mxl-compat
302 Target Report Var(TARGET_XL_COMPAT) Save
303 Conform more closely to IBM XLC semantics
304
305 mrecip
306 Target Report
307 Generate software reciprocal divide and square root for better throughput.
308
309 mrecip=
310 Target Report RejectNegative Joined
311 Generate software reciprocal divide and square root for better throughput.
312
313 mrecip-precision
314 Target Report Mask(RECIP_PRECISION) Save
315 Assume that the reciprocal estimate instructions provide more accuracy.
316
317 mno-fp-in-toc
318 Target Report RejectNegative Var(TARGET_NO_FP_IN_TOC) Save
319 Do not place floating point constants in TOC
320
321 mfp-in-toc
322 Target Report RejectNegative Var(TARGET_NO_FP_IN_TOC,0) Save
323 Place floating point constants in TOC
324
325 mno-sum-in-toc
326 Target RejectNegative Var(TARGET_NO_SUM_IN_TOC) Save
327 Do not place symbol+offset constants in TOC
328
329 msum-in-toc
330 Target RejectNegative Var(TARGET_NO_SUM_IN_TOC,0) Save
331 Place symbol+offset constants in TOC
332
333 ;  Output only one TOC entry per module.  Normally linking fails if
334 ;   there are more than 16K unique variables/constants in an executable.  With
335 ;   this option, linking fails only if there are more than 16K modules, or
336 ;   if there are more than 16K unique variables/constant in a single module.
337 ;
338 ;   This is at the cost of having 2 extra loads and one extra store per
339 ;   function, and one less allocable register.
340 mminimal-toc
341 Target Report Mask(MINIMAL_TOC)
342 Use only one TOC entry per procedure
343
344 mfull-toc
345 Target Report
346 Put everything in the regular TOC
347
348 mvrsave
349 Target Report Var(TARGET_ALTIVEC_VRSAVE) Save
350 Generate VRSAVE instructions when generating AltiVec code
351
352 mvrsave=
353 Target RejectNegative Joined
354 -mvrsave=yes/no Deprecated option.  Use -mvrsave/-mno-vrsave instead
355
356 mblock-move-inline-limit=
357 Target Report Var(rs6000_block_move_inline_limit) Init(0) RejectNegative Joined UInteger Save
358 Specify how many bytes should be moved inline before calling out to memcpy/memmove
359
360 misel
361 Target Report Mask(ISEL) Save
362 Generate isel instructions
363
364 misel=
365 Target RejectNegative Joined
366 -misel=yes/no   Deprecated option.  Use -misel/-mno-isel instead
367
368 mspe
369 Target
370 Generate SPE SIMD instructions on E500
371
372 mpaired
373 Target Var(rs6000_paired_float) Save
374 Generate PPC750CL paired-single instructions
375
376 mspe=
377 Target RejectNegative Joined
378 -mspe=yes/no    Deprecated option.  Use -mspe/-mno-spe instead
379
380 mdebug=
381 Target RejectNegative Joined
382 -mdebug=        Enable debug output
383
384 mabi=
385 Target RejectNegative Joined
386 -mabi=  Specify ABI to use
387
388 mcpu=
389 Target RejectNegative Joined
390 -mcpu=  Use features of and schedule code for given CPU
391
392 mtune=
393 Target RejectNegative Joined
394 -mtune= Schedule code for given CPU
395
396 mtraceback=
397 Target RejectNegative Joined
398 -mtraceback=    Select full, part, or no traceback table
399
400 mlongcall
401 Target Report Var(rs6000_default_long_calls) Save
402 Avoid all range limits on call instructions
403
404 mgen-cell-microcode
405 Target Report Var(rs6000_gen_cell_microcode) Init(-1) Save
406 Generate Cell microcode
407
408 mwarn-cell-microcode
409 Target Var(rs6000_warn_cell_microcode) Init(0) Warning Save
410 Warn when a Cell microcoded instruction is emitted
411
412 mwarn-altivec-long
413 Target Var(rs6000_warn_altivec_long) Init(1) Save
414 Warn about deprecated 'vector long ...' AltiVec type usage
415
416 mfloat-gprs=
417 Target RejectNegative Joined
418 -mfloat-gprs=   Select GPR floating point method
419
420 mlong-double-
421 Target RejectNegative Joined UInteger
422 -mlong-double-<n>       Specify size of long double (64 or 128 bits)
423
424 msched-costly-dep=
425 Target RejectNegative Joined 
426 Determine which dependences between insns are considered costly
427
428 minsert-sched-nops=
429 Target RejectNegative Joined
430 Specify which post scheduling nop insertion scheme to apply
431
432 malign-
433 Target RejectNegative Joined
434 Specify alignment of structure fields default/natural
435
436 mprioritize-restricted-insns=
437 Target RejectNegative Joined UInteger Var(rs6000_sched_restricted_insns_priority) Save
438 Specify scheduling priority for dispatch slot restricted insns
439
440 msingle-float
441 Target RejectNegative Var(rs6000_single_float) Save
442 Single-precision floating point unit
443
444 mdouble-float
445 Target RejectNegative Var(rs6000_double_float) Save
446 Double-precision floating point unit
447
448 msimple-fpu
449 Target RejectNegative Var(rs6000_simple_fpu) Save
450 Floating point unit does not support divide & sqrt
451
452 mfpu=
453 Target RejectNegative Joined 
454 -mfpu=  Specify FP (sp, dp, sp-lite, dp-lite) (implies -mxilinx-fpu)
455
456 mxilinx-fpu
457 Target Var(rs6000_xilinx_fpu) Save
458 Specify Xilinx FPU.
459
460