Mips16ISelLowering.h revision 249259
1279377Simp//===-- Mips16ISelLowering.h - Mips16 DAG Lowering Interface ----*- C++ -*-===// 2279377Simp// 3279377Simp// The LLVM Compiler Infrastructure 4279377Simp// 5279377Simp// This file is distributed under the University of Illinois Open Source 6279377Simp// License. See LICENSE.TXT for details. 7279377Simp// 8279377Simp//===----------------------------------------------------------------------===// 9279377Simp// 10279377Simp// Subclass of MipsTargetLowering specialized for mips16. 11279377Simp// 12279377Simp//===----------------------------------------------------------------------===// 13279377Simp 14279377Simp#ifndef Mips16ISELLOWERING_H 15279377Simp#define Mips16ISELLOWERING_H 16279377Simp 17279377Simp#include "MipsISelLowering.h" 18279377Simp 19279377Simpnamespace llvm { 20279377Simp class Mips16TargetLowering : public MipsTargetLowering { 21279377Simp public: 22279377Simp explicit Mips16TargetLowering(MipsTargetMachine &TM); 23279377Simp 24279377Simp virtual bool allowsUnalignedMemoryAccesses(EVT VT, bool *Fast) const; 25279377Simp 26279377Simp virtual MachineBasicBlock * 27279377Simp EmitInstrWithCustomInserter(MachineInstr *MI, MachineBasicBlock *MBB) const; 28279377Simp 29279377Simp private: 30279377Simp virtual bool 31279377Simp isEligibleForTailCallOptimization(const MipsCC &MipsCCInfo, 32279377Simp unsigned NextStackOffset, 33279377Simp const MipsFunctionInfo& FI) const; 34279377Simp 35279377Simp void setMips16LibcallName(RTLIB::Libcall, const char *Name); 36279377Simp 37279377Simp void setMips16HardFloatLibCalls(); 38279377Simp 39279377Simp unsigned int 40279377Simp getMips16HelperFunctionStubNumber(ArgListTy &Args) const; 41279377Simp 42279377Simp const char *getMips16HelperFunction 43279377Simp (Type* RetTy, ArgListTy &Args, bool &needHelper) const; 44279377Simp 45279377Simp virtual void 46279377Simp getOpndList(SmallVectorImpl<SDValue> &Ops, 47279377Simp std::deque< std::pair<unsigned, SDValue> > &RegsToPass, 48279377Simp bool IsPICCall, bool GlobalOrExternal, bool InternalLinkage, 49279377Simp CallLoweringInfo &CLI, SDValue Callee, SDValue Chain) const; 50279377Simp 51279377Simp MachineBasicBlock *emitSel16(unsigned Opc, MachineInstr *MI, 52279377Simp MachineBasicBlock *BB) const; 53279377Simp 54279377Simp MachineBasicBlock *emitSeliT16(unsigned Opc1, unsigned Opc2, 55279377Simp MachineInstr *MI, 56279377Simp MachineBasicBlock *BB) const; 57279377Simp 58279377Simp MachineBasicBlock *emitSelT16(unsigned Opc1, unsigned Opc2, 59279377Simp MachineInstr *MI, 60279377Simp MachineBasicBlock *BB) const; 61279377Simp 62279377Simp MachineBasicBlock *emitFEXT_T8I816_ins(unsigned BtOpc, unsigned CmpOpc, 63279377Simp MachineInstr *MI, 64279377Simp MachineBasicBlock *BB) const; 65279377Simp 66279377Simp MachineBasicBlock *emitFEXT_T8I8I16_ins( 67279377Simp unsigned BtOpc, unsigned CmpiOpc, unsigned CmpiXOpc, 68279377Simp MachineInstr *MI, MachineBasicBlock *BB) const; 69279377Simp 70279377Simp MachineBasicBlock *emitFEXT_CCRX16_ins( 71279377Simp unsigned SltOpc, 72279377Simp MachineInstr *MI, MachineBasicBlock *BB) const; 73279377Simp 74279377Simp MachineBasicBlock *emitFEXT_CCRXI16_ins( 75279377Simp unsigned SltiOpc, unsigned SltiXOpc, 76279377Simp MachineInstr *MI, MachineBasicBlock *BB )const; 77279377Simp }; 78279377Simp} 79279377Simp 80279377Simp#endif // Mips16ISELLOWERING_H 81279377Simp