diff options
author | Evan Cheng <evan.cheng@apple.com> | 2007-08-02 00:28:15 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2007-08-02 00:28:15 +0000 |
commit | 2663978e4ab3d1c8be986f66d359be0474e9ea5b (patch) | |
tree | 4dcfb93fa84aad0a5e1328b72d7682ef5020fb53 /include/llvm/CodeGen/ScheduleDAG.h | |
parent | 84c52f6399e646a47914e39a686940913b64492f (diff) | |
download | external_llvm-2663978e4ab3d1c8be986f66d359be0474e9ea5b.zip external_llvm-2663978e4ab3d1c8be986f66d359be0474e9ea5b.tar.gz external_llvm-2663978e4ab3d1c8be986f66d359be0474e9ea5b.tar.bz2 |
Instead of adding copyfromreg's to handle physical definitions. Now isel can
simply specify them as results and let scheduledag handle them. That
is, instead of
SDOperand Flag = DAG.getTargetNode(Opc, MVT::i32, MVT::Flag, ...)
SDOperand Result = DAG.getCopyFromReg(Chain, X86::EAX, MVT::i32, Flag)
Just write:
SDOperand Result = DAG.getTargetNode(Opc, MVT::i32, MVT::i32, ...)
And let scheduledag emit the move from X86::EAX to a virtual register.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40710 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/CodeGen/ScheduleDAG.h')
-rw-r--r-- | include/llvm/CodeGen/ScheduleDAG.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/include/llvm/CodeGen/ScheduleDAG.h b/include/llvm/CodeGen/ScheduleDAG.h index fd72aeb..d52936a 100644 --- a/include/llvm/CodeGen/ScheduleDAG.h +++ b/include/llvm/CodeGen/ScheduleDAG.h @@ -245,7 +245,16 @@ namespace llvm { /// EmitNoop - Emit a noop instruction. /// void EmitNoop(); + + /// EmitCopyFromReg - Generate machine code for an CopyFromReg node or an + /// implicit physical register output. + void EmitCopyFromReg(SDNode *Node, unsigned ResNo, unsigned SrcReg, + DenseMap<SDOperand, unsigned> &VRBaseMap); + void CreateVirtualRegisters(SDNode *Node, MachineInstr *MI, + const TargetInstrDescriptor &II, + DenseMap<SDOperand, unsigned> &VRBaseMap); + void EmitSchedule(); void dumpSchedule() const; |