mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-23 22:23:00 +00:00
[PowerPC] Add handling for conversions to fast-isel.
Yet another chunk of fast-isel code. This one handles various conversions involving floating-point. (It also includes some miscellaneous handling throughout the back end for LWA_32 and LWAX_32 that should have been part of the load-store patch.) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189677 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -19,6 +19,7 @@
|
||||
#include "llvm/MC/MCInst.h"
|
||||
#include "llvm/MC/MCInstrInfo.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/Target/TargetOpcodes.h"
|
||||
using namespace llvm;
|
||||
|
||||
#include "PPCGenAsmWriter.inc"
|
||||
@@ -78,6 +79,17 @@ void PPCInstPrinter::printInst(const MCInst *MI, raw_ostream &O,
|
||||
}
|
||||
}
|
||||
|
||||
// For fast-isel, a COPY_TO_REGCLASS may survive this long. This is
|
||||
// used when converting a 32-bit float to a 64-bit float as part of
|
||||
// conversion to an integer (see PPCFastISel.cpp:SelectFPToI()),
|
||||
// as otherwise we have problems with incorrect register classes
|
||||
// in machine instruction verification. For now, just avoid trying
|
||||
// to print it as such an instruction has no effect (a 32-bit float
|
||||
// in a register is already in 64-bit form, just with lower
|
||||
// precision). FIXME: Is there a better solution?
|
||||
if (MI->getOpcode() == TargetOpcode::COPY_TO_REGCLASS)
|
||||
return;
|
||||
|
||||
printInstruction(MI, O);
|
||||
printAnnotation(O, Annot);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user