; Options for the Synopsys DesignWare ARC port of the compiler
;
; Copyright (C) 2005-2021 Free Software Foundation, Inc.
;
; 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/>.

HeaderInclude
config/arc/arc-opts.h

mbig-endian
Target RejectNegative Mask(BIG_ENDIAN)
Compile code for big endian mode.

mlittle-endian
Target RejectNegative InverseMask(BIG_ENDIAN)
Compile code for little endian mode.  This is the default.

mno-cond-exec
Target RejectNegative Mask(NO_COND_EXEC)
Disable ARCompact specific pass to generate conditional execution instructions.

mA6
Target
Generate ARCompact 32-bit code for ARC600 processor.

mARC600
Target
Same as -mA6.

mARC601
Target
Generate ARCompact 32-bit code for ARC601 processor.

mA7
Target
Generate ARCompact 32-bit code for ARC700 processor.

mARC700
Target
Same as -mA7.

mjli-always
Target Mask(JLI_ALWAYS)
Force all calls to be made via a jli instruction.

mmpy-option=
Target RejectNegative Joined Enum(arc_mpy) Var(arc_mpy_option) Init(DEFAULT_arc_mpy_option)
-mmpy-option=MPY	Compile ARCv2 code with a multiplier design option.

Enum
Name(arc_mpy) Type(int)

EnumValue
Enum(arc_mpy) String(0) Value(0)

EnumValue
Enum(arc_mpy) String(none) Value(0) Canonical

EnumValue
Enum(arc_mpy) String(1) Value(1)

EnumValue
Enum(arc_mpy) String(w) Value(1) Canonical

EnumValue
Enum(arc_mpy) String(2) Value(2)

EnumValue
Enum(arc_mpy) String(mpy) Value(2)

EnumValue
Enum(arc_mpy) String(wlh1) Value(2) Canonical

EnumValue
Enum(arc_mpy) String(3) Value(3)

EnumValue
Enum(arc_mpy) String(wlh2) Value(3) Canonical

EnumValue
Enum(arc_mpy) String(4) Value(4)

EnumValue
Enum(arc_mpy) String(wlh3) Value(4) Canonical

EnumValue
Enum(arc_mpy) String(5) Value(5)

EnumValue
Enum(arc_mpy) String(wlh4) Value(5) Canonical

EnumValue
Enum(arc_mpy) String(6) Value(6)

EnumValue
Enum(arc_mpy) String(wlh5) Value(6) Canonical

EnumValue
Enum(arc_mpy) String(7) Value(7)

EnumValue
Enum(arc_mpy) String(plus_dmpy) Value(7) Canonical

EnumValue
Enum(arc_mpy) String(8) Value(8)

EnumValue
Enum(arc_mpy) String(plus_macd) Value(8) Canonical

EnumValue
Enum(arc_mpy) String(9) Value(9)

EnumValue
Enum(arc_mpy) String(plus_qmacw) Value(9) Canonical

mdiv-rem
Target Mask(DIVREM)
Enable DIV-REM instructions for ARCv2.

mcode-density
Target Mask(CODE_DENSITY)
Enable code density instructions for ARCv2.

mmixed-code
Target Ignore
Does nothing.  Preserved for backward compatibility.

; We use an explict definition for the negative form because that is the
; actually interesting option, and we want that to have its own comment.
mvolatile-cache
Target RejectNegative Mask(VOLATILE_CACHE_SET)
Use ordinarily cached memory accesses for volatile references.

mno-volatile-cache
Target RejectNegative InverseMask(VOLATILE_CACHE_SET)
Enable cache bypass for volatile references.

mbarrel-shifter
Target Mask(BARREL_SHIFTER)
Generate instructions supported by barrel shifter.

mnorm
Target Mask(NORM_SET)
Generate norm instruction.

mswap
Target Mask(SWAP_SET)
Generate swap instruction.

mmul64
Target Mask(MUL64_SET)
Generate mul64 and mulu64 instructions.

