NAME=micromips on gnu
FILE=-
CMDS=<<EOF
rasm2 -a mips.gnu -b32 -d 22fdd018
rasm2 -a mips.gnu -b32 -c micro -d 22fdd018
EOF
EXPECT=<<EOF
0x18d0fd22
lw t1, 6352(v0)
EOF
RUN

NAME=micromips on cs
FILE=-
CMDS=<<EOF
rasm2 -a mips -b32 -d 22fdd018
?e --
rasm2 -a mips -b32 -c micro -d 22fdd018
?e --
rasm2 -a mips.gnu -b32 -d 22fdd018
?e --
rasm2 -a mips.gnu -b32 -c micro -d 22fdd018
EOF
EXPECT=<<EOF
invalid
--
lw t1, 0x18d0(v0)
--
0x18d0fd22
--
lw t1, 6352(v0)
EOF
RUN

NAME=micromips code block and endian test CAPSTONE
BROKEN=1
FILE=-
CMDS=<<EOF
rasm2 -a mips -b16 -c micro -D 4fe522fdd01840e40007ae920e2541a49860cc0630847090
?e --
# THIS LINE SEGFAULTS ONLY IN THE CI
# rasm2 -e -a mips -b16 -c micro -D 4fe522fdd01840e40007ae920e2541a49860cc0630847090
EOF
EXPECT=<<EOF
0x00000000   4                 4fe522fd  invalid
0x00000004   4                 d01840e4  sb a2, -0x1bc0(s0)
0x00000008   2                     0007  addu16 a2, s0, s0
0x0000000a   4                 ae920e25  slti s5, t6, 0x250e
0x0000000e   4                 41a49860  invalid
0x00000012   2                     cc06  addu16 a1, a2, a0
0x00000014   2                     3084  movep a1, a2, zero, v1
0x00000016   2                     7090  unaligned
--
0x00000000   2                     4fe5  addiusp -0x38
0x00000002   4                 22fdd018  swm32 s0, s1, s2, s3, s4, s5, s6, ra, 0x18(sp)
0x00000006   4                 40e40007  beqzc a0, 0xe
0x0000000a   2                     ae92  bnez16 a1, 0x24
0x0000000c   2                     0e25  move s1, a1
0x0000000e   4                 41a49860  lui a0, 0x9860
0x00000012   2                     cc06  b16 0xc
0x00000014   4                 30847090  addiu a0, a0, 0x7090
EOF
RUN

NAME=micromips code block and endian test GNU
FILE=-
CMDS=<<EOF
rasm2 -a mips.gnu -b16 -c micro -D 4fe522fdd01840e40007ae920e2541a49860cc0630847090
?e --
rasm2 -e -a mips.gnu -b16 -c micro -D 4fe522fdd01840e40007ae920e2541a49860cc0630847090
EOF
EXPECT=<<EOF
0x00000000   2                     4fe5  0xe54f
0x00000002   4                 22fdd018  lw t1, 6352(v0)
0x00000006   2                     40e4  0xe440
0x00000008   2                     0007  addu a2, s0, s0
0x0000000a   4                 ae920e25  slti s5, t6, 9486
0x0000000e   2                     41a4  0xa441
0x00000010   4                 9860cc06  lwl a0, 1740(t8)
0x00000014   2                     3084  movep a1,a2, zero, v1
0x00000016   2                     7090  slti v1, s0, 0
--
0x00000000   2                     4fe5  addiu sp, sp, -56
0x00000002   4                 22fdd018  swm s0-s6,ra, 24(sp)
0x00000006   4                 40e40007  beqzc a0, 0x00000019
0x0000000a   2                     ae92  bnez a1, 0x00000031
0x0000000c   2                     0e25  move s1, a1
0x0000000e   4                 41a49860  lui a0, 0x9860
0x00000012   2                     cc06  b 0x00000021
0x00000014   4                 30847090  addiu a0, a0, 28816
EOF
RUN

