LLVM: include/llvm/IR/MDBuilder.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

14#ifndef LLVM_IR_MDBUILDER_H

15#define LLVM_IR_MDBUILDER_H

16

22#include

23

24namespace llvm {

25

26class APInt;

27template class ArrayRef;

28class LLVMContext;

30class ConstantAsMetadata;

32class MDNode;

33class MDString;

35

38

39public:

41

42

44

45

47

48

49

50

51

52

53

54

56

57

58

59

60

61

62

63

64

66 bool IsExpected = false);

67

68

69

71

72

73

75

76

77

78

80 bool IsExpected = false);

81

82

84

85

86

87

88

91

92

94

95

97

98

101

102

103

104

105

106

108

109

111

112

113

114

115

116

117

119

120

121

122

123

124

126 bool VarArgsArePassed);

127

128

130

131

132

134

135

136

137

138

139

140 using PCSection = std::pair<StringRef, SmallVector<Constant *>>;

141

142

144

145

146

147

148

149protected:

150

151

152

154 MDNode *Extra = nullptr);

155

156public:

157

158

159

162 }

163

164

165

166

169 }

170

171

172

173

177 }

178

179

180

181

183

184

185

186

188

189

190

191

193

194

195

198

205 };

206

207

208

210

211

212

215 ArrayRef<std::pair<MDNode *, uint64_t>> Fields);

216

217

218

221

222

223

226

227

228

232

233

234

235

236

239 bool IsImmutable = false);

240

241

242

244

245

247};

248

249}

250

251#endif

static bool isConstant(const MachineInstr &MI)

AMDGPU Lower Kernel Arguments

This file defines the DenseSet and SmallDenseSet classes.

This file defines the SmallVector class.

Class for arbitrary precision integers.

ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...

This is an important base class in LLVM.

Implements a dense probed hash-table based set.

This is an important class for using LLVM in a threaded context.

MDNode * createTBAAAccessTag(MDNode *BaseType, MDNode *AccessType, uint64_t Offset, uint64_t Size, bool IsImmutable=false)

Return metadata for a TBAA access tag with the given base type, final access type,...

MDNode * createCallbackEncoding(unsigned CalleeArgNo, ArrayRef< int > Arguments, bool VarArgsArePassed)

Return metadata describing a callback (see llvm::AbstractCallSite).

MDNode * createAnonymousAARoot(StringRef Name=StringRef(), MDNode *Extra=nullptr)

Return metadata appropriate for a AA root node (scope or TBAA).

MDNode * createFunctionEntryCount(uint64_t Count, bool Synthetic, const DenseSet< GlobalValue::GUID > *Imports)

Return metadata containing the entry Count for a function, a boolean \Synthetic indicating whether th...

MDNode * createAnonymousAliasScope(MDNode *Domain, StringRef Name=StringRef())

Return metadata appropriate for an alias scope root node.

MDNode * createPseudoProbeDesc(uint64_t GUID, uint64_t Hash, StringRef FName)

Return metadata containing the pseudo probe descriptor for a function.

ConstantAsMetadata * createConstant(Constant *C)

Return the given constant as metadata.

MDNode * createFPMath(float Accuracy)

Return metadata with the given settings.

MDNode * createPCSections(ArrayRef< PCSection > Sections)

Return metadata for PC sections.

MDNode * createTBAANode(StringRef Name, MDNode *Parent, bool isConstant=false)

Return metadata for a non-root TBAA node with the given name, parent in the TBAA tree,...

MDNode * createTBAARoot(StringRef Name)

Return metadata appropriate for a TBAA root node with the given name.

MDNode * createBranchWeights(uint32_t TrueWeight, uint32_t FalseWeight, bool IsExpected=false)

Return metadata containing two branch weights.

MDString * createString(StringRef Str)

Return the given string as metadata.

MDNode * createAnonymousTBAARoot()

Return metadata appropriate for a TBAA root node.

MDNode * createTBAAScalarTypeNode(StringRef Name, MDNode *Parent, uint64_t Offset=0)

Return metadata for a TBAA scalar type node with the given name, an offset and a parent in the TBAA t...

MDNode * createIrrLoopHeaderWeight(uint64_t Weight)

Return metadata containing an irreducible loop header weight.

MDNode * createFunctionSectionPrefix(StringRef Prefix)

Return metadata containing the section prefix for a function.

MDNode * createUnpredictable()

Return metadata specifying that a branch or switch is unpredictable.

MDNode * createTBAAStructTypeNode(StringRef Name, ArrayRef< std::pair< MDNode *, uint64_t > > Fields)

Return metadata for a TBAA struct node in the type DAG with the given name, a list of pairs (offset,...

MDNode * createCallees(ArrayRef< Function * > Callees)

Return metadata indicating the possible callees of indirect calls.

MDNode * createAliasScopeDomain(StringRef Name)

Return metadata appropriate for an alias scope domain node with the given name.

std::pair< StringRef, SmallVector< Constant * > > PCSection

A pair of PC section name with auxilliary constant data.

MDNode * createRange(const APInt &Lo, const APInt &Hi)

Return metadata describing the range [Lo, Hi).

MDNode * createLikelyBranchWeights()

Return metadata containing two branch weights, with significant bias towards true destination.

MDNode * createTBAAStructNode(ArrayRef< TBAAStructField > Fields)

Return metadata for a tbaa.struct node with the given struct field descriptions.

MDBuilder(LLVMContext &context)

MDNode * mergeCallbackEncodings(MDNode *ExistingCallbacks, MDNode *NewCB)

Merge the new callback encoding NewCB into ExistingCallbacks.

MDNode * createMutableTBAAAccessTag(MDNode *Tag)

Return mutable version of the given mutable or immutable TBAA access tag.

MDNode * createLLVMStats(ArrayRef< std::pair< StringRef, uint64_t > > LLVMStatsVec)

Return metadata containing llvm statistics.

MDNode * createRTTIPointerPrologue(Constant *PrologueSig, Constant *RTTI)

Return metadata feeding to the CodeGen about how to generate a function prologue for the "function" s...

MDNode * createAnonymousAliasScopeDomain(StringRef Name=StringRef())

Return metadata appropriate for an alias scope domain node.

MDNode * createUnlikelyBranchWeights()

Return metadata containing two branch weights, with significant bias towards false destination.

MDNode * createAliasScope(StringRef Name, MDNode *Domain)

Return metadata appropriate for an alias scope node with the given name.

MDNode * createTBAAStructTagNode(MDNode *BaseType, MDNode *AccessType, uint64_t Offset, bool IsConstant=false)

Return metadata for a TBAA tag node with the given base type, access type and offset relative to the ...

MDNode * createTBAATypeNode(MDNode *Parent, uint64_t Size, Metadata *Id, ArrayRef< TBAAStructField > Fields=ArrayRef< TBAAStructField >())

Return metadata for a TBAA type node in the TBAA type DAG with the given parent type,...

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.

@ C

The default llvm calling convention, compatible with C.

This is an optimization pass for GlobalISel generic memory operations.

ArrayRef(const T &OneElt) -> ArrayRef< T >

TBAAStructField(uint64_t Offset, uint64_t Size, MDNode *Type)