LLVM: lib/Target/CSKY/CSKYConstantPoolValue.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13#ifndef LLVM_TARGET_CSKY_CONSTANTPOOLVALUE_H

14#define LLVM_TARGET_CSKY_CONSTANTPOOLVALUE_H

15

20#include

21

22namespace llvm {

23

26class GlobalValue;

27class LLVMContext;

28class MachineBasicBlock;

29

30namespace CSKYCP {

39

41}

42

43

44

45

47protected:

49 unsigned PCAdjust;

52

54

57 unsigned ID = 0);

58

59public:

65

71 }

74

76 Align Alignment) override;

77

79

81

83 return this->LabelId == A->LabelId && this->PCAdjust == A->PCAdjust &&

84 this->Modifier == A->Modifier;

85 }

86

87 template

89 const std::vector &Constants = CP->getConstants();

90 for (unsigned i = 0, e = Constants.size(); i != e; ++i) {

91 if (Constants[i].isMachineConstantPoolEntry() &&

92 Constants[i].getAlign() >= Alignment) {

93 auto *CPV =

95 if (Derived *APC = dyn_cast(CPV))

96 if (cast(this)->equals(APC))

97 return i;

98 }

99 }

100

101 return -1;

102 }

103};

104

105

106

108 const Constant *CVal;

109

113

114public:

118 unsigned ID = 0);

126

128 Align Alignment) override;

131

134 }

135

138 }

139};

140

141

142

144 const std::string S;

145

149

150public:

154

156

158 Align Alignment) override;

161

164 }

165

168 }

169};

170

171

172

175

178

179public:

182

184

186 Align Alignment) override;

189

192 }

193

196 }

197};

198

199

201 signed JTI;

202

205

206public:

209

211

213 Align Alignment) override;

216

219 }

220

222 return ACPV->isJT();

223 }

224};

225

226}

227

228#endif

static GCRegistry::Add< ErlangGC > A("erlang", "erlang-compatible garbage collector")

This file declares the MachineConstantPool class which is an abstract constant pool to keep track of ...

The address of a basic block.

CSKY-specific constant pool values for Constants, Functions, and BlockAddresses.

const GlobalValue * getGV() const

int getExistingMachineCPValue(MachineConstantPool *CP, Align Alignment) override

void addSelectionDAGCSEId(FoldingSetNodeID &ID) override

void print(raw_ostream &O) const override

print - Implement operator<<

static CSKYConstantPoolConstant * Create(const Constant *C, CSKYCP::CSKYCPKind Kind, unsigned PCAdjust, CSKYCP::CSKYCPModifier Modifier, bool AddCurrentAddress, unsigned ID=0)

bool equals(const CSKYConstantPoolConstant *A) const

const BlockAddress * getBlockAddress() const

const Constant * getConstantPool() const

static bool classof(const CSKYConstantPoolValue *APV)

CSKY-specific constantpool value of a jump table.

bool equals(const CSKYConstantPoolJT *A) const

int getExistingMachineCPValue(MachineConstantPool *CP, Align Alignment) override

static CSKYConstantPoolJT * Create(Type *Ty, int JTI, unsigned PCAdj, CSKYCP::CSKYCPModifier Modifier)

void print(raw_ostream &O) const override

print - Implement operator<<

static bool classof(const CSKYConstantPoolValue *ACPV)

void addSelectionDAGCSEId(FoldingSetNodeID &ID) override

CSKYConstantPoolMBB - CSKY-specific constantpool value of a machine basic block.

int getExistingMachineCPValue(MachineConstantPool *CP, Align Alignment) override

void addSelectionDAGCSEId(FoldingSetNodeID &ID) override

static CSKYConstantPoolMBB * Create(Type *Ty, const MachineBasicBlock *Mbb, unsigned PCAdjust)

static bool classof(const CSKYConstantPoolValue *ACPV)

bool equals(const CSKYConstantPoolMBB *A) const

void print(raw_ostream &O) const override

print - Implement operator<<

const MachineBasicBlock * getMBB() const

CSKYConstantPoolSymbol - CSKY-specific constantpool values for external symbols.

void addSelectionDAGCSEId(FoldingSetNodeID &ID) override

void print(raw_ostream &O) const override

print - Implement operator<<

int getExistingMachineCPValue(MachineConstantPool *CP, Align Alignment) override

static bool classof(const CSKYConstantPoolValue *ACPV)

bool equals(const CSKYConstantPoolSymbol *A) const

StringRef getSymbol() const

static CSKYConstantPoolSymbol * Create(Type *Ty, const char *S, unsigned PCAdjust, CSKYCP::CSKYCPModifier Modifier)

CSKYConstantPoolValue - CSKY specific constantpool value.

bool isMachineBasicBlock() const

bool isGlobalValue() const

unsigned getLabelID() const

void print(raw_ostream &O) const override

print - Implement operator<<

bool equals(const CSKYConstantPoolValue *A) const

unsigned getPCAdjustment() const

int getExistingMachineCPValueImpl(MachineConstantPool *CP, Align Alignment)

bool mustAddCurrentAddress() const

bool isBlockAddress() const

void addSelectionDAGCSEId(FoldingSetNodeID &ID) override

CSKYCP::CSKYCPModifier Modifier

CSKYCP::CSKYCPModifier getModifier() const

const char * getModifierText() const

int getExistingMachineCPValue(MachineConstantPool *CP, Align Alignment) override

This is an important base class in LLVM.

FoldingSetNodeID - This class is used to gather all the unique data bits of a node.

Abstract base class for all machine specific constantpool value subclasses.

The MachineConstantPool class keeps track of constants referenced by a function which must be spilled...

StringRef - Represent a constant reference to a string, i.e.

The instances of the Type class are immutable: once they are created, they are never changed.

This class implements an extremely fast bulk output stream that can only output to a stream.

@ C

The default llvm calling convention, compatible with C.

This is an optimization pass for GlobalISel generic memory operations.

MaybeAlign getAlign(const Function &F, unsigned Index)

This struct is a compact representation of a valid (non-zero power of two) alignment.