|  | //===-- PTXISelDAGToDAG.cpp - A dag to dag inst selector for PTX ----------===// | 
|  | // | 
|  | //                     The LLVM Compiler Infrastructure | 
|  | // | 
|  | // This file is distributed under the University of Illinois Open Source | 
|  | // License. See LICENSE.TXT for details. | 
|  | // | 
|  | //===----------------------------------------------------------------------===// | 
|  | // | 
|  | // This file defines an instruction selector for the PTX target. | 
|  | // | 
|  | //===----------------------------------------------------------------------===// | 
|  |  | 
|  | #include "PTX.h" | 
|  | #include "PTXTargetMachine.h" | 
|  | #include "llvm/CodeGen/SelectionDAGISel.h" | 
|  |  | 
|  | using namespace llvm; | 
|  |  | 
|  | namespace { | 
|  | // PTXDAGToDAGISel - PTX specific code to select PTX machine | 
|  | // instructions for SelectionDAG operations. | 
|  | class PTXDAGToDAGISel : public SelectionDAGISel { | 
|  | public: | 
|  | PTXDAGToDAGISel(PTXTargetMachine &TM, CodeGenOpt::Level OptLevel); | 
|  |  | 
|  | virtual const char *getPassName() const { | 
|  | return "PTX DAG->DAG Pattern Instruction Selection"; | 
|  | } | 
|  |  | 
|  | SDNode *Select(SDNode *Node); | 
|  |  | 
|  | // Include the pieces auto'gened from the target description | 
|  | #include "PTXGenDAGISel.inc" | 
|  |  | 
|  | }; // class PTXDAGToDAGISel | 
|  | } // namespace | 
|  |  | 
|  | // createPTXISelDag - This pass converts a legalized DAG into a | 
|  | // PTX-specific DAG, ready for instruction scheduling | 
|  | FunctionPass *llvm::createPTXISelDag(PTXTargetMachine &TM, | 
|  | CodeGenOpt::Level OptLevel) { | 
|  | return new PTXDAGToDAGISel(TM, OptLevel); | 
|  | } | 
|  |  | 
|  | PTXDAGToDAGISel::PTXDAGToDAGISel(PTXTargetMachine &TM, | 
|  | CodeGenOpt::Level OptLevel) | 
|  | : SelectionDAGISel(TM, OptLevel) {} | 
|  |  | 
|  | SDNode *PTXDAGToDAGISel::Select(SDNode *Node) { | 
|  | // SelectCode() is auto'gened | 
|  | return SelectCode(Node); | 
|  | } |