Add asm-compat macroses to be able to co create assembler code which works and can be build for both ARCv2 and ARCv3 ISAs Signed-off-by: Vineet Gupta <vgupta@synopsys.com> Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com> Signed-off-by: Evgeniy Paltsev <PaltsevEvgeniy@gmail.com>
114 lines
1.5 KiB
C
114 lines
1.5 KiB
C
/* SPDX-License-Identifier: Apache-2.0 */
|
|
/*
|
|
* Copyright (C) 2021 Synopsys, Inc. (www.synopsys.com)
|
|
*
|
|
* Author: Vineet Gupta <vgupta@synopsys.com>
|
|
*
|
|
* pseudo-mnemonics for ALU/Memory instructions for ARC64 ISA
|
|
*/
|
|
|
|
.irp cc,,.hi,.nz
|
|
.macro MOVR\cc d, s
|
|
movl\cc \d, \s
|
|
.endm
|
|
.endr
|
|
|
|
.irp aa,,.ab,.as,.aw
|
|
.macro LDR\aa d, s, off=0
|
|
ldl\aa \d, [\s, \off]
|
|
.endm
|
|
.endr
|
|
|
|
.irp aa,.ab,.as,.aw
|
|
.macro STR\aa d, s, off=0
|
|
; workaround assembler barfing for ST r, [@symb, 0]
|
|
.if \off == 0
|
|
stl\aa \d, [\s]
|
|
.else
|
|
stl\aa \d, [\s, \off]
|
|
.endif
|
|
.endm
|
|
.endr
|
|
|
|
.macro STR d, s, off=0
|
|
.if \off == 0
|
|
stl \d, [\s]
|
|
.else
|
|
.if \off > 256
|
|
STR.as \d, \s, \off / 8
|
|
.else
|
|
stl \d, [\s, \off]
|
|
.endif
|
|
.endif
|
|
.endm
|
|
|
|
.macro PUSHR r
|
|
pushl \r
|
|
.endm
|
|
|
|
.macro POPR r
|
|
popl \r
|
|
.endm
|
|
|
|
.macro LRR d, aux
|
|
lrl \d, \aux
|
|
.endm
|
|
|
|
.macro SRR d, aux
|
|
srl \d, \aux
|
|
.endm
|
|
|
|
.irp cc,,.nz
|
|
.macro ADDR\cc d, s, v
|
|
addl\cc \d, \s, \v
|
|
.endm
|
|
.endr
|
|
|
|
.irp cc,,.nz
|
|
.macro ADD2R\cc d, s, v
|
|
add2l\cc \d, \s, \v
|
|
.endm
|
|
.endr
|
|
|
|
.macro ADD3R d, s, v
|
|
add3l \d, \s, \v
|
|
.endm
|
|
|
|
.macro SUBR d, s, v
|
|
subl \d, \s, \v
|
|
.endm
|
|
|
|
.macro BMSKNR d, s, v
|
|
bmsknl \d, \s, \v
|
|
.endm
|
|
|
|
.macro LSRR d, s, v
|
|
lsrl \d, \s, \v
|
|
.endm
|
|
|
|
.macro ASLR d, s, v
|
|
asll \d, \s, \v
|
|
.endm
|
|
|
|
.macro ANDR d, s, v
|
|
andl \d, \s, \v
|
|
.endm
|
|
|
|
.macro ORR, d, s, v
|
|
orl \d, \s, \v
|
|
.endm
|
|
|
|
.irp cc,ne,eq
|
|
.macro BRR\cc d, s, lbl
|
|
br\cc\()l \d, \s, \lbl
|
|
.endm
|
|
.endr
|
|
|
|
.macro BREQR d, s, lbl
|
|
breql \d, \s, \lbl
|
|
.endm
|
|
|
|
.macro CMPR op1, op2
|
|
cmpl \op1, \op2
|
|
.endm
|