1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|* *|
3|* Calling Convention Implementation Fragment *|
4|* *|
5|* Automatically generated file, do not edit! *|
6|* *|
7\*===----------------------------------------------------------------------===*/
8
9#ifdef GET_CALLING_CONV_IMPL
10#undef GET_CALLING_CONV_IMPL
11
12static bool ArgCC_AVR_Vararg(unsigned ValNo, MVT ValVT,
13 MVT LocVT, CCValAssign::LocInfo LocInfo,
14 ISD::ArgFlagsTy ArgFlags, Type *OrigTy, CCState &State);
15static bool RetCC_AVR_BUILTIN(unsigned ValNo, MVT ValVT,
16 MVT LocVT, CCValAssign::LocInfo LocInfo,
17 ISD::ArgFlagsTy ArgFlags, Type *OrigTy, CCState &State);
18
19
20static bool ArgCC_AVR_Vararg(unsigned ValNo, MVT ValVT,
21 MVT LocVT, CCValAssign::LocInfo LocInfo,
22 ISD::ArgFlagsTy ArgFlags, Type *OrigTy, CCState &State) {
23
24 if (LocVT == MVT::i8) {
25 int64_t Offset1 = State.AllocateStack(Size: 1, Alignment: Align(1));
26 State.addLoc(V: CCValAssign::getMem(ValNo, ValVT, Offset: Offset1, LocVT, HTP: LocInfo));
27 return false;
28 }
29
30 int64_t Offset2 = State.AllocateStack(Size: 2, Alignment: Align(1));
31 State.addLoc(V: CCValAssign::getMem(ValNo, ValVT, Offset: Offset2, LocVT, HTP: LocInfo));
32 return false;
33
34 return true; // CC didn't match.
35}
36
37
38static bool RetCC_AVR_BUILTIN(unsigned ValNo, MVT ValVT,
39 MVT LocVT, CCValAssign::LocInfo LocInfo,
40 ISD::ArgFlagsTy ArgFlags, Type *OrigTy, CCState &State) {
41
42 if (LocVT == MVT::i8) {
43 static const MCPhysReg RegList1[] = {
44 AVR::R24, AVR::R25
45 };
46 if (MCRegister Reg = State.AllocateReg(Regs: RegList1)) {
47 State.addLoc(V: CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, HTP: LocInfo));
48 return false;
49 }
50 }
51
52 if (LocVT == MVT::i16) {
53 static const MCPhysReg RegList2[] = {
54 AVR::R23R22, AVR::R25R24
55 };
56 if (MCRegister Reg = State.AllocateReg(Regs: RegList2)) {
57 State.addLoc(V: CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, HTP: LocInfo));
58 return false;
59 }
60 }
61
62 return true; // CC didn't match.
63}
64
65#endif // GET_CALLING_CONV_IMPL
66
67#ifdef GET_CC_REGISTER_LISTS
68#undef GET_CC_REGISTER_LISTS
69
70const MCRegister ArgCC_AVR_Vararg_ArgRegs[] = { 0 };
71const MCRegister RetCC_AVR_BUILTIN_ArgRegs[] = { AVR::R23R22, AVR::R24, AVR::R25, AVR::R25R24 };
72
73#endif // GET_CC_REGISTER_LISTS
74
75