Mercurial > hg > CbC > CbC_llvm
comparison lib/Target/Mips/Mips16ISelLowering.h @ 77:54457678186b LLVM3.6
LLVM 3.6
author | Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 08 Sep 2014 22:06:00 +0900 |
parents | 95c75e76d11b |
children | 60c9769439b8 |
comparison
equal
deleted
inserted
replaced
34:e874dbf0ad9d | 77:54457678186b |
---|---|
9 // | 9 // |
10 // Subclass of MipsTargetLowering specialized for mips16. | 10 // Subclass of MipsTargetLowering specialized for mips16. |
11 // | 11 // |
12 //===----------------------------------------------------------------------===// | 12 //===----------------------------------------------------------------------===// |
13 | 13 |
14 #ifndef Mips16ISELLOWERING_H | 14 #ifndef LLVM_LIB_TARGET_MIPS_MIPS16ISELLOWERING_H |
15 #define Mips16ISELLOWERING_H | 15 #define LLVM_LIB_TARGET_MIPS_MIPS16ISELLOWERING_H |
16 | 16 |
17 #include "MipsISelLowering.h" | 17 #include "MipsISelLowering.h" |
18 | 18 |
19 namespace llvm { | 19 namespace llvm { |
20 class Mips16TargetLowering : public MipsTargetLowering { | 20 class Mips16TargetLowering : public MipsTargetLowering { |
21 public: | 21 public: |
22 explicit Mips16TargetLowering(MipsTargetMachine &TM); | 22 explicit Mips16TargetLowering(MipsTargetMachine &TM, |
23 const MipsSubtarget &STI); | |
23 | 24 |
24 virtual bool allowsUnalignedMemoryAccesses(EVT VT, bool *Fast) const; | 25 bool allowsMisalignedMemoryAccesses(EVT VT, unsigned AddrSpace, |
26 unsigned Align, | |
27 bool *Fast) const override; | |
25 | 28 |
26 virtual MachineBasicBlock * | 29 MachineBasicBlock * |
27 EmitInstrWithCustomInserter(MachineInstr *MI, MachineBasicBlock *MBB) const; | 30 EmitInstrWithCustomInserter(MachineInstr *MI, |
31 MachineBasicBlock *MBB) const override; | |
28 | 32 |
29 private: | 33 private: |
30 virtual bool | 34 bool isEligibleForTailCallOptimization(const MipsCC &MipsCCInfo, |
31 isEligibleForTailCallOptimization(const MipsCC &MipsCCInfo, | 35 unsigned NextStackOffset, |
32 unsigned NextStackOffset, | 36 const MipsFunctionInfo& FI) const override; |
33 const MipsFunctionInfo& FI) const; | |
34 | 37 |
35 void setMips16HardFloatLibCalls(); | 38 void setMips16HardFloatLibCalls(); |
36 | 39 |
37 unsigned int | 40 unsigned int |
38 getMips16HelperFunctionStubNumber(ArgListTy &Args) const; | 41 getMips16HelperFunctionStubNumber(ArgListTy &Args) const; |
39 | 42 |
40 const char *getMips16HelperFunction | 43 const char *getMips16HelperFunction |
41 (Type* RetTy, ArgListTy &Args, bool &needHelper) const; | 44 (Type* RetTy, ArgListTy &Args, bool &needHelper) const; |
42 | 45 |
43 virtual void | 46 void |
44 getOpndList(SmallVectorImpl<SDValue> &Ops, | 47 getOpndList(SmallVectorImpl<SDValue> &Ops, |
45 std::deque< std::pair<unsigned, SDValue> > &RegsToPass, | 48 std::deque< std::pair<unsigned, SDValue> > &RegsToPass, |
46 bool IsPICCall, bool GlobalOrExternal, bool InternalLinkage, | 49 bool IsPICCall, bool GlobalOrExternal, bool InternalLinkage, |
47 CallLoweringInfo &CLI, SDValue Callee, SDValue Chain) const; | 50 CallLoweringInfo &CLI, SDValue Callee, |
51 SDValue Chain) const override; | |
48 | 52 |
49 MachineBasicBlock *emitSel16(unsigned Opc, MachineInstr *MI, | 53 MachineBasicBlock *emitSel16(unsigned Opc, MachineInstr *MI, |
50 MachineBasicBlock *BB) const; | 54 MachineBasicBlock *BB) const; |
51 | 55 |
52 MachineBasicBlock *emitSeliT16(unsigned Opc1, unsigned Opc2, | 56 MachineBasicBlock *emitSeliT16(unsigned Opc1, unsigned Opc2, |
73 unsigned SltiOpc, unsigned SltiXOpc, | 77 unsigned SltiOpc, unsigned SltiXOpc, |
74 MachineInstr *MI, MachineBasicBlock *BB )const; | 78 MachineInstr *MI, MachineBasicBlock *BB )const; |
75 }; | 79 }; |
76 } | 80 } |
77 | 81 |
78 #endif // Mips16ISELLOWERING_H | 82 #endif |