LLVM  6.0.0svn
Classes | Namespaces | Functions | Variables
ARMFastISel.cpp File Reference
#include "ARM.h"
#include "ARMBaseInstrInfo.h"
#include "ARMBaseRegisterInfo.h"
#include "ARMCallingConv.h"
#include "ARMConstantPoolValue.h"
#include "ARMISelLowering.h"
#include "ARMMachineFunctionInfo.h"
#include "ARMSubtarget.h"
#include "MCTargetDesc/ARMAddressingModes.h"
#include "MCTargetDesc/ARMBaseInfo.h"
#include "Utils/ARMBaseInfo.h"
#include "llvm/ADT/APFloat.h"
#include "llvm/ADT/APInt.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/SmallVector.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/MachineConstantPool.h"
#include "llvm/CodeGen/MachineFrameInfo.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineMemOperand.h"
#include "llvm/CodeGen/MachineOperand.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/MachineValueType.h"
#include "llvm/CodeGen/RuntimeLibcalls.h"
#include "llvm/CodeGen/TargetInstrInfo.h"
#include "llvm/CodeGen/TargetLowering.h"
#include "llvm/CodeGen/TargetOpcodes.h"
#include "llvm/CodeGen/TargetRegisterInfo.h"
#include "llvm/CodeGen/ValueTypes.h"
#include "llvm/IR/Argument.h"
#include "llvm/IR/Attributes.h"
#include "llvm/IR/CallSite.h"
#include "llvm/IR/CallingConv.h"
#include "llvm/IR/Constant.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/DerivedTypes.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/Intrinsics.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Operator.h"
#include "llvm/IR/Type.h"
#include "llvm/IR/User.h"
#include "llvm/IR/Value.h"
#include "llvm/MC/MCInstrDesc.h"
#include "llvm/MC/MCRegisterInfo.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Target/TargetOptions.h"
#include <cassert>
#include <cstdint>
#include <utility>
#include "ARMGenFastISel.inc"
#include "ARMGenCallingConv.inc"

Go to the source code of this file.

Classes

struct  FoldableLoadExtendsStruct
 

Namespaces

 llvm
 Compute iterated dominance frontiers using a linear time algorithm.
 

Functions

static ARMCC::CondCodes getComparePred (CmpInst::Predicate Pred)
 

Variables

static const struct FoldableLoadExtendsStruct FoldableLoadExtends []
 

Function Documentation

◆ getComparePred()

static ARMCC::CondCodes getComparePred ( CmpInst::Predicate  Pred)
static

Definition at line 1191 of file ARMFastISel.cpp.

