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

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

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

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

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

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

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

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

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

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

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

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

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

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