1 ; Options for the MIPS port of the compiler
3 ; Copyright (C) 2005-2020 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
12 ; GCC is distributed in the hope that it will be useful, but WITHOUT
13 ; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 ; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
15 ; License 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/>.
22 config/mips/mips-opts.h
31 Target RejectNegative Joined Enum(mips_abi) Var(mips_abi) Init(MIPS_ABI_DEFAULT)
32 -mabi=ABI Generate code that conforms to the given ABI.
35 Name(mips_abi) Type(int)
36 Known MIPS ABIs (for use with the -mabi= option):
39 Enum(mips_abi) String(32) Value(ABI_32)
42 Enum(mips_abi) String(o64) Value(ABI_O64)
45 Enum(mips_abi) String(n32) Value(ABI_N32)
48 Enum(mips_abi) String(64) Value(ABI_64)
51 Enum(mips_abi) String(eabi) Value(ABI_EABI)
54 Target Report Mask(ABICALLS)
55 Generate code that can be used in SVR4-style dynamic objects.
58 Target Report Var(TARGET_MAD)
59 Use PMC-style 'mad' instructions.
62 Target Report Mask(IMADD)
63 Use integer madd/msub instructions.
66 Target RejectNegative Joined Var(mips_arch_option) ToLower Enum(mips_arch_opt_value)
67 -march=ISA Generate code for the given ISA.
70 Target RejectNegative Joined UInteger Var(mips_branch_cost)
71 -mbranch-cost=COST Set the cost of branches to roughly COST instructions.
74 Target Report Mask(BRANCHLIKELY)
75 Use Branch Likely instructions, overriding the architecture default.
78 Target Report Var(TARGET_FLIP_MIPS16)
79 Switch on/off MIPS16 ASE on alternating functions for compiler testing.
82 Target Report Mask(CHECK_ZERO_DIV)
83 Trap on integer divide by zero.
86 Target RejectNegative Joined Enum(mips_code_readable_setting) Var(mips_code_readable) Init(CODE_READABLE_YES)
87 -mcode-readable=SETTING Specify when instructions are allowed to access code.
90 Name(mips_code_readable_setting) Type(enum mips_code_readable_setting)
91 Valid arguments to -mcode-readable=:
94 Enum(mips_code_readable_setting) String(yes) Value(CODE_READABLE_YES)
97 Enum(mips_code_readable_setting) String(pcrel) Value(CODE_READABLE_PCREL)
100 Enum(mips_code_readable_setting) String(no) Value(CODE_READABLE_NO)
103 Target Report RejectNegative Mask(DIVIDE_BREAKS)
104 Use branch-and-break sequences to check for integer divide by zero.
107 Target Report RejectNegative InverseMask(DIVIDE_BREAKS, DIVIDE_TRAPS)
108 Use trap instructions to check for integer divide by zero.
111 Target Report RejectNegative Var(TARGET_MDMX)
112 Allow the use of MDMX instructions.
115 Target Report RejectNegative InverseMask(SINGLE_FLOAT, DOUBLE_FLOAT)
116 Allow hardware floating-point instructions to cover both 32-bit and 64-bit operations.
119 Target Report Var(TARGET_DSP)
120 Use MIPS-DSP instructions.
123 Target Report Var(TARGET_DSPR2)
124 Use MIPS-DSP REV 2 instructions.
127 Target Var(TARGET_DEBUG_MODE) Undocumented
130 Target Var(TARGET_DEBUG_D_MODE) Undocumented
133 Target Report RejectNegative Mask(BIG_ENDIAN)
134 Use big-endian byte order.
137 Target Report RejectNegative InverseMask(BIG_ENDIAN, LITTLE_ENDIAN)
138 Use little-endian byte order.
141 Target Report Var(TARGET_EMBEDDED_DATA)
142 Use ROM instead of RAM.
145 Target Report Var(TARGET_EVA)
146 Use Enhanced Virtual Addressing instructions.
149 Target Report Mask(EXPLICIT_RELOCS)
150 Use NewABI-style %reloc() assembly operators.
153 Target Report Var(TARGET_EXTERN_SDATA) Init(1)
154 Use -G for data that is not defined by the current object.
157 Target Report Var(TARGET_FIX_24K)
158 Work around certain 24K errata.
161 Target Report Mask(FIX_R4000)
162 Work around certain R4000 errata.
165 Target Report Mask(FIX_R4400)
166 Work around certain R4400 errata.
169 Target Report Mask(FIX_R5900)
170 Work around the R5900 short loop erratum.
173 Target Report Var(TARGET_FIX_RM7000)
174 Work around certain RM7000 errata.
177 Target Report Mask(FIX_R10000)
178 Work around certain R10000 errata.
181 Target Report Var(TARGET_FIX_SB1)
182 Work around errata for early SB-1 revision 2 cores.
185 Target Report Var(TARGET_FIX_VR4120)
186 Work around certain VR4120 errata.
189 Target Report Var(TARGET_FIX_VR4130)
190 Work around VR4130 mflo/mfhi errata.
193 Target Report Var(TARGET_4300_MUL_FIX)
194 Work around an early 4300 hardware bug.
197 Target Report Var(TARGET_FP_EXCEPTIONS) Init(1)
198 FP exceptions are enabled.
201 Target Report RejectNegative InverseMask(FLOAT64)
202 Use 32-bit floating-point registers.
205 Target Report RejectNegative Mask(FLOATXX)
206 Conform to the o32 FPXX ABI.
209 Target Report RejectNegative Mask(FLOAT64)
210 Use 64-bit floating-point registers.
213 Target RejectNegative Joined Var(mips_cache_flush_func) Init(CACHE_FLUSH_FUNC)
214 -mflush-func=FUNC Use FUNC to flush the cache before calling stack trampolines.
217 Target RejectNegative Joined Enum(mips_ieee_754_value) Var(mips_abs) Init(MIPS_IEEE_754_DEFAULT)
218 -mabs=MODE Select the IEEE 754 ABS/NEG instruction execution mode.
221 Target RejectNegative Joined Enum(mips_ieee_754_value) Var(mips_nan) Init(MIPS_IEEE_754_DEFAULT)
222 -mnan=ENCODING Select the IEEE 754 NaN data encoding.
225 Name(mips_ieee_754_value) Type(int)
226 Known MIPS IEEE 754 settings (for use with the -mabs= and -mnan= options):
229 Enum(mips_ieee_754_value) String(2008) Value(MIPS_IEEE_754_2008)
232 Enum(mips_ieee_754_value) String(legacy) Value(MIPS_IEEE_754_LEGACY)
235 Target Report RejectNegative InverseMask(64BIT)
236 Use 32-bit general registers.
239 Target Report RejectNegative Mask(64BIT)
240 Use 64-bit general registers.
243 Target Report Var(TARGET_GPOPT) Init(1)
244 Use GP-relative addressing to access small data.
247 Target Report Var(TARGET_PLT)
248 When generating -mabicalls code, allow executables to use PLTs and copy relocations.
251 Target Report RejectNegative InverseMask(SOFT_FLOAT_ABI, HARD_FLOAT_ABI)
252 Allow the use of hardware floating-point ABI and instructions.
254 minterlink-compressed
255 Target Report Var(TARGET_INTERLINK_COMPRESSED) Init(0)
256 Generate code that is link-compatible with MIPS16 and microMIPS code.
259 Target Report Var(TARGET_INTERLINK_COMPRESSED) Init(0)
260 An alias for minterlink-compressed provided for backward-compatibility.
263 Target RejectNegative Joined ToLower Enum(mips_mips_opt_value) Var(mips_isa_option)
264 -mipsN Generate code for ISA level N.
267 Target Report RejectNegative Mask(MIPS16)
268 Generate MIPS16 code.
271 Target Report RejectNegative Var(TARGET_MIPS3D)
272 Use MIPS-3D instructions.
275 Target Report Mask(LLSC)
276 Use ll, sc and sync instructions.
279 Target Report Var(TARGET_LOCAL_SDATA) Init(1)
280 Use -G for object-local data.
283 Target Report Var(TARGET_LONG_CALLS)
287 Target Report RejectNegative InverseMask(LONG64, LONG32)
288 Use a 32-bit long type.
291 Target Report RejectNegative Mask(LONG64)
292 Use a 64-bit long type.
295 Target Report Var(TARGET_MCOUNT_RA_ADDRESS)
296 Pass the address of the ra save location to _mcount in $12.
299 Target Report Mask(MEMCPY)
300 Don't optimize block moves.
303 Target Report Mask(MICROMIPS)
304 Use microMIPS instructions.
307 Target Report Mask(MSA)
308 Use MIPS MSA Extension instructions.
311 Target Report Var(TARGET_MT)
312 Allow the use of MT instructions.
315 Target Report RejectNegative Var(TARGET_NO_FLOAT) Condition(TARGET_SUPPORTS_NO_FLOAT)
316 Prevent the use of all floating-point operations.
319 Target Report Var(TARGET_MCU)
320 Use MCU instructions.
323 Target RejectNegative
324 Do not use a cache-flushing function before calling stack trampolines.
327 Target Report RejectNegative Var(TARGET_MDMX, 0)
328 Do not use MDMX instructions.
331 Target Report RejectNegative InverseMask(MIPS16)
332 Generate normal-mode code.
335 Target Report RejectNegative Var(TARGET_MIPS3D, 0)
336 Do not use MIPS-3D instructions.
339 Target Report Mask(PAIRED_SINGLE_FLOAT)
340 Use paired-single floating-point instructions.
343 Target Joined RejectNegative Enum(mips_r10k_cache_barrier_setting) Var(mips_r10k_cache_barrier) Init(R10K_CACHE_BARRIER_NONE)
344 -mr10k-cache-barrier=SETTING Specify when r10k cache barriers should be inserted.
347 Name(mips_r10k_cache_barrier_setting) Type(enum mips_r10k_cache_barrier_setting)
348 Valid arguments to -mr10k-cache-barrier=:
351 Enum(mips_r10k_cache_barrier_setting) String(load-store) Value(R10K_CACHE_BARRIER_LOAD_STORE)
354 Enum(mips_r10k_cache_barrier_setting) String(store) Value(R10K_CACHE_BARRIER_STORE)
357 Enum(mips_r10k_cache_barrier_setting) String(none) Value(R10K_CACHE_BARRIER_NONE)
360 Target Report Mask(RELAX_PIC_CALLS)
361 Try to allow the linker to turn PIC calls into direct calls.
364 Target Report Var(TARGET_SHARED) Init(1)
365 When generating -mabicalls code, make the code suitable for use in shared libraries.
368 Target Report RejectNegative Mask(SINGLE_FLOAT)
369 Restrict the use of hardware floating-point instructions to 32-bit operations.
372 Target Report Mask(SMARTMIPS)
373 Use SmartMIPS instructions.
376 Target Report RejectNegative Mask(SOFT_FLOAT_ABI)
377 Prevent the use of all hardware floating-point instructions.
380 Target Report Mask(SPLIT_ADDRESSES)
381 Optimize lui/addiu address loads.
384 Target Report Var(TARGET_SYM32)
385 Assume all symbols have 32-bit values.
388 Target Report Mask(SYNCI)
389 Use synci instruction to invalidate i-cache.
392 Target Report Var(mips_lra_flag) Init(1) Save
393 Use LRA instead of reload.
396 Target Report Var(mips_lxc1_sxc1) Init(1)
397 Use lwxc1/swxc1/ldxc1/sdxc1 instructions where applicable.
400 Target Report Var(mips_madd4) Init(1)
401 Use 4-operand madd.s/madd.d and related instructions where applicable.
404 Target RejectNegative Joined Var(mips_tune_option) ToLower Enum(mips_arch_opt_value)
405 -mtune=PROCESSOR Optimize the output for PROCESSOR.
407 muninit-const-in-rodata
408 Target Report Var(TARGET_UNINIT_CONST_IN_RODATA)
409 Put uninitialized constants in ROM (needs -membedded-data).
412 Target Report Var(TARGET_VIRT)
413 Use Virtualization (VZ) instructions.
416 Target Report Var(TARGET_XPA)
417 Use eXtended Physical Address (XPA) instructions.
420 Target Report Var(TARGET_CRC)
421 Use Cyclic Redundancy Check (CRC) instructions.
424 Target Report Var(TARGET_GINV)
425 Use Global INValidate (GINV) instructions.
428 Target Report Mask(VR4130_ALIGN)
429 Perform VR4130-specific alignment optimizations.
432 Target Report Var(TARGET_XGOT)
433 Lift restrictions on GOT size.
436 Target Report Mask(ODD_SPREG)
437 Enable use of odd-numbered single-precision registers.
440 Target Report Var(flag_frame_header_optimization) Optimization
441 Optimize frame header.
447 Target Report Var(TARGET_LOAD_STORE_PAIRS) Init(1)
448 Enable load/store bonding.
451 Target RejectNegative JoinedOrMissing Var(mips_cb) Report Enum(mips_cb_setting) Init(MIPS_CB_OPTIMAL)
452 Specify the compact branch usage policy.
455 Name(mips_cb_setting) Type(enum mips_cb_setting)
456 Policies available for use with -mcompact-branches=:
459 Enum(mips_cb_setting) String(never) Value(MIPS_CB_NEVER)
462 Enum(mips_cb_setting) String(optimal) Value(MIPS_CB_OPTIMAL)
465 Enum(mips_cb_setting) String(always) Value(MIPS_CB_ALWAYS)
468 Target Report Mask(LOONGSON_MMI)
469 Use Loongson MultiMedia extensions Instructions (MMI) instructions.
472 Target Report Mask(LOONGSON_EXT)
473 Use Loongson EXTension (EXT) instructions.
476 Target Report Var(TARGET_LOONGSON_EXT2)
477 Use Loongson EXTension R2 (EXT2) instructions.