//===-- MipsISelLowering.cpp - Mips DAG Lowering Implementation -----------===////// The LLVM Compiler Infrastructure//// This file is distributed under the University of Illinois Open Source// License. See LICENSE.TXT for details.////===----------------------------------------------------------------------===////// This file defines the interfaces that Mips uses to lower LLVM code into a// selection DAG.////===----------------------------------------------------------------------===//#define DEBUG_TYPE "mips-lower"#include"MipsISelLowering.h"#include"MipsMachineFunction.h"#include"MipsTargetMachine.h"#include"MipsTargetObjectFile.h"#include"MipsSubtarget.h"#include"llvm/DerivedTypes.h"#include"llvm/Function.h"#include"llvm/GlobalVariable.h"#include"llvm/Intrinsics.h"#include"llvm/CallingConv.h"#include"llvm/CodeGen/CallingConvLower.h"#include"llvm/CodeGen/MachineFrameInfo.h"#include"llvm/CodeGen/MachineFunction.h"#include"llvm/CodeGen/MachineInstrBuilder.h"#include"llvm/CodeGen/MachineRegisterInfo.h"#include"llvm/CodeGen/SelectionDAGISel.h"#include"llvm/CodeGen/ValueTypes.h"#include"llvm/Support/Debug.h"#include"llvm/Support/ErrorHandling.h"usingnamespacellvm;constchar*MipsTargetLowering::getTargetNodeName(unsignedOpcode)const{switch(Opcode){caseMipsISD::JmpLink:return"MipsISD::JmpLink";caseMipsISD::Hi:return"MipsISD::Hi";caseMipsISD::Lo:return"MipsISD::Lo";caseMipsISD::GPRel:return"MipsISD::GPRel";caseMipsISD::Ret:return"MipsISD::Ret";caseMipsISD::CMov:return"MipsISD::CMov";caseMipsISD::SelectCC:return"MipsISD::SelectCC";caseMipsISD::FPSelectCC:return"MipsISD::FPSelectCC";caseMipsISD::FPBrcond:return"MipsISD::FPBrcond";caseMipsISD::FPCmp:return"MipsISD::FPCmp";caseMipsISD::FPRound:return"MipsISD::FPRound";default:returnNULL;}}MipsTargetLowering::MipsTargetLowering(MipsTargetMachine&TM):TargetLowering(TM,newMipsTargetObjectFile()){Subtarget=&TM