NAME=both
BROKEN=1
FILE=-
CMDS=<<EOF
rasm2 -a mips -b16 -c micro -D 4fe522fdd01840e40007ae920e2541a49860cc0630847090
?e gnu
rasm2 -a mips.gnu -b16 -c micro -D 4fe522fdd01840e40007ae920e2541a49860cc0630847090
?e cs
rasm2 -e -a mips -b16 -c micro -D 4fe522fdd01840e40007ae920e2541a49860cc0630847090
?e gnu
rasm2 -e -a mips.gnu -b16 -c micro -D 4fe522fdd01840e40007ae920e2541a49860cc0630847090
?e cs 32bit
rasm2 -e -a mips -b32 -c micro -D 4fe522fdd01840e40007ae920e2541a49860cc0630847090
?e gnu 32bit
rasm2 -e -a mips.gnu -b32 -c micro -D 4fe522fdd01840e40007ae920e2541a49860cc0630847090
EOF
EXPECT=<<EOF
0x00000000   4                 4fe522fd  invalid
0x00000004   4                 d01840e4  sb a2, -0x1bc0(s0)
0x00000008   2                     0007  addu16 a2, s0, s0
0x0000000a   4                 ae920e25  slti s5, t6, 0x250e
0x0000000e   4                 41a49860  invalid
0x00000012   2                     cc06  addu16 a1, a2, a0
0x00000014   2                     3084  movep a1, a2, zero, v1
0x00000016   2                     7090  unaligned
gnu
0x00000000   2                     4fe5  0xe54f
0x00000002   4                 22fdd018  lw t1, 6352(v0)
0x00000006   2                     40e4  0xe440
0x00000008   2                     0007  addu a2, s0, s0
0x0000000a   4                 ae920e25  slti s5, t6, 9486
0x0000000e   2                     41a4  0xa441
0x00000010   4                 9860cc06  lwl a0, 1740(t8)
0x00000014   2                     3084  movep a1,a2, zero, v1
0x00000016   2                     7090  unaligned
cs
0x00000000   2                     4fe5  addiusp -0x38
0x00000002   4                 22fdd018  swm32 s0, s1, s2, s3, s4, s5, s6, ra, 0x18(sp)
0x00000006   4                 40e40007  beqzc a0, 0xe
0x0000000a   2                     ae92  bnez16 a1, 0x24
0x0000000c   2                     0e25  move s1, a1
0x0000000e   4                 41a49860  lui a0, 0x9860
0x00000012   2                     cc06  b16 0xc
0x00000014   4                 30847090  addiu a0, a0, 0x7090
gnu
0x00000000   2                     4fe5  addiu sp, sp, -56
0x00000002   4                 22fdd018  swm s0-s6,ra, 24(sp)
0x00000006   4                 40e40007  beqzc a0, 0x00000019
0x0000000a   2                     ae92  bnez a1, 0x00000031
0x0000000c   2                     0e25  move s1, a1
0x0000000e   4                 41a49860  lui a0, 0x9860
0x00000012   2                     cc06  b 0x00000021
0x00000014   4                 30847090  addiu a0, a0, 28816
cs 32bit
0x00000000   2                     4fe5  addiusp -0x38
0x00000002   4                 22fdd018  swm32 s0, s1, s2, s3, s4, s5, s6, ra, 0x18(sp)
0x00000006   4                 40e40007  beqzc a0, 0xe
0x0000000a   2                     ae92  bnez16 a1, 0x24
0x0000000c   2                     0e25  move s1, a1
0x0000000e   4                 41a49860  lui a0, 0x9860
0x00000012   2                     cc06  b16 0xc
0x00000014   4                 30847090  addiu a0, a0, 0x7090
gnu 32bit
0x00000000   2                     4fe5  addiu sp, sp, -56
0x00000002   4                 22fdd018  swm s0-s6,ra, 24(sp)
0x00000006   4                 40e40007  beqzc a0, 0x00000019
0x0000000a   2                     ae92  bnez a1, 0x00000031
0x0000000c   2                     0e25  move s1, a1
0x0000000e   4                 41a49860  lui a0, 0x9860
0x00000012   2                     cc06  b 0x00000021
0x00000014   4                 30847090  addiu a0, a0, 28816
EOF
RUN

NAME=micromips align
FILE=-
CMDS=<<EOF
-a mips
-e asm.cpu=micro
-e cfg.bigendian=true
-b 16
wx 41bc0002339c821f033ce1504fedff3c801cfb9d0010cbe96e8d45d9308000054be9470a
pd 10
EOF
EXPECT=<<EOF
            0x00000000      41bc0002       lui gp, 2
            0x00000004      339c821f       addiu gp, gp, -0x7de1
            0x00000008      033ce150       addu gp, gp, t9
            0x0000000c      4fed           addiusp -0x28
            0x0000000e      ff3c801c       lw t9, -0x7fe4(gp)
            0x00000012      fb9d0010       sw gp, 0x10(sp)
            0x00000016      cbe9           sw ra, 0x24(sp)
            0x00000018      6e8d           addiur1sp a1, 0x18
            0x0000001a      45d9           jalr t9
            0x0000001c      30800005       addiu a0, zero, 5
EOF
RUN

NAME=micromips align
FILE=-
CMDS=<<EOF
-a mips.gnu
-e asm.cpu=micro
-e cfg.bigendian=true
-b 16
wx 41bc0002339c821f033ce1504fedff3c801cfb9d0010cbe96e8d45d9308000054be9470a
pd 10
EOF
EXPECT=<<EOF
            0x00000000      41bc0002       lui gp, 0x2
            0x00000004      339c821f       addiu gp, gp, -32225
            0x00000008      033ce150       addu gp, gp, t9
            0x0000000c      4fed           addiu sp, sp, -40
            0x0000000e      ff3c801c       lw t9, -32740(gp)
            0x00000012      fb9d0010       sw gp, 16(sp)
            0x00000016      cbe9           sw ra, 36(sp)
            0x00000018      6e8d           addiu a1, sp, 24
            0x0000001a      45d9           jalr t9
            0x0000001c      30800005       li a0, 5
EOF
RUN

NAME=micromips align
FILE=bins/elf/micromips.elf
CMDS=<<EOF
pd 10
pd 10
EOF
EXPECT=<<EOF
            ;-- section..text:
            ;-- main:
            ;-- entry0:
            ;-- _ftext:
            0x004000d0      41bc0002       lui gp, 2                   ; [04] -r-x section size 512 named .text
            0x004000d4      339c821f       addiu gp, gp, -0x7de1
            0x004000d8      033ce150       addu gp, gp, t9
            0x004000dc      4fed           addiusp -0x28
            0x004000de      ff3c801c       lw t9, -0x7fe4(gp)          ; [0x41030c:4]=0x400221
            0x004000e2      fb9d0010       sw gp, 0x10(sp)
            0x004000e6      cbe9           sw ra, 0x24(sp)
            0x004000e8      6e8d           addiur1sp a1, 0x18
            0x004000ea      45d9           jalr t9
            0x004000ec      30800005       addiu a0, zero, 5
            ;-- section..text:
            ;-- main:
            ;-- entry0:
            ;-- _ftext:
            0x004000d0      41bc0002       lui gp, 2                   ; [04] -r-x section size 512 named .text
            0x004000d4      339c821f       addiu gp, gp, -0x7de1
            0x004000d8      033ce150       addu gp, gp, t9
            0x004000dc      4fed           addiusp -0x28
            0x004000de      ff3c801c       lw t9, -0x7fe4(gp)          ; [0x41030c:4]=0x400221
            0x004000e2      fb9d0010       sw gp, 0x10(sp)
            0x004000e6      cbe9           sw ra, 0x24(sp)
            0x004000e8      6e8d           addiur1sp a1, 0x18
            0x004000ea      45d9           jalr t9
            0x004000ec      30800005       addiu a0, zero, 5
EOF
RUN

NAME=twobytes
FILE=--
CMDS=<<EOF
!!rasm2 -a mips -b16 -e -c micro -d '4fe5'
!!rasm2 -a mips.gnu -b16 -e -c micro -d '4fe5'
EOF
EXPECT=<<EOF
addiusp -0x38
addiu sp, sp, -56
EOF
RUN
