test_cases:
  -
    input:
      bytes: [ 0x20, 0x9c, 0x22, 0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "mul v0.8b, v1.8b, v2.8b"

  -
    input:
      bytes: [ 0x20, 0x9c, 0x22, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "mul v0.16b, v1.16b, v2.16b"

  -
    input:
      bytes: [ 0x20, 0x9c, 0x62, 0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "mul v0.4h, v1.4h, v2.4h"

  -
    input:
      bytes: [ 0x20, 0x9c, 0x62, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "mul v0.8h, v1.8h, v2.8h"

  -
    input:
      bytes: [ 0x20, 0x9c, 0xa2, 0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "mul v0.2s, v1.2s, v2.2s"

  -
    input:
      bytes: [ 0x20, 0x9c, 0xa2, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "mul v0.4s, v1.4s, v2.4s"

  -
    input:
      bytes: [ 0x20, 0xdc, 0x22, 0x2e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "fmul v0.2s, v1.2s, v2.2s"

  -
    input:
      bytes: [ 0x20, 0xdc, 0x22, 0x6e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "fmul v0.4s, v1.4s, v2.4s"

  -
    input:
      bytes: [ 0x20, 0xdc, 0x62, 0x6e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "fmul v0.2d, v1.2d, v2.2d"

  -
    input:
      bytes: [ 0x20, 0xfc, 0x22, 0x2e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "fdiv v0.2s, v1.2s, v2.2s"

  -
    input:
      bytes: [ 0x20, 0xfc, 0x22, 0x6e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "fdiv v0.4s, v1.4s, v2.4s"

  -
    input:
      bytes: [ 0x20, 0xfc, 0x62, 0x6e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "fdiv v0.2d, v1.2d, v2.2d"

  -
    input:
      bytes: [ 0xf1, 0x9f, 0x30, 0x2e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "pmul v17.8b, v31.8b, v16.8b"

  -
    input:
      bytes: [ 0x20, 0x9c, 0x22, 0x6e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "pmul v0.16b, v1.16b, v2.16b"

  -
    input:
      bytes: [ 0x22, 0xb7, 0x63, 0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "sqdmulh v2.4h, v25.4h, v3.4h"

  -
    input:
      bytes: [ 0xac, 0xb4, 0x6d, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "sqdmulh v12.8h, v5.8h, v13.8h"

  -
    input:
      bytes: [ 0x23, 0xb4, 0xbe, 0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "sqdmulh v3.2s, v1.2s, v30.2s"

  -
    input:
      bytes: [ 0x22, 0xb7, 0x63, 0x2e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "sqrdmulh v2.4h, v25.4h, v3.4h"

  -
    input:
      bytes: [ 0xac, 0xb4, 0x6d, 0x6e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "sqrdmulh v12.8h, v5.8h, v13.8h"

  -
    input:
      bytes: [ 0x23, 0xb4, 0xbe, 0x2e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "sqrdmulh v3.2s, v1.2s, v30.2s"

  -
    input:
      bytes: [ 0xb5, 0xdc, 0x2d, 0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "fmulx v21.2s, v5.2s, v13.2s"

  -
    input:
      bytes: [ 0x21, 0xdf, 0x23, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "fmulx v1.4s, v25.4s, v3.4s"

  -
    input:
      bytes: [ 0xdf, 0xde, 0x62, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "aarch64-none-linux-gnu", "neon" ]
    expected:
      insns:
        -
          asm_text: "fmulx v31.2d, v22.2d, v2.2d"
