Go to the documentation of this file.
13 #ifndef LLVM_LIB_TARGET_ARM_ARMBASICBLOCKINFO_H
14 #define LLVM_LIB_TARGET_ARM_ARMBASICBLOCKINFO_H
24 struct BasicBlockInfo;
35 return Alignment.value() - (1ull <<
KnownBits);
113 bool isThumb =
false;
135 return BBInfo[
MBB->getNumber()].Offset;
141 BBInfo[
MBB->getNumber()].Size += Size;
145 unsigned MaxDisp)
const;
148 BBInfo.
insert(BBInfo.begin() + BBNum, BBI);
159 #endif // LLVM_LIB_TARGET_ARM_ARMBASICBLOCKINFO_H
ARMFunctionInfo - This class is derived from MachineFunctionInfo and contains private ARM-specific in...
void insert(unsigned BBNum, BasicBlockInfo BBI)
This is an optimization pass for GlobalISel generic memory operations.
virtual const TargetInstrInfo * getInstrInfo() const
unsigned postKnownBits(Align Align=llvm::Align(1)) const
Compute the number of known low bits of postOffset.
unsigned Offset
Offset - Distance from the beginning of the function to the beginning of this basic block.
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
unsigned getNumBlockIDs() const
getNumBlockIDs - Return the number of MBB ID's allocated.
Expected< ExpressionValue > max(const ExpressionValue &Lhs, const ExpressionValue &Rhs)
bool isBBInRange(MachineInstr *MI, MachineBasicBlock *DestBB, unsigned MaxDisp) const
isBBInRange - Returns true if the distance between specific MI and specific BB can fit in MI's displa...
unsigned postOffset(Align Alignment=Align(1)) const
Compute the offset immediately following this block.
Ty * getInfo()
getInfo - Keep track of various per-function pieces of information for backends that would like to do...
unsigned Log2(Align A)
Returns the log2 of the alignment.
BasicBlockInfo - Information about the offset and size of a single basic block.
void computeBlockSize(MachineBasicBlock *MBB)
const HexagonInstrInfo * TII
This struct is a compact representation of a valid (non-zero power of two) alignment.
static bool isThumbFunction(Function *F, Triple::ArchType ModuleArch)
const TargetSubtargetInfo & getSubtarget() const
getSubtarget - Return the subtarget for which this machine code is being compiled.
Representation of each machine instruction.
Align PostAlign
PostAlign - When > 1, the block terminator contains a .align directive, so the end of the block is al...
unsigned internalKnownBits() const
Compute the number of known offset bits internally to this block.
uint8_t Unalign
Unalign - When non-zero, the block contains instructions (inline asm) of unknown size.
unsigned getOffsetOf(MachineBasicBlock *MBB) const
unsigned Size
Size - Size of the basic block in bytes.
unsigned countTrailingZeros(T Val, ZeroBehavior ZB=ZB_Width)
Count number of 0's from the least significant bit to the most stopping at the first 1.
void adjustBBOffsetsAfter(MachineBasicBlock *MBB)
unsigned UnknownPadding(Align Alignment, unsigned KnownBits)
UnknownPadding - Return the worst case padding that could result from unknown offset bits.
void adjustBBSize(MachineBasicBlock *MBB, int Size)
ARMBasicBlockUtils(MachineFunction &MF)
BBInfoVector & getBBInfo()
uint8_t KnownBits
KnownBits - The number of low bits in Offset that are known to be exact.
unsigned getOffsetOf(MachineInstr *MI) const
getOffsetOf - Return the current offset of the specified machine instruction from the start of the fu...
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
void computeAllBlockSizes()
iterator insert(iterator I, T &&Elt)