MWDT vs. GCC option matrix
Option |
ARChitect |
CCAC |
GCC |
MDB |
Supported core |
Notes |
---|---|---|---|---|---|---|
Processor Family |
ARC600 |
-a6 |
-mcpu=arc600 |
-a6 |
ARC600 |
|
ARC700 |
-a7 |
-mcpu=arc700 |
-a7 |
ARC700 |
||
ARCv2EM |
-av2em |
-mcpu=arcem |
-av2em |
ARC EM |
||
ARCv2HS |
-av2hs |
-mcpu=archs |
-av2hs |
ARC HS |
||
ARC600 Core Versions |
Version 1 |
-core1 |
N.A. |
-core1 |
ARC600 |
Initial version |
Version 2 |
-core2 |
N.A. |
-core2 |
ARC600 |
Zeroed BCR Region 0xc0 |
|
Version 3 |
-core3 |
N.A. |
-core3 |
ARC600 |
LD/ST Queue changes |
|
Version 4 |
-core4 |
N.A. |
-core4 |
ARC600 |
SYNC instruction |
|
Version 5 |
-core5 |
N.A. |
-core5 |
ARC600 |
ARC600_BUILD BCR |
|
Version 6 |
-core6 |
N.A. |
-core6 |
ARC600 |
Misaligned LD/ST traps. |
|
ARC700 Core Versions |
Version 1 |
-core1 |
N.A. |
-core1 |
ARC700 |
Initial version |
Version 2 |
-core2 |
N.A. |
-core2 |
ARC700 |
Zeroed BCR Region 0xc0 |
|
Version 3 |
-core3 |
N.A. |
-core3 |
ARC700 |
MXP Debug Architecture |
|
Version 4 |
-core4 |
N.A. |
-core4 |
ARC700 |
SWAPE, LLOCK,SCOND instr |
|
ARC EM Core Versions |
Version 0 |
-core0 |
Not supported |
-core0 |
ARC EM |
EM 1.0 (Initial version) |
Version 1 |
-core1 |
N.A. |
-core1 |
ARC EM |
EM 1.1 (Default version) |
|
ARC HS Core Versions |
Version 0 |
-core0 |
Not supported |
-core0 |
ARC HS |
HS 1.0 (Initial version) |
Version 1 |
-core1 |
N.A. |
||||
Shift ISA Extension (shift_option) |
Option 1 |
-Xsa |
N.A. |
-Xsa (-Xshift_assist) |
||
Option 2 |
-Xbs |
N.A. |
-Xbs (-Xbarrel_shifter) |
|||
Option 3 |
-Xsa |
-mbarrel-shifter |
-Xsa -Xbs |
All |
Default ON |
|
Code Density Extension |
code_density_option |
-Xcd |
-mcode-density |
-Xcd (-Xcode_density ) |
ARC EM, ARC HS |
Default for HS, EM |
Bitscan ISA Extension |
bitscan_option |
-Xnorm |
-mnorm |
-Xnorm |
All |
Default for HS |
SWAP ISA Extension |
swap_option |
-Xswap |
-mswap |
-Xswap |
All |
Default for HS |
DIV_REM ISA option |
div_rem_option |
-Xdiv_rem |
-mdiv-rem |
-Xdiv_rem |
ARC EM, ARC HS |
radix2 is default for EM and HS |
Multiply ISA Option (mpy_option) |
wlh1 |
-Xmpy16 |
-mmpy-option=16 |
-Xmpy16 |
ARC600, ARC EM |
|
wlh2 |
-Xmpy |
-mmpy-option=2 |
-Xmpy |
except ARC HS |
-Xmpy16 is implied |
|
wlh1, wlh2, wlh3, wlh |
-Xmpy_cycles= 1,2,3,4,5 |
-mmpy-option={3-6} |
-Xmpy_cycles=1,2,3,4,5 |
ARC700, ARC EM |
-Xmpy is implied if spec |
|
wlh7 |
-Xmac |
-mmpy-option=7 |
ARC HS |
-Xmac implies -Xmpy and |
||
wlh8 |
-Xmacd |
-mmpy-option=8 |
ARC HS |
-Xmacd implies -Xmac |
||
wlh9 |
-Xqmpyh |
-mmpy-option=9 |
ARC HS |
-Xqmpyh implies -Xmacd |
||
A600 MPY |
-Xmult32 |
-Xmult32 |
ARC600 |
|||
A600 MPY cycles |
-Xmult32_cycles=N |
-mulcost={1,2,3,4,5} |
-Xmult32_cycles=N |
ARC600 |
-Xmult32 is implied |
|
64-bit Load and Store |
ll64 |
-Xll64 |
-mll64 |
-Xll64 |
ARC HS |
LDD/STD |
Unaligned Memory access |
-XUnaligned |
N.A. |
-XUnaligned |
ARC HS |
Unaligned memory accesses |
|
Atomic Option |
atomic_option |
-Xatomic |
-matomic |
-Xatomic |
Default |
|
Extended Arithmetic Instructions |
-Xea |
-mEA |
-Xea |
ARC600, ARC700 |
||
Xlib MetaWare Opt |
-Xlib |
N.A |
-Xlib |
ARC600 |
Expansion: -Xmult32 -Xno |
|
-Xlib |
N.A |
-Xlib |
ARC601 |
Expansion: -Xbs -Xmult32 |
||
-Xlib |
N.A. |
-Xlib |
ARC700 |
Expansion: -Xmpy (-Xnorm |
||
-Xlib |
N.A. |
-Xlib |
ARC EM |
Expansion: -Xbs -Xmpy -X |
||
-Xlib |
N.A. |
-Xlib |
ARC HS |
Expansion: -Xmpy -Xll64 |
||
Endianness |
Big |
-HB |
-mbig-endian |
N/A |
MDB reads endianess from ELF |
|
Little |
-HL |
-mlittle-endian |
N/A |
|||
PC Width |
pc_size |
-Hpc_width= 16,20,24,28, |
N.A. |
-pc_width=16,20,24,28,32 |
except ARC HS |
For HS, fixed pc_width=32 |
Loop Counter Width |
lpc_size |
-Hlpc_width= 0,8,12,16,2 |
N.A. |
-lpc_width=8,12,16,20,24 |
except ARC HS |
For HS, fixed lpc_width=32 |
Address size |
addr_size |
N/A |
N.A. |
-addr_size=16,20,24,32 |
ARC EM |
For HS, fixed addr_size=32 |
Number of Interrupts |
number_of_interrupts |
N/A |
N.A. |
-interrupts=1..240 |
All |
For 600,700 only 8,16,24 |
Interrupt Vector Base |
invbase_preset |
N/A |
N.A. |
-interrupt_base=addr |
All |
|
Fast Interrupts |
irq_option |
N/A |
N.A. |
-firq |
ARC EM, ARC HS |
|
External Interrupts |
external_interrupts |
N/A |
N.A. |
-ext_interrupts=1..240 |
ARC EM, ARC HS |
|
Number of priority level |
number_of_levels |
N/A |
N.A. |
-interrupt_priorities=1..16 |
ARC EM, ARC HS |
|
Number of Registers (ngr_num_regs) |
16 |
N.A. |
N/A |
all |
MDB reads -rf16 info fro |
|
32 |
Default |
Default |
N/A |
all |
CCAC assumes 32 registers |
|
Number of Register Bank |
ngf_num_banks |
N.A. |
-rgf_num_banks=1,2,3,4 |
ARC EM, ARC HS |
EM - 2 register banks, H |
|
Number of banked registers |
ngf_banked_regs |
-Hrgf_banked_regs=N |
N.A. |
-rgf_banked_regs=4,8,16,32 |
ARC EM |
For HS it is 32 (or 16 w |
Actionpoints |
num_actionpoints |
|||||
Timer 0 |
-Xtimer0 |
N.A. |
-Xtimer0 |
All |
||
Timer 1 |
-Xtimer1 |
N.A. |
-Xtimer1 |
All |
||
DCCM Size |
dccm_size |
N/A |
N.A. |
-dccm_size=size |
All |
User linker map file to |
DCCM Base Address |
dccm_base |
N/A |
N.A. |
-dccm_base=addr |
All |
|
ICCM Size |
iccm0_size |
N/A |
N.A. |
-iccm_size=size |
All |
|
iccm1_size |
-iccm1_size=size |
|||||
ICCM Base Address |
iccm0_base |
N/A |
N.A. |
-iccm_base=addr, -iccm0_X |
All |
|
iccm1_base |
-iccm1_base=addr |
All |
||||
Data Cache |
dc_size, dc_bsize, c_ways, |
N/A |
-param l1-cache-size -param l1-cache-line-size N.A. |
-dcache=csz,lsz,w,attrib csz is 512 to 32k lsz is 8,16,32,64,128,256 w is 1,2,4 attrib is a or o |
All |
csz=cache size, lsz=line size, w=ways, attrib is optional,random |
Instruction Cache |
ic_size ic_bsize ic_ways |
N/A |
N.A. |
-icache=csz,lsz,w,attrib csz is 512 to 32k lsz is 8,16,32,64,128,256 w is 1,2,4 attrib is a or o |
All |
Same format as -dcache csz=cache size, lsz=line size, w=ways, attrib is optional,random |
Instruction Fetch Queue |
ifqueue_size |
ARC EM, ARC HS |
||||
ifqueue_burst_size |
ARC EM, ARC HS |
|||||
DSP Dual 16x16 MAC |
-Xxmac_d16 |
-Xxmac_d16 |
ARC600, ARC700 |
Adds instructions MULDW, |
||
DSP 24x24 MAC |
-Xxmac_24 |
-Xxmac_24 |
ARC600, ARC700 |
Adds instructions MULT, |
||
DSP 32x16 MPY |
-Xmul32x16 |
-mmul32x16 |
-Xmul32x16 |
ARC600, ARC700 |
Adds Instructions MULULW |
|
DSP Dual Floating Point |
32x16 MUL/MAC |
-Xdmulpf |
-Xdmulpf |
ARC 600 |
Adds instructions DMULPF |
|
DSP XY memory |
-Xxy |
-mxy |
-Xxy |
ARC600, ARC700 |
||
XY size |
-Xxysize=size |
N.A. |
-Xxysize=size |
ARC600, ARC700 |
||
XY banks |
-Xxybanks=banks |
N.A. |
-Xxybanks=banks |
ARC600, ARC700 |
||
XY base X |
-Xxylsbasex=addr |
N.A. |
-Xxylsbasex=addr |
ARC600, ARC700 |
||
XY base Y |
-Xxylsbasey=addr |
N.A. |
-Xxylsbasey=addr |
ARC600, ARC700 |
||
FPX (floating pt.) |
Single |
-Xspfp |
-mspfp |
-Xspfp |
except ARC HS |
Also -Xspfp_compact, -Xs |
Double |
-Xdpfp |
-mdpfp |
-Xdpfp |
except ARC HS |
Also -Xdpfp_compact, -Xd |
|
eFPX (new fp unit) |
ARC HS |
No support in compiler/d |
||||
SIMD Unit |
-Xsimd |
-msimd |
-Xsimd |
ARC700 |
||
Time Stamp Counter |
-Xrtsc |
N.A. |
-Xrtsc |
ARC700 |
RTSC instruction |
|
Stack Boundary Check |
N/A |
N.A. |
-Xstack_check |
ARC700 |
||
Memory Management Unit |
Version 2 |
N/A |
N.A. |
-mmu |
ARC700 |
|
Version3 |
N/A |
N.A. |
-mmuv3 -prop=mmu_pagesize=NNN -prop=jtlb_ways=WWW -prop=mmu_osm=N |
ARC700 ARC700 ARC700 ARC700 |
Provides more configurab Set the page size in byt change the number of way Set the OSM bit, N=1 or |
|
FPU (IEEE fp) |
Sngl |
-mfpu=fpus |
ARC EM, ARC HS |
|||
Sngl with DIV/SQRT |
-mfpu=fpus_dis |
ARC EM, ARC HS |
||||
Sngl with fused ops |
-mfpu=fpus_fma |
ARC EM, ARC HS |
||||
Sngl all extensions |
-mfpu=fpus_all |
ARC EM, ARC HS |
||||
Dbl |
-mfpu=fpud |
ARC HS |
||||
Dbl with DIV/SQRT |
-mfpu=fpud_dis |
ARC HS |
||||
Dbl with fused ops |
-mfpu=fpud_fma |
ARC HS |
||||
Dbl all extensions |
-mfpu=fpud_all |
ARC HS |
||||
Dbl assist insns |
-mfpu=fpuda |
ARC EM |