NAME=ara swap
FILE=-
CMDS=<<EOF
e asm.arch=x86
e asm.bits=64
ara+
ar rax=33
ar rax
aras
ar rax
EOF
EXPECT=<<EOF
0x00000021
0x00000000
EOF
RUN

NAME=ara swap 2
FILE=-
CMDS=<<EOF
e asm.arch=x86
e asm.bits=64
ara+
ar rax=33
ar rax
aras
ar rax
aras
ar rax
EOF
EXPECT=<<EOF
0x00000021
0x00000000
0x00000021
EOF
RUN

NAME=ara push
FILE=-
CMDS=<<EOF
e asm.arch=x86
e asm.bits=64
ara~?
ara+
ara~?
EOF
EXPECT=<<EOF
20
30
EOF
RUN

NAME=ara pop
FILE=-
CMDS=<<EOF
e asm.arch=x86
e asm.bits=64
ara~?
ara+
ara~?
ara-
ara~?
ara-
ara~?
ara-
ara~?
EOF
EXPECT=<<EOF
20
30
20
10
10
EOF
RUN

NAME=arcc+tcc
FILE=-
CMDS=<<EOF
e asm.arch=x86
e asm.bits=64
afcl
e asm.arch=arm
e asm.bits=32
arcc
e asm.arch=x86
e asm.bits=64
arcc
tcc `arcc`
afcl
EOF
EXPECT=<<EOF
amd64
amd64syscall
dlang
golang
golang_abi0
ms
p9
reg
swift
r0 reg(r0, r1, r2, r3)
rax reg(rdi, rsi, rdx, rcx, r8, r9, r10, r11)
amd64
amd64syscall
dlang
golang
golang_abi0
ms
p9
reg
swift
EOF
RUN

NAME=aras keeps borrowed arena bytes alive across ara- and arw
FILE=-
CMDS=<<EOF
e asm.arch=x86
e asm.bits=64
ar rax=0x1234
aras
ara+
aras
ara-
ara-
ar*~r15,rax
aras
ara+
aras
ara-
arw 41414141
aras
ar*~r15,rax
EOF
EXPECT=<<EOF
f rax 8 0x00000000
f r15 8 0x00000000
f rax 8 0x00000000
f r15 8 0x41414141
EOF
RUN
