1@ RUN: llvm-mc -triple armv8 -mattr=+neon,+crypto -show-encoding < %s | FileCheck %s
2@ RUN: not llvm-mc -triple=armv7 -show-encoding < %s 2>&1 | FileCheck %s --check-prefix=CHECK-V7
3
4aesd.8  q0, q1
5aese.8  q0, q1
6aesimc.8  q0, q1
7aesmc.8  q0, q1
8@ CHECK: aesd.8 q0, q1          @ encoding: [0x42,0x03,0xb0,0xf3]
9@ CHECK: aese.8 q0, q1          @ encoding: [0x02,0x03,0xb0,0xf3]
10@ CHECK: aesimc.8 q0, q1        @ encoding: [0xc2,0x03,0xb0,0xf3]
11@ CHECK: aesmc.8 q0, q1         @ encoding: [0x82,0x03,0xb0,0xf3]
12@ CHECK-V7: instruction requires: crypto armv8
13@ CHECK-V7: instruction requires: crypto armv8
14@ CHECK-V7: instruction requires: crypto armv8
15@ CHECK-V7: instruction requires: crypto armv8
16
17sha1h.32  q0, q1
18sha1su1.32  q0, q1
19sha256su0.32  q0, q1
20@ CHECK: sha1h.32  q0, q1       @ encoding: [0xc2,0x02,0xb9,0xf3]
21@ CHECK: sha1su1.32 q0, q1      @ encoding: [0x82,0x03,0xba,0xf3]
22@ CHECK: sha256su0.32 q0, q1    @ encoding: [0xc2,0x03,0xba,0xf3]
23@ CHECK-V7: instruction requires: crypto armv8
24@ CHECK-V7: instruction requires: crypto armv8
25@ CHECK-V7: instruction requires: crypto armv8
26
27sha1c.32  q0, q1, q2
28sha1m.32  q0, q1, q2
29sha1p.32  q0, q1, q2
30sha1su0.32  q0, q1, q2
31sha256h.32  q0, q1, q2
32sha256h2.32  q0, q1, q2
33sha256su1.32  q0, q1, q2
34@ CHECK: sha1c.32  q0, q1, q2   @ encoding: [0x44,0x0c,0x02,0xf2]
35@ CHECK: sha1m.32  q0, q1, q2   @ encoding: [0x44,0x0c,0x22,0xf2]
36@ CHECK: sha1p.32 q0, q1, q2    @ encoding: [0x44,0x0c,0x12,0xf2]
37@ CHECK: sha1su0.32  q0, q1, q2      @ encoding: [0x44,0x0c,0x32,0xf2]
38@ CHECK: sha256h.32  q0, q1, q2      @ encoding: [0x44,0x0c,0x02,0xf3]
39@ CHECK: sha256h2.32 q0, q1, q2      @ encoding: [0x44,0x0c,0x12,0xf3]
40@ CHECK: sha256su1.32 q0, q1, q2     @ encoding: [0x44,0x0c,0x22,0xf3]
41@ CHECK-V7: instruction requires: crypto armv8
42@ CHECK-V7: instruction requires: crypto armv8
43@ CHECK-V7: instruction requires: crypto armv8
44@ CHECK-V7: instruction requires: crypto armv8
45@ CHECK-V7: instruction requires: crypto armv8
46@ CHECK-V7: instruction requires: crypto armv8
47@ CHECK-V7: instruction requires: crypto armv8
48
49vmull.p64 q8, d16, d17
50@ CHECK: vmull.p64  q8, d16, d17    @ encoding: [0xa1,0x0e,0xe0,0xf2]
51@ CHECK-V7: instruction requires: crypto armv8
52