summaryrefslogtreecommitdiff
path: root/test/MC
diff options
context:
space:
mode:
authorBradley Smith <bradley.smith@arm.com>2014-04-09 14:43:06 +0000
committerBradley Smith <bradley.smith@arm.com>2014-04-09 14:43:06 +0000
commit3d41487f0efa0079bdf24b95d09bb3eb1590f6ed (patch)
tree2c4c73fe567ab45ef40d3e412f604f6cd7ede8f2 /test/MC
parent436fe613fc88c22f0e25d816f2c2e15c16b0c479 (diff)
downloadllvm-3d41487f0efa0079bdf24b95d09bb3eb1590f6ed.tar.gz
llvm-3d41487f0efa0079bdf24b95d09bb3eb1590f6ed.tar.bz2
llvm-3d41487f0efa0079bdf24b95d09bb3eb1590f6ed.tar.xz
[ARM64] Rework system register parsing to overcome SPSel clash in MSR variants.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205875 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/MC')
-rw-r--r--test/MC/ARM64/spsel-sysreg.s24
1 files changed, 24 insertions, 0 deletions
diff --git a/test/MC/ARM64/spsel-sysreg.s b/test/MC/ARM64/spsel-sysreg.s
new file mode 100644
index 0000000000..e6ff4bf51a
--- /dev/null
+++ b/test/MC/ARM64/spsel-sysreg.s
@@ -0,0 +1,24 @@
+// RUN: not llvm-mc -triple arm64 -show-encoding < %s 2>%t | FileCheck %s
+// RUN: FileCheck --check-prefix=CHECK-ERRORS < %t %s
+
+msr SPSel, #0
+msr SPSel, x0
+msr DAIFSet, #0
+msr ESR_EL1, x0
+mrs x0, SPSel
+mrs x0, ESR_EL1
+
+// CHECK: msr SPSEL, #0 // encoding: [0xbf,0x40,0x00,0xd5]
+// CHECK: msr SPSEL, x0 // encoding: [0x00,0x42,0x18,0xd5]
+// CHECK: msr DAIFSET, #0 // encoding: [0xdf,0x40,0x03,0xd5]
+// CHECK: msr ESR_EL1, x0 // encoding: [0x00,0x52,0x18,0xd5]
+// CHECK: mrs x0, SPSEL // encoding: [0x00,0x42,0x38,0xd5]
+// CHECK: mrs x0, ESR_EL1 // encoding: [0x00,0x52,0x38,0xd5]
+
+
+msr DAIFSet, x0
+msr ESR_EL1, #0
+mrs x0, DAIFSet
+// CHECK-ERRORS: error: invalid operand for instruction
+// CHECK-ERRORS: error: invalid operand for instruction
+// CHECK-ERRORS: error: invalid operand for instruction