LLVM  13.0.0git
Functions
AArch64FastISel.cpp File Reference
#include "AArch64.h"
#include "AArch64CallingConvention.h"
#include "AArch64RegisterInfo.h"
#include "AArch64Subtarget.h"
#include "MCTargetDesc/AArch64AddressingModes.h"
#include "Utils/AArch64BaseInfo.h"
#include "llvm/ADT/APFloat.h"
#include "llvm/ADT/APInt.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/Analysis/BranchProbabilityInfo.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/MachineInstr.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineMemOperand.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/RuntimeLibcalls.h"
#include "llvm/CodeGen/ValueTypes.h"
#include "llvm/IR/Argument.h"
#include "llvm/IR/Attributes.h"
#include "llvm/IR/BasicBlock.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/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/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/MC/MCSymbol.h"
#include "llvm/Support/AtomicOrdering.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/CodeGen.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/MachineValueType.h"
#include "llvm/Support/MathExtras.h"
#include <algorithm>
#include <cassert>
#include <cstdint>
#include <iterator>
#include <utility>
#include "AArch64GenFastISel.inc"

Go to the source code of this file.

Functions

static bool isIntExtFree (const Instruction *I)
 Check if the sign-/zero-extend will be a noop. More...
 
static unsigned getImplicitScaleFactor (MVT VT)
 Determine the implicit scale factor that is applied by a memory operation for a given value type. More...
 
static bool isMulPowOf2 (const Value *I)
 Check if the multiply is by a power-of-2 constant. More...
 
static AArch64CC::CondCode getCompareCC (CmpInst::Predicate Pred)
 
static bool isZExtLoad (const MachineInstr *LI)
 
static bool isSExtLoad (const MachineInstr *LI)
 

Function Documentation

◆ getCompareCC()

static AArch64CC::CondCode getCompareCC ( CmpInst::Predicate  Pred)
static

◆ getImplicitScaleFactor()

static unsigned getImplicitScaleFactor ( MVT  VT)
static

Determine the implicit scale factor that is applied by a memory operation for a given value type.

Definition at line 318 of file AArch64FastISel.cpp.

References llvm::MVT::f32, llvm::MVT::f64, llvm::MVT::i1, llvm::MVT::i16, llvm::MVT::i32, llvm::MVT::i64, llvm::MVT::i8, and llvm::MVT::SimpleTy.

◆ isIntExtFree()

static bool isIntExtFree ( const Instruction I)
static

Check if the sign-/zero-extend will be a noop.

Definition at line 298 of file AArch64FastISel.cpp.

References Arg, assert(), and I.

◆ isMulPowOf2()

static bool isMulPowOf2 ( const Value I)
static

Check if the multiply is by a power-of-2 constant.

Definition at line 551 of file AArch64FastISel.cpp.

References I, and MI.

◆ isSExtLoad()

static bool isSExtLoad ( const MachineInstr LI)
static

Definition at line 4391 of file AArch64FastISel.cpp.

References llvm::MachineInstr::getOpcode().

◆ isZExtLoad()

static bool isZExtLoad ( const MachineInstr LI)
static

Definition at line 4371 of file AArch64FastISel.cpp.

References llvm::MachineInstr::getOpcode().