mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-02 07:32:52 +00:00
ARM assembly parsing of MRS instruction.
Teach the parser to recognize the APSR and SPSR system register names. Add and update tests accordingly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135527 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f1a0090073
commit
80d01dd3d1
@ -3769,20 +3769,22 @@ def MCRR2 : MovRRCopro2<"mcrr2", 0 /* from ARM core register to coprocessor */,
|
||||
def MRRC2 : MovRRCopro2<"mrrc2", 1 /* from coprocessor to ARM core register */>;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Move between special register and ARM core register -- for disassembly only
|
||||
// Move between special register and ARM core register
|
||||
//
|
||||
|
||||
// Move to ARM core register from Special Register
|
||||
def MRS : ABI<0b0001, (outs GPR:$Rd), (ins), NoItinerary, "mrs", "\t$Rd, cpsr",
|
||||
[/* For disassembly only; pattern left blank */]> {
|
||||
def MRS : ABI<0b0001, (outs GPR:$Rd), (ins), NoItinerary,
|
||||
"mrs", "\t$Rd, apsr", []> {
|
||||
bits<4> Rd;
|
||||
let Inst{23-16} = 0b00001111;
|
||||
let Inst{15-12} = Rd;
|
||||
let Inst{7-4} = 0b0000;
|
||||
}
|
||||
|
||||
def MRSsys : ABI<0b0001, (outs GPR:$Rd), (ins), NoItinerary,"mrs","\t$Rd, spsr",
|
||||
[/* For disassembly only; pattern left blank */]> {
|
||||
def : InstAlias<"mrs${p} $Rd, cpsr", (MRS GPR:$Rd, pred:$p)>, Requires<[IsARM]>;
|
||||
|
||||
def MRSsys : ABI<0b0001, (outs GPR:$Rd), (ins), NoItinerary,
|
||||
"mrs", "\t$Rd, spsr", []> {
|
||||
bits<4> Rd;
|
||||
let Inst{23-16} = 0b01001111;
|
||||
let Inst{15-12} = Rd;
|
||||
|
@ -182,8 +182,10 @@ def QQQQ3 : ARMReg<3, "qqqq3", [QQ6, QQ7]>;
|
||||
|
||||
// Current Program Status Register.
|
||||
def CPSR : ARMReg<0, "cpsr">;
|
||||
def FPSCR : ARMReg<1, "fpscr">;
|
||||
def ITSTATE : ARMReg<2, "itstate">;
|
||||
def APSR : ARMReg<1, "apsr">;
|
||||
def SPSR : ARMReg<2, "spsr">;
|
||||
def FPSCR : ARMReg<3, "fpscr">;
|
||||
def ITSTATE : ARMReg<4, "itstate">;
|
||||
|
||||
// Special Registers - only available in privileged mode.
|
||||
def FPSID : ARMReg<0, "fpsid">;
|
||||
|
@ -83,9 +83,6 @@
|
||||
@ CHECK: bkpt #10 @ encoding: [0x7a,0x00,0x20,0xe1]
|
||||
bkpt #10
|
||||
|
||||
@ CHECK: mrs r8, cpsr @ encoding: [0x00,0x80,0x0f,0xe1]
|
||||
mrs r8, cpsr
|
||||
|
||||
@ CHECK: cdp p7, #1, c1, c1, c1, #4 @ encoding: [0x81,0x17,0x11,0xee]
|
||||
cdp p7, #1, c1, c1, c1, #4
|
||||
@ CHECK: cdp2 p7, #1, c1, c1, c1, #4 @ encoding: [0x81,0x17,0x11,0xfe]
|
||||
|
@ -734,6 +734,19 @@ _func:
|
||||
@ CHECK: mrrc p7, #1, r5, r4, c1 @ encoding: [0x11,0x57,0x54,0xec]
|
||||
@ CHECK: mrrc2 p7, #1, r5, r4, c1 @ encoding: [0x11,0x57,0x54,0xfc]
|
||||
|
||||
|
||||
@------------------------------------------------------------------------------
|
||||
@ MRS
|
||||
@------------------------------------------------------------------------------
|
||||
mrs r8, apsr
|
||||
mrs r8, cpsr
|
||||
mrs r8, spsr
|
||||
@ CHECK: mrs r8, apsr @ encoding: [0x00,0x80,0x0f,0xe1]
|
||||
@ CHECK: mrs r8, apsr @ encoding: [0x00,0x80,0x0f,0xe1]
|
||||
@ CHECK: mrs r8, spsr @ encoding: [0x00,0x80,0x4f,0xe1]
|
||||
|
||||
|
||||
|
||||
@------------------------------------------------------------------------------
|
||||
@ STM*
|
||||
@------------------------------------------------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user