test_cases:
  -
    input:
      bytes: [ 0x20, 0x18, 0x02, 0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "uzp1 v0.8b, v1.8b, v2.8b"

  -
    input:
      bytes: [ 0x20, 0x18, 0x02, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "uzp1 v0.16b, v1.16b, v2.16b"

  -
    input:
      bytes: [ 0x20, 0x18, 0x42, 0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "uzp1 v0.4h, v1.4h, v2.4h"

  -
    input:
      bytes: [ 0x20, 0x18, 0x42, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "uzp1 v0.8h, v1.8h, v2.8h"

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

  -
    input:
      bytes: [ 0x20, 0x18, 0x82, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "uzp1 v0.4s, v1.4s, v2.4s"

  -
    input:
      bytes: [ 0x20, 0x18, 0xc2, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "uzp1 v0.2d, v1.2d, v2.2d"

  -
    input:
      bytes: [ 0x20, 0x28, 0x02, 0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "trn1 v0.8b, v1.8b, v2.8b"

  -
    input:
      bytes: [ 0x20, 0x28, 0x02, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "trn1 v0.16b, v1.16b, v2.16b"

  -
    input:
      bytes: [ 0x20, 0x28, 0x42, 0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "trn1 v0.4h, v1.4h, v2.4h"

  -
    input:
      bytes: [ 0x20, 0x28, 0x42, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "trn1 v0.8h, v1.8h, v2.8h"

  -
    input:
      bytes: [ 0x20, 0x28, 0x82, 0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "trn1 v0.2s, v1.2s, v2.2s"

  -
    input:
      bytes: [ 0x20, 0x28, 0x82, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "trn1 v0.4s, v1.4s, v2.4s"

  -
    input:
      bytes: [ 0x20, 0x28, 0xc2, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "trn1 v0.2d, v1.2d, v2.2d"

  -
    input:
      bytes: [ 0x20, 0x38, 0x02, 0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "zip1 v0.8b, v1.8b, v2.8b"

  -
    input:
      bytes: [ 0x20, 0x38, 0x02, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "zip1 v0.16b, v1.16b, v2.16b"

  -
    input:
      bytes: [ 0x20, 0x38, 0x42, 0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "zip1 v0.4h, v1.4h, v2.4h"

  -
    input:
      bytes: [ 0x20, 0x38, 0x42, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "zip1 v0.8h, v1.8h, v2.8h"

  -
    input:
      bytes: [ 0x20, 0x38, 0x82, 0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "zip1 v0.2s, v1.2s, v2.2s"

  -
    input:
      bytes: [ 0x20, 0x38, 0x82, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "zip1 v0.4s, v1.4s, v2.4s"

  -
    input:
      bytes: [ 0x20, 0x38, 0xc2, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "zip1 v0.2d, v1.2d, v2.2d"

  -
    input:
      bytes: [ 0x20, 0x58, 0x02, 0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "uzp2 v0.8b, v1.8b, v2.8b"

  -
    input:
      bytes: [ 0x20, 0x58, 0x02, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "uzp2 v0.16b, v1.16b, v2.16b"

  -
    input:
      bytes: [ 0x20, 0x58, 0x42, 0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "uzp2 v0.4h, v1.4h, v2.4h"

  -
    input:
      bytes: [ 0x20, 0x58, 0x42, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "uzp2 v0.8h, v1.8h, v2.8h"

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

  -
    input:
      bytes: [ 0x20, 0x58, 0x82, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "uzp2 v0.4s, v1.4s, v2.4s"

  -
    input:
      bytes: [ 0x20, 0x58, 0xc2, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "uzp2 v0.2d, v1.2d, v2.2d"

  -
    input:
      bytes: [ 0x20, 0x68, 0x02, 0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "trn2 v0.8b, v1.8b, v2.8b"

  -
    input:
      bytes: [ 0x20, 0x68, 0x02, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "trn2 v0.16b, v1.16b, v2.16b"

  -
    input:
      bytes: [ 0x20, 0x68, 0x42, 0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "trn2 v0.4h, v1.4h, v2.4h"

  -
    input:
      bytes: [ 0x20, 0x68, 0x42, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "trn2 v0.8h, v1.8h, v2.8h"

  -
    input:
      bytes: [ 0x20, 0x68, 0x82, 0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "trn2 v0.2s, v1.2s, v2.2s"

  -
    input:
      bytes: [ 0x20, 0x68, 0x82, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "trn2 v0.4s, v1.4s, v2.4s"

  -
    input:
      bytes: [ 0x20, 0x68, 0xc2, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "trn2 v0.2d, v1.2d, v2.2d"

  -
    input:
      bytes: [ 0x20, 0x78, 0x02, 0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "zip2 v0.8b, v1.8b, v2.8b"

  -
    input:
      bytes: [ 0x20, 0x78, 0x02, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "zip2 v0.16b, v1.16b, v2.16b"

  -
    input:
      bytes: [ 0x20, 0x78, 0x42, 0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "zip2 v0.4h, v1.4h, v2.4h"

  -
    input:
      bytes: [ 0x20, 0x78, 0x42, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "zip2 v0.8h, v1.8h, v2.8h"

  -
    input:
      bytes: [ 0x20, 0x78, 0x82, 0x0e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "zip2 v0.2s, v1.2s, v2.2s"

  -
    input:
      bytes: [ 0x20, 0x78, 0x82, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "zip2 v0.4s, v1.4s, v2.4s"

  -
    input:
      bytes: [ 0x20, 0x78, 0xc2, 0x4e ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "neon" ]
    expected:
      insns:
        -
          asm_text: "zip2 v0.2d, v1.2d, v2.2d"
