LLVM: include/llvm/CodeGen/TargetCallingConv.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13#ifndef LLVM_CODEGEN_TARGETCALLINGCONV_H

14#define LLVM_CODEGEN_TARGETCALLINGCONV_H

15

20#include

21#include

22#include

23

24namespace llvm {

25namespace ISD {

26

28 private:

29 unsigned IsZExt : 1;

30 unsigned IsSExt : 1;

31 unsigned IsNoExt : 1;

32 unsigned IsInReg : 1;

33 unsigned IsSRet : 1;

34 unsigned IsByVal : 1;

35 unsigned IsByRef : 1;

36 unsigned IsNest : 1;

37 unsigned IsReturned : 1;

38 unsigned IsSplit : 1;

39 unsigned IsInAlloca : 1;

40 unsigned IsPreallocated : 1;

41 unsigned IsSplitEnd : 1;

42 unsigned IsSwiftSelf : 1;

43 unsigned IsSwiftAsync : 1;

44 unsigned IsSwiftError : 1;

45 unsigned IsCFGuardTarget : 1;

46 unsigned IsHva : 1;

47 unsigned IsHvaStart : 1;

48 unsigned IsSecArgPass : 1;

49 unsigned MemAlign : 6;

50

51

52 unsigned OrigAlign : 5;

53 unsigned IsInConsecutiveRegsLast : 1;

54 unsigned IsInConsecutiveRegs : 1;

55 unsigned IsCopyElisionCandidate : 1;

56 unsigned IsPointer : 1;

57

58 unsigned IsVarArg : 1;

59

60 unsigned ByValOrByRefSize = 0;

61

62 unsigned PointerAddrSpace = 0;

63

64 public:

66 : IsZExt(0), IsSExt(0), IsNoExt(0), IsInReg(0), IsSRet(0), IsByVal(0),

67 IsByRef(0), IsNest(0), IsReturned(0), IsSplit(0), IsInAlloca(0),

68 IsPreallocated(0), IsSplitEnd(0), IsSwiftSelf(0), IsSwiftAsync(0),

69 IsSwiftError(0), IsCFGuardTarget(0), IsHva(0), IsHvaStart(0),

70 IsSecArgPass(0), MemAlign(0), OrigAlign(0),

71 IsInConsecutiveRegsLast(0), IsInConsecutiveRegs(0),

72 IsCopyElisionCandidate(0), IsPointer(0), IsVarArg(0) {

73 static_assert(sizeof(*this) == 4 * sizeof(unsigned), "flags are too big");

74 }

75

76 bool isZExt() const { return IsZExt; }

78

79 bool isSExt() const { return IsSExt; }

81

82 bool isNoExt() const { return IsNoExt; }

84

85 bool isInReg() const { return IsInReg; }

87

88 bool isSRet() const { return IsSRet; }

90

91 bool isByVal() const { return IsByVal; }

93

94 bool isByRef() const { return IsByRef; }

96

97 bool isInAlloca() const { return IsInAlloca; }

99

102

105

108

111

114

115 bool isHva() const { return IsHva; }

117

120

123

124 bool isNest() const { return IsNest; }

126

129

132

135 IsInConsecutiveRegsLast = Flag;

136 }

137

138 bool isSplit() const { return IsSplit; }

140

143

146

149

150 bool isVarArg() const { return IsVarArg; }

152

156

161

165 assert(A && "ByValAlign must be defined");

166 return *A;

167 }

168

172

177

180 return ByValOrByRefSize;

181 }

184 ByValOrByRefSize = S;

185 }

186

189 return ByValOrByRefSize;

190 }

193 ByValOrByRefSize = S;

194 }

195

198};

199

200

201

202

203

206

208

209

210

212

213

216

217

219

221

222

223

224

226

231

235

240 };

241

242

243

244

245

248

250

251

253

254

256

257

259

260

261

262

264

269 };

270

271}

272}

273

274#endif

assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")

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

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

ISD namespace - This namespace contains an enum which represents all of the SelectionDAG node types a...

This is an optimization pass for GlobalISel generic memory operations.

unsigned encode(MaybeAlign A)

Returns a representation of the alignment that encodes undefined as 0.

MaybeAlign decodeMaybeAlign(unsigned Value)

Dual operation of the encode function above.

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

Definition TargetCallingConv.h:27

bool isNest() const

Definition TargetCallingConv.h:124

bool isSplitEnd() const

Definition TargetCallingConv.h:141

bool isHvaStart() const

Definition TargetCallingConv.h:118

void setHva()

Definition TargetCallingConv.h:116

void setSwiftAsync()

Definition TargetCallingConv.h:107

bool isPointer() const

Definition TargetCallingConv.h:147

void setSExt()

Definition TargetCallingConv.h:80

bool isInConsecutiveRegs() const

Definition TargetCallingConv.h:130

bool isInReg() const

Definition TargetCallingConv.h:85

void setInConsecutiveRegs(bool Flag=true)

Definition TargetCallingConv.h:131

void setByVal()

Definition TargetCallingConv.h:92

bool isCopyElisionCandidate() const

Definition TargetCallingConv.h:144

void setSplit()

Definition TargetCallingConv.h:139

void setVarArg()

Definition TargetCallingConv.h:151

bool isInAlloca() const

Definition TargetCallingConv.h:97

