NAME=add 1 + 2
FILE=-
CMDS="ae 2,1,+"
EXPECT=<<EOF
0x3
EOF
RUN

NAME=add 2 + 1
FILE=-
CMDS="ae 1,2,+"
EXPECT=<<EOF
0x3
EOF
RUN

NAME=sub 2 - 3
FILE=-
CMDS="ae 3,2,-"
EXPECT=<<EOF
0xffffffffffffffff
EOF
RUN

NAME=sub 3 - 2
FILE=-
CMDS="ae 2,3,-"
EXPECT=<<EOF
0x1
EOF
RUN

NAME=sub 3 - 3
FILE=-
CMDS="ae 3,3,-"
EXPECT=<<EOF
0
EOF
RUN

NAME=mul 3 6502 8051 apple arm-16 arm-32 arm-64 brainfuck cmd_aae cmd_aea cmd_aetr cmd_aex cmd_pae cmp cond debug_esil esil flag_tests intreg math mips sh step step-back step-over syscall x86-32 x86-64 xtensa 2
FILE=-
CMDS="ae 2,3,*"
EXPECT=<<EOF
0x6
EOF
RUN

NAME=mul 2 6502 8051 apple arm-16 arm-32 arm-64 brainfuck cmd_aae cmd_aea cmd_aetr cmd_aex cmd_pae cmp cond debug_esil esil flag_tests intreg math mips sh step step-back step-over syscall x86-32 x86-64 xtensa 3
FILE=-
CMDS="ae 3,2,*"
EXPECT=<<EOF
0x6
EOF
RUN

NAME=div 6 / 3
FILE=-
CMDS="ae 3,6,/"
EXPECT=<<EOF
0x2
EOF
RUN

NAME=div 3 / 6
FILE=-
CMDS="ae 6,3,/"
EXPECT=<<EOF
0
EOF
RUN

NAME=div by zero 0 / 3
FILE=-
CMDS=<<EOF
ae 0,3,/
ae*
EOF
EXPECT=<<EOF
0
trap: 3
trap-code: 0
EOF
RUN

NAME=div by zero 3 / 0
FILE=-
CMDS=<<EOF
ae 3,0,/
ae*
EOF
EXPECT=<<EOF
0
trap: 0
trap-code: 0
EOF
RUN

NAME=float div 1.0 / 1.0
FILE=-
CMDS="ae 0x3ff0000000000000,0x3ff0000000000000,F/"
EXPECT=<<EOF
0x3ff0000000000000
EOF
RUN

NAME=float mul 1.0 * 1.0
FILE=-
CMDS="ae 0x3ff0000000000000,0x3ff0000000000000,F*"
EXPECT=<<EOF
0x3ff0000000000000
EOF
RUN

NAME=float add 1.0 + 1.0
FILE=-
CMDS="ae 0x3ff0000000000000,0x3ff0000000000000,F+"
EXPECT=<<EOF
0x4000000000000000
EOF
RUN

NAME=float sub 1.0 - 1.0
FILE=-
CMDS="ae 0x3ff0000000000000,0x3ff0000000000000,F-"
EXPECT=<<EOF
0
EOF
RUN

NAME=esil F2D binary16
FILE=malloc://16
CMDS=<<EOF
ae 16,0x3c00,F2D
ae 16,0xc000,F2D
ae 32,0x3f800000,F2D
ae 16,0x0000,F2D
ae 16,0x8000,F2D
ae 16,0x0001,F2D
ae 16,0x03ff,F2D
ae 16,0x7c00,F2D
ae 16,0xfc00,F2D
ae 16,0x7e00,F2D,NAN
EOF
EXPECT=<<EOF
0x3ff0000000000000
0xc000000000000000
0x3ff0000000000000
0
0x8000000000000000
0x3e70000000000000
0x3f0ff80000000000
0x7ff0000000000000
0xfff0000000000000
0x1
EOF
RUN

NAME=float overflow rounds to signed infinity
FILE=-
CMDS=<<EOF
ae 0x7fe0000000000000,0x7fe0000000000000,F+
ae 0x7fe0000000000000,0xffe0000000000000,F-
ae 0xffe0000000000000,0x7fe0000000000000,F*
ae 0x0010000000000000,0x7fe0000000000000,F/
ae 0x3ff0000000000000,0x3ff0000000000000,F+
EOF
EXPECT=<<EOF
0x7ff0000000000000
0xfff0000000000000
0xfff0000000000000
0x7ff0000000000000
0x4000000000000000
EOF
RUN
