/Users/buildslave/jenkins/sharedspace/clang-stage2-coverage-R@2/llvm/lib/Target/Mips/Mips16ISelDAGToDAG.h
Line | Count | Source |
1 | | //===---- Mips16ISelDAGToDAG.h - A Dag to Dag Inst Selector for Mips ------===// |
2 | | // |
3 | | // The LLVM Compiler Infrastructure |
4 | | // |
5 | | // This file is distributed under the University of Illinois Open Source |
6 | | // License. See LICENSE.TXT for details. |
7 | | // |
8 | | //===----------------------------------------------------------------------===// |
9 | | // |
10 | | // Subclass of MipsDAGToDAGISel specialized for mips16. |
11 | | // |
12 | | //===----------------------------------------------------------------------===// |
13 | | |
14 | | #ifndef LLVM_LIB_TARGET_MIPS_MIPS16ISELDAGTODAG_H |
15 | | #define LLVM_LIB_TARGET_MIPS_MIPS16ISELDAGTODAG_H |
16 | | |
17 | | #include "MipsISelDAGToDAG.h" |
18 | | |
19 | | namespace llvm { |
20 | | |
21 | | class Mips16DAGToDAGISel : public MipsDAGToDAGISel { |
22 | | public: |
23 | | explicit Mips16DAGToDAGISel(MipsTargetMachine &TM, CodeGenOpt::Level OL) |
24 | 1.72k | : MipsDAGToDAGISel(TM, OL) {} |
25 | | |
26 | | private: |
27 | | std::pair<SDNode *, SDNode *> selectMULT(SDNode *N, unsigned Opc, |
28 | | const SDLoc &DL, EVT Ty, bool HasLo, |
29 | | bool HasHi); |
30 | | |
31 | | bool runOnMachineFunction(MachineFunction &MF) override; |
32 | | |
33 | | bool selectAddr(bool SPAllowed, SDValue Addr, SDValue &Base, |
34 | | SDValue &Offset); |
35 | | bool selectAddr16(SDValue Addr, SDValue &Base, |
36 | | SDValue &Offset) override; |
37 | | bool selectAddr16SP(SDValue Addr, SDValue &Base, |
38 | | SDValue &Offset) override; |
39 | | |
40 | | bool trySelect(SDNode *Node) override; |
41 | | |
42 | | void processFunctionAfterISel(MachineFunction &MF) override; |
43 | | |
44 | | // Insert instructions to initialize the global base register in the |
45 | | // first MBB of the function. |
46 | | void initGlobalBaseReg(MachineFunction &MF); |
47 | | |
48 | | void initMips16SPAliasReg(MachineFunction &MF); |
49 | | }; |
50 | | |
51 | | FunctionPass *createMips16ISelDag(MipsTargetMachine &TM, |
52 | | CodeGenOpt::Level OptLevel); |
53 | | } |
54 | | |
55 | | #endif |