[llvm-commits] CVS: llvm/include/llvm/CodeGen/SelectionDAGISel.h
Chris Lattner
lattner at cs.uiuc.edu
Thu Jan 6 23:46:15 PST 2005
Changes in directory llvm/include/llvm/CodeGen:
SelectionDAGISel.h added (r1.1)
---
Log message:
Common base class for SelectionDAG-based instruction selectors.
---
Diffs of the changes: (+64 -0)
Index: llvm/include/llvm/CodeGen/SelectionDAGISel.h
diff -c /dev/null llvm/include/llvm/CodeGen/SelectionDAGISel.h:1.1
*** /dev/null Fri Jan 7 01:46:13 2005
--- llvm/include/llvm/CodeGen/SelectionDAGISel.h Fri Jan 7 01:46:03 2005
***************
*** 0 ****
--- 1,64 ----
+ //===-- llvm/CodeGen/SelectionDAGISel.h - Common Base Class------*- C++ -*-===//
+ //
+ // The LLVM Compiler Infrastructure
+ //
+ // This file was developed by the LLVM research group and is distributed under
+ // the University of Illinois Open Source License. See LICENSE.TXT for details.
+ //
+ //===----------------------------------------------------------------------===//
+ //
+ // This file implements the SelectionDAGISel class, which is used as the common
+ // base class for SelectionDAG-based instruction selectors.
+ //
+ //===----------------------------------------------------------------------===//
+
+ #ifndef LLVM_CODEGEN_SELECTIONDAG_ISEL_H
+ #define LLVM_CODEGEN_SELECTIONDAG_ISEL_H
+
+ #include "llvm/Pass.h"
+ #include "llvm/CodeGen/ValueTypes.h"
+
+ namespace llvm {
+ class SelectionDAG;
+ class SelectionDAGLowering;
+ class SSARegMap;
+ class MachineBasicBlock;
+ class MachineFunction;
+ class MachineInstr;
+ class TargetLowering;
+ class FunctionLoweringInfo;
+
+ /// SelectionDAGISel - This is the common base class used for SelectionDAG-based
+ /// pattern-matching instruction selectors.
+ class SelectionDAGISel : public FunctionPass {
+ public:
+ TargetLowering &TLI;
+ SSARegMap *RegMap;
+ SelectionDAG *CurDAG;
+ MachineBasicBlock *BB;
+
+ SelectionDAGISel(TargetLowering &tli) : TLI(tli) {}
+
+ virtual void getAnalysisUsage(AnalysisUsage &AU) const {
+ AU.setPreservesAll();
+ }
+
+ virtual bool runOnFunction(Function &Fn);
+
+ unsigned MakeReg(MVT::ValueType VT);
+
+ virtual void InstructionSelectBasicBlock(SelectionDAG &SD) = 0;
+
+ void CopyValueToVirtualRegister(SelectionDAGLowering &SDL,
+ Value *V, unsigned Reg);
+ void SelectBasicBlock(BasicBlock *BB, MachineFunction &MF,
+ FunctionLoweringInfo &FuncInfo);
+
+ void BuildSelectionDAG(SelectionDAG &DAG, BasicBlock *LLVMBB,
+ std::vector<std::pair<MachineInstr*, unsigned> > &PHINodesToUpdate,
+ FunctionLoweringInfo &FuncInfo);
+ };
+
+ }
+
+ #endif /* LLVM_CODEGEN_SELECTIONDAG_ISEL_H */
More information about the llvm-commits
mailing list