mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-15 04:30:12 +00:00
More simple cleanup of ARM asm operand definitions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135958 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
3ef750d4b6
commit
5f6c133d7d
@ -131,39 +131,15 @@ def VFPNeonA8Domain : Domain<5>; // Instructions in VFP & Neon under A8
|
|||||||
// ARM special operands.
|
// ARM special operands.
|
||||||
//
|
//
|
||||||
|
|
||||||
def CondCodeOperand : AsmOperandClass {
|
|
||||||
let Name = "CondCode";
|
|
||||||
let SuperClasses = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
def CCOutOperand : AsmOperandClass {
|
|
||||||
let Name = "CCOut";
|
|
||||||
let SuperClasses = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
def MemBarrierOptOperand : AsmOperandClass {
|
|
||||||
let Name = "MemBarrierOpt";
|
|
||||||
let SuperClasses = [];
|
|
||||||
let ParserMethod = "parseMemBarrierOptOperand";
|
|
||||||
}
|
|
||||||
|
|
||||||
def ProcIFlagsOperand : AsmOperandClass {
|
|
||||||
let Name = "ProcIFlags";
|
|
||||||
let SuperClasses = [];
|
|
||||||
let ParserMethod = "parseProcIFlagsOperand";
|
|
||||||
}
|
|
||||||
|
|
||||||
def MSRMaskOperand : AsmOperandClass {
|
|
||||||
let Name = "MSRMask";
|
|
||||||
let SuperClasses = [];
|
|
||||||
let ParserMethod = "parseMSRMaskOperand";
|
|
||||||
}
|
|
||||||
|
|
||||||
// ARM imod and iflag operands, used only by the CPS instruction.
|
// ARM imod and iflag operands, used only by the CPS instruction.
|
||||||
def imod_op : Operand<i32> {
|
def imod_op : Operand<i32> {
|
||||||
let PrintMethod = "printCPSIMod";
|
let PrintMethod = "printCPSIMod";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def ProcIFlagsOperand : AsmOperandClass {
|
||||||
|
let Name = "ProcIFlags";
|
||||||
|
let ParserMethod = "parseProcIFlagsOperand";
|
||||||
|
}
|
||||||
def iflags_op : Operand<i32> {
|
def iflags_op : Operand<i32> {
|
||||||
let PrintMethod = "printCPSIFlag";
|
let PrintMethod = "printCPSIFlag";
|
||||||
let ParserMatchClass = ProcIFlagsOperand;
|
let ParserMatchClass = ProcIFlagsOperand;
|
||||||
@ -171,6 +147,7 @@ def iflags_op : Operand<i32> {
|
|||||||
|
|
||||||
// ARM Predicate operand. Default to 14 = always (AL). Second part is CC
|
// ARM Predicate operand. Default to 14 = always (AL). Second part is CC
|
||||||
// register whose default is 0 (no register).
|
// register whose default is 0 (no register).
|
||||||
|
def CondCodeOperand : AsmOperandClass { let Name = "CondCode"; }
|
||||||
def pred : PredicateOperand<OtherVT, (ops i32imm, CCR),
|
def pred : PredicateOperand<OtherVT, (ops i32imm, CCR),
|
||||||
(ops (i32 14), (i32 zero_reg))> {
|
(ops (i32 14), (i32 zero_reg))> {
|
||||||
let PrintMethod = "printPredicateOperand";
|
let PrintMethod = "printPredicateOperand";
|
||||||
@ -178,6 +155,7 @@ def pred : PredicateOperand<OtherVT, (ops i32imm, CCR),
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Conditional code result for instructions whose 's' bit is set, e.g. subs.
|
// Conditional code result for instructions whose 's' bit is set, e.g. subs.
|
||||||
|
def CCOutOperand : AsmOperandClass { let Name = "CCOut"; }
|
||||||
def cc_out : OptionalDefOperand<OtherVT, (ops CCR), (ops (i32 zero_reg))> {
|
def cc_out : OptionalDefOperand<OtherVT, (ops CCR), (ops (i32 zero_reg))> {
|
||||||
let EncoderMethod = "getCCOutOpValue";
|
let EncoderMethod = "getCCOutOpValue";
|
||||||
let PrintMethod = "printSBitModifierOperand";
|
let PrintMethod = "printSBitModifierOperand";
|
||||||
@ -202,6 +180,10 @@ def setend_op : Operand<i32> {
|
|||||||
let ParserMatchClass = SetEndAsmOperand;
|
let ParserMatchClass = SetEndAsmOperand;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def MSRMaskOperand : AsmOperandClass {
|
||||||
|
let Name = "MSRMask";
|
||||||
|
let ParserMethod = "parseMSRMaskOperand";
|
||||||
|
}
|
||||||
def msr_mask : Operand<i32> {
|
def msr_mask : Operand<i32> {
|
||||||
let PrintMethod = "printMSRMaskOperand";
|
let PrintMethod = "printMSRMaskOperand";
|
||||||
let ParserMatchClass = MSRMaskOperand;
|
let ParserMatchClass = MSRMaskOperand;
|
||||||
|
@ -394,7 +394,6 @@ def rot_imm : Operand<i32>, ImmLeaf<i32, [{
|
|||||||
let EncoderMethod = "getRotImmOpValue";
|
let EncoderMethod = "getRotImmOpValue";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// shift_imm: An integer that encodes a shift amount and the type of shift
|
// shift_imm: An integer that encodes a shift amount and the type of shift
|
||||||
// (currently either asr or lsl) using the same encoding used for the
|
// (currently either asr or lsl) using the same encoding used for the
|
||||||
// immediates in so_reg operands.
|
// immediates in so_reg operands.
|
||||||
@ -3450,6 +3449,10 @@ def MVNCCi : ARMPseudoInst<(outs GPR:$Rd),
|
|||||||
// Atomic operations intrinsics
|
// Atomic operations intrinsics
|
||||||
//
|
//
|
||||||
|
|
||||||
|
def MemBarrierOptOperand : AsmOperandClass {
|
||||||
|
let Name = "MemBarrierOpt";
|
||||||
|
let ParserMethod = "parseMemBarrierOptOperand";
|
||||||
|
}
|
||||||
def memb_opt : Operand<i32> {
|
def memb_opt : Operand<i32> {
|
||||||
let PrintMethod = "printMemBOption";
|
let PrintMethod = "printMemBOption";
|
||||||
let ParserMatchClass = MemBarrierOptOperand;
|
let ParserMatchClass = MemBarrierOptOperand;
|
||||||
|
Loading…
Reference in New Issue
Block a user