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