1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-23 13:02:52 +02:00
llvm-mirror/test/MC/AArch64/directive-cpu.s
Saleem Abdulrasool f5d9036758 AArch64: support .cpu directive
Add support for the AArch64 .cpu directive.  This is a slightly involved
directive since the parameter is actually a variable encoded string.  The
general structure is:

  <cpu>[[+-]<feature>]*

We now map some of the supported string names for features for internal
representation of feature flags.  If we encounter one which we do not support,
bail out as we cannot validate the assembly any longer.

Resolves PR27010.

llvm-svn: 265240
2016-04-02 19:29:52 +00:00

64 lines
1.1 KiB
ArmAsm

// RUN: not llvm-mc -triple aarch64-unknown-none-eabi -filetype asm -o - %s 2>&1 | FileCheck %s
.cpu generic
fminnm d0, d0, d1
.cpu generic+fp
fminnm d0, d0, d1
.cpu generic+nofp
fminnm d0, d0, d1
.cpu generic+simd
addp v0.4s, v0.4s, v0.4s
.cpu generic+nosimd
addp v0.4s, v0.4s, v0.4s
.cpu generic+crc
crc32cx w0, w1, x3
.cpu generic+nocrc
crc32cx w0, w1, x3
.cpu generic+crypto+nocrc
aesd v0.16b, v2.16b
.cpu generic+nocrypto+crc
aesd v0.16b, v2.16b
// NOTE: the errors precede the actual output! The errors appear in order
// though, so validate by hoisting them to the top and preservering relative
// ordering
// CHECK: error: instruction requires: fp-armv8
// CHECK: fminnm d0, d0, d1
// CHECK: ^
// CHECK: error: instruction requires: neon
// CHECK: addp v0.4s, v0.4s, v0.4s
// CHECK: ^
// CHECK: error: instruction requires: crc
// CHECK: crc32cx w0, w1, x3
// CHECK: ^
// CHECK: error: instruction requires: crypto
// CHECK: aesd v0.16b, v2.16b
// CHECK: ^
// CHECK: fminnm d0, d0, d1
// CHECK: fminnm d0, d0, d1
// CHECK: addp v0.4s, v0.4s, v0.4s
// CHECK: crc32cx w0, w1, x3
// CHECK: aesd v0.16b, v2.16b