test_cases:
  -
    input:
      bytes: [ 0xdd, 0x87, 0xbf, 0x64 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sve2" ]
    expected:
      insns:
        -
          asm_text: "fmlalt z29.s, z30.h, z31.h"

  -
    input:
      bytes: [ 0x20, 0x44, 0xa7, 0x64 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sve2" ]
    expected:
      insns:
        -
          asm_text: "fmlalt z0.s, z1.h, z7.h[0]"

  -
    input:
      bytes: [ 0xfe, 0x4f, 0xbf, 0x64 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sve2" ]
    expected:
      insns:
        -
          asm_text: "fmlalt z30.s, z31.h, z7.h[7]"

  -
    input:
      bytes: [ 0x9d, 0xbf, 0x20, 0x04 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sve2" ]
    expected:
      insns:
        -
          asm_text: "movprfx z29, z28"

  -
    input:
      bytes: [ 0xdd, 0x87, 0xbf, 0x64 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sve2" ]
    expected:
      insns:
        -
          asm_text: "fmlalt z29.s, z30.h, z31.h"

  -
    input:
      bytes: [ 0x95, 0xbf, 0x20, 0x04 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sve2" ]
    expected:
      insns:
        -
          asm_text: "movprfx z21, z28"

  -
    input:
      bytes: [ 0x35, 0x4c, 0xbf, 0x64 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sve2" ]
    expected:
      insns:
        -
          asm_text: "fmlalt z21.s, z1.h, z7.h[7]"

  -
    input:
      bytes: [ 0xdd, 0x87, 0xbf, 0x64 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "fmlalt z29.s, z30.h, z31.h"

  -
    input:
      bytes: [ 0x20, 0x44, 0xa7, 0x64 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "fmlalt z0.s, z1.h, z7.h[0]"

  -
    input:
      bytes: [ 0xfe, 0x4f, 0xbf, 0x64 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "fmlalt z30.s, z31.h, z7.h[7]"

  -
    input:
      bytes: [ 0x9d, 0xbf, 0x20, 0x04 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "movprfx z29, z28"

  -
    input:
      bytes: [ 0xdd, 0x87, 0xbf, 0x64 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "fmlalt z29.s, z30.h, z31.h"

  -
    input:
      bytes: [ 0x95, 0xbf, 0x20, 0x04 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "movprfx z21, z28"

  -
    input:
      bytes: [ 0x35, 0x4c, 0xbf, 0x64 ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64", "sme" ]
    expected:
      insns:
        -
          asm_text: "fmlalt z21.s, z1.h, z7.h[7]"
