test_cases:
  -
    input:
      bytes: [ 0x20, 0x38, 0x30, 0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "saddlv h0, v1.8b"

  -
    input:
      bytes: [ 0x20, 0x38, 0x30, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "saddlv h0, v1.16b"

  -
    input:
      bytes: [ 0x20, 0x38, 0x70, 0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "saddlv s0, v1.4h"

  -
    input:
      bytes: [ 0x20, 0x38, 0x70, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "saddlv s0, v1.8h"

  -
    input:
      bytes: [ 0x20, 0x38, 0xb0, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "saddlv d0, v1.4s"

  -
    input:
      bytes: [ 0x20, 0x38, 0x30, 0x2e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "uaddlv h0, v1.8b"

  -
    input:
      bytes: [ 0x20, 0x38, 0x30, 0x6e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "uaddlv h0, v1.16b"

  -
    input:
      bytes: [ 0x20, 0x38, 0x70, 0x2e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "uaddlv s0, v1.4h"

  -
    input:
      bytes: [ 0x20, 0x38, 0x70, 0x6e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "uaddlv s0, v1.8h"

  -
    input:
      bytes: [ 0x20, 0x38, 0xb0, 0x6e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "uaddlv d0, v1.4s"

  -
    input:
      bytes: [ 0x20, 0xa8, 0x30, 0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "smaxv b0, v1.8b"

  -
    input:
      bytes: [ 0x20, 0xa8, 0x30, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "smaxv b0, v1.16b"

  -
    input:
      bytes: [ 0x20, 0xa8, 0x70, 0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "smaxv h0, v1.4h"

  -
    input:
      bytes: [ 0x20, 0xa8, 0x70, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "smaxv h0, v1.8h"

  -
    input:
      bytes: [ 0x20, 0xa8, 0xb0, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "smaxv s0, v1.4s"

  -
    input:
      bytes: [ 0x20, 0xa8, 0x31, 0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "sminv b0, v1.8b"

  -
    input:
      bytes: [ 0x20, 0xa8, 0x31, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "sminv b0, v1.16b"

  -
    input:
      bytes: [ 0x20, 0xa8, 0x71, 0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "sminv h0, v1.4h"

  -
    input:
      bytes: [ 0x20, 0xa8, 0x71, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "sminv h0, v1.8h"

  -
    input:
      bytes: [ 0x20, 0xa8, 0xb1, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "sminv s0, v1.4s"

  -
    input:
      bytes: [ 0x20, 0xa8, 0x30, 0x2e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "umaxv b0, v1.8b"

  -
    input:
      bytes: [ 0x20, 0xa8, 0x30, 0x6e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "umaxv b0, v1.16b"

  -
    input:
      bytes: [ 0x20, 0xa8, 0x70, 0x2e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "umaxv h0, v1.4h"

  -
    input:
      bytes: [ 0x20, 0xa8, 0x70, 0x6e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "umaxv h0, v1.8h"

  -
    input:
      bytes: [ 0x20, 0xa8, 0xb0, 0x6e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "umaxv s0, v1.4s"

  -
    input:
      bytes: [ 0x20, 0xa8, 0x31, 0x2e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "uminv b0, v1.8b"

  -
    input:
      bytes: [ 0x20, 0xa8, 0x31, 0x6e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "uminv b0, v1.16b"

  -
    input:
      bytes: [ 0x20, 0xa8, 0x71, 0x2e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "uminv h0, v1.4h"

  -
    input:
      bytes: [ 0x20, 0xa8, 0x71, 0x6e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "uminv h0, v1.8h"

  -
    input:
      bytes: [ 0x20, 0xa8, 0xb1, 0x6e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "uminv s0, v1.4s"

  -
    input:
      bytes: [ 0x20, 0xb8, 0x31, 0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "addv b0, v1.8b"

  -
    input:
      bytes: [ 0x20, 0xb8, 0x31, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "addv b0, v1.16b"

  -
    input:
      bytes: [ 0x20, 0xb8, 0x71, 0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "addv h0, v1.4h"

  -
    input:
      bytes: [ 0x20, 0xb8, 0x71, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "addv h0, v1.8h"

  -
    input:
      bytes: [ 0x20, 0xb8, 0xb1, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "addv s0, v1.4s"

  -
    input:
      bytes: [ 0x20, 0xc8, 0x30, 0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fmaxnmv h0, v1.4h"

  -
    input:
      bytes: [ 0x20, 0xc8, 0xb0, 0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fminnmv h0, v1.4h"

  -
    input:
      bytes: [ 0x20, 0xf8, 0x30, 0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fmaxv h0, v1.4h"

  -
    input:
      bytes: [ 0x20, 0xf8, 0xb0, 0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fminv h0, v1.4h"

  -
    input:
      bytes: [ 0x20, 0xc8, 0x30, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fmaxnmv h0, v1.8h"

  -
    input:
      bytes: [ 0x20, 0xc8, 0xb0, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fminnmv h0, v1.8h"

  -
    input:
      bytes: [ 0x20, 0xf8, 0x30, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fmaxv h0, v1.8h"

  -
    input:
      bytes: [ 0x20, 0xf8, 0xb0, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fminv h0, v1.8h"

  -
    input:
      bytes: [ 0x20, 0xc8, 0x30, 0x6e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fmaxnmv s0, v1.4s"

  -
    input:
      bytes: [ 0x20, 0xc8, 0xb0, 0x6e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fminnmv s0, v1.4s"

  -
    input:
      bytes: [ 0x20, 0xf8, 0x30, 0x6e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fmaxv s0, v1.4s"

  -
    input:
      bytes: [ 0x20, 0xf8, 0xb0, 0x6e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_ONLY_OFFSET_BRANCH", "arm64", "neon", "+fullfp16" ]
    expected:
      insns:
        -
          asm_text: "fminv s0, v1.4s"
