Merging r259228:
[oota-llvm.git] / test / MC / AArch64 / neon-crypto.s
1 // RUN: llvm-mc -triple=arm64 -mattr=+neon -mattr=+crypto -show-encoding < %s | FileCheck %s
2 // RUN: not llvm-mc -triple=arm64 -mattr=+neon -show-encoding < %s 2>&1 | FileCheck -check-prefix=CHECK-NO-CRYPTO-ARM64 %s
3
4 // Check that the assembler can handle the documented syntax for AArch64
5
6 //------------------------------------------------------------------------------
7 // Instructions for crypto
8 //------------------------------------------------------------------------------
9
10         aese v0.16b, v1.16b
11         aesd v0.16b, v1.16b
12         aesmc v0.16b, v1.16b
13         aesimc v0.16b, v1.16b
14
15 // CHECK-NO-CRYPTO: error: instruction requires a CPU feature not currently enabled
16 // CHECK-NO-CRYPTO-ARM64: error: instruction requires: crypto
17 // CHECK: aese  v0.16b, v1.16b          // encoding: [0x20,0x48,0x28,0x4e]
18 // CHECK: aesd  v0.16b, v1.16b          // encoding: [0x20,0x58,0x28,0x4e]
19 // CHECK: aesmc v0.16b, v1.16b          // encoding: [0x20,0x68,0x28,0x4e]
20 // CHECK: aesimc        v0.16b, v1.16b          // encoding: [0x20,0x78,0x28,0x4e]
21
22         sha1h s0, s1
23         sha1su1 v0.4s, v1.4s
24         sha256su0 v0.4s, v1.4s
25
26 // CHECK: sha1h s0, s1                  // encoding: [0x20,0x08,0x28,0x5e]
27 // CHECK: sha1su1       v0.4s, v1.4s            // encoding: [0x20,0x18,0x28,0x5e]
28 // CHECK: sha256su0     v0.4s, v1.4s    // encoding: [0x20,0x28,0x28,0x5e]
29
30         sha1c q0, s1, v2.4s
31         sha1p q0, s1, v2.4s
32         sha1m q0, s1, v2.4s
33         sha1su0 v0.4s, v1.4s, v2.4s
34         sha256h q0, q1, v2.4s
35         sha256h2 q0, q1, v2.4s
36         sha256su1 v0.4s, v1.4s, v2.4s
37
38 // CHECK: sha1c q0, s1, v2.4s           // encoding: [0x20,0x00,0x02,0x5e]
39 // CHECK: sha1p q0, s1, v2.4s           // encoding: [0x20,0x10,0x02,0x5e]
40 // CHECK: sha1m q0, s1, v2.4s           // encoding: [0x20,0x20,0x02,0x5e]
41 // CHECK: sha1su0       v0.4s, v1.4s, v2.4s     // encoding: [0x20,0x30,0x02,0x5e]
42 // CHECK: sha256h       q0, q1, v2.4s           // encoding: [0x20,0x40,0x02,0x5e]
43 // CHECK: sha256h2      q0, q1, v2.4s   // encoding: [0x20,0x50,0x02,0x5e]
44 // CHECK: sha256su1     v0.4s, v1.4s, v2.4s // encoding: [0x20,0x60,0x02,0x5e]
45