13#ifndef LLVM_CODEGEN_ANALYSIS_H
14#define LLVM_CODEGEN_ANALYSIS_H
22template <
typename T>
class SmallVectorImpl;
25class MachineBasicBlock;
27class TargetLoweringBase;
48 const unsigned *Indices,
49 const unsigned *IndicesEnd,
50 unsigned CurIndex = 0);
54 unsigned CurIndex = 0) {
66 SmallVectorImpl<EVT> &ValueVTs,
67 SmallVectorImpl<TypeSize> *Offsets,
68 TypeSize StartingOffset);
70 SmallVectorImpl<EVT> &ValueVTs,
71 SmallVectorImpl<TypeSize> *Offsets =
nullptr,
74 SmallVectorImpl<EVT> &ValueVTs,
75 SmallVectorImpl<uint64_t> *FixedOffsets,
80 SmallVectorImpl<EVT> &ValueVTs,
81 SmallVectorImpl<EVT> *MemVTs,
82 SmallVectorImpl<TypeSize> *Offsets,
83 TypeSize StartingOffset);
85 SmallVectorImpl<EVT> &ValueVTs,
86 SmallVectorImpl<EVT> *MemVTs,
87 SmallVectorImpl<TypeSize> *Offsets =
nullptr,
90 SmallVectorImpl<EVT> &ValueVTs,
91 SmallVectorImpl<EVT> *MemVTs,
92 SmallVectorImpl<uint64_t> *FixedOffsets,
103 SmallVectorImpl<LLT> &ValueTys,
104 SmallVectorImpl<uint64_t> *Offsets =
nullptr,
143 const ReturnInst *Ret,
144 const TargetLoweringBase &TLI,
145 bool *AllowDifferingSizes =
nullptr);
151 const ReturnInst *Ret,
152 const TargetLoweringBase &TLI);
154DenseMap<const MachineBasicBlock *, int>
MachineBasicBlock MachineBasicBlock::iterator DebugLoc DL
This file defines the DenseMap class.
const char LLVMTargetMachineRef TM
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
Predicate
This enumeration lists the possible predicates for CmpInst subclasses.
The instances of the Type class are immutable: once they are created, they are never changed.
CondCode
ISD::CondCode enum - These are ordered carefully to make the bitfields below work out,...
This is an optimization pass for GlobalISel generic memory operations.
void ComputeValueVTs(const TargetLowering &TLI, const DataLayout &DL, Type *Ty, SmallVectorImpl< EVT > &ValueVTs, SmallVectorImpl< TypeSize > *Offsets, TypeSize StartingOffset)
ComputeValueVTs - Given an LLVM IR type, compute a sequence of EVTs that represent all the individual...
ISD::CondCode getICmpCondCode(ICmpInst::Predicate Pred)
getICmpCondCode - Return the ISD condition code corresponding to the given LLVM IR integer condition ...
bool returnTypeIsEligibleForTailCall(const Function *F, const Instruction *I, const ReturnInst *Ret, const TargetLoweringBase &TLI)
Test if given that the input instruction is in the tail call position if the return type or any attri...
void computeValueLLTs(const DataLayout &DL, Type &Ty, SmallVectorImpl< LLT > &ValueTys, SmallVectorImpl< uint64_t > *Offsets=nullptr, uint64_t StartingOffset=0)
computeValueLLTs - Given an LLVM IR type, compute a sequence of LLTs that represent all the individua...
ISD::CondCode getFCmpCondCode(FCmpInst::Predicate Pred)
getFCmpCondCode - Return the ISD condition code corresponding to the given LLVM IR floating-point con...
bool attributesPermitTailCall(const Function *F, const Instruction *I, const ReturnInst *Ret, const TargetLoweringBase &TLI, bool *AllowDifferingSizes=nullptr)
Test if given that the input instruction is in the tail call position, if there is an attribute misma...
ISD::CondCode getFCmpCodeWithoutNaN(ISD::CondCode CC)
getFCmpCodeWithoutNaN - Given an ISD condition code comparing floats, return the equivalent code if w...
GlobalValue * ExtractTypeInfo(Value *V)
ExtractTypeInfo - Returns the type info, possibly bitcast, encoded in V.
bool isInTailCallPosition(const CallBase &Call, const TargetMachine &TM)
Test if the given instruction is in a position to be optimized with a tail-call.
unsigned ComputeLinearIndex(Type *Ty, const unsigned *Indices, const unsigned *IndicesEnd, unsigned CurIndex=0)
Compute the linearized index of a member in a nested aggregate/struct/array.
DenseMap< const MachineBasicBlock *, int > getEHScopeMembership(const MachineFunction &MF)