14 #ifndef LLVM_CODEGEN_TARGETCALLINGCONV_H 15 #define LLVM_CODEGEN_TARGETCALLINGCONV_H 35 unsigned IsReturned : 1;
37 unsigned IsInAlloca : 1;
38 unsigned IsSplitEnd : 1;
39 unsigned IsSwiftSelf : 1;
40 unsigned IsSwiftError : 1;
42 unsigned IsHvaStart : 1;
43 unsigned IsSecArgPass : 1;
44 unsigned ByValAlign : 4;
45 unsigned OrigAlign : 5;
46 unsigned IsInConsecutiveRegsLast : 1;
47 unsigned IsInConsecutiveRegs : 1;
48 unsigned IsCopyElisionCandidate : 1;
54 : IsZExt(0), IsSExt(0), IsInReg(0), IsSRet(0), IsByVal(0), IsNest(0),
55 IsReturned(0), IsSplit(0), IsInAlloca(0), IsSplitEnd(0),
56 IsSwiftSelf(0), IsSwiftError(0), IsHva(0), IsHvaStart(0),
57 IsSecArgPass(0), ByValAlign(0), OrigAlign(0),
58 IsInConsecutiveRegsLast(0), IsInConsecutiveRegs(0),
59 IsCopyElisionCandidate(0), ByValSize(0) {
60 static_assert(
sizeof(*
this) == 2 *
sizeof(
unsigned),
"flags are too big");
63 bool isZExt()
const {
return IsZExt; }
66 bool isSExt()
const {
return IsSExt; }
72 bool isSRet()
const {
return IsSRet; }
87 bool isHva()
const {
return IsHva; }
96 bool isNest()
const {
return IsNest; }
146 static const unsigned NoArgIndex = UINT_MAX;
155 unsigned origIdx,
unsigned partOffs)
156 : Flags(flags), Used(used), OrigArgIndex(origIdx), PartOffset(partOffs) {
162 return OrigArgIndex != NoArgIndex;
166 assert(OrigArgIndex != NoArgIndex &&
"Implicit machine-level argument");
181 bool IsFixed =
false;
193 unsigned origIdx,
unsigned partOffs)
194 : Flags(flags), IsFixed(isfixed), OrigArgIndex(origIdx),
195 PartOffset(partOffs) {
204 #endif // LLVM_CODEGEN_TARGETCALLINGCONV_H void setByValAlign(unsigned A)
This class represents lattice values for constants.
void setCopyElisionCandidate()
MVT getSimpleVT() const
Return the SimpleValueType held in the specified simple EVT.
void setInConsecutiveRegs()
void setInConsecutiveRegsLast()
bool isInConsecutiveRegs() const
void setByValSize(unsigned S)
OutputArg - This struct carries flags and a value for a single outgoing (actual) argument or outgoing...
bool isSecArgPass() const
void setOrigAlign(unsigned A)
unsigned getByValSize() const
unsigned getOrigAlign() const
OutputArg(ArgFlagsTy flags, EVT vt, EVT argvt, bool isfixed, unsigned origIdx, unsigned partOffs)
bool isSwiftError() const
bool isCopyElisionCandidate() const
unsigned Log2_32(uint32_t Value)
Return the floor log base 2 of the specified value, -1 if the value is zero.
unsigned OrigArgIndex
Index original Function's argument.
unsigned getByValAlign() const
unsigned PartOffset
Offset in bytes of current output value relative to the beginning of original argument.
bool isInConsecutiveRegsLast() const
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())