test_cases:
  -
    input:
      bytes: [ 0x80, 0xa1, 0x60, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2", "+fp8" ]
    expected:
      insns:
        -
          asm_text: "fscale { z0.h, z1.h }, { z0.h, z1.h }, z0.h"

  -
    input:
      bytes: [ 0x9e, 0xa1, 0x6f, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2", "+fp8" ]
    expected:
      insns:
        -
          asm_text: "fscale { z30.h, z31.h }, { z30.h, z31.h }, z15.h"

  -
    input:
      bytes: [ 0x80, 0xa1, 0xa0, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2", "+fp8" ]
    expected:
      insns:
        -
          asm_text: "fscale { z0.s, z1.s }, { z0.s, z1.s }, z0.s"

  -
    input:
      bytes: [ 0x9e, 0xa1, 0xaf, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2", "+fp8" ]
    expected:
      insns:
        -
          asm_text: "fscale { z30.s, z31.s }, { z30.s, z31.s }, z15.s"

  -
    input:
      bytes: [ 0x80, 0xa1, 0xe0, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2", "+fp8" ]
    expected:
      insns:
        -
          asm_text: "fscale { z0.d, z1.d }, { z0.d, z1.d }, z0.d"

  -
    input:
      bytes: [ 0x9e, 0xa1, 0xef, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2", "+fp8" ]
    expected:
      insns:
        -
          asm_text: "fscale { z30.d, z31.d }, { z30.d, z31.d }, z15.d"

  -
    input:
      bytes: [ 0x80, 0xb1, 0x60, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2", "+fp8" ]
    expected:
      insns:
        -
          asm_text: "fscale { z0.h, z1.h }, { z0.h, z1.h }, { z0.h, z1.h }"

  -
    input:
      bytes: [ 0x9e, 0xb1, 0x7e, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2", "+fp8" ]
    expected:
      insns:
        -
          asm_text: "fscale { z30.h, z31.h }, { z30.h, z31.h }, { z30.h, z31.h }"

  -
    input:
      bytes: [ 0x80, 0xb1, 0xa0, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2", "+fp8" ]
    expected:
      insns:
        -
          asm_text: "fscale { z0.s, z1.s }, { z0.s, z1.s }, { z0.s, z1.s }"

  -
    input:
      bytes: [ 0x9e, 0xb1, 0xbe, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2", "+fp8" ]
    expected:
      insns:
        -
          asm_text: "fscale { z30.s, z31.s }, { z30.s, z31.s }, { z30.s, z31.s }"

  -
    input:
      bytes: [ 0x80, 0xb1, 0xe0, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2", "+fp8" ]
    expected:
      insns:
        -
          asm_text: "fscale { z0.d, z1.d }, { z0.d, z1.d }, { z0.d, z1.d }"

  -
    input:
      bytes: [ 0x9e, 0xb1, 0xfe, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2", "+fp8" ]
    expected:
      insns:
        -
          asm_text: "fscale { z30.d, z31.d }, { z30.d, z31.d }, { z30.d, z31.d }"

  -
    input:
      bytes: [ 0x80, 0xa9, 0x60, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2", "+fp8" ]
    expected:
      insns:
        -
          asm_text: "fscale { z0.h - z3.h }, { z0.h - z3.h }, z0.h"

  -
    input:
      bytes: [ 0x9c, 0xa9, 0x6f, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2", "+fp8" ]
    expected:
      insns:
        -
          asm_text: "fscale { z28.h - z31.h }, { z28.h - z31.h }, z15.h"

  -
    input:
      bytes: [ 0x80, 0xa9, 0xa0, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2", "+fp8" ]
    expected:
      insns:
        -
          asm_text: "fscale { z0.s - z3.s }, { z0.s - z3.s }, z0.s"

  -
    input:
      bytes: [ 0x9c, 0xa9, 0xaf, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2", "+fp8" ]
    expected:
      insns:
        -
          asm_text: "fscale { z28.s - z31.s }, { z28.s - z31.s }, z15.s"

  -
    input:
      bytes: [ 0x80, 0xa9, 0xe0, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2", "+fp8" ]
    expected:
      insns:
        -
          asm_text: "fscale { z0.d - z3.d }, { z0.d - z3.d }, z0.d"

  -
    input:
      bytes: [ 0x9c, 0xa9, 0xef, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2", "+fp8" ]
    expected:
      insns:
        -
          asm_text: "fscale { z28.d - z31.d }, { z28.d - z31.d }, z15.d"

  -
    input:
      bytes: [ 0x80, 0xb9, 0x60, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2", "+fp8" ]
    expected:
      insns:
        -
          asm_text: "fscale { z0.h - z3.h }, { z0.h - z3.h }, { z0.h - z3.h }"

  -
    input:
      bytes: [ 0x9c, 0xb9, 0x7c, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2", "+fp8" ]
    expected:
      insns:
        -
          asm_text: "fscale { z28.h - z31.h }, { z28.h - z31.h }, { z28.h - z31.h }"

  -
    input:
      bytes: [ 0x80, 0xb9, 0xa0, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2", "+fp8" ]
    expected:
      insns:
        -
          asm_text: "fscale { z0.s - z3.s }, { z0.s - z3.s }, { z0.s - z3.s }"

  -
    input:
      bytes: [ 0x9c, 0xb9, 0xbc, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2", "+fp8" ]
    expected:
      insns:
        -
          asm_text: "fscale { z28.s - z31.s }, { z28.s - z31.s }, { z28.s - z31.s }"

  -
    input:
      bytes: [ 0x80, 0xb9, 0xe0, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2", "+fp8" ]
    expected:
      insns:
        -
          asm_text: "fscale { z0.d - z3.d }, { z0.d - z3.d }, { z0.d - z3.d }"

  -
    input:
      bytes: [ 0x9c, 0xb9, 0xfc, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2", "+fp8" ]
    expected:
      insns:
        -
          asm_text: "fscale { z28.d - z31.d }, { z28.d - z31.d }, { z28.d - z31.d }"
