test_cases:
  -
    input:
      bytes: [ 0x00, 0xe0, 0x65, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2" ]
    expected:
      insns:
        -
          asm_text: "sunpk { z0.h, z1.h }, z0.b"

  -
    input:
      bytes: [ 0x54, 0xe1, 0x65, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2" ]
    expected:
      insns:
        -
          asm_text: "sunpk { z20.h, z21.h }, z10.b"

  -
    input:
      bytes: [ 0xb6, 0xe1, 0x65, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2" ]
    expected:
      insns:
        -
          asm_text: "sunpk { z22.h, z23.h }, z13.b"

  -
    input:
      bytes: [ 0xfe, 0xe3, 0x65, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2" ]
    expected:
      insns:
        -
          asm_text: "sunpk { z30.h, z31.h }, z31.b"

  -
    input:
      bytes: [ 0x00, 0xe0, 0xa5, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2" ]
    expected:
      insns:
        -
          asm_text: "sunpk { z0.s, z1.s }, z0.h"

  -
    input:
      bytes: [ 0x54, 0xe1, 0xa5, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2" ]
    expected:
      insns:
        -
          asm_text: "sunpk { z20.s, z21.s }, z10.h"

  -
    input:
      bytes: [ 0xb6, 0xe1, 0xa5, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2" ]
    expected:
      insns:
        -
          asm_text: "sunpk { z22.s, z23.s }, z13.h"

  -
    input:
      bytes: [ 0xfe, 0xe3, 0xa5, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2" ]
    expected:
      insns:
        -
          asm_text: "sunpk { z30.s, z31.s }, z31.h"

  -
    input:
      bytes: [ 0x00, 0xe0, 0xe5, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2" ]
    expected:
      insns:
        -
          asm_text: "sunpk { z0.d, z1.d }, z0.s"

  -
    input:
      bytes: [ 0x54, 0xe1, 0xe5, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2" ]
    expected:
      insns:
        -
          asm_text: "sunpk { z20.d, z21.d }, z10.s"

  -
    input:
      bytes: [ 0xb6, 0xe1, 0xe5, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2" ]
    expected:
      insns:
        -
          asm_text: "sunpk { z22.d, z23.d }, z13.s"

  -
    input:
      bytes: [ 0xfe, 0xe3, 0xe5, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2" ]
    expected:
      insns:
        -
          asm_text: "sunpk { z30.d, z31.d }, z31.s"

  -
    input:
      bytes: [ 0x00, 0xe0, 0x75, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2" ]
    expected:
      insns:
        -
          asm_text: "sunpk { z0.h - z3.h }, { z0.b, z1.b }"

  -
    input:
      bytes: [ 0x54, 0xe1, 0x75, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2" ]
    expected:
      insns:
        -
          asm_text: "sunpk { z20.h - z23.h }, { z10.b, z11.b }"

  -
    input:
      bytes: [ 0x94, 0xe1, 0x75, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2" ]
    expected:
      insns:
        -
          asm_text: "sunpk { z20.h - z23.h }, { z12.b, z13.b }"

  -
    input:
      bytes: [ 0xdc, 0xe3, 0x75, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2" ]
    expected:
      insns:
        -
          asm_text: "sunpk { z28.h - z31.h }, { z30.b, z31.b }"

  -
    input:
      bytes: [ 0x00, 0xe0, 0xb5, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2" ]
    expected:
      insns:
        -
          asm_text: "sunpk { z0.s - z3.s }, { z0.h, z1.h }"

  -
    input:
      bytes: [ 0x54, 0xe1, 0xb5, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2" ]
    expected:
      insns:
        -
          asm_text: "sunpk { z20.s - z23.s }, { z10.h, z11.h }"

  -
    input:
      bytes: [ 0x94, 0xe1, 0xb5, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2" ]
    expected:
      insns:
        -
          asm_text: "sunpk { z20.s - z23.s }, { z12.h, z13.h }"

  -
    input:
      bytes: [ 0xdc, 0xe3, 0xb5, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2" ]
    expected:
      insns:
        -
          asm_text: "sunpk { z28.s - z31.s }, { z30.h, z31.h }"

  -
    input:
      bytes: [ 0x00, 0xe0, 0xf5, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2" ]
    expected:
      insns:
        -
          asm_text: "sunpk { z0.d - z3.d }, { z0.s, z1.s }"

  -
    input:
      bytes: [ 0x54, 0xe1, 0xf5, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2" ]
    expected:
      insns:
        -
          asm_text: "sunpk { z20.d - z23.d }, { z10.s, z11.s }"

  -
    input:
      bytes: [ 0x94, 0xe1, 0xf5, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2" ]
    expected:
      insns:
        -
          asm_text: "sunpk { z20.d - z23.d }, { z12.s, z13.s }"

  -
    input:
      bytes: [ 0xdc, 0xe3, 0xf5, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2" ]
    expected:
      insns:
        -
          asm_text: "sunpk { z28.d - z31.d }, { z30.s, z31.s }"