References llvm::MCID::Add, llvm::ISD::ADD, llvm::MachineInstrBuilder::add(), llvm::MachineInstrBuilder::addExternalSymbol(), llvm::MachineInstrBuilder::addGlobalAddress(), llvm::MachineInstrBuilder::addImm(), llvm::MachineInstrBuilder::addReg(), llvm::MachineInstrBuilder::addRegMask(), llvm::dwarf::syntax::Address, llvm::CCValAssign::AExt, llvm::ARMCC::AL, llvm::CCState::AnalyzeCallOperands(), llvm::CCState::AnalyzeCallResult(), llvm::CCState::AnalyzeReturn(), Arg, llvm::CallSiteBase< FunTy, BBTy, ValTy, UserTy, UseTy, InstrTy, CallTy, InvokeTy, IterTy >::arg_begin(), llvm::CallSiteBase< FunTy, BBTy, ValTy, UserTy, UseTy, InstrTy, CallTy, InvokeTy, IterTy >::arg_end(), llvm::CallSiteBase< FunTy, BBTy, ValTy, UserTy, UseTy, InstrTy, CallTy, InvokeTy, IterTy >::arg_size(), llvm::AMDGPU::HSAMD::Kernel::Key::Args, llvm::CallingConv::ARM_AAPCS, llvm::CallingConv::ARM_AAPCS_VFP, llvm::CallingConv::ARM_APCS, llvm::ARM_AM::asr, assert(), llvm::CCValAssign::BCvt, llvm::ISD::BITCAST, llvm::ARCISD::BL, llvm::BuildMI(), llvm::CallingConv::C, llvm::MCID::Call, Callee, llvm::condCodeOp(), llvm::constrainOperandRegClass(), llvm::TargetRegisterClass::contains(), llvm::CallingConv::CXX_FAST_TLS, llvm::RegState::Define, llvm::Depth, llvm::dyn_cast(), llvm::ARMCC::EQ, llvm::GlobalValue::ExternalLinkage, F(), llvm::MVT::f32, llvm::MVT::f64, llvm::ISD::FADD, llvm::CallingConv::Fast, llvm::CmpInst::FCMP_OEQ, llvm::CmpInst::FCMP_OGE, llvm::CmpInst::FCMP_OGT, llvm::CmpInst::FCMP_OLE, llvm::CmpInst::FCMP_OLT, llvm::CmpInst::FCMP_ONE, llvm::CmpInst::FCMP_ORD, llvm::CmpInst::FCMP_UEQ, llvm::CmpInst::FCMP_UGE, llvm::CmpInst::FCMP_UGT, llvm::CmpInst::FCMP_ULE, llvm::CmpInst::FCMP_ULT, llvm::CmpInst::FCMP_UNE, llvm::CmpInst::FCMP_UNO, llvm::TargetOptions::FloatABIType, llvm::ARMISD::FMSTAT, llvm::ISD::FMUL, FramePtr, llvm::ISD::FSUB, llvm::CCValAssign::Full, llvm::ARMCC::GE, llvm::MCInstrInfo::get(), llvm::ConstantInt::get(), llvm::MemIntrinsic::getAlignment(), llvm::CallInst::getCalledValue(), llvm::TargetInstrInfo::getCallFrameDestroyOpcode(), llvm::TargetInstrInfo::getCallFrameSetupOpcode(), llvm::CallSiteBase< FunTy, BBTy, ValTy, UserTy, UseTy, InstrTy, CallTy, InvokeTy, IterTy >::getCallingConv(), llvm::BranchInst::getCondition(), llvm::Value::getContext(), llvm::MemIntrinsicBase< Derived >::getDestAddressSpace(), llvm::ARMBaseRegisterInfo::getFrameRegister(), llvm::CallSiteBase< FunTy, BBTy, ValTy, UserTy, UseTy, InstrTy, CallTy, InvokeTy, IterTy >::getFunctionType(), llvm::Type::getInt32PtrTy(), llvm::Type::getInt32Ty(), llvm::IntrinsicInst::getIntrinsicID(), llvm::CmpInst::getInversePredicate(), llvm::MemIntrinsicBase< Derived >::getLength(), llvm::TargetLoweringBase::getLibcallCallingConv(), llvm::TargetLoweringBase::getLibcallName(), llvm::CCValAssign::getLocInfo(), llvm::CCValAssign::getLocMemOffset(), llvm::CCValAssign::getLocReg(), llvm::CCValAssign::getLocVT(), llvm::CCState::getNextStackOffset(), llvm::User::getNumOperands(), llvm::Instruction::getOpcode(), llvm::User::getOperand(), llvm::Instruction::getParent(), llvm::BasicBlock::getParent(), llvm::CmpInst::getPredicate(), llvm::MemIntrinsicBase< Derived >::getRawDest(), llvm::MemTransferInst::getRawSource(), llvm::TargetLoweringBase::getRegClassFor(), llvm::GetReturnInfo(), llvm::APInt::getSExtValue(), llvm::EVT::getSimpleVT(), llvm::MVT::getSizeInBits(), llvm::ARM_AM::getSOImmVal(), llvm::ARM_AM::getSORegOpc(), llvm::MemTransferInst::getSourceAddressSpace(), llvm::BranchInst::getSuccessor(), llvm::ARM_AM::getT2SOImmVal(), llvm::Value::getType(), llvm::GlobalValue::getType(), llvm::CCValAssign::getValNo(), llvm::TargetLoweringBase::getValueType(), llvm::CCValAssign::getValVT(), llvm::ConstantInt::getZExtValue(), llvm::APInt::getZExtValue(), llvm::CallingConv::GHC, llvm::ARMCC::GT, llvm::FloatABI::Hard, llvm::Value::hasOneUse(), llvm::TargetLoweringBase::hasStandaloneRem(), llvm::ARMCC::HI, llvm::ARMCC::HS, I, llvm::MVT::i1, llvm::MVT::i128, llvm::MVT::i16, llvm::MVT::i32, llvm::MVT::i64, 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::Type::isDoubleTy(), llvm::CmpInst::isEquality(), llvm::Type::isFloatTy(), llvm::Type::isIntegerTy(), llvm::CCValAssign::isMemLoc(), llvm::CCValAssign::isRegLoc(), llvm::EVT::isSimple(), llvm::CallInst::isTailCall(), llvm::CmpInst::isUnsigned(), llvm::FunctionType::isVarArg(), llvm::MVT::isVector(), llvm::MVT::isVoid, llvm::Type::isVoidTy(), llvm::MemIntrinsic::isVolatile(), IT, llvm::AMDGPUISD::KILL, llvm::ARMCC::LE, LLVM_FALLTHROUGH, llvm_unreachable, llvm::ARMCC::LO, llvm::SPII::Load, llvm::ARMCC::LS, llvm::ARM_AM::lsl, llvm::ARM_AM::lsr, llvm::ARMCC::LT, llvm::ARMCC::MI, MRI, llvm::ARMCC::NE, llvm::CCValAssign::needsCustom(), llvm::ARM_AM::no_shift, llvm::User::operands(), llvm::TargetMachine::Options, llvm::ISD::OR, llvm::CallSiteBase< FunTy, BBTy, ValTy, UserTy, UseTy, InstrTy, CallTy, InvokeTy, IterTy >::paramHasAttr(), llvm::ARMCC::PL, llvm::predOps(), llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back(), llvm::SmallVectorTemplateBase< T, isPodLike >::push_back(), llvm::report_fatal_error(), llvm::SmallVectorImpl< T >::reserve(), llvm::MipsISD::Ret, llvm::MCID::Return, llvm::MCID::Select, llvm::MachineFrameInfo::setFrameAddressIsTaken(), llvm::ISD::ArgFlagsTy::setOrigAlign(), llvm::ISD::ArgFlagsTy::setSExt(), llvm::ISD::ArgFlagsTy::setZExt(), llvm::CCValAssign::SExt, llvm::MVT::SimpleTy, llvm::SmallVectorTemplateCommon< T >::size(), llvm::AMDGPU::HSAMD::Kernel::Arg::Key::Size, llvm::SPII::Store, llvm::ISD::SUB, llvm::TargetLowering::supportSplitCSR(), llvm::TargetLowering::supportSwiftError(), std::swap(), llvm::CallingConv::Swift, llvm::AArch64_AM::SXTB, llvm::AArch64_AM::SXTH, llvm::ISD::TRAP, UseReg(), llvm::AArch64_AM::UXTH, llvm::ARMCC::VC, llvm::ARMISD::VMOVDRR, llvm::ARMISD::VMOVRRD, llvm::ARMCC::VS, and llvm::CCValAssign::ZExt.

Variable Documentation

◆ FoldableLoadExtends

const struct FoldableLoadExtendsStruct FoldableLoadExtends[]
static
Initial value:
= {
{ { ARM::SXTH, ARM::t2SXTH }, 0, 0, MVT::i16 },
{ { ARM::UXTH, ARM::t2UXTH }, 0, 1, MVT::i16 },
{ { ARM::ANDri, ARM::t2ANDri }, 255, 1, MVT::i8 },
{ { ARM::SXTB, ARM::t2SXTB }, 0, 0, MVT::i8 },
{ { ARM::UXTB, ARM::t2UXTB }, 0, 1, MVT::i8 }
}