zephyr/include/arch/arc/asm-compat/asm-macro-64-bit-gnu.h
Vineet Gupta 3d56fff7a4 ARC: add asm-compat macros
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>
2021-05-07 14:55:49 -05:00

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