Go to the documentation of this file.
13 #ifndef LLVM_LIB_TARGET_ARM_ARMCONSTANTPOOLVALUE_H
14 #define LLVM_LIB_TARGET_ARM_ARMCONSTANTPOOLVALUE_H
31 class MachineBasicBlock;
64 unsigned char PCAdjust;
67 bool AddCurrentAddress;
72 bool AddCurrentAddress);
76 bool AddCurrentAddress);
78 template <
typename Derived>
80 const std::vector<MachineConstantPoolEntry> &
Constants =
CP->getConstants();
82 if (
Constants[
i].isMachineConstantPoolEntry() &&
86 if (Derived *APC = dyn_cast<Derived>(CPV))
87 if (cast<Derived>(
this)->equals(APC))
115 Align Alignment)
override;
124 return this->LabelId == A->LabelId &&
125 this->PCAdjust == A->PCAdjust &&
126 this->Modifier == A->Modifier;
150 bool AddCurrentAddress);
156 bool AddCurrentAddress);
167 unsigned char PCAdj);
172 bool AddCurrentAddress);
188 Align Alignment)
override;
215 bool AddCurrentAddress);
219 unsigned char PCAdj);
224 Align Alignment)
override;
250 bool AddCurrentAddress);
255 unsigned ID,
unsigned char PCAdj);
260 Align Alignment)
override;
281 #endif // LLVM_LIB_TARGET_ARM_ARMCONSTANTPOOLVALUE_H
void addSelectionDAGCSEId(FoldingSetNodeID &ID) override
unsigned char getPCAdjustment() const
const BlockAddress * getBlockAddress() const
This is an optimization pass for GlobalISel generic memory operations.
void print(raw_ostream &O) const override
print - Implement operator<<
ARMConstantPoolValue - ARM specific constantpool value.
void print(raw_ostream *O) const
@ TPOFF
Global Offset Table, Thread Pointer Offset.
void print(raw_ostream &O) const override
print - Implement operator<<
static bool classof(const ARMConstantPoolValue *APV)
int getExistingMachineCPValue(MachineConstantPool *CP, Align Alignment) override
ARMConstantPoolSymbol - ARM-specific constantpool values for external symbols.
Abstract base class for all machine specific constantpool value subclasses.
The instances of the Type class are immutable: once they are created, they are never changed.
StringRef getModifierText() const
const GlobalValue * getGV() const
int getExistingMachineCPValue(MachineConstantPool *CP, Align Alignment) override
SmallPtrSetIterator - This implements a const_iterator for SmallPtrSet.
bool equals(const ARMConstantPoolSymbol *A) const
SmallPtrSet - This class implements a set which is optimized for holding SmallSize or less elements.
bool isGlobalValue() const
@ SECREL
Thread Pointer Offset.
ARMConstantPoolValue(Type *Ty, unsigned id, ARMCP::ARMCPKind Kind, unsigned char PCAdj, ARMCP::ARMCPModifier Modifier, bool AddCurrentAddress)
void print(raw_ostream &O) const override
print - Implement operator<<
void addSelectionDAGCSEId(FoldingSetNodeID &ID) override
const MachineBasicBlock * getMBB() const
(vector float) vec_cmpeq(*A, *B) C
~ARMConstantPoolValue() override
static ARMConstantPoolSymbol * Create(LLVMContext &C, StringRef s, unsigned ID, unsigned char PCAdj)
This class implements an extremely fast bulk output stream that can only output to a stream.
raw_ostream & operator<<(raw_ostream &OS, const APFixedPoint &FX)
ARMCP::ARMCPModifier getModifier() const
iterator_range< promoted_iterator > promotedGlobals()
bool equals(const ARMConstantPoolValue *A) const
This struct is a compact representation of a valid (non-zero power of two) alignment.
StringRef getSymbol() const
static ARMConstantPoolMBB * Create(LLVMContext &C, const MachineBasicBlock *mbb, unsigned ID, unsigned char PCAdj)
unsigned ID
LLVM IR allows to use arbitrary numbers as calling convention identifiers.
static bool classof(const ARMConstantPoolValue *ACPV)
void addSelectionDAGCSEId(FoldingSetNodeID &ID) override
void addSelectionDAGCSEId(FoldingSetNodeID &ID) override
This is an important base class in LLVM.
@ GOT_PREL
Thread Local Storage (General Dynamic Mode)
multiplies can be turned into SHL s
This is an important class for using LLVM in a threaded context.
bool equals(const ARMConstantPoolConstant *A) const
The MachineConstantPool class keeps track of constants referenced by a function which must be spilled...
ARMConstantPoolConstant - ARM-specific constant pool values for Constants, Functions,...
bool hasSameValue(ARMConstantPoolValue *ACPV) override
hasSameValue - Return true if this ARM constpool value can share the same constantpool entry as anoth...
The address of a basic block.
StringRef - Represent a constant reference to a string, i.e.
bool hasSameValue(ARMConstantPoolValue *ACPV) override
hasSameValue - Return true if this ARM constpool value can share the same constantpool entry as anoth...
FoldingSetNodeID - This class is used to gather all the unique data bits of a node.
add sub stmia L5 ldr r0 bl L_printf $stub Instead of a and a wouldn t it be better to do three moves *Return an aggregate type is even return S
unsigned getLabelId() const
const Constant * getPromotedGlobalInit() const
void print(raw_ostream &O) const override
print - Implement operator<<
bool isBlockAddress() const
bool mustAddCurrentAddress() const
static ARMConstantPoolConstant * Create(const Constant *C, unsigned ID)
static bool classof(const ARMConstantPoolValue *ACPV)
bool isPromotedGlobal() const
bool hasSameValue(ARMConstantPoolValue *ACPV) override
hasSameValue - Return true if this ARM constpool value can share the same constantpool entry as anoth...
bool getAlign(const Function &F, unsigned index, unsigned &align)
bool equals(const ARMConstantPoolMBB *A) const
@ GOTTPOFF
Global Offset Table, PC Relative.
int getExistingMachineCPValue(MachineConstantPool *CP, Align Alignment) override
A range adaptor for a pair of iterators.
int getExistingMachineCPValue(MachineConstantPool *CP, Align Alignment) override
ARMConstantPoolMBB - ARM-specific constantpool value of a machine basic block.
virtual bool hasSameValue(ARMConstantPoolValue *ACPV)
hasSameValue - Return true if this ARM constpool value can share the same constantpool entry as anoth...
bool isMachineBasicBlock() const
int getExistingMachineCPValueImpl(MachineConstantPool *CP, Align Alignment)
@ SBREL
Section Relative (Windows TLS)