21 EVT LocVT, CCValAssign::LocInfo LocInfo,
22 ISD::ArgFlagsTy ArgFlags,
23 Hexagon_CCState &State,
30 EVT LocVT, CCValAssign::LocInfo LocInfo,
31 ISD::ArgFlagsTy ArgFlags,
32 Hexagon_CCState &State,
36 unsigned ByValSize = 0;
37 if (ArgFlags.isByVal() &&
38 ((ByValSize = ArgFlags.getByValSize()) >
39 (MVT(MVT::i64).getSizeInBits() / 8))) {
45 if ( !ForceMem && ((NonVarArgsParams == -1) || (CurrentParam <=
48 if (LocVT == MVT::i32 ||
52 static const unsigned RegList1[] = {
56 if (
unsigned Reg = State.AllocateReg(RegList1, 6)) {
58 LocVT.getSimpleVT(), LocInfo));
63 if (LocVT == MVT::i64 ||
65 static const unsigned RegList2[] = {
66 Hexagon::D0, Hexagon::D1, Hexagon::D2
68 if (
unsigned Reg = State.AllocateReg(RegList2, 3)) {
70 LocVT.getSimpleVT(), LocInfo));
76 const Type* ArgTy = LocVT.getTypeForEVT(State.getContext());
78 State.getTarget().getDataLayout()->getABITypeAlignment(ArgTy);
80 State.getTarget().getDataLayout()->getTypeSizeInBits(ArgTy) / 8;
84 if (ArgFlags.isByVal()) {
91 unsigned Offset3 = State.AllocateStack(Size, Alignment);
92 State.addLoc(CCValAssign::getMem(ValNo, ValVT.getSimpleVT(), Offset3,
93 LocVT.getSimpleVT(), LocInfo));
99 EVT LocVT, CCValAssign::LocInfo LocInfo,
100 ISD::ArgFlagsTy ArgFlags,
101 Hexagon_CCState &State,
102 int NonVarArgsParams,
106 if (LocVT == MVT::i32 ||
108 static const unsigned RegList1[] = {
112 if (
unsigned Reg = State.AllocateReg(RegList1, 6)) {
114 LocVT.getSimpleVT(), LocInfo));
119 if (LocVT == MVT::i64 ||
121 static const unsigned RegList2[] = {
122 Hexagon::D0, Hexagon::D1, Hexagon::D2
124 if (
unsigned Reg = State.AllocateReg(RegList2, 3)) {
126 LocVT.getSimpleVT(), LocInfo));
131 const Type* ArgTy = LocVT.getTypeForEVT(State.getContext());
133 State.getTarget().getDataLayout()->getABITypeAlignment(ArgTy);
135 State.getTarget().getDataLayout()->getTypeSizeInBits(ArgTy) / 8;
137 unsigned Offset3 = State.AllocateStack(Size, Alignment);
138 State.addLoc(CCValAssign::getMem(ValNo, ValVT.getSimpleVT(), Offset3,
139 LocVT.getSimpleVT(), LocInfo));
COFF::RelocationTypeX86 Type
static bool RetCC_Hexagon32_VarArgs(unsigned ValNo, EVT ValVT, EVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, Hexagon_CCState &State, int NonVarArgsParams, int CurrentParam, bool ForceMem)
static bool CC_Hexagon32_VarArgs(unsigned ValNo, EVT ValVT, EVT LocVT, CCValAssign::LocInfo LocInfo, ISD::ArgFlagsTy ArgFlags, Hexagon_CCState &State, int NonVarArgsParams, int CurrentParam, bool ForceMem)
static unsigned getReg(const void *D, unsigned RC, unsigned RegNo)