LLVM  8.0.1
Namespaces | Macros | Functions | Variables
MipsFastISel.cpp File Reference

This file defines the MIPS-specific support for the FastISel class. More...

#include "MCTargetDesc/MipsABIInfo.h"
#include "MCTargetDesc/MipsBaseInfo.h"
#include "MipsCCState.h"
#include "MipsISelLowering.h"
#include "MipsInstrInfo.h"
#include "MipsMachineFunction.h"
#include "MipsSubtarget.h"
#include "MipsTargetMachine.h"
#include "llvm/ADT/APInt.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/Analysis/TargetLibraryInfo.h"
#include "llvm/CodeGen/CallingConvLower.h"
#include "llvm/CodeGen/FastISel.h"
#include "llvm/CodeGen/FunctionLoweringInfo.h"
#include "llvm/CodeGen/ISDOpcodes.h"
#include "llvm/CodeGen/MachineBasicBlock.h"
#include "llvm/CodeGen/MachineFrameInfo.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineMemOperand.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/TargetInstrInfo.h"
#include "llvm/CodeGen/TargetLowering.h"
#include "llvm/CodeGen/ValueTypes.h"
#include "llvm/IR/Attributes.h"
#include "llvm/IR/CallingConv.h"
#include "llvm/IR/Constant.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/GetElementPtrTypeIterator.h"
#include "llvm/IR/GlobalValue.h"
#include "llvm/IR/GlobalVariable.h"
#include "llvm/IR/InstrTypes.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/Operator.h"
#include "llvm/IR/Type.h"
#include "llvm/IR/User.h"
#include "llvm/IR/Value.h"
#include "llvm/MC/MCContext.h"
#include "llvm/MC/MCInstrDesc.h"
#include "llvm/MC/MCRegisterInfo.h"
#include "llvm/MC/MCSymbol.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/MachineValueType.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
#include <array>
#include <cassert>
#include <cstdint>
#include "MipsGenFastISel.inc"
#include "MipsGenCallingConv.inc"

Go to the source code of this file.

Namespaces

 llvm
 This class represents lattice values for constants.
 

Macros

#define DEBUG_TYPE   "mips-fastisel"
 

Functions

static bool CC_Mips (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State) LLVM_ATTRIBUTE_UNUSED
 
