Mips16ISelDAGToDAG.h revision 263508
1231200Smm//===---- Mips16ISelDAGToDAG.h - A Dag to Dag Inst Selector for Mips ------===// 2232153Smm// 3231200Smm// The LLVM Compiler Infrastructure 4231200Smm// 5231200Smm// This file is distributed under the University of Illinois Open Source 6231200Smm// License. See LICENSE.TXT for details. 7231200Smm// 8231200Smm//===----------------------------------------------------------------------===// 9231200Smm// 10231200Smm// Subclass of MipsDAGToDAGISel specialized for mips16. 11231200Smm// 12231200Smm//===----------------------------------------------------------------------===// 13231200Smm 14231200Smm#ifndef MIPS16ISELDAGTODAG_H 15231200Smm#define MIPS16ISELDAGTODAG_H 16231200Smm 17231200Smm#include "MipsISelDAGToDAG.h" 18231200Smm 19231200Smmnamespace llvm { 20231200Smm 21231200Smmclass Mips16DAGToDAGISel : public MipsDAGToDAGISel { 22231200Smmpublic: 23231200Smm explicit Mips16DAGToDAGISel(MipsTargetMachine &TM) : MipsDAGToDAGISel(TM) {} 24231200Smm 25231200Smmprivate: 26231200Smm std::pair<SDNode*, SDNode*> selectMULT(SDNode *N, unsigned Opc, SDLoc DL, 27231200Smm EVT Ty, bool HasLo, bool HasHi); 28231200Smm 29231200Smm SDValue getMips16SPAliasReg(); 30231200Smm 31231200Smm virtual bool runOnMachineFunction(MachineFunction &MF); 32231200Smm 33231200Smm void getMips16SPRefReg(SDNode *Parent, SDValue &AliasReg); 34231200Smm 35231200Smm virtual bool selectAddr16(SDNode *Parent, SDValue N, SDValue &Base, 36231200Smm SDValue &Offset, SDValue &Alias); 37231200Smm 38231200Smm virtual std::pair<bool, SDNode*> selectNode(SDNode *Node); 39231200Smm 40231200Smm virtual void processFunctionAfterISel(MachineFunction &MF); 41231200Smm 42231200Smm // Insert instructions to initialize the global base register in the 43231200Smm // first MBB of the function. 44231200Smm void initGlobalBaseReg(MachineFunction &MF); 45231200Smm 46231200Smm void initMips16SPAliasReg(MachineFunction &MF); 47231200Smm}; 48231200Smm 49231200SmmFunctionPass *createMips16ISelDag(MipsTargetMachine &TM); 50231200Smm 51231200Smm} 52231200Smm 53231200Smm#endif 54231200Smm