test_cases:
  -
    input:
      bytes: [ 0x20, 0x08, 0x82, 0x2f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "mla v0.2s, v1.2s, v2.s[2]"

  -
    input:
      bytes: [ 0x20, 0x08, 0x96, 0x2f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "mla v0.2s, v1.2s, v22.s[2]"

  -
    input:
      bytes: [ 0x03, 0x01, 0xa2, 0x6f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "mla v3.4s, v8.4s, v2.s[1]"

  -
    input:
      bytes: [ 0x03, 0x09, 0xb6, 0x6f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "mla v3.4s, v8.4s, v22.s[3]"

  -
    input:
      bytes: [ 0x20, 0x00, 0x62, 0x2f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "mla v0.4h, v1.4h, v2.h[2]"

  -
    input:
      bytes: [ 0x20, 0x00, 0x6f, 0x2f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "mla v0.4h, v1.4h, v15.h[2]"

  -
    input:
      bytes: [ 0x20, 0x08, 0x72, 0x6f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "mla v0.8h, v1.8h, v2.h[7]"

  -
    input:
      bytes: [ 0x20, 0x08, 0x6e, 0x6f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "mla v0.8h, v1.8h, v14.h[6]"

  -
    input:
      bytes: [ 0x20, 0x48, 0x82, 0x2f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "mls v0.2s, v1.2s, v2.s[2]"

  -
    input:
      bytes: [ 0x20, 0x48, 0x96, 0x2f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "mls v0.2s, v1.2s, v22.s[2]"

  -
    input:
      bytes: [ 0x03, 0x41, 0xa2, 0x6f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "mls v3.4s, v8.4s, v2.s[1]"

  -
    input:
      bytes: [ 0x03, 0x49, 0xb6, 0x6f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "mls v3.4s, v8.4s, v22.s[3]"

  -
    input:
      bytes: [ 0x20, 0x40, 0x62, 0x2f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "mls v0.4h, v1.4h, v2.h[2]"

  -
    input:
      bytes: [ 0x20, 0x40, 0x6f, 0x2f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "mls v0.4h, v1.4h, v15.h[2]"

  -
    input:
      bytes: [ 0x20, 0x48, 0x72, 0x6f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "mls v0.8h, v1.8h, v2.h[7]"

  -
    input:
      bytes: [ 0x20, 0x48, 0x6e, 0x6f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "mls v0.8h, v1.8h, v14.h[6]"

  -
    input:
      bytes: [ 0x20, 0x10, 0x22, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fmla v0.4h, v1.4h, v2.h[2]"

  -
    input:
      bytes: [ 0x03, 0x11, 0x12, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fmla v3.8h, v8.8h, v2.h[1]"

  -
    input:
      bytes: [ 0x20, 0x18, 0x82, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fmla v0.2s, v1.2s, v2.s[2]"

  -
    input:
      bytes: [ 0x20, 0x18, 0x96, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fmla v0.2s, v1.2s, v22.s[2]"

  -
    input:
      bytes: [ 0x03, 0x11, 0xa2, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fmla v3.4s, v8.4s, v2.s[1]"

  -
    input:
      bytes: [ 0x03, 0x19, 0xb6, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fmla v3.4s, v8.4s, v22.s[3]"

  -
    input:
      bytes: [ 0x20, 0x18, 0xc2, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fmla v0.2d, v1.2d, v2.d[1]"

  -
    input:
      bytes: [ 0x20, 0x18, 0xd6, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fmla v0.2d, v1.2d, v22.d[1]"

  -
    input:
      bytes: [ 0x20, 0x50, 0x22, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fmls v0.4h, v1.4h, v2.h[2]"

  -
    input:
      bytes: [ 0x03, 0x51, 0x12, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fmls v3.8h, v8.8h, v2.h[1]"

  -
    input:
      bytes: [ 0x20, 0x58, 0x82, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fmls v0.2s, v1.2s, v2.s[2]"

  -
    input:
      bytes: [ 0x20, 0x58, 0x96, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fmls v0.2s, v1.2s, v22.s[2]"

  -
    input:
      bytes: [ 0x03, 0x51, 0xa2, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fmls v3.4s, v8.4s, v2.s[1]"

  -
    input:
      bytes: [ 0x03, 0x59, 0xb6, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fmls v3.4s, v8.4s, v22.s[3]"

  -
    input:
      bytes: [ 0x20, 0x58, 0xc2, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fmls v0.2d, v1.2d, v2.d[1]"

  -
    input:
      bytes: [ 0x20, 0x58, 0xd6, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fmls v0.2d, v1.2d, v22.d[1]"

  -
    input:
      bytes: [ 0x20, 0x20, 0x62, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "smlal v0.4s, v1.4h, v2.h[2]"

  -
    input:
      bytes: [ 0x20, 0x28, 0x82, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "smlal v0.2d, v1.2s, v2.s[2]"

  -
    input:
      bytes: [ 0x20, 0x28, 0x96, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "smlal v0.2d, v1.2s, v22.s[2]"

  -
    input:
      bytes: [ 0x20, 0x20, 0x61, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "smlal2 v0.4s, v1.8h, v1.h[2]"

  -
    input:
      bytes: [ 0x20, 0x28, 0x81, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "smlal2 v0.2d, v1.4s, v1.s[2]"

  -
    input:
      bytes: [ 0x20, 0x28, 0x96, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "smlal2 v0.2d, v1.4s, v22.s[2]"

  -
    input:
      bytes: [ 0x20, 0x60, 0x62, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "smlsl v0.4s, v1.4h, v2.h[2]"

  -
    input:
      bytes: [ 0x20, 0x68, 0x82, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "smlsl v0.2d, v1.2s, v2.s[2]"

  -
    input:
      bytes: [ 0x20, 0x68, 0x96, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "smlsl v0.2d, v1.2s, v22.s[2]"

  -
    input:
      bytes: [ 0x20, 0x60, 0x61, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "smlsl2 v0.4s, v1.8h, v1.h[2]"

  -
    input:
      bytes: [ 0x20, 0x68, 0x81, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "smlsl2 v0.2d, v1.4s, v1.s[2]"

  -
    input:
      bytes: [ 0x20, 0x68, 0x96, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "smlsl2 v0.2d, v1.4s, v22.s[2]"

  -
    input:
      bytes: [ 0x20, 0x30, 0x62, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "sqdmlal v0.4s, v1.4h, v2.h[2]"

  -
    input:
      bytes: [ 0x20, 0x38, 0x82, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "sqdmlal v0.2d, v1.2s, v2.s[2]"

  -
    input:
      bytes: [ 0x20, 0x38, 0x96, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "sqdmlal v0.2d, v1.2s, v22.s[2]"

  -
    input:
      bytes: [ 0x20, 0x30, 0x61, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "sqdmlal2 v0.4s, v1.8h, v1.h[2]"

  -
    input:
      bytes: [ 0x20, 0x38, 0x81, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "sqdmlal2 v0.2d, v1.4s, v1.s[2]"

  -
    input:
      bytes: [ 0x20, 0x38, 0x96, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "sqdmlal2 v0.2d, v1.4s, v22.s[2]"

  -
    input:
      bytes: [ 0x20, 0x20, 0x62, 0x2f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "umlal v0.4s, v1.4h, v2.h[2]"

  -
    input:
      bytes: [ 0x20, 0x28, 0x82, 0x2f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "umlal v0.2d, v1.2s, v2.s[2]"

  -
    input:
      bytes: [ 0x20, 0x28, 0x96, 0x2f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "umlal v0.2d, v1.2s, v22.s[2]"

  -
    input:
      bytes: [ 0x20, 0x20, 0x61, 0x6f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "umlal2 v0.4s, v1.8h, v1.h[2]"

  -
    input:
      bytes: [ 0x20, 0x28, 0x81, 0x6f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "umlal2 v0.2d, v1.4s, v1.s[2]"

  -
    input:
      bytes: [ 0x20, 0x28, 0x96, 0x6f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "umlal2 v0.2d, v1.4s, v22.s[2]"

  -
    input:
      bytes: [ 0x20, 0x60, 0x62, 0x2f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "umlsl v0.4s, v1.4h, v2.h[2]"

  -
    input:
      bytes: [ 0x20, 0x68, 0x82, 0x2f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "umlsl v0.2d, v1.2s, v2.s[2]"

  -
    input:
      bytes: [ 0x20, 0x68, 0x96, 0x2f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "umlsl v0.2d, v1.2s, v22.s[2]"

  -
    input:
      bytes: [ 0x20, 0x60, 0x61, 0x6f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "umlsl2 v0.4s, v1.8h, v1.h[2]"

  -
    input:
      bytes: [ 0x20, 0x68, 0x81, 0x6f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "umlsl2 v0.2d, v1.4s, v1.s[2]"

  -
    input:
      bytes: [ 0x20, 0x68, 0x96, 0x6f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "umlsl2 v0.2d, v1.4s, v22.s[2]"

  -
    input:
      bytes: [ 0x20, 0x70, 0x62, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "sqdmlsl v0.4s, v1.4h, v2.h[2]"

  -
    input:
      bytes: [ 0x20, 0x78, 0x82, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "sqdmlsl v0.2d, v1.2s, v2.s[2]"

  -
    input:
      bytes: [ 0x20, 0x78, 0x96, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "sqdmlsl v0.2d, v1.2s, v22.s[2]"

  -
    input:
      bytes: [ 0x20, 0x70, 0x61, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "sqdmlsl2 v0.4s, v1.8h, v1.h[2]"

  -
    input:
      bytes: [ 0x20, 0x78, 0x81, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "sqdmlsl2 v0.2d, v1.4s, v1.s[2]"

  -
    input:
      bytes: [ 0x20, 0x78, 0x96, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "sqdmlsl2 v0.2d, v1.4s, v22.s[2]"

  -
    input:
      bytes: [ 0x20, 0x80, 0x62, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "mul v0.4h, v1.4h, v2.h[2]"

  -
    input:
      bytes: [ 0x20, 0x80, 0x62, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "mul v0.8h, v1.8h, v2.h[2]"

  -
    input:
      bytes: [ 0x20, 0x88, 0x82, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "mul v0.2s, v1.2s, v2.s[2]"

  -
    input:
      bytes: [ 0x20, 0x88, 0x96, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "mul v0.2s, v1.2s, v22.s[2]"

  -
    input:
      bytes: [ 0x20, 0x88, 0x82, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "mul v0.4s, v1.4s, v2.s[2]"

  -
    input:
      bytes: [ 0x20, 0x88, 0x96, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "mul v0.4s, v1.4s, v22.s[2]"

  -
    input:
      bytes: [ 0x20, 0x90, 0x22, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fmul v0.4h, v1.4h, v2.h[2]"

  -
    input:
      bytes: [ 0x20, 0x90, 0x22, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fmul v0.8h, v1.8h, v2.h[2]"

  -
    input:
      bytes: [ 0x20, 0x98, 0x82, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fmul v0.2s, v1.2s, v2.s[2]"

  -
    input:
      bytes: [ 0x20, 0x98, 0x96, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fmul v0.2s, v1.2s, v22.s[2]"

  -
    input:
      bytes: [ 0x20, 0x98, 0x82, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fmul v0.4s, v1.4s, v2.s[2]"

  -
    input:
      bytes: [ 0x20, 0x98, 0x96, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fmul v0.4s, v1.4s, v22.s[2]"

  -
    input:
      bytes: [ 0x20, 0x98, 0xc2, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fmul v0.2d, v1.2d, v2.d[1]"

  -
    input:
      bytes: [ 0x20, 0x98, 0xd6, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fmul v0.2d, v1.2d, v22.d[1]"

  -
    input:
      bytes: [ 0x20, 0x90, 0x22, 0x2f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fmulx v0.4h, v1.4h, v2.h[2]"

  -
    input:
      bytes: [ 0x20, 0x90, 0x22, 0x6f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fmulx v0.8h, v1.8h, v2.h[2]"

  -
    input:
      bytes: [ 0x20, 0x98, 0x82, 0x2f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fmulx v0.2s, v1.2s, v2.s[2]"

  -
    input:
      bytes: [ 0x20, 0x98, 0x96, 0x2f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fmulx v0.2s, v1.2s, v22.s[2]"

  -
    input:
      bytes: [ 0x20, 0x98, 0x82, 0x6f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fmulx v0.4s, v1.4s, v2.s[2]"

  -
    input:
      bytes: [ 0x20, 0x98, 0x96, 0x6f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fmulx v0.4s, v1.4s, v22.s[2]"

  -
    input:
      bytes: [ 0x20, 0x98, 0xc2, 0x6f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fmulx v0.2d, v1.2d, v2.d[1]"

  -
    input:
      bytes: [ 0x20, 0x98, 0xd6, 0x6f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fmulx v0.2d, v1.2d, v22.d[1]"

  -
    input:
      bytes: [ 0x20, 0xa0, 0x62, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "smull v0.4s, v1.4h, v2.h[2]"

  -
    input:
      bytes: [ 0x20, 0xa8, 0x82, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "smull v0.2d, v1.2s, v2.s[2]"

  -
    input:
      bytes: [ 0x20, 0xa8, 0x96, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "smull v0.2d, v1.2s, v22.s[2]"

  -
    input:
      bytes: [ 0x20, 0xa0, 0x62, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "smull2 v0.4s, v1.8h, v2.h[2]"

  -
    input:
      bytes: [ 0x20, 0xa8, 0x82, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "smull2 v0.2d, v1.4s, v2.s[2]"

  -
    input:
      bytes: [ 0x20, 0xa8, 0x96, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "smull2 v0.2d, v1.4s, v22.s[2]"

  -
    input:
      bytes: [ 0x20, 0xa0, 0x62, 0x2f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "umull v0.4s, v1.4h, v2.h[2]"

  -
    input:
      bytes: [ 0x20, 0xa8, 0x82, 0x2f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "umull v0.2d, v1.2s, v2.s[2]"

  -
    input:
      bytes: [ 0x20, 0xa8, 0x96, 0x2f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "umull v0.2d, v1.2s, v22.s[2]"

  -
    input:
      bytes: [ 0x20, 0xa0, 0x62, 0x6f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "umull2 v0.4s, v1.8h, v2.h[2]"

  -
    input:
      bytes: [ 0x20, 0xa8, 0x82, 0x6f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "umull2 v0.2d, v1.4s, v2.s[2]"

  -
    input:
      bytes: [ 0x20, 0xa8, 0x96, 0x6f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "umull2 v0.2d, v1.4s, v22.s[2]"

  -
    input:
      bytes: [ 0x20, 0xb0, 0x62, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "sqdmull v0.4s, v1.4h, v2.h[2]"

  -
    input:
      bytes: [ 0x20, 0xb8, 0x82, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "sqdmull v0.2d, v1.2s, v2.s[2]"

  -
    input:
      bytes: [ 0x20, 0xb8, 0x96, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "sqdmull v0.2d, v1.2s, v22.s[2]"

  -
    input:
      bytes: [ 0x20, 0xb0, 0x62, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "sqdmull2 v0.4s, v1.8h, v2.h[2]"

  -
    input:
      bytes: [ 0x20, 0xb8, 0x82, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "sqdmull2 v0.2d, v1.4s, v2.s[2]"

  -
    input:
      bytes: [ 0x20, 0xb8, 0x96, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "sqdmull2 v0.2d, v1.4s, v22.s[2]"

  -
    input:
      bytes: [ 0x20, 0xc0, 0x62, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "sqdmulh v0.4h, v1.4h, v2.h[2]"

  -
    input:
      bytes: [ 0x20, 0xc0, 0x62, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "sqdmulh v0.8h, v1.8h, v2.h[2]"

  -
    input:
      bytes: [ 0x20, 0xc8, 0x82, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "sqdmulh v0.2s, v1.2s, v2.s[2]"

  -
    input:
      bytes: [ 0x20, 0xc8, 0x96, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "sqdmulh v0.2s, v1.2s, v22.s[2]"

  -
    input:
      bytes: [ 0x20, 0xc8, 0x82, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "sqdmulh v0.4s, v1.4s, v2.s[2]"

  -
    input:
      bytes: [ 0x20, 0xc8, 0x96, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "sqdmulh v0.4s, v1.4s, v22.s[2]"

  -
    input:
      bytes: [ 0x20, 0xd0, 0x62, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "sqrdmulh v0.4h, v1.4h, v2.h[2]"

  -
    input:
      bytes: [ 0x20, 0xd0, 0x62, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "sqrdmulh v0.8h, v1.8h, v2.h[2]"

  -
    input:
      bytes: [ 0x20, 0xd8, 0x82, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "sqrdmulh v0.2s, v1.2s, v2.s[2]"

  -
    input:
      bytes: [ 0x20, 0xd8, 0x96, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "sqrdmulh v0.2s, v1.2s, v22.s[2]"

  -
    input:
      bytes: [ 0x20, 0xd8, 0x82, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "sqrdmulh v0.4s, v1.4s, v2.s[2]"

  -
    input:
      bytes: [ 0x20, 0xd8, 0x96, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "sqrdmulh v0.4s, v1.4s, v22.s[2]"