void setPreallocated()

Definition TargetCallingConv.h:101

void setCopyElisionCandidate()

Definition TargetCallingConv.h:145

void setPointer()

Definition TargetCallingConv.h:148

bool isSRet() const

Definition TargetCallingConv.h:88

Align getNonZeroOrigAlign() const

Definition TargetCallingConv.h:169

bool isSecArgPass() const

Definition TargetCallingConv.h:121

bool isSwiftSelf() const

Definition TargetCallingConv.h:103

void setByRef()

Definition TargetCallingConv.h:95

void setPointerAddrSpace(unsigned AS)

Definition TargetCallingConv.h:197

unsigned getPointerAddrSpace() const

Definition TargetCallingConv.h:196

bool isHva() const

Definition TargetCallingConv.h:115

bool isZExt() const

Definition TargetCallingConv.h:76

bool isNoExt() const

Definition TargetCallingConv.h:82

void setSwiftError()

Definition TargetCallingConv.h:110

bool isSplit() const

Definition TargetCallingConv.h:138

void setNest()

Definition TargetCallingConv.h:125

void setZExt()

Definition TargetCallingConv.h:77

unsigned getByRefSize() const

Definition TargetCallingConv.h:187

void setReturned(bool V=true)

Definition TargetCallingConv.h:128

void setByRefSize(unsigned S)

Definition TargetCallingConv.h:191

bool isSwiftError() const

Definition TargetCallingConv.h:109

void setInAlloca()

Definition TargetCallingConv.h:98

bool isSExt() const

Definition TargetCallingConv.h:79

unsigned getByValSize() const

Definition TargetCallingConv.h:178

void setSRet()

Definition TargetCallingConv.h:89

bool isByVal() const

Definition TargetCallingConv.h:91

bool isInConsecutiveRegsLast() const

Definition TargetCallingConv.h:133

void setSwiftSelf()

Definition TargetCallingConv.h:104

bool isReturned() const

Definition TargetCallingConv.h:127

void setNoExt()

Definition TargetCallingConv.h:83

Align getNonZeroMemAlign() const

Definition TargetCallingConv.h:153

void setInReg()

Definition TargetCallingConv.h:86

void setHvaStart()

Definition TargetCallingConv.h:119

void setByValSize(unsigned S)

Definition TargetCallingConv.h:182

void setCFGuardTarget()

Definition TargetCallingConv.h:113

void setInConsecutiveRegsLast(bool Flag=true)

Definition TargetCallingConv.h:134

void setSplitEnd()

Definition TargetCallingConv.h:142

bool isPreallocated() const

Definition TargetCallingConv.h:100

void setSecArgPass()

Definition TargetCallingConv.h:122

bool isVarArg() const

Definition TargetCallingConv.h:150

bool isSwiftAsync() const

Definition TargetCallingConv.h:106

bool isByRef() const

Definition TargetCallingConv.h:94

void setOrigAlign(Align A)

Definition TargetCallingConv.h:173

void setMemAlign(Align A)

Definition TargetCallingConv.h:157

bool isCFGuardTarget() const

Definition TargetCallingConv.h:112

ArgFlagsTy()

Definition TargetCallingConv.h:65

Align getNonZeroByValAlign() const

Definition TargetCallingConv.h:162

bool Used

Definition TargetCallingConv.h:215

static const unsigned NoArgIndex

Sentinel value for implicit machine-level input arguments.

Definition TargetCallingConv.h:220

Type * OrigTy

Original IR type of the argument.

Definition TargetCallingConv.h:214

InputArg(ArgFlagsTy Flags, MVT VT, EVT ArgVT, Type *OrigTy, bool Used, unsigned OrigArgIndex, unsigned PartOffset)

Definition TargetCallingConv.h:227

bool isOrigArg() const

Definition TargetCallingConv.h:232

MVT VT

Legalized type of this argument part.

Definition TargetCallingConv.h:207

unsigned PartOffset

Offset in bytes of current input value relative to the beginning of original argument.

Definition TargetCallingConv.h:225

EVT ArgVT

Usually the non-legalized type of the argument, which is the EVT corresponding to the OrigTy IR type.

Definition TargetCallingConv.h:211

unsigned getOrigArgIndex() const

Definition TargetCallingConv.h:236

unsigned OrigArgIndex

Index original Function's argument.

Definition TargetCallingConv.h:218

ArgFlagsTy Flags

Definition TargetCallingConv.h:205

MVT VT

Definition TargetCallingConv.h:249

unsigned PartOffset

Offset in bytes of current output value relative to the beginning of original argument.

Definition TargetCallingConv.h:263

OutputArg(ArgFlagsTy Flags, MVT VT, EVT ArgVT, Type *OrigTy, unsigned OrigArgIndex, unsigned PartOffset)

Definition TargetCallingConv.h:265

Type * OrigTy

Original IR type of the argument.

Definition TargetCallingConv.h:255

EVT ArgVT

Non-legalized type of the argument.

Definition TargetCallingConv.h:252

unsigned OrigArgIndex

Index original Function's argument.

Definition TargetCallingConv.h:258

ArgFlagsTy Flags

Definition TargetCallingConv.h:247

This struct is a compact representation of a valid (power of two) or undefined (0) alignment.

Align valueOrOne() const

For convenience, returns a valid alignment or 1 if undefined.