1// RUN: llvm-mc -triple aarch64-- -mattr=+crc %s 2>&1 |\
2// RUN:   FileCheck %s --check-prefix=CRC
3
4// RUN: llvm-mc -triple aarch64-- -mcpu=cortex-a55 %s 2>&1 |\
5// RUN:   FileCheck %s --check-prefix=CRC
6// RUN: llvm-mc -triple aarch64-- -mcpu=cortex-a75 %s 2>&1 |\
7// RUN:   FileCheck %s --check-prefix=CRC
8// RUN: llvm-mc -triple aarch64-- -mcpu=tsv110 %s 2>&1 |\
9// RUN:   FileCheck %s --check-prefix=CRC
10
11// RUN: not llvm-mc -triple aarch64-- %s 2>&1 |\
12// RUN:   FileCheck %s --check-prefix=NOCRC
13// RUN: not llvm-mc -triple aarch64-- -mcpu=cyclone %s 2>&1 |\
14// RUN:   FileCheck %s --check-prefix=NOCRC
15
16    crc32b w0, w1, w5
17    crc32h w3, w5, w6
18    crc32w w19, wzr, w20
19    crc32x w3, w5, x20
20
21// CRC: crc32b w0, w1, w5
22// CRC: crc32h w3, w5, w6
23// CRC: crc32w w19, wzr, w20
24// CRC: crc32x w3, w5, x20
25
26// NOCRC: error: instruction requires: crc
27// NOCRC:     crc32b w0, w1, w5
28// NOCRC: error: instruction requires: crc
29// NOCRC:     crc32h w3, w5, w6
30// NOCRC: error: instruction requires: crc
31// NOCRC:     crc32w w19, wzr, w20
32// NOCRC: error: instruction requires: crc
33// NOCRC:     crc32x w3, w5, x20
34
35    crc32cb w5, w10, w15
36    crc32ch w3, w5, w7
37    crc32cw w11, w13, w17
38    crc32cx w19, w23, x29
39
40// CRC: crc32cb w5, w10, w15
41// CRC: crc32ch w3, w5, w7
42// CRC: crc32cw w11, w13, w17
43// CRC: crc32cx w19, w23, x29
44
45// NOCRC: error: instruction requires: crc
46// NOCRC:     crc32cb w5, w10, w15
47// NOCRC: error: instruction requires: crc
48// NOCRC:     crc32ch w3, w5, w7
49// NOCRC: error: instruction requires: crc
50// NOCRC:     crc32cw w11, w13, w17
51// NOCRC: error: instruction requires: crc
52// NOCRC:     crc32cx w19, w23, x29
53