mno-mpy
Target Mask(NOMPY_SET) Warn(%qs is deprecated)
Do not generate mpy instructions for ARC700.

mea
Target Mask(EA_SET)
Generate extended arithmetic instructions, only valid for ARC700.

msoft-float
Target Mask(0)
Dummy flag. This is the default unless FPX switches are provided explicitly.

mlong-calls
Target Mask(LONG_CALLS_SET)
Generate call insns as register indirect calls.

mno-brcc
Target Mask(NO_BRCC_SET)
Do no generate BRcc instructions in arc_reorg.

msdata
Target InverseMask(NO_SDATA_SET)
Generate sdata references.  This is the default, unless you compile for PIC.

mmillicode
Target Mask(MILLICODE_THUNK_SET)
Generate millicode thunks.

mspfp
Target Mask(SPFP_COMPACT_SET)
FPX: Generate Single Precision FPX (compact) instructions.

mspfp-compact
Target Mask(SPFP_COMPACT_SET) MaskExists
FPX: Generate Single Precision FPX (compact) instructions.

mspfp-fast
Target Mask(SPFP_FAST_SET)
FPX: Generate Single Precision FPX (fast) instructions.

margonaut
Target Mask(ARGONAUT_SET)
FPX: Enable Argonaut ARC CPU Double Precision Floating Point extensions.

mdpfp
Target Mask(DPFP_COMPACT_SET)
FPX: Generate Double Precision FPX (compact) instructions.

mdpfp-compact
Target Mask(DPFP_COMPACT_SET) MaskExists
FPX: Generate Double Precision FPX (compact) instructions.

mdpfp-fast
Target Mask(DPFP_FAST_SET)
FPX: Generate Double Precision FPX (fast) instructions.

mno-dpfp-lrsr
Target Mask(DPFP_DISABLE_LRSR)
Disable LR and SR instructions from using FPX extension aux registers.

msimd
Target Mask(SIMD_SET)
Enable generation of ARC SIMD instructions via target-specific builtins.

mcpu=
Target RejectNegative Joined Var(arc_cpu) Enum(processor_type) Init(PROCESSOR_NONE)
-mcpu=CPU	Compile code for ARC variant CPU.

msize-level=
Target RejectNegative Joined UInteger Var(arc_size_opt_level) Init(-1)
Size optimization level: 0:none 1:opportunistic 2: regalloc 3:drop align, -Os.

misize
Target PchIgnore Var(TARGET_DUMPISIZE)
Annotate assembler instructions with estimated addresses.

mmultcost=
Target RejectNegative Joined UInteger Var(arc_multcost) Init(-1)
Cost to assume for a multiply instruction, with 4 being equal to a normal insn.

mtune=
Target RejectNegative ToLower Joined Var(arc_tune) Enum(arc_tune_attr) Init(ARC_TUNE_NONE)
-mtune=TUNE	Tune code for given ARC variant.

Enum
Name(arc_tune_attr) Type(int)

EnumValue
Enum(arc_tune_attr) String(arc600) Value(ARC_TUNE_ARC600)

EnumValue
Enum(arc_tune_attr) String(arc601) Value(ARC_TUNE_ARC600)

EnumValue
Enum(arc_tune_attr) String(arc7xx) Value(ARC_TUNE_ARC7XX)

EnumValue
Enum(arc_tune_attr) String(arc700) Value(ARC_TUNE_ARC700_4_2_STD)

EnumValue
Enum(arc_tune_attr) String(arc700-xmac) Value(ARC_TUNE_ARC700_4_2_XMAC)

EnumValue
Enum(arc_tune_attr) String(arc725d) Value(ARC_TUNE_ARC700_4_2_XMAC)

EnumValue
Enum(arc_tune_attr) String(arc750d) Value(ARC_TUNE_ARC700_4_2_XMAC)

EnumValue
Enum(arc_tune_attr) String(core3) Value(ARC_TUNE_CORE_3)

mindexed-loads
Target Var(TARGET_INDEXED_LOADS) Init(TARGET_INDEXED_LOADS_DEFAULT)
Enable the use of indexed loads.

