mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-10-09 18:55:33 +00:00
Add more checking to filter out more kinds of things that
FastISel doesn't support yet. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55002 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d0743982e6
commit
f4137b5f40
@ -180,9 +180,16 @@ void FastISelEmitter::run(std::ostream &OS) {
|
|||||||
MVT::SimpleValueType VT = InstPatNode->getTypeNum(0);
|
MVT::SimpleValueType VT = InstPatNode->getTypeNum(0);
|
||||||
|
|
||||||
// For now, filter out instructions which just set a register to
|
// For now, filter out instructions which just set a register to
|
||||||
// an Operand, like MOV32ri.
|
// an Operand or an immediate, like MOV32ri.
|
||||||
if (InstPatOp->isSubClassOf("Operand"))
|
if (InstPatOp->isSubClassOf("Operand"))
|
||||||
continue;
|
continue;
|
||||||
|
if (InstPatOp->getName() == "imm" ||
|
||||||
|
InstPatOp->getName() == "fpimm")
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// For now, filter out any instructions with predicates.
|
||||||
|
if (!InstPatNode->getPredicateFn().empty())
|
||||||
|
continue;
|
||||||
|
|
||||||
// Check all the operands. For now only accept register operands.
|
// Check all the operands. For now only accept register operands.
|
||||||
OperandsSignature Operands;
|
OperandsSignature Operands;
|
||||||
@ -190,6 +197,9 @@ void FastISelEmitter::run(std::ostream &OS) {
|
|||||||
TreePatternNode *Op = InstPatNode->getChild(i);
|
TreePatternNode *Op = InstPatNode->getChild(i);
|
||||||
if (!Op->isLeaf())
|
if (!Op->isLeaf())
|
||||||
goto continue_label;
|
goto continue_label;
|
||||||
|
// For now, filter out any operand with a predicate.
|
||||||
|
if (!Op->getPredicateFn().empty())
|
||||||
|
goto continue_label;
|
||||||
DefInit *OpDI = dynamic_cast<DefInit*>(Op->getLeafValue());
|
DefInit *OpDI = dynamic_cast<DefInit*>(Op->getLeafValue());
|
||||||
if (!OpDI)
|
if (!OpDI)
|
||||||
goto continue_label;
|
goto continue_label;
|
||||||
|
Loading…
Reference in New Issue
Block a user