static bool CC_MipsO32_FP32 (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
 
static bool CC_MipsO32_FP64 (unsigned ValNo, MVT ValVT, MVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, CCState &State)
 

Variables

cl::opt< boolEmitJalrReloc
 

Detailed Description

This file defines the MIPS-specific support for the FastISel class.

Some of the target-specific code is generated by tablegen in the file MipsGenFastISel.inc, which is #included here.

Definition in file MipsFastISel.cpp.

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "mips-fastisel"

Definition at line 75 of file MipsFastISel.cpp.

Function Documentation

◆ CC_Mips()

static bool CC_Mips ( unsigned  ValNo,
MVT  ValVT,
MVT  LocVT,
CCValAssign::LocInfo  LocInfo,
ISD::ArgFlagsTy  ArgFlags,
CCState State 
)
static

◆ CC_MipsO32_FP32()

static bool CC_MipsO32_FP32 ( unsigned  ValNo,
MVT  ValVT,
MVT  LocVT,
CCValAssign::LocInfo  LocInfo,
ISD::ArgFlagsTy  ArgFlags,
CCState State 
)
static

Definition at line 279 of file MipsFastISel.cpp.

References llvm_unreachable.

◆ CC_MipsO32_FP64()

static bool CC_MipsO32_FP64 ( unsigned  ValNo,
MVT  ValVT,
MVT  LocVT,
CCValAssign::LocInfo  LocInfo,
ISD::ArgFlagsTy  ArgFlags,
CCState State 
)
static

Definition at line 285 of file MipsFastISel.cpp.

References llvm::MachineInstrBuilder::addFrameIndex(), llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addMBB(), llvm::MachineInstrBuilder::addMemOperand(), llvm::MachineInstrBuilder::addReg(), llvm::MachineInstrBuilder::addRegMask(), llvm::Address, llvm::MachineInstrBuilder::addSym(), llvm::CCValAssign::AExt, llvm::AMDGPU::HSAMD::Kernel::Arg::Key::Align, llvm::alignTo(), llvm::CCState::AnalyzeCallOperands(), llvm::MipsCCState::AnalyzeCallResult(), llvm::ISD::AND, llvm::Function::args(), assert(), llvm::CCValAssign::BCvt, llvm::APFloat::bitcastToAPInt(), llvm::Intrinsic::bswap, llvm::BuildMI(), llvm::MipsISD::BuildPairF64, llvm::Attribute::ByVal, llvm::CallingConv::C, C, Callee, CC_MipsO32(), llvm::constrainOperandRegClass(), Context, llvm::CCValAssign::convertToReg(), llvm::dbgs(), llvm::RegState::Dead, llvm::RegState::Define, llvm::dyn_cast(), emitCmp(), llvm::SmallVectorImpl< T >::emplace_back(), llvm::DenseMapBase< DenseMap< KeyT, ValueT, KeyInfoT, BucketT >, KeyT, ValueT, KeyInfoT, BucketT >::end(), F(), llvm::MVT::f128, llvm::MVT::f32, llvm::MVT::f64, llvm::CallingConv::Fast, llvm::FastISel::fastEmitInst_rr(), llvm::CmpInst::FCMP_OEQ, llvm::CmpInst::FCMP_OGE, llvm::CmpInst::FCMP_OGT, llvm::CmpInst::FCMP_OLE, llvm::CmpInst::FCMP_OLT, llvm::CmpInst::FCMP_UNE, llvm::CCValAssign::Full, llvm::gep_type_begin(), llvm::Function::getAttributes(), llvm::CallBase::getCalledFunction(), llvm::Function::getCallingConv(), llvm::SelectInst::getCondition(), llvm::BranchInst::getCondition(), llvm::Value::getContext(), llvm::StructLayout::getElementOffset(), llvm::EVT::getEVTString(), llvm::SelectInst::getFalseValue(), llvm::MachinePointerInfo::getFixedStack(), llvm::generic_gep_type_iterator< ItTy >::getIndexedType(), llvm::IntrinsicInst::getIntrinsicID(), llvm::getKillRegState(), llvm::MemIntrinsicBase< Derived >::getLength(), llvm::CCValAssign::getLocInfo(), llvm::CCValAssign::getLocMemOffset(), llvm::CCValAssign::getLocReg(), llvm::CCValAssign::getLocVT(), llvm::CCState::getNextStackOffset(), llvm::CallBase::getNumArgOperands(), llvm::MCInstrDesc::getNumDefs(), llvm::User::getNumOperands(), llvm::MachineFrameInfo::getObjectSize(), llvm::Instruction::getOpcode(), llvm::User::getOperand(), llvm::Instruction::getParent(), llvm::BasicBlock::getParent(), llvm::CmpInst::getPredicate(), llvm::GetReturnInfo(), llvm::Function::getReturnType(), llvm::ConstantInt::getSExtValue(), llvm::EVT::getSimpleVT(), llvm::MVT::getSizeInBits(), llvm::MachinePointerInfo::getStack(), llvm::MVT::getStoreSize(), llvm::generic_gep_type_iterator< ItTy >::getStructTypeOrNull(), llvm::BranchInst::getSuccessor(), llvm::SelectInst::getTrueValue(), llvm::AllocaInst::getType(), llvm::Value::getType(), llvm::CCValAssign::getValNo(), llvm::ConstantFP::getValueAPF(), llvm::CCValAssign::getValVT(), llvm::ConstantInt::getZExtValue(), llvm::APInt::getZExtValue(), llvm::GlobalValue::hasInternalLinkage(), llvm::GlobalValue::hasLocalLinkage(), llvm::Value::hasOneUse(), llvm::MipsISD::Hi, I, llvm::MVT::i1, llvm::MVT::i16, llvm::MVT::i32, llvm::MVT::i8, llvm::CmpInst::ICMP_EQ, llvm::CmpInst::ICMP_NE, llvm::CmpInst::ICMP_SGE, llvm::CmpInst::ICMP_SGT, llvm::CmpInst::ICMP_SLE, llvm::CmpInst::ICMP_SLT, llvm::CmpInst::ICMP_UGE, llvm::CmpInst::ICMP_UGT, llvm::CmpInst::ICMP_ULE, llvm::CmpInst::ICMP_ULT, llvm::RegState::Implicit, llvm::RegState::ImplicitDefine, llvm::Attribute::InReg, llvm::Type::isArrayTy(), isAtomic(), llvm::Type::isDoubleTy(), llvm::Type::isFloatTy(), llvm::isInt< 16 >(), llvm::MVT::isInteger(), llvm::Type::isIntegerTy(), llvm::CCValAssign::isMemLoc(), llvm::CCValAssign::isRegLoc(), llvm::EVT::isSimple(), llvm::Type::isStructTy(), llvm::GlobalValue::isThreadLocal(), llvm::isUInt< 16 >(), llvm::CmpInst::isUnsigned(), llvm::Function::isVarArg(), llvm::EVT::isVector(), llvm::MVT::isVector(), llvm::Type::isVectorTy(), llvm::MVT::isVoid, llvm::MemIntrinsic::isVolatile(), llvm::Left, LLVM_DEBUG, llvm_unreachable, llvm::MipsISD::Lo, llvm::SPII::Load, llvm::Intrinsic::memcpy, llvm::Intrinsic::memmove, llvm::Intrinsic::memset, llvm::MipsISD::MFHI, llvm::MipsISD::MFLO, llvm::MipsII::MO_ABS_LO, llvm::MipsII::MO_GOT, llvm::MipsII::MO_JALR, llvm::MachineMemOperand::MOLoad, llvm::MachineMemOperand::MOStore, MRI, llvm::ISD::MUL, llvm::CCValAssign::needsCustom(), llvm::User::op_begin(), llvm::User::op_end(), OR, llvm::ISD::OR, llvm::MVT::Other, P, llvm::SmallVectorTemplateBase< T >::push_back(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), RA, Reg, llvm::SmallVectorImpl< T >::reserve(), llvm::MipsISD::Ret, llvm::Right, llvm::ISD::ROTR, llvm::ISD::SDIV, llvm::MCID::Select, selectBinaryOp(), llvm::CCValAssign::SExt, llvm::Attribute::SExt, SI, llvm::MVT::SimpleTy, llvm::SmallVectorBase::size(), llvm::ISD::SRA, llvm::ISD::SREM, llvm::ISD::SRL, llvm::SPII::Store, llvm::Attribute::StructRet, Success, std::swap(), llvm::ARMBuildAttrs::Symbol, TII, TRI, llvm::ISD::UDIV, llvm::ISD::UREM, llvm::ISD::XOR, llvm::CCValAssign::ZExt, and llvm::Attribute::ZExt.

Variable Documentation

◆ EmitJalrReloc

cl::opt<bool> EmitJalrReloc