mauto-modify-reg
Target Var(TARGET_AUTO_MODIFY_REG) Init(TARGET_AUTO_MODIFY_REG_DEFAULT)
Enable the use of pre/post modify with register displacement.

mmul32x16
Target Mask(MULMAC_32BY16_SET)
Generate 32x16 multiply and mac instructions.

munalign-prob-threshold=
Target Ignore
Does nothing.  Preserved for backward compatibility.

mmedium-calls
Target Var(TARGET_MEDIUM_CALLS) Init(TARGET_MMEDIUM_CALLS_DEFAULT)
Don't use less than 25 bit addressing range for calls.

mannotate-align
Target Var(TARGET_ANNOTATE_ALIGN)
Explain what alignment considerations lead to the decision to make an insn short or long.

malign-call
Target Ignore
Does nothing.  Preserved for backward compatibility.

mRcq
Target Var(TARGET_Rcq)
Enable Rcq constraint handling - most short code generation depends on this.

mRcw
Target Var(TARGET_Rcw)
Enable Rcw constraint handling - ccfsm condexec mostly depends on this.

mearly-cbranchsi
Target Var(TARGET_EARLY_CBRANCHSI)
Enable pre-reload use of cbranchsi pattern.

mbbit-peephole
Target Var(TARGET_BBIT_PEEPHOLE)
Enable bbit peephole2.

mcase-vector-pcrel
Target Var(TARGET_CASE_VECTOR_PC_RELATIVE)
Use pc-relative switch case tables - this enables case table shortening.

mcompact-casesi
Target Warn(%qs is deprecated)
Enable compact casesi pattern.

mq-class
Target Warn(%qs is deprecated)
Enable 'q' instruction alternatives.

mexpand-adddi
Target Warn(%qs is deprecated)
Expand adddi3 and subdi3 at rtl generation time into add.f / adc etc.


; Flags used by the assembler, but for which we define preprocessor
; macro symbols as well.
mcrc
Target Warn(%qs is deprecated)
Enable variable polynomial CRC extension.

mdsp-packa
Target Warn(%qs is deprecated)
Enable DSP 3.1 Pack A extensions.

mdvbf
Target Warn(%qs is deprecated)
Enable dual viterbi butterfly extension.

mmac-d16
Target Undocumented Warn(%qs is deprecated)

mmac-24
Target Undocumented Warn(%qs is deprecated)

mtelephony
Target RejectNegative Warn(%qs is deprecated)
Enable Dual and Single Operand Instructions for Telephony.

mxy
Target
Enable XY Memory extension (DSP version 3).

; ARC700 4.10 extension instructions
mlock
Target
Enable Locked Load/Store Conditional extension.

mswape
Target
Enable swap byte ordering extension instruction.

mrtsc
Target Warn(%qs is deprecated)
Enable 64-bit Time-Stamp Counter extension instruction.

EB
Target
Pass -EB option through to linker.

EL
Target
Pass -EL option through to linker.

marclinux
Target
Pass -marclinux option through to linker.

marclinux_prof
Target
Pass -marclinux_prof option through to linker.

;; lra is still unproven for ARC, so allow to fall back to reload with -mno-lra.
mlra
Target Var(arc_lra_flag) Init(1) Save
Use LRA instead of reload.

mlra-priority-none
Target RejectNegative Var(arc_lra_priority_tag, ARC_LRA_PRIORITY_NONE)
Don't indicate any priority with TARGET_REGISTER_PRIORITY.

mlra-priority-compact
Target RejectNegative Var(arc_lra_prioritytag, ARC_LRA_PRIORITY_COMPACT)
Indicate priority for r0..r3 / r12..r15 with TARGET_REGISTER_PRIORITY.

mlra-priority-noncompact
Target RejectNegative Var(arc_lra_prioritytag, ARC_LRA_PRIORITY_NONCOMPACT)
Reduce priority for r0..r3 / r12..r15 with TARGET_REGISTER_PRIORITY.

; backward-compatibility aliases, translated by DRIVER_SELF_SPECS

mEA
Target

multcost=
Target RejectNegative Joined

matomic
Target Mask(ATOMIC)
Enable atomic instructions.

mll64
Target Mask(LL64)
Enable double load/store instructions for ARC HS.

mfpu=
Target RejectNegative Joined Enum(arc_fpu) Var(arc_fpu_build) Init(DEFAULT_arc_fpu_build)
Specify the name of the target floating point configuration.

Enum
Name(arc_fpu) Type(int)

EnumValue
Enum(arc_fpu) String(fpus) Value(FPU_FPUS)

EnumValue
Enum(arc_fpu) String(fpud) Value(FPU_FPUD)

EnumValue
Enum(arc_fpu) String(fpuda) Value(FPU_FPUDA)

EnumValue
Enum(arc_fpu) String(fpuda_div) Value(FPU_FPUDA_DIV)

EnumValue
Enum(arc_fpu) String(fpuda_fma) Value(FPU_FPUDA_FMA)

EnumValue
Enum(arc_fpu) String(fpuda_all) Value(FPU_FPUDA_ALL)

EnumValue
Enum(arc_fpu) String(fpus_div) Value(FPU_FPUS_DIV)

EnumValue
Enum(arc_fpu) String(fpud_div) Value(FPU_FPUD_DIV)

EnumValue
Enum(arc_fpu) String(fpus_fma) Value(FPU_FPUS_FMA)

EnumValue
Enum(arc_fpu) String(fpud_fma) Value(FPU_FPUD_FMA)

EnumValue
Enum(arc_fpu) String(fpus_all) Value(FPU_FPUS_ALL)

EnumValue
Enum(arc_fpu) String(fpud_all) Value(FPU_FPUD_ALL)

mtp-regno=
Target RejectNegative Joined UInteger Var(arc_tp_regno) Init(TARGET_ARC_TP_REGNO_DEFAULT)
Specify thread pointer register number.

mtp-regno=none
Target RejectNegative Var(arc_tp_regno,-1)

mbitops
Target Var(TARGET_NPS_BITOPS) Init(TARGET_NPS_BITOPS_DEFAULT)
Enable use of NPS400 bit operations.

mcmem
Target Var(TARGET_NPS_CMEM) Init(TARGET_NPS_CMEM_DEFAULT)
Enable use of NPS400 xld/xst extension.

munaligned-access
Target Var(unaligned_access) Init(UNALIGNED_ACCESS_DEFAULT)
Enable unaligned word and halfword accesses to packed data.

mirq-ctrl-saved=
Target RejectNegative Joined Var(arc_deferred_options) Defer
Specifies the registers that the processor saves on an interrupt entry and exit.

mrgf-banked-regs=
Target RejectNegative Joined Var(arc_deferred_options) Defer
Specifies the number of registers replicated in second register bank on entry to fast interrupt.

mlpc-width=
Target RejectNegative Joined Enum(arc_lpc) Var(arc_lpcwidth) Init(32)
Sets LP_COUNT register width.  Possible values are 8, 16, 20, 24, 28, and 32.

Enum
Name(arc_lpc) Type(int)

EnumValue
Enum(arc_lpc) String(8) Value(8)

EnumValue
Enum(arc_lpc) String(16) Value(16)

EnumValue
Enum(arc_lpc) String(20) Value(20)

EnumValue
Enum(arc_lpc) String(24) Value(24)

EnumValue
Enum(arc_lpc) String(28) Value(28)

EnumValue
Enum(arc_lpc) String(32) Value(32)

mrf16
Target Mask(RF16)
Enable 16-entry register file.

mbranch-index
Target Var(TARGET_BRANCH_INDEX) Init(DEFAULT_BRANCH_INDEX)
Enable use of BI/BIH instructions when available.

mcode-density-frame
Target Var(TARGET_CODE_DENSITY_FRAME) Init(TARGET_CODE_DENSITY_FRAME_DEFAULT)
Enable ENTER_S and LEAVE_S opcodes for ARCv2.
