test_cases:
  -
    input:
      bytes: [ 0xe5, 0x40, 0xd4, 0x1a ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "crc" ]
    expected:
      insns:
        -
          asm_text: "crc32b w5, w7, w20"

  -
    input:
      bytes: [ 0xfc, 0x47, 0xde, 0x1a ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "crc" ]
    expected:
      insns:
        -
          asm_text: "crc32h w28, wzr, w30"

  -
    input:
      bytes: [ 0x20, 0x48, 0xc2, 0x1a ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "crc" ]
    expected:
      insns:
        -
          asm_text: "crc32w w0, w1, w2"

  -
    input:
      bytes: [ 0x27, 0x4d, 0xd4, 0x9a ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "crc" ]
    expected:
      insns:
        -
          asm_text: "crc32x w7, w9, x20"

  -
    input:
      bytes: [ 0xa9, 0x50, 0xc4, 0x1a ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "crc" ]
    expected:
      insns:
        -
          asm_text: "crc32cb w9, w5, w4"

  -
    input:
      bytes: [ 0x2d, 0x56, 0xd9, 0x1a ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "crc" ]
    expected:
      insns:
        -
          asm_text: "crc32ch w13, w17, w25"

  -
    input:
      bytes: [ 0x7f, 0x58, 0xc5, 0x1a ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "crc" ]
    expected:
      insns:
        -
          asm_text: "crc32cw wzr, w3, w5"

  -
    input:
      bytes: [ 0x12, 0x5e, 0xdf, 0x9a ]
      arch: "CS_ARCH_AARCH64"
      options: [ "CS_OPT_NO_BRANCH_OFFSET", "arm64", "crc" ]
    expected:
      insns:
        -
          asm_text: "crc32cx w18, w16, xzr"
