Reverting merge from trunk
[official-gcc.git] / gcc / config / sh / sh.opt
blob8a6788eb3d1e16fe49fc4135704db9c0e7e84116
1 ; Options for the SH port of the compiler.
3 ; Copyright (C) 2005-2013 Free Software Foundation, Inc.
5 ; This file is part of GCC.
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.
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.
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/>.
21 ;; Used for various architecture options.
22 Mask(SH_E)
24 ;; Set if the default precision of the FPU is single.
25 Mask(FPU_SINGLE)
27 ;; Set if the a double-precision FPU is present but is restricted to
28 ;; single precision usage only.
29 Mask(FPU_SINGLE_ONLY)
31 ;; Set if we should generate code using type 2A insns.
32 Mask(HARD_SH2A)
34 ;; Set if we should generate code using type 2A DF insns.
35 Mask(HARD_SH2A_DOUBLE)
37 ;; Set if compiling for SH4 hardware (to be used for insn costs etc.)
38 Mask(HARD_SH4)
40 ;; Set if we should generate code for a SH5 CPU (either ISA).
41 Mask(SH5)
43 ;; Set if we should save all target registers.
44 Mask(SAVE_ALL_TARGET_REGS)
47 Target RejectNegative Mask(SH1) Condition(SUPPORT_SH1)
48 Generate SH1 code
51 Target RejectNegative Mask(SH2) Condition(SUPPORT_SH2)
52 Generate SH2 code
54 m2a
55 Target RejectNegative Condition(SUPPORT_SH2A)
56 Generate default double-precision SH2a-FPU code
58 m2a-nofpu
59 Target RejectNegative Condition(SUPPORT_SH2A_NOFPU)
60 Generate SH2a FPU-less code
62 m2a-single
63 Target RejectNegative Condition(SUPPORT_SH2A_SINGLE)
64 Generate default single-precision SH2a-FPU code
66 m2a-single-only
67 Target RejectNegative Condition(SUPPORT_SH2A_SINGLE_ONLY)
68 Generate only single-precision SH2a-FPU code
70 m2e
71 Target RejectNegative Condition(SUPPORT_SH2E)
72 Generate SH2e code
75 Target RejectNegative Mask(SH3) Condition(SUPPORT_SH3)
76 Generate SH3 code
78 m3e
79 Target RejectNegative Condition(SUPPORT_SH3E)
80 Generate SH3e code
83 Target RejectNegative Mask(SH4) Condition(SUPPORT_SH4)
84 Generate SH4 code
86 m4-100
87 Target RejectNegative Condition(SUPPORT_SH4)
88 Generate SH4-100 code
90 m4-200
91 Target RejectNegative Condition(SUPPORT_SH4)
92 Generate SH4-200 code
94 ;; TARGET_SH4_300 indicates if we have the ST40-300 instruction set and
95 ;; pipeline - irrespective of ABI.
96 m4-300
97 Target RejectNegative Condition(SUPPORT_SH4) Var(TARGET_SH4_300)
98 Generate SH4-300 code
100 m4-nofpu
101 Target RejectNegative Condition(SUPPORT_SH4_NOFPU)
102 Generate SH4 FPU-less code
104 m4-100-nofpu
105 Target RejectNegative Condition(SUPPORT_SH4_NOFPU)
106 Generate SH4-100 FPU-less code
108 m4-200-nofpu
109 Target RejectNegative Condition(SUPPORT_SH4_NOFPU)
110 Generate SH4-200 FPU-less code
112 m4-300-nofpu
113 Target RejectNegative Condition(SUPPORT_SH4_NOFPU) Var(TARGET_SH4_300)
114 Generate SH4-300 FPU-less code
116 m4-340
117 Target RejectNegative Condition(SUPPORT_SH4_NOFPU) Var(TARGET_SH4_300)
118 Generate code for SH4 340 series (MMU/FPU-less)
119 ;; passes -isa=sh4-nommu-nofpu to the assembler.
121 m4-400
122 Target RejectNegative Condition(SUPPORT_SH4_NOFPU)
123 Generate code for SH4 400 series (MMU/FPU-less)
124 ;; passes -isa=sh4-nommu-nofpu to the assembler.
126 m4-500
127 Target RejectNegative Condition(SUPPORT_SH4_NOFPU)
128 Generate code for SH4 500 series (FPU-less).
129 ;; passes -isa=sh4-nofpu to the assembler.
131 m4-single
132 Target RejectNegative Condition(SUPPORT_SH4_SINGLE)
133 Generate default single-precision SH4 code
135 m4-100-single
136 Target RejectNegative Condition(SUPPORT_SH4_SINGLE)
137 Generate default single-precision SH4-100 code
139 m4-200-single
140 Target RejectNegative Condition(SUPPORT_SH4_SINGLE)
141 Generate default single-precision SH4-200 code
143 m4-300-single
144 Target RejectNegative Condition(SUPPORT_SH4_SINGLE) Var(TARGET_SH4_300)
145 Generate default single-precision SH4-300 code
147 m4-single-only
148 Target RejectNegative Condition(SUPPORT_SH4_SINGLE_ONLY)
149 Generate only single-precision SH4 code
151 m4-100-single-only
152 Target RejectNegative Condition(SUPPORT_SH4_SINGLE_ONLY)
153 Generate only single-precision SH4-100 code
155 m4-200-single-only
156 Target RejectNegative Condition(SUPPORT_SH4_SINGLE_ONLY)
157 Generate only single-precision SH4-200 code
159 m4-300-single-only
160 Target RejectNegative Condition(SUPPORT_SH4_SINGLE_ONLY) Var(TARGET_SH4_300)
161 Generate only single-precision SH4-300 code
164 Target RejectNegative Mask(SH4A) Condition(SUPPORT_SH4A)
165 Generate SH4a code
167 m4a-nofpu
168 Target RejectNegative Condition(SUPPORT_SH4A_NOFPU)
169 Generate SH4a FPU-less code
171 m4a-single
172 Target RejectNegative Condition(SUPPORT_SH4A_SINGLE)
173 Generate default single-precision SH4a code
175 m4a-single-only
176 Target RejectNegative Condition(SUPPORT_SH4A_SINGLE_ONLY)
177 Generate only single-precision SH4a code
179 m4al
180 Target RejectNegative Condition(SUPPORT_SH4AL)
181 Generate SH4al-dsp code
183 m5-32media
184 Target RejectNegative Condition(SUPPORT_SH5_32MEDIA)
185 Generate 32-bit SHmedia code
187 m5-32media-nofpu
188 Target RejectNegative Condition(SUPPORT_SH5_32MEDIA_NOFPU)
189 Generate 32-bit FPU-less SHmedia code
191 m5-64media
192 Target RejectNegative Condition(SUPPORT_SH5_64MEDIA)
193 Generate 64-bit SHmedia code
195 m5-64media-nofpu
196 Target RejectNegative Condition(SUPPORT_SH5_64MEDIA_NOFPU)
197 Generate 64-bit FPU-less SHmedia code
199 m5-compact
200 Target RejectNegative Condition(SUPPORT_SH5_32MEDIA)
201 Generate SHcompact code
203 m5-compact-nofpu
204 Target RejectNegative Condition(SUPPORT_SH5_32MEDIA_NOFPU)
205 Generate FPU-less SHcompact code
207 maccumulate-outgoing-args
208 Target Report Var(TARGET_ACCUMULATE_OUTGOING_ARGS) Init(1)
209 Reserve space for outgoing arguments in the function prologue
211 madjust-unroll
212 Target Ignore
213 Does nothing.  Preserved for backward compatibility.
216 Target Report RejectNegative InverseMask(LITTLE_ENDIAN)
217 Generate code in big endian mode
219 mbigtable
220 Target Report RejectNegative Mask(BIGTABLE)
221 Generate 32-bit offsets in switch tables
223 mbitops
224 Target Report RejectNegative Mask(BITOPS)
225 Generate bit instructions
227 mbranch-cost=
228 Target RejectNegative Joined UInteger Var(sh_branch_cost) Init(-1)
229 Cost to assume for a branch insn
231 mzdcbranch
232 Target Var(TARGET_ZDCBRANCH)
233 Assume that zero displacement conditional branches are fast
235 mcbranchdi
236 Target Var(TARGET_CBRANCHDI4)
237 Enable cbranchdi4 pattern
239 mcmpeqdi
240 Target Var(TARGET_CMPEQDI_T)
241 Emit cmpeqdi_t pattern even when -mcbranchdi is in effect.
243 mcut2-workaround
244 Target RejectNegative Var(TARGET_SH5_CUT2_WORKAROUND)
245 Enable SH5 cut2 workaround
247 mdalign
248 Target Report RejectNegative Mask(ALIGN_DOUBLE)
249 Align doubles at 64-bit boundaries
251 mdiv=
252 Target RejectNegative Joined Var(sh_div_str) Init("")
253 Division strategy, one of: call, call2, fp, inv, inv:minlat, inv20u, inv20l, inv:call, inv:call2, inv:fp, call-div1, call-fp, call-table
255 mdivsi3_libfunc=
256 Target RejectNegative Joined Var(sh_divsi3_libfunc) Init("")
257 Specify name for 32 bit signed division function
259 mfmovd
260 Target RejectNegative Mask(FMOVD)
261 Enable the use of 64-bit floating point registers in fmov instructions.  See -mdalign if 64-bit alignment is required.
263 mfixed-range=
264 Target RejectNegative Joined Var(sh_fixed_range_str)
265 Specify range of registers to make fixed
267 mgettrcost=
268 Target RejectNegative Joined UInteger Var(sh_gettrcost) Init(-1)
269 Cost to assume for gettr insn
271 mhitachi
272 Target Report RejectNegative Mask(HITACHI)
273 Follow Renesas (formerly Hitachi) / SuperH calling conventions
275 mieee
276 Target Var(TARGET_IEEE)
277 Increase the IEEE compliance for floating-point comparisons
279 mindexed-addressing
280 Target Report Mask(ALLOW_INDEXED_ADDRESS) Condition(SUPPORT_ANY_SH5_32MEDIA)
281 Enable the use of the indexed addressing mode for SHmedia32/SHcompact
283 minline-ic_invalidate
284 Target Report Var(TARGET_INLINE_IC_INVALIDATE)
285 inline code to invalidate instruction cache entries after setting up nested function trampolines
287 minvalid-symbols
288 Target Report Mask(INVALID_SYMBOLS) Condition(SUPPORT_ANY_SH5)
289 Assume symbols might be invalid
291 misize
292 Target Report RejectNegative Mask(DUMPISIZE)
293 Annotate assembler instructions with estimated addresses
296 Target Report RejectNegative Mask(LITTLE_ENDIAN)
297 Generate code in little endian mode
299 mnomacsave
300 Target Report RejectNegative Mask(NOMACSAVE)
301 Mark MAC register as call-clobbered
303 ;; ??? This option is not useful, but is retained in case there are people
304 ;; who are still relying on it.  It may be deleted in the future.
305 mpadstruct
306 Target Report RejectNegative Mask(PADSTRUCT)
307 Make structs a multiple of 4 bytes (warning: ABI altered)
309 mprefergot
310 Target Report RejectNegative Mask(PREFERGOT)
311 Emit function-calls using global offset table when generating PIC
313 mpt-fixed
314 Target Report Mask(PT_FIXED) Condition(SUPPORT_ANY_SH5)
315 Assume pt* instructions won't trap
317 mrelax
318 Target Report RejectNegative Mask(RELAX)
319 Shorten address references during linking
321 mrenesas
322 Target Mask(HITACHI)
323 Follow Renesas (formerly Hitachi) / SuperH calling conventions
325 msoft-atomic
326 Target Undocumented Alias(matomic-model=, soft-gusa, none)
327 Deprecated.  Use -matomic= instead to select the atomic model
329 matomic-model=
330 Target Report RejectNegative Joined Var(sh_atomic_model_str)
331 Specify the model for atomic operations
333 mtas
334 Target Report RejectNegative Var(TARGET_ENABLE_TAS)
335 Use tas.b instruction for __atomic_test_and_set
337 mspace
338 Target RejectNegative Alias(Os)
339 Deprecated.  Use -Os instead
341 multcost=
342 Target RejectNegative Joined UInteger Var(sh_multcost) Init(-1)
343 Cost to assume for a multiply insn
345 musermode
346 Target Report RejectNegative Var(TARGET_USERMODE)
347 Don't generate privileged-mode only code; implies -mno-inline-ic_invalidate if the inline code would not work in user mode.
349 ;; We might want to enable this by default for TARGET_HARD_SH4, because
350 ;; zero-offset branches have zero latency.  Needs some benchmarking.
351 mpretend-cmove
352 Target Var(TARGET_PRETEND_CMOVE)
353 Pretend a branch-around-a-move is a conditional move.
355 mfsca
356 Target Var(TARGET_FSCA)
357 Enable the use of the fsca instruction
359 mfsrra
360 Target Var(TARGET_FSRRA)
361 Enable the use of the fsrra instruction