test_cases:
  -
    input:
      bytes: [ 0x00, 0x80, 0x0c, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w8, 0:1]"

  -
    input:
      bytes: [ 0x05, 0xc0, 0x0c, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w10, 10:11]"

  -
    input:
      bytes: [ 0x07, 0xe0, 0x0c, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w11, 14:15]"

  -
    input:
      bytes: [ 0x05, 0x80, 0x0c, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w8, 10:11]"

  -
    input:
      bytes: [ 0x01, 0x80, 0x0c, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w8, 2:3]"

  -
    input:
      bytes: [ 0x00, 0xc0, 0x0c, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w10, 0:1]"

  -
    input:
      bytes: [ 0x01, 0xc0, 0x0c, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w10, 2:3]"

  -
    input:
      bytes: [ 0x02, 0xe0, 0x0c, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w11, 4:5]"

  -
    input:
      bytes: [ 0x07, 0xa0, 0x0c, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w9, 14:15]"

  -
    input:
      bytes: [ 0x00, 0x80, 0x0e, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w8, 0:3]"

  -
    input:
      bytes: [ 0x01, 0xc0, 0x0e, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w10, 4:7]"

  -
    input:
      bytes: [ 0x03, 0xe0, 0x0e, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w11, 12:15]"

  -
    input:
      bytes: [ 0x01, 0x80, 0x0e, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w8, 4:7]"

  -
    input:
      bytes: [ 0x00, 0xc0, 0x0e, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w10, 0:3]"

  -
    input:
      bytes: [ 0x02, 0xe0, 0x0e, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w11, 8:11]"

  -
    input:
      bytes: [ 0x03, 0xa0, 0x0e, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w9, 12:15]"

  -
    input:
      bytes: [ 0x00, 0x00, 0x0c, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w8, 0, vgx2]"

  -
    input:
      bytes: [ 0x05, 0x40, 0x0c, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w10, 5, vgx2]"

  -
    input:
      bytes: [ 0x07, 0x60, 0x0c, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w11, 7, vgx2]"

  -
    input:
      bytes: [ 0x05, 0x00, 0x0c, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w8, 5, vgx2]"

  -
    input:
      bytes: [ 0x01, 0x00, 0x0c, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w8, 1, vgx2]"

  -
    input:
      bytes: [ 0x00, 0x40, 0x0c, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w10, 0, vgx2]"

  -
    input:
      bytes: [ 0x01, 0x40, 0x0c, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w10, 1, vgx2]"

  -
    input:
      bytes: [ 0x02, 0x60, 0x0c, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w11, 2, vgx2]"

  -
    input:
      bytes: [ 0x07, 0x20, 0x0c, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w9, 7, vgx2]"

  -
    input:
      bytes: [ 0x00, 0x00, 0x0d, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w8, 0:1, vgx2]"

  -
    input:
      bytes: [ 0x01, 0x40, 0x0d, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w10, 2:3, vgx2]"

  -
    input:
      bytes: [ 0x03, 0x60, 0x0d, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w11, 6:7, vgx2]"

  -
    input:
      bytes: [ 0x01, 0x00, 0x0d, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w8, 2:3, vgx2]"

  -
    input:
      bytes: [ 0x00, 0x40, 0x0d, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w10, 0:1, vgx2]"

  -
    input:
      bytes: [ 0x02, 0x60, 0x0d, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w11, 4:5, vgx2]"

  -
    input:
      bytes: [ 0x03, 0x20, 0x0d, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w9, 6:7, vgx2]"

  -
    input:
      bytes: [ 0x00, 0x00, 0x0f, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w8, 0:3, vgx2]"

  -
    input:
      bytes: [ 0x01, 0x40, 0x0f, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w10, 4:7, vgx2]"

  -
    input:
      bytes: [ 0x01, 0x60, 0x0f, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w11, 4:7, vgx2]"

  -
    input:
      bytes: [ 0x01, 0x00, 0x0f, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w8, 4:7, vgx2]"

  -
    input:
      bytes: [ 0x00, 0x40, 0x0f, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w10, 0:3, vgx2]"

  -
    input:
      bytes: [ 0x00, 0x60, 0x0f, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w11, 0:3, vgx2]"

  -
    input:
      bytes: [ 0x01, 0x20, 0x0f, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w9, 4:7, vgx2]"

  -
    input:
      bytes: [ 0x00, 0x00, 0x0e, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w8, 0, vgx4]"

  -
    input:
      bytes: [ 0x05, 0x40, 0x0e, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w10, 5, vgx4]"

  -
    input:
      bytes: [ 0x07, 0x60, 0x0e, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w11, 7, vgx4]"

  -
    input:
      bytes: [ 0x05, 0x00, 0x0e, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w8, 5, vgx4]"

  -
    input:
      bytes: [ 0x01, 0x00, 0x0e, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w8, 1, vgx4]"

  -
    input:
      bytes: [ 0x00, 0x40, 0x0e, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w10, 0, vgx4]"

  -
    input:
      bytes: [ 0x01, 0x40, 0x0e, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w10, 1, vgx4]"

  -
    input:
      bytes: [ 0x02, 0x60, 0x0e, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w11, 2, vgx4]"

  -
    input:
      bytes: [ 0x07, 0x20, 0x0e, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w9, 7, vgx4]"

  -
    input:
      bytes: [ 0x00, 0x80, 0x0d, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w8, 0:1, vgx4]"

  -
    input:
      bytes: [ 0x01, 0xc0, 0x0d, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w10, 2:3, vgx4]"

  -
    input:
      bytes: [ 0x03, 0xe0, 0x0d, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w11, 6:7, vgx4]"

  -
    input:
      bytes: [ 0x01, 0x80, 0x0d, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w8, 2:3, vgx4]"

  -
    input:
      bytes: [ 0x00, 0xc0, 0x0d, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w10, 0:1, vgx4]"

  -
    input:
      bytes: [ 0x02, 0xe0, 0x0d, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w11, 4:5, vgx4]"

  -
    input:
      bytes: [ 0x03, 0xa0, 0x0d, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w9, 6:7, vgx4]"

  -
    input:
      bytes: [ 0x00, 0x80, 0x0f, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w8, 0:3, vgx4]"

  -
    input:
      bytes: [ 0x01, 0xc0, 0x0f, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w10, 4:7, vgx4]"

  -
    input:
      bytes: [ 0x01, 0xe0, 0x0f, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w11, 4:7, vgx4]"

  -
    input:
      bytes: [ 0x01, 0x80, 0x0f, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w8, 4:7, vgx4]"

  -
    input:
      bytes: [ 0x00, 0xc0, 0x0f, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w10, 0:3, vgx4]"

  -
    input:
      bytes: [ 0x00, 0xe0, 0x0f, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w11, 0:3, vgx4]"

  -
    input:
      bytes: [ 0x01, 0xa0, 0x0f, 0xc0 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "sme2p1" ]
    expected:
      insns:
        -
          asm_text: "zero za.d[w9, 4:7, vgx4]"
