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

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

  -
    input:
      bytes: [ 0x01, 0xe0, 0x26, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2", "+fp8" ]
    expected:
      insns:
        -
          asm_text: "f1cvtl { z0.h, z1.h }, z0.b"

  -
    input:
      bytes: [ 0xff, 0xe3, 0x26, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2", "+fp8" ]
    expected:
      insns:
        -
          asm_text: "f1cvtl { z30.h, z31.h }, z31.b"

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

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

  -
    input:
      bytes: [ 0x01, 0xe0, 0x66, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2", "+fp8" ]
    expected:
      insns:
        -
          asm_text: "bf1cvtl { z0.h, z1.h }, z0.b"

  -
    input:
      bytes: [ 0xff, 0xe3, 0x66, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2", "+fp8" ]
    expected:
      insns:
        -
          asm_text: "bf1cvtl { z30.h, z31.h }, z31.b"

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

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

  -
    input:
      bytes: [ 0x01, 0xe0, 0xe6, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2", "+fp8" ]
    expected:
      insns:
        -
          asm_text: "bf2cvtl { z0.h, z1.h }, z0.b"

  -
    input:
      bytes: [ 0xff, 0xe3, 0xe6, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2", "+fp8" ]
    expected:
      insns:
        -
          asm_text: "bf2cvtl { z30.h, z31.h }, z31.b"

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

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

  -
    input:
      bytes: [ 0x01, 0xe0, 0xa6, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2", "+fp8" ]
    expected:
      insns:
        -
          asm_text: "f2cvtl { z0.h, z1.h }, z0.b"

  -
    input:
      bytes: [ 0xff, 0xe3, 0xa6, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2", "+fp8" ]
    expected:
      insns:
        -
          asm_text: "f2cvtl { z30.h, z31.h }, z31.b"

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

  -
    input:
      bytes: [ 0xdf, 0xe3, 0x24, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2", "+fp8" ]
    expected:
      insns:
        -
          asm_text: "fcvt z31.b, { z30.h, z31.h }"

  -
    input:
      bytes: [ 0x00, 0xe0, 0x34, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2", "+fp8" ]
    expected:
      insns:
        -
          asm_text: "fcvt z0.b, { z0.s - z3.s }"

  -
    input:
      bytes: [ 0x9f, 0xe3, 0x34, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2", "+fp8" ]
    expected:
      insns:
        -
          asm_text: "fcvt z31.b, { z28.s - z31.s }"

  -
    input:
      bytes: [ 0x20, 0xe0, 0x34, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2", "+fp8" ]
    expected:
      insns:
        -
          asm_text: "fcvtn z0.b, { z0.s - z3.s }"

  -
    input:
      bytes: [ 0xbf, 0xe3, 0x34, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2", "+fp8" ]
    expected:
      insns:
        -
          asm_text: "fcvtn z31.b, { z28.s - z31.s }"

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

  -
    input:
      bytes: [ 0xdf, 0xe3, 0x64, 0xc1 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme2", "+fp8" ]
    expected:
      insns:
        -
          asm_text: "bfcvt z31.b, { z30.h, z31.h }"
