1 ; Options for the Synopsys DesignWare ARC port of the compiler
3 ; Copyright (C) 2005-2015 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/>.
25 Target Report RejectNegative Mask(BIG_ENDIAN)
26 Compile code for big endian mode.
29 Target Report RejectNegative InverseMask(BIG_ENDIAN)
30 Compile code for little endian mode. This is the default.
33 Target Report RejectNegative Mask(NO_COND_EXEC)
34 Disable ARCompact specific pass to generate conditional execution instructions.
38 Generate ARCompact 32-bit code for ARC600 processor.
46 Generate ARCompact 32-bit code for ARC601 processor.
50 Generate ARCompact 32-bit code for ARC700 processor.
57 Target Report Mask(MIXED_CODE_SET)
58 Tweak register allocation to help 16-bit instruction generation.
59 ; originally this was:
60 ;Generate ARCompact 16-bit instructions intermixed with 32-bit instructions
61 ; but we do that without -mmixed-code, too, it's just a different instruction
62 ; count / size tradeoff.
64 ; We use an explict definition for the negative form because that is the
65 ; actually interesting option, and we want that to have its own comment.
67 Target Report RejectNegative Mask(VOLATILE_CACHE_SET)
68 Use ordinarily cached memory accesses for volatile references.
71 Target Report RejectNegative InverseMask(VOLATILE_CACHE_SET)
72 Enable cache bypass for volatile references.
75 Target Report Mask(BARREL_SHIFTER)
76 Generate instructions supported by barrel shifter.
79 Target Report Mask(NORM_SET)
80 Generate norm instruction.
83 Target Report Mask(SWAP_SET)
84 Generate swap instruction.
87 Target Report Mask(MUL64_SET)
88 Generate mul64 and mulu64 instructions.
91 Target Report Mask(NOMPY_SET)
92 Do not generate mpy instructions for ARC700.
95 Target Report Mask(EA_SET)
96 Generate Extended arithmetic instructions. Currently only divaw, adds, subs and sat16 are supported.
100 Dummy flag. This is the default unless FPX switches are provided explicitly.
103 Target Report Mask(LONG_CALLS_SET)
104 Generate call insns as register indirect calls.
107 Target Report Mask(NO_BRCC_SET)
108 Do no generate BRcc instructions in arc_reorg.
111 Target Report InverseMask(NO_SDATA_SET)
112 Generate sdata references. This is the default, unless you compile for PIC.
115 Target Report Mask(NO_MILLICODE_THUNK_SET)
116 Do not generate millicode thunks (needed only with -Os).
119 Target Report Mask(SPFP_COMPACT_SET)
120 FPX: Generate Single Precision FPX (compact) instructions.
123 Target Report Mask(SPFP_COMPACT_SET) MaskExists
124 FPX: Generate Single Precision FPX (compact) instructions.
127 Target Report Mask(SPFP_FAST_SET)
128 FPX: Generate Single Precision FPX (fast) instructions.
131 Target Report Mask(ARGONAUT_SET)
132 FPX: Enable Argonaut ARC CPU Double Precision Floating Point extensions.
135 Target Report Mask(DPFP_COMPACT_SET)
136 FPX: Generate Double Precision FPX (compact) instructions.
139 Target Report Mask(DPFP_COMPACT_SET) MaskExists
140 FPX: Generate Double Precision FPX (compact) instructions.
143 Target Report Mask(DPFP_FAST_SET)
144 FPX: Generate Double Precision FPX (fast) instructions.
147 Target Report Mask(DPFP_DISABLE_LRSR)
148 Disable LR and SR instructions from using FPX extension aux registers.
151 Target Report Mask(SIMD_SET)
152 Enable generation of ARC SIMD instructions via target-specific builtins.
155 Target RejectNegative Joined Var(arc_cpu) Enum(processor_type) Init(PROCESSOR_NONE)
156 -mcpu=CPU Compile code for ARC variant CPU.
159 Name(processor_type) Type(enum processor_type)
162 Enum(processor_type) String(ARC600) Value(PROCESSOR_ARC600)
165 Enum(processor_type) String(ARC601) Value(PROCESSOR_ARC601)
168 Enum(processor_type) String(ARC700) Value(PROCESSOR_ARC700)
171 Target RejectNegative Joined UInteger Var(arc_size_opt_level) Init(-1)
172 size optimization level: 0:none 1:opportunistic 2: regalloc 3:drop align, -Os.
175 Target Report PchIgnore Var(TARGET_DUMPISIZE)
176 Annotate assembler instructions with estimated addresses.
179 Target RejectNegative Joined UInteger Var(arc_multcost) Init(-1)
180 Cost to assume for a multiply instruction, with 4 being equal to a normal insn.
183 Target RejectNegative Var(arc_tune, TUNE_ARC600)
187 Target RejectNegative Var(arc_tune, TUNE_ARC600)
191 Target RejectNegative Var(arc_tune, TUNE_ARC700_4_2_STD)
192 Tune for ARC700 R4.2 Cpu with standard multiplier block.
195 Target RejectNegative Var(arc_tune, TUNE_ARC700_4_2_XMAC)
196 Tune for ARC700 R4.2 Cpu with XMAC block.
199 Target RejectNegative Var(arc_tune, TUNE_ARC700_4_2_XMAC)
200 Tune for ARC700 R4.2 Cpu with XMAC block.
203 Target RejectNegative Var(arc_tune, TUNE_ARC700_4_2_XMAC)
204 Tune for ARC700 R4.2 Cpu with XMAC block.
207 Target Var(TARGET_INDEXED_LOADS)
208 Enable the use of indexed loads.
211 Target Var(TARGET_AUTO_MODIFY_REG)
212 Enable the use of pre/post modify with register displacement.
215 Target Report Mask(MULMAC_32BY16_SET)
216 Generate 32x16 multiply and mac instructions.
218 ; the initializer is supposed to be: Init(REG_BR_PROB_BASE/2) ,
219 ; alas, basic-block.h is not included in options.c .
220 munalign-prob-threshold=
221 Target RejectNegative Joined UInteger Var(arc_unalign_prob_threshold) Init(10000/2)
222 Set probability threshold for unaligning branches.
225 Target Var(TARGET_MEDIUM_CALLS) Init(TARGET_MMEDIUM_CALLS_DEFAULT)
226 Don't use less than 25 bit addressing range for calls.
229 Target Var(TARGET_ANNOTATE_ALIGN)
230 Explain what alignment considerations lead to the decision to make an insn short or long.
233 Target Var(TARGET_ALIGN_CALL)
234 Do alignment optimizations for call instructions.
237 Target Var(TARGET_Rcq)
238 Enable Rcq constraint handling - most short code generation depends on this.
241 Target Var(TARGET_Rcw)
242 Enable Rcw constraint handling - ccfsm condexec mostly depends on this.
245 Target Var(TARGET_EARLY_CBRANCHSI)
246 Enable pre-reload use of cbranchsi pattern.
249 Target Var(TARGET_BBIT_PEEPHOLE)
250 Enable bbit peephole2.
253 Target Var(TARGET_CASE_VECTOR_PC_RELATIVE)
254 Use pc-relative switch case tables - this enables case table shortening.
257 Target Var(TARGET_COMPACT_CASESI)
258 Enable compact casesi pattern.
261 Target Var(TARGET_Q_CLASS)
262 Enable 'q' instruction alternatives.
265 Target Var(TARGET_EXPAND_ADDDI)
266 Expand adddi3 and subdi3 at rtl generation time into add.f / adc etc.
269 ; Flags used by the assembler, but for which we define preprocessor
270 ; macro symbols as well.
273 Enable variable polynomial CRC extension.
277 Enable DSP 3.1 Pack A extensions.
281 Enable dual viterbi butterfly extension.
284 Target Report Undocumented
287 Target Report Undocumented
290 Target Report RejectNegative
291 Enable Dual and Single Operand Instructions for Telephony.
295 Enable XY Memory extension (DSP version 3).
297 ; ARC700 4.10 extension instructions
300 Enable Locked Load/Store Conditional extension.
304 Enable swap byte ordering extension instruction.
308 Enable 64-bit Time-Stamp Counter extension instruction.
311 Target Report RejectNegative InverseMask(EPILOGUE_CFI)
312 Disable generation of cfi for epilogues.
315 Target RejectNegative Mask(EPILOGUE_CFI)
316 Enable generation of cfi for epilogues.
320 Pass -EB option through to linker.
324 Pass -EL option through to linker.
328 Pass -marclinux option through to linker.
332 Pass -marclinux_prof option through to linker.
334 ;; lra is still unproven for ARC, so allow to fall back to reload with -mno-lra.
335 ;Target InverseMask(NO_LRA)
336 ; lra still won't allow to configure libgcc; see PR rtl-optimization/55464.
337 ; so don't enable by default.
343 Target RejectNegative Var(arc_lra_priority_tag, ARC_LRA_PRIORITY_NONE)
344 Don't indicate any priority with TARGET_REGISTER_PRIORITY.
346 mlra-priority-compact
347 Target RejectNegative Var(arc_lra_prioritytag, ARC_LRA_PRIORITY_COMPACT)
348 Indicate priority for r0..r3 / r12..r15 with TARGET_REGISTER_PRIORITY.
350 mlra-priority-noncompact
351 Target RejectNegative Var(arc_lra_prioritytag, ARC_LRA_PRIORITY_NONCOMPACT)
352 Reduce priority for r0..r3 / r12..r15 with TARGET_REGISTER_PRIORITY.
355 Target Report Var(TARGET_UCB_MCOUNT)
356 instrument with mcount calls as in the ucb code.
358 ; backward-compatibility aliases, translated by DRIVER_SELF_SPECS
364 Target RejectNegative Joined
366 ; Unfortunately, listing the full option name gives us clashes
367 ; with OPT_opt_name being claimed for both opt_name and opt-name,
368 ; so we leave out the last character or more.