Factor out the predicate check code from DAGISelEmitter.cpp

and use it in FastISelEmitter.cpp, and make FastISel
subtarget aware. Among other things, this lets it work
properly on x86 targets that don't have SSE, where it
successfully selects x87 instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55156 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Dan Gohman
2008-08-22 00:20:26 +00:00
parent a6211d9e83
commit 22bb31103d
8 changed files with 111 additions and 54 deletions

View File

@ -26,18 +26,21 @@ class MachineRegisterInfo;
class TargetData;
class TargetInstrInfo;
class TargetLowering;
class TargetMachine;
class TargetRegisterClass;
/// FastISel - This is a fast-path instruction selection class that
/// generates poor code and doesn't support illegal types or non-trivial
/// lowering, but runs quickly.
class FastISel {
protected:
MachineBasicBlock *MBB;
MachineFunction &MF;
MachineRegisterInfo &MRI;
const TargetMachine &TM;
const TargetData &TD;
const TargetInstrInfo &TII;
TargetLowering &TLI;
const TargetLowering &TLI;
public:
/// SelectInstructions - Do "fast" instruction selection over the