mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-23 17:32:49 +00:00
asmprint pseudo instrs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24742 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d4f2ab5e00
commit
17392e026a
@ -422,19 +422,6 @@ void SparcV8AsmPrinter::printOperand(const MachineInstr *MI, int opNum) {
|
||||
if (CloseParen) O << ")";
|
||||
}
|
||||
|
||||
static bool isPseudoInstruction (const MachineInstr *MI) {
|
||||
switch (MI->getOpcode ()) {
|
||||
case V8::PHI:
|
||||
case V8::ADJCALLSTACKUP:
|
||||
case V8::ADJCALLSTACKDOWN:
|
||||
case V8::IMPLICIT_USE:
|
||||
case V8::IMPLICIT_DEF:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/// printBaseOffsetPair - Print two consecutive operands of MI, starting at #i,
|
||||
/// which form a base + offset pair (which may have brackets around it, if
|
||||
/// brackets is true, or may be in the form base - constant, if offset is a
|
||||
@ -467,10 +454,6 @@ void SparcV8AsmPrinter::printMachineInstruction(const MachineInstr *MI) {
|
||||
const TargetInstrInfo &TII = *TM.getInstrInfo();
|
||||
const TargetInstrDescriptor &Desc = TII.get(Opcode);
|
||||
|
||||
// If it's a pseudo-instruction, comment it out.
|
||||
if (isPseudoInstruction (MI))
|
||||
O << "! ";
|
||||
|
||||
O << Desc.Name << " ";
|
||||
|
||||
// print non-immediate, non-register-def operands
|
||||
|
@ -35,16 +35,19 @@ include "SparcV8InstrFormats.td"
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// Pseudo instructions.
|
||||
class PseudoInstV8<string nm, dag ops> : InstV8 {
|
||||
let Name = nm;
|
||||
class PseudoInstV8<string asmstr, dag ops> : InstV8 {
|
||||
let AsmString = asmstr;
|
||||
dag OperandList = ops;
|
||||
}
|
||||
def PHI : PseudoInstV8<"PHI", (ops variable_ops)>;
|
||||
def ADJCALLSTACKDOWN : PseudoInstV8<"ADJCALLSTACKDOWN", (ops variable_ops)>;
|
||||
def ADJCALLSTACKUP : PseudoInstV8<"ADJCALLSTACKUP", (ops variable_ops)>;
|
||||
def IMPLICIT_USE : PseudoInstV8<"IMPLICIT_USE", (ops variable_ops)>;
|
||||
def IMPLICIT_DEF : PseudoInstV8<"IMPLICIT_DEF", (ops variable_ops)>;
|
||||
def FpMOVD : PseudoInstV8<"FpMOVD", (ops)>; // pseudo 64-bit double move
|
||||
def ADJCALLSTACKDOWN : PseudoInstV8<"!ADJCALLSTACKDOWN $amt",
|
||||
(ops i32imm:$amt)>;
|
||||
def ADJCALLSTACKUP : PseudoInstV8<"!ADJCALLSTACKUP $amt",
|
||||
(ops i32imm:$amt)>;
|
||||
//def IMPLICIT_USE : PseudoInstV8<"!IMPLICIT_USE",(ops variable_ops)>;
|
||||
def IMPLICIT_DEF : PseudoInstV8<"!IMPLICIT_DEF $dst",
|
||||
(ops IntRegs:$dst)>;
|
||||
def FpMOVD : PseudoInstV8<"!FpMOVD", (ops)>; // pseudo 64-bit double move
|
||||
|
||||
// Section A.3 - Synthetic Instructions, p. 85
|
||||
// special cases of JMPL:
|
||||
|
@ -422,19 +422,6 @@ void SparcV8AsmPrinter::printOperand(const MachineInstr *MI, int opNum) {
|
||||
if (CloseParen) O << ")";
|
||||
}
|
||||
|
||||
static bool isPseudoInstruction (const MachineInstr *MI) {
|
||||
switch (MI->getOpcode ()) {
|
||||
case V8::PHI:
|
||||
case V8::ADJCALLSTACKUP:
|
||||
case V8::ADJCALLSTACKDOWN:
|
||||
case V8::IMPLICIT_USE:
|
||||
case V8::IMPLICIT_DEF:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/// printBaseOffsetPair - Print two consecutive operands of MI, starting at #i,
|
||||
/// which form a base + offset pair (which may have brackets around it, if
|
||||
/// brackets is true, or may be in the form base - constant, if offset is a
|
||||
@ -467,10 +454,6 @@ void SparcV8AsmPrinter::printMachineInstruction(const MachineInstr *MI) {
|
||||
const TargetInstrInfo &TII = *TM.getInstrInfo();
|
||||
const TargetInstrDescriptor &Desc = TII.get(Opcode);
|
||||
|
||||
// If it's a pseudo-instruction, comment it out.
|
||||
if (isPseudoInstruction (MI))
|
||||
O << "! ";
|
||||
|
||||
O << Desc.Name << " ";
|
||||
|
||||
// print non-immediate, non-register-def operands
|
||||
|
@ -35,16 +35,19 @@ include "SparcV8InstrFormats.td"
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// Pseudo instructions.
|
||||
class PseudoInstV8<string nm, dag ops> : InstV8 {
|
||||
let Name = nm;
|
||||
class PseudoInstV8<string asmstr, dag ops> : InstV8 {
|
||||
let AsmString = asmstr;
|
||||
dag OperandList = ops;
|
||||
}
|
||||
def PHI : PseudoInstV8<"PHI", (ops variable_ops)>;
|
||||
def ADJCALLSTACKDOWN : PseudoInstV8<"ADJCALLSTACKDOWN", (ops variable_ops)>;
|
||||
def ADJCALLSTACKUP : PseudoInstV8<"ADJCALLSTACKUP", (ops variable_ops)>;
|
||||
def IMPLICIT_USE : PseudoInstV8<"IMPLICIT_USE", (ops variable_ops)>;
|
||||
def IMPLICIT_DEF : PseudoInstV8<"IMPLICIT_DEF", (ops variable_ops)>;
|
||||
def FpMOVD : PseudoInstV8<"FpMOVD", (ops)>; // pseudo 64-bit double move
|
||||
def ADJCALLSTACKDOWN : PseudoInstV8<"!ADJCALLSTACKDOWN $amt",
|
||||
(ops i32imm:$amt)>;
|
||||
def ADJCALLSTACKUP : PseudoInstV8<"!ADJCALLSTACKUP $amt",
|
||||
(ops i32imm:$amt)>;
|
||||
//def IMPLICIT_USE : PseudoInstV8<"!IMPLICIT_USE",(ops variable_ops)>;
|
||||
def IMPLICIT_DEF : PseudoInstV8<"!IMPLICIT_DEF $dst",
|
||||
(ops IntRegs:$dst)>;
|
||||
def FpMOVD : PseudoInstV8<"!FpMOVD", (ops)>; // pseudo 64-bit double move
|
||||
|
||||
// Section A.3 - Synthetic Instructions, p. 85
|
||||
// special cases of JMPL:
|
||||
|
Loading…
x
Reference in New Issue
Block a user