test_cases:
  -
    input:
      bytes: [ 0x24, 0x48, 0xc7, 0x00 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "and $t1, $a2, $a3"
  -
    input:
      bytes: [ 0x67, 0x45, 0xc9, 0x30 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "andi $t1, $a2, 17767"
  -
    input:
      bytes: [ 0x67, 0x45, 0xc9, 0x30 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "andi $t1, $a2, 17767"
  -
    input:
      bytes: [ 0x67, 0x45, 0x29, 0x31 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "andi $t1, $t1, 17767"
  -
    input:
      bytes: [ 0x21, 0x30, 0xe6, 0x70 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "clo $a2, $a3"
  -
    input:
      bytes: [ 0x20, 0x30, 0xe6, 0x70 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "clz $a2, $a3"
  -
    input:
      bytes: [ 0x84, 0x61, 0x33, 0x7d ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "ins $s3, $t1, 6, 7"
  -
    input:
      bytes: [ 0x27, 0x48, 0xc7, 0x00 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "nor $t1, $a2, $a3"
  -
    input:
      bytes: [ 0x25, 0x18, 0x65, 0x00 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "or $v1, $v1, $a1"
  -
    input:
      bytes: [ 0x67, 0x45, 0xa4, 0x34 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "ori $a0, $a1, 17767"
  -
    input:
      bytes: [ 0x67, 0x45, 0xc9, 0x34 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "ori $t1, $a2, 17767"
  -
    input:
      bytes: [ 0x80, 0x00, 0x6b, 0x35 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "ori $t3, $t3, 128"
  -
    input:
      bytes: [ 0xc2, 0x49, 0x26, 0x00 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "rotr $t1, $a2, 7"
  -
    input:
      bytes: [ 0x46, 0x48, 0xe6, 0x00 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "rotrv $t1, $a2, $a3"
  -
    input:
      bytes: [ 0xc0, 0x21, 0x03, 0x00 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "sll $a0, $v1, 7"
  -
    input:
      bytes: [ 0x04, 0x10, 0xa3, 0x00 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "sllv $v0, $v1, $a1"
  -
    input:
      bytes: [ 0x2a, 0x18, 0x65, 0x00 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "slt $v1, $v1, $a1"
  -
    input:
      bytes: [ 0x67, 0x00, 0x63, 0x28 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "slti $v1, $v1, 103"
  -
    input:
      bytes: [ 0x67, 0x00, 0x63, 0x28 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "slti $v1, $v1, 103"
  -
    input:
      bytes: [ 0x67, 0x00, 0x63, 0x2c ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "sltiu $v1, $v1, 103"
  -
    input:
      bytes: [ 0x2b, 0x18, 0x65, 0x00 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "sltu $v1, $v1, $a1"
  -
    input:
      bytes: [ 0xc3, 0x21, 0x03, 0x00 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "sra $a0, $v1, 7"
  -
    input:
      bytes: [ 0x07, 0x10, 0xa3, 0x00 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "srav $v0, $v1, $a1"
  -
    input:
      bytes: [ 0xc2, 0x21, 0x03, 0x00 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "srl $a0, $v1, 7"
  -
    input:
      bytes: [ 0x06, 0x10, 0xa3, 0x00 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "srlv $v0, $v1, $a1"
  -
    input:
      bytes: [ 0x26, 0x18, 0x65, 0x00 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "xor $v1, $v1, $a1"
  -
    input:
      bytes: [ 0x67, 0x45, 0xc9, 0x38 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "xori $t1, $a2, 17767"
  -
    input:
      bytes: [ 0x67, 0x45, 0xc9, 0x38 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "xori $t1, $a2, 17767"
  -
    input:
      bytes: [ 0x0c, 0x00, 0x6b, 0x39 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "xori $t3, $t3, 12"
  -
    input:
      bytes: [ 0xa0, 0x30, 0x07, 0x7c ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "wsbh $a2, $a3"
  -
    input:
      bytes: [ 0x27, 0x38, 0x00, 0x01 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "not $a3, $t0"
  -
    input:
      bytes: [ 0x20, 0x48, 0xc7, 0x00 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "add $t1, $a2, $a3"
  -
    input:
      bytes: [ 0x67, 0x45, 0xc9, 0x20 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "addi $t1, $a2, 17767"
  -
    input:
      bytes: [ 0x67, 0xc5, 0xc9, 0x24 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "addiu $t1, $a2, -15001"
  -
    input:
      bytes: [ 0x67, 0x45, 0xc9, 0x20 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "addi $t1, $a2, 17767"
  -
    input:
      bytes: [ 0x67, 0x45, 0x29, 0x21 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "addi $t1, $t1, 17767"
  -
    input:
      bytes: [ 0x67, 0xc5, 0xc9, 0x24 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "addiu $t1, $a2, -15001"
  -
    input:
      bytes: [ 0x28, 0x00, 0x6b, 0x25 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "addiu $t3, $t3, 40"
  -
    input:
      bytes: [ 0x21, 0x48, 0xc7, 0x00 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "addu $t1, $a2, $a3"
  -
    input:
      bytes: [ 0x00, 0x00, 0xc7, 0x70 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "madd $a2, $a3"
  -
    input:
      bytes: [ 0x01, 0x00, 0xc7, 0x70 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "maddu $a2, $a3"
  -
    input:
      bytes: [ 0x04, 0x00, 0xc7, 0x70 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "msub $a2, $a3"
  -
    input:
      bytes: [ 0x05, 0x00, 0xc7, 0x70 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "msubu $a2, $a3"
  -
    input:
      bytes: [ 0x18, 0x00, 0x65, 0x00 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "mult $v1, $a1"
  -
    input:
      bytes: [ 0x19, 0x00, 0x65, 0x00 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "multu $v1, $a1"
  -
    input:
      bytes: [ 0x22, 0x48, 0xc7, 0x00 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "sub $t1, $a2, $a3"
  -
    input:
      bytes: [ 0xc8, 0xff, 0xbd, 0x23 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "addi $sp, $sp, -56"
  -
    input:
      bytes: [ 0x23, 0x20, 0x65, 0x00 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "subu $a0, $v1, $a1"
  -
    input:
      bytes: [ 0xd8, 0xff, 0xbd, 0x27 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "addiu $sp, $sp, -40"
  -
    input:
      bytes: [ 0x22, 0x30, 0x07, 0x00 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "neg $a2, $a3"
  -
    input:
      bytes: [ 0x23, 0x30, 0x07, 0x00 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "negu $a2, $a3"
  -
    input:
      bytes: [ 0x21, 0x38, 0x00, 0x01 ]
      arch: "CS_ARCH_MIPS"
      options: [ "CS_MODE_MIPS32R5" ]
    expected:
      insns:
        -
          asm_text: "move $a3, $t0"
