]> granicus.if.org Git - llvm/commit
[AArch64] Allow access to all system registers with MRS/MSR instructions.
authorTom Coxon <tom.coxon@arm.com>
Wed, 1 Oct 2014 10:13:59 +0000 (10:13 +0000)
committerTom Coxon <tom.coxon@arm.com>
Wed, 1 Oct 2014 10:13:59 +0000 (10:13 +0000)
commit01649dea92ff98b71916a8226016b35771044cb0
tree897bbc5e55962c77b9d60b25abb4f9911d2a3fba
parent82e145f9efa4c85b97e1a2d1320518e1e3fe0926
[AArch64] Allow access to all system registers with MRS/MSR instructions.

The A64 instruction set includes a generic register syntax for accessing
implementation-defined system registers. The syntax for these registers is:
    S<op0>_<op1>_<CRn>_<CRm>_<op2>

The encoding space permitted for implementation-defined system registers
is:
    op0 op1  CRn   CRm   op2
    11  xxx  1x11  xxxx  xxx

The full encoding space can now be accessed:
    op0 op1  CRn   CRm   op2
    xx  xxx  xxxx  xxxx  xxx

This is useful to anyone needing to write assembly code supporting new
system registers before the assembler has learned the official names for
them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@218753 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/AArch64/AArch64InstrFormats.td
lib/Target/AArch64/Disassembler/AArch64Disassembler.cpp
lib/Target/AArch64/InstPrinter/AArch64InstPrinter.cpp
lib/Target/AArch64/Utils/AArch64BaseInfo.cpp
lib/Target/AArch64/Utils/AArch64BaseInfo.h
test/MC/AArch64/arm64-system-encoding.s
test/MC/AArch64/basic-a64-diagnostics.s
test/MC/AArch64/basic-a64-instructions.s