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 CC_MSP430_AssignStack(unsigned ValNo, MVT ValVT,
13 MVT LocVT, CCValAssign::LocInfo LocInfo,
14 ISD::ArgFlagsTy ArgFlags, Type *OrigTy, CCState &State);
15static bool RetCC_MSP430(unsigned ValNo, MVT ValVT,
16 MVT LocVT, CCValAssign::LocInfo LocInfo,
17 ISD::ArgFlagsTy ArgFlags, Type *OrigTy, CCState &State);
18
19
20static bool CC_MSP430_AssignStack(unsigned ValNo, MVT ValVT,
21 MVT LocVT, CCValAssign::LocInfo LocInfo,
22 ISD::ArgFlagsTy ArgFlags, Type *OrigTy, CCState &State) {
23
24 if (ArgFlags.isByVal()) {
25 State.HandleByVal(ValNo, ValVT, LocVT, LocInfo, MinSize: 2, MinAlign: Align(2), ArgFlags);
26 return false;
27 }
28
29 if (LocVT == MVT::i8) {
30 LocVT = MVT::i16;
31 if (ArgFlags.isSExt())
32 LocInfo = CCValAssign::SExt;
33 else if (ArgFlags.isZExt())
34 LocInfo = CCValAssign::ZExt;
35 else
36 LocInfo = CCValAssign::AExt;
37 }
38
39 if (LocVT == MVT::i16) {
40 int64_t Offset1 = State.AllocateStack(Size: 2, Alignment: Align(2));
41 State.addLoc(V: CCValAssign::getMem(ValNo, ValVT, Offset: Offset1, LocVT, HTP: LocInfo));
42 return false;
43 }
44
45 return true; // CC didn't match.
46}
47
48
49static bool RetCC_MSP430(unsigned ValNo, MVT ValVT,
50 MVT LocVT, CCValAssign::LocInfo LocInfo,
51 ISD::ArgFlagsTy ArgFlags, Type *OrigTy, CCState &State) {
52
53 if (LocVT == MVT::i8) {
54 static const MCPhysReg RegList1[] = {
55 MSP430::R12B, MSP430::R13B, MSP430::R14B, MSP430::R15B
56 };
57 if (MCRegister Reg = State.AllocateReg(Regs: RegList1)) {
58 State.addLoc(V: CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, HTP: LocInfo));
59 return false;
60 }
61 }
62
63 if (LocVT == MVT::i16) {
64 static const MCPhysReg RegList2[] = {
65 MSP430::R12, MSP430::R13, MSP430::R14, MSP430::R15
66 };
67 if (MCRegister Reg = State.AllocateReg(Regs: RegList2)) {
68 State.addLoc(V: CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, HTP: LocInfo));
69 return false;
70 }
71 }
72
73 return true; // CC didn't match.
74}
75
76#endif // GET_CALLING_CONV_IMPL
77
78#ifdef GET_CC_REGISTER_LISTS
79#undef GET_CC_REGISTER_LISTS
80
81const MCRegister CC_MSP430_AssignStack_ArgRegs[] = { 0 };
82const MCRegister RetCC_MSP430_ArgRegs[] = { MSP430::R12, MSP430::R12B, MSP430::R13, MSP430::R13B, MSP430::R14, MSP430::R14B, MSP430::R15, MSP430::R15B };
83
84#endif // GET_CC_REGISTER_LISTS
85
86