13#ifndef LLVM_CODEGEN_TARGETCALLINGCONV_H
14#define LLVM_CODEGEN_TARGETCALLINGCONV_H
65 unsigned MemAlign : 6;
68 unsigned OrigAlign : 5;
70 unsigned ByValOrByRefSize = 0;
72 unsigned PointerAddrSpace = 0;
74 void setFlag(Flags Flag,
bool Value =
true) {
75 FlagVals = (FlagVals & ~Flag) | (
Value ? Flag :
NoFlags);
80 static_assert(
sizeof(*this) == 4 *
sizeof(
unsigned),
"flags are too big");
181 assert(
A &&
"ByValAlign must be defined");
196 return ByValOrByRefSize;
200 ByValOrByRefSize = S;
205 return ByValOrByRefSize;
209 ByValOrByRefSize = S;
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.
LLVM Value Representation.
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.
@ LLVM_MARK_AS_BITMASK_ENUM
@ NoFlags
No Specific Flags.
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.
bool isInConsecutiveRegs() const
void setInConsecutiveRegs(bool Flag=true)
bool isCopyElisionCandidate() const
Flags
Flag bits describing an argument.
@ SecArgPass
Second argument.
@ CFGuardTarget
Control Flow Guard target.
@ Nest
Nested fn static chain.
@ SwiftSelf
Swift self parameter.
@ Preallocated
ByVal without the copy.
@ ByVal
Struct passed by value.
@ InAlloca
Passed with inalloca.
@ Returned
Always returned.
@ SplitEnd
Last part of a split.
@ SRet
Hidden struct-ret ptr.
@ CopyElisionCandidate
Argument copy elision candidate.
@ SwiftError
Swift error parameter.
@ VarArg
Whether this is part of a variable argument list (non-fixed).
@ SwiftAsync
Swift async context parameter.
@ InReg
Passed in register.
@ HvaStart
HVA structure start.
void setCopyElisionCandidate()
Align getNonZeroOrigAlign() const
bool isSecArgPass() const
void setPointerAddrSpace(unsigned AS)
unsigned getPointerAddrSpace() const
unsigned getByRefSize() const
void setReturned(bool V=true)
void setByRefSize(unsigned S)
bool isSwiftError() const
Flags getFlags() const
Return the argument's boolean flags.
unsigned getByValSize() const
bool isInConsecutiveRegsLast() const
Align getNonZeroMemAlign() const
void setByValSize(unsigned S)
void setInConsecutiveRegsLast(bool Flag=true)
bool isPreallocated() const
bool isSwiftAsync() const
void setOrigAlign(Align A)
void setMemAlign(Align A)
bool isCFGuardTarget() const
Align getNonZeroByValAlign() const
unsigned PartOffset
Offset in bytes of current output value relative to the beginning of original argument.
OutputArg(ArgFlagsTy Flags, MVT VT, EVT ArgVT, Type *OrigTy, unsigned OrigArgIndex, unsigned PartOffset)
Type * OrigTy
Original IR type of the argument.
EVT ArgVT
Non-legalized type of the argument.
unsigned OrigArgIndex
Index original Function's argument.
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.