[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