test_cases:
  -
    input:
      bytes: [ 0x62, 0xfc, 0x44, 0x2e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "bf16" ]
    expected:
      insns:
        -
          asm_text: "bfdot v2.2s, v3.4h, v4.4h"

  -
    input:
      bytes: [ 0x62, 0xfc, 0x44, 0x6e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "bf16" ]
    expected:
      insns:
        -
          asm_text: "bfdot v2.4s, v3.8h, v4.8h"

  -
    input:
      bytes: [ 0x62, 0xf0, 0x44, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "bf16" ]
    expected:
      insns:
        -
          asm_text: "bfdot v2.2s, v3.4h, v4.2h[0]"

  -
    input:
      bytes: [ 0x62, 0xf0, 0x64, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "bf16" ]
    expected:
      insns:
        -
          asm_text: "bfdot v2.2s, v3.4h, v4.2h[1]"

  -
    input:
      bytes: [ 0x62, 0xf8, 0x44, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "bf16" ]
    expected:
      insns:
        -
          asm_text: "bfdot v2.2s, v3.4h, v4.2h[2]"

  -
    input:
      bytes: [ 0x62, 0xf8, 0x64, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "bf16" ]
    expected:
      insns:
        -
          asm_text: "bfdot v2.2s, v3.4h, v4.2h[3]"

  -
    input:
      bytes: [ 0x62, 0xf0, 0x44, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "bf16" ]
    expected:
      insns:
        -
          asm_text: "bfdot v2.4s, v3.8h, v4.2h[0]"

  -
    input:
      bytes: [ 0x62, 0xf0, 0x64, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "bf16" ]
    expected:
      insns:
        -
          asm_text: "bfdot v2.4s, v3.8h, v4.2h[1]"

  -
    input:
      bytes: [ 0x62, 0xf8, 0x44, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "bf16" ]
    expected:
      insns:
        -
          asm_text: "bfdot v2.4s, v3.8h, v4.2h[2]"

  -
    input:
      bytes: [ 0x62, 0xf8, 0x64, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "bf16" ]
    expected:
      insns:
        -
          asm_text: "bfdot v2.4s, v3.8h, v4.2h[3]"

  -
    input:
      bytes: [ 0x62, 0xec, 0x44, 0x6e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "bf16" ]
    expected:
      insns:
        -
          asm_text: "bfmmla v2.4s, v3.8h, v4.8h"

  -
    input:
      bytes: [ 0x83, 0xec, 0x45, 0x6e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "bf16" ]
    expected:
      insns:
        -
          asm_text: "bfmmla v3.4s, v4.8h, v5.8h"

  -
    input:
      bytes: [ 0xa5, 0x68, 0xa1, 0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "bf16" ]
    expected:
      insns:
        -
          asm_text: "bfcvtn v5.4h, v5.4s"

  -
    input:
      bytes: [ 0xa5, 0x68, 0xa1, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "bf16" ]
    expected:
      insns:
        -
          asm_text: "bfcvtn2 v5.8h, v5.4s"

  -
    input:
      bytes: [ 0x65, 0x40, 0x63, 0x1e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "bf16" ]
    expected:
      insns:
        -
          asm_text: "bfcvt h5, s3"

  -
    input:
      bytes: [ 0xaa, 0xfe, 0xce, 0x2e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "bf16" ]
    expected:
      insns:
        -
          asm_text: "bfmlalb v10.4s, v21.8h, v14.8h"

  -
    input:
      bytes: [ 0xd5, 0xfd, 0xca, 0x6e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "bf16" ]
    expected:
      insns:
        -
          asm_text: "bfmlalt v21.4s, v14.8h, v10.8h"

  -
    input:
      bytes: [ 0xae, 0xf2, 0xda, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "bf16" ]
    expected:
      insns:
        -
          asm_text: "bfmlalb v14.4s, v21.8h, v10.h[1]"

  -
    input:
      bytes: [ 0xae, 0xf2, 0xea, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "bf16" ]
    expected:
      insns:
        -
          asm_text: "bfmlalb v14.4s, v21.8h, v10.h[2]"

  -
    input:
      bytes: [ 0xae, 0xfa, 0xfa, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "bf16" ]
    expected:
      insns:
        -
          asm_text: "bfmlalb v14.4s, v21.8h, v10.h[7]"

  -
    input:
      bytes: [ 0x55, 0xf1, 0xde, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "bf16" ]
    expected:
      insns:
        -
          asm_text: "bfmlalt v21.4s, v10.8h, v14.h[1]"

  -
    input:
      bytes: [ 0x55, 0xf1, 0xee, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "bf16" ]
    expected:
      insns:
        -
          asm_text: "bfmlalt v21.4s, v10.8h, v14.h[2]"

  -
    input:
      bytes: [ 0x55, 0xf9, 0xfe, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "bf16" ]
    expected:
      insns:
        -
          asm_text: "bfmlalt v21.4s, v10.8h, v14.h[7]"

  -
    input:
      bytes: [ 0x62, 0xfc, 0x44, 0x2e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "v8.6a" ]
    expected:
      insns:
        -
          asm_text: "bfdot v2.2s, v3.4h, v4.4h"

  -
    input:
      bytes: [ 0x62, 0xfc, 0x44, 0x6e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "v8.6a" ]
    expected:
      insns:
        -
          asm_text: "bfdot v2.4s, v3.8h, v4.8h"

  -
    input:
      bytes: [ 0x62, 0xf0, 0x44, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "v8.6a" ]
    expected:
      insns:
        -
          asm_text: "bfdot v2.2s, v3.4h, v4.2h[0]"

  -
    input:
      bytes: [ 0x62, 0xf0, 0x64, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "v8.6a" ]
    expected:
      insns:
        -
          asm_text: "bfdot v2.2s, v3.4h, v4.2h[1]"

  -
    input:
      bytes: [ 0x62, 0xf8, 0x44, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "v8.6a" ]
    expected:
      insns:
        -
          asm_text: "bfdot v2.2s, v3.4h, v4.2h[2]"

  -
    input:
      bytes: [ 0x62, 0xf8, 0x64, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "v8.6a" ]
    expected:
      insns:
        -
          asm_text: "bfdot v2.2s, v3.4h, v4.2h[3]"

  -
    input:
      bytes: [ 0x62, 0xf0, 0x44, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "v8.6a" ]
    expected:
      insns:
        -
          asm_text: "bfdot v2.4s, v3.8h, v4.2h[0]"

  -
    input:
      bytes: [ 0x62, 0xf0, 0x64, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "v8.6a" ]
    expected:
      insns:
        -
          asm_text: "bfdot v2.4s, v3.8h, v4.2h[1]"

  -
    input:
      bytes: [ 0x62, 0xf8, 0x44, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "v8.6a" ]
    expected:
      insns:
        -
          asm_text: "bfdot v2.4s, v3.8h, v4.2h[2]"

  -
    input:
      bytes: [ 0x62, 0xf8, 0x64, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "v8.6a" ]
    expected:
      insns:
        -
          asm_text: "bfdot v2.4s, v3.8h, v4.2h[3]"

  -
    input:
      bytes: [ 0x62, 0xec, 0x44, 0x6e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "v8.6a" ]
    expected:
      insns:
        -
          asm_text: "bfmmla v2.4s, v3.8h, v4.8h"

  -
    input:
      bytes: [ 0x83, 0xec, 0x45, 0x6e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "v8.6a" ]
    expected:
      insns:
        -
          asm_text: "bfmmla v3.4s, v4.8h, v5.8h"

  -
    input:
      bytes: [ 0xa5, 0x68, 0xa1, 0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "v8.6a" ]
    expected:
      insns:
        -
          asm_text: "bfcvtn v5.4h, v5.4s"

  -
    input:
      bytes: [ 0xa5, 0x68, 0xa1, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "v8.6a" ]
    expected:
      insns:
        -
          asm_text: "bfcvtn2 v5.8h, v5.4s"

  -
    input:
      bytes: [ 0x65, 0x40, 0x63, 0x1e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "v8.6a" ]
    expected:
      insns:
        -
          asm_text: "bfcvt h5, s3"

  -
    input:
      bytes: [ 0xaa, 0xfe, 0xce, 0x2e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "v8.6a" ]
    expected:
      insns:
        -
          asm_text: "bfmlalb v10.4s, v21.8h, v14.8h"

  -
    input:
      bytes: [ 0xd5, 0xfd, 0xca, 0x6e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "v8.6a" ]
    expected:
      insns:
        -
          asm_text: "bfmlalt v21.4s, v14.8h, v10.8h"

  -
    input:
      bytes: [ 0xae, 0xf2, 0xda, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "v8.6a" ]
    expected:
      insns:
        -
          asm_text: "bfmlalb v14.4s, v21.8h, v10.h[1]"

  -
    input:
      bytes: [ 0xae, 0xf2, 0xea, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "v8.6a" ]
    expected:
      insns:
        -
          asm_text: "bfmlalb v14.4s, v21.8h, v10.h[2]"

  -
    input:
      bytes: [ 0xae, 0xfa, 0xfa, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "v8.6a" ]
    expected:
      insns:
        -
          asm_text: "bfmlalb v14.4s, v21.8h, v10.h[7]"

  -
    input:
      bytes: [ 0x55, 0xf1, 0xde, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "v8.6a" ]
    expected:
      insns:
        -
          asm_text: "bfmlalt v21.4s, v10.8h, v14.h[1]"

  -
    input:
      bytes: [ 0x55, 0xf1, 0xee, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "v8.6a" ]
    expected:
      insns:
        -
          asm_text: "bfmlalt v21.4s, v10.8h, v14.h[2]"

  -
    input:
      bytes: [ 0x55, 0xf9, 0xfe, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "v8.6a" ]
    expected:
      insns:
        -
          asm_text: "bfmlalt v21.4s, v10.8h, v14.h[7]"

  -
    input:
      bytes: [ 0x62, 0xfc, 0x44, 0x2e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "all" ]
    expected:
      insns:
        -
          asm_text: "bfdot v2.2s, v3.4h, v4.4h"

  -
    input:
      bytes: [ 0x62, 0xfc, 0x44, 0x6e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "all" ]
    expected:
      insns:
        -
          asm_text: "bfdot v2.4s, v3.8h, v4.8h"

  -
    input:
      bytes: [ 0x62, 0xf0, 0x44, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "all" ]
    expected:
      insns:
        -
          asm_text: "bfdot v2.2s, v3.4h, v4.2h[0]"

  -
    input:
      bytes: [ 0x62, 0xf0, 0x64, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "all" ]
    expected:
      insns:
        -
          asm_text: "bfdot v2.2s, v3.4h, v4.2h[1]"

  -
    input:
      bytes: [ 0x62, 0xf8, 0x44, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "all" ]
    expected:
      insns:
        -
          asm_text: "bfdot v2.2s, v3.4h, v4.2h[2]"

  -
    input:
      bytes: [ 0x62, 0xf8, 0x64, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "all" ]
    expected:
      insns:
        -
          asm_text: "bfdot v2.2s, v3.4h, v4.2h[3]"

  -
    input:
      bytes: [ 0x62, 0xf0, 0x44, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "all" ]
    expected:
      insns:
        -
          asm_text: "bfdot v2.4s, v3.8h, v4.2h[0]"

  -
    input:
      bytes: [ 0x62, 0xf0, 0x64, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "all" ]
    expected:
      insns:
        -
          asm_text: "bfdot v2.4s, v3.8h, v4.2h[1]"

  -
    input:
      bytes: [ 0x62, 0xf8, 0x44, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "all" ]
    expected:
      insns:
        -
          asm_text: "bfdot v2.4s, v3.8h, v4.2h[2]"

  -
    input:
      bytes: [ 0x62, 0xf8, 0x64, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "all" ]
    expected:
      insns:
        -
          asm_text: "bfdot v2.4s, v3.8h, v4.2h[3]"

  -
    input:
      bytes: [ 0x62, 0xec, 0x44, 0x6e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "all" ]
    expected:
      insns:
        -
          asm_text: "bfmmla v2.4s, v3.8h, v4.8h"

  -
    input:
      bytes: [ 0x83, 0xec, 0x45, 0x6e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "all" ]
    expected:
      insns:
        -
          asm_text: "bfmmla v3.4s, v4.8h, v5.8h"

  -
    input:
      bytes: [ 0xa5, 0x68, 0xa1, 0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "all" ]
    expected:
      insns:
        -
          asm_text: "bfcvtn v5.4h, v5.4s"

  -
    input:
      bytes: [ 0xa5, 0x68, 0xa1, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "all" ]
    expected:
      insns:
        -
          asm_text: "bfcvtn2 v5.8h, v5.4s"

  -
    input:
      bytes: [ 0x65, 0x40, 0x63, 0x1e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "all" ]
    expected:
      insns:
        -
          asm_text: "bfcvt h5, s3"

  -
    input:
      bytes: [ 0xaa, 0xfe, 0xce, 0x2e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "all" ]
    expected:
      insns:
        -
          asm_text: "bfmlalb v10.4s, v21.8h, v14.8h"

  -
    input:
      bytes: [ 0xd5, 0xfd, 0xca, 0x6e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "all" ]
    expected:
      insns:
        -
          asm_text: "bfmlalt v21.4s, v14.8h, v10.8h"

  -
    input:
      bytes: [ 0xae, 0xf2, 0xda, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "all" ]
    expected:
      insns:
        -
          asm_text: "bfmlalb v14.4s, v21.8h, v10.h[1]"

  -
    input:
      bytes: [ 0xae, 0xf2, 0xea, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "all" ]
    expected:
      insns:
        -
          asm_text: "bfmlalb v14.4s, v21.8h, v10.h[2]"

  -
    input:
      bytes: [ 0xae, 0xfa, 0xfa, 0x0f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "all" ]
    expected:
      insns:
        -
          asm_text: "bfmlalb v14.4s, v21.8h, v10.h[7]"

  -
    input:
      bytes: [ 0x55, 0xf1, 0xde, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "all" ]
    expected:
      insns:
        -
          asm_text: "bfmlalt v21.4s, v10.8h, v14.h[1]"

  -
    input:
      bytes: [ 0x55, 0xf1, 0xee, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "all" ]
    expected:
      insns:
        -
          asm_text: "bfmlalt v21.4s, v10.8h, v14.h[2]"

  -
    input:
      bytes: [ 0x55, 0xf9, 0xfe, 0x4f ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "aarch64", "all" ]
    expected:
      insns:
        -
          asm_text: "bfmlalt v21.4s, v10.8h, v14.h[7]"
