test_cases:
  -
    input:
      bytes: [ 0x00, 0x04, 0x1f, 0x5e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "mov b0, v0.b[15]"

  -
    input:
      bytes: [ 0x01, 0x04, 0x0f, 0x5e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "mov b1, v0.b[7]"

  -
    input:
      bytes: [ 0x11, 0x04, 0x01, 0x5e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "mov b17, v0.b[0]"

  -
    input:
      bytes: [ 0xe5, 0x07, 0x1e, 0x5e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "mov h5, v31.h[7]"

  -
    input:
      bytes: [ 0x29, 0x04, 0x12, 0x5e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "mov h9, v1.h[4]"

  -
    input:
      bytes: [ 0x2b, 0x06, 0x02, 0x5e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "mov h11, v17.h[0]"

  -
    input:
      bytes: [ 0x42, 0x04, 0x1c, 0x5e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "mov s2, v2.s[3]"

  -
    input:
      bytes: [ 0xa4, 0x06, 0x04, 0x5e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "mov s4, v21.s[0]"

  -
    input:
      bytes: [ 0xbf, 0x06, 0x14, 0x5e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "mov s31, v21.s[2]"

  -
    input:
      bytes: [ 0xa3, 0x04, 0x08, 0x5e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "mov d3, v5.d[0]"

  -
    input:
      bytes: [ 0xa6, 0x04, 0x18, 0x5e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "mov d6, v5.d[1]"

  -
    input:
      bytes: [ 0x00, 0x04, 0x1f, 0x5e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "mov b0, v0.b[15]"

  -
    input:
      bytes: [ 0x01, 0x04, 0x0f, 0x5e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "mov b1, v0.b[7]"

  -
    input:
      bytes: [ 0x11, 0x04, 0x01, 0x5e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "mov b17, v0.b[0]"

  -
    input:
      bytes: [ 0xe5, 0x07, 0x1e, 0x5e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "mov h5, v31.h[7]"

  -
    input:
      bytes: [ 0x29, 0x04, 0x12, 0x5e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "mov h9, v1.h[4]"

  -
    input:
      bytes: [ 0x2b, 0x06, 0x02, 0x5e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "mov h11, v17.h[0]"

  -
    input:
      bytes: [ 0x42, 0x04, 0x1c, 0x5e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "mov s2, v2.s[3]"

  -
    input:
      bytes: [ 0xa4, 0x06, 0x04, 0x5e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "mov s4, v21.s[0]"

  -
    input:
      bytes: [ 0xbf, 0x06, 0x14, 0x5e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "mov s31, v21.s[2]"

  -
    input:
      bytes: [ 0xa3, 0x04, 0x08, 0x5e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "mov d3, v5.d[0]"

  -
    input:
      bytes: [ 0xa6, 0x04, 0x18, 0x5e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "mov d6, v5.d[1]"
