namespace llvm {
class SelectionDAG;
class SelectionDAGLowering;
+ class SDOperand;
class SSARegMap;
class MachineBasicBlock;
class MachineFunction;
virtual void InstructionSelectBasicBlock(SelectionDAG &SD) = 0;
- void CopyValueToVirtualRegister(SelectionDAGLowering &SDL,
- Value *V, unsigned Reg);
+ SDOperand CopyValueToVirtualRegister(SelectionDAGLowering &SDL,
+ Value *V, unsigned Reg);
void SelectBasicBlock(BasicBlock *BB, MachineFunction &MF,
FunctionLoweringInfo &FuncInfo);
/// SelectionDAG.
///
enum NodeType {
- // Leaf nodes
- EntryToken, Constant, ConstantFP, GlobalAddress, FrameIndex, ConstantPool,
+ // EntryToken - This is the marker used to indicate the start of the region.
+ EntryToken,
+
+ // Token factor - This node is takes multiple tokens as input and produces a
+ // single token result. This is used to represent the fact that the operand
+ // operators are independent of each other.
+ TokenFactor,
+
+ // Various leaf nodes.
+ Constant, ConstantFP, GlobalAddress, FrameIndex, ConstantPool,
BasicBlock, ExternalSymbol,
// CopyToReg - This node has chain and child nodes, and an associated