/src/build/lib/Target/BPF/BPFGenCallingConv.inc
Line | Count | Source (jump to first uncovered line) |
1 | | /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\ |
2 | | |* *| |
3 | | |* Calling Convention Implementation Fragment *| |
4 | | |* *| |
5 | | |* Automatically generated file, do not edit! *| |
6 | | |* *| |
7 | | \*===----------------------------------------------------------------------===*/ |
8 | | |
9 | | #ifndef GET_CC_REGISTER_LISTS |
10 | | |
11 | | static bool CC_BPF32(unsigned ValNo, MVT ValVT, |
12 | | MVT LocVT, CCValAssign::LocInfo LocInfo, |
13 | | ISD::ArgFlagsTy ArgFlags, CCState &State); |
14 | | static bool CC_BPF64(unsigned ValNo, MVT ValVT, |
15 | | MVT LocVT, CCValAssign::LocInfo LocInfo, |
16 | | ISD::ArgFlagsTy ArgFlags, CCState &State); |
17 | | static bool RetCC_BPF32(unsigned ValNo, MVT ValVT, |
18 | | MVT LocVT, CCValAssign::LocInfo LocInfo, |
19 | | ISD::ArgFlagsTy ArgFlags, CCState &State); |
20 | | static bool RetCC_BPF64(unsigned ValNo, MVT ValVT, |
21 | | MVT LocVT, CCValAssign::LocInfo LocInfo, |
22 | | ISD::ArgFlagsTy ArgFlags, CCState &State); |
23 | | |
24 | | |
25 | | static bool CC_BPF32(unsigned ValNo, MVT ValVT, |
26 | | MVT LocVT, CCValAssign::LocInfo LocInfo, |
27 | 0 | ISD::ArgFlagsTy ArgFlags, CCState &State) { |
28 | |
|
29 | 0 | if (LocVT == MVT::i32) { |
30 | 0 | static const MCPhysReg RegList1[] = { |
31 | 0 | BPF::W1, BPF::W2, BPF::W3, BPF::W4, BPF::W5 |
32 | 0 | }; |
33 | 0 | static const MCPhysReg RegList2[] = { |
34 | 0 | BPF::R1, BPF::R2, BPF::R3, BPF::R4, BPF::R5 |
35 | 0 | }; |
36 | 0 | if (unsigned Reg = State.AllocateReg(RegList1, RegList2)) { |
37 | 0 | State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo)); |
38 | 0 | return false; |
39 | 0 | } |
40 | 0 | } |
41 | | |
42 | 0 | if (LocVT == MVT::i64) { |
43 | 0 | static const MCPhysReg RegList3[] = { |
44 | 0 | BPF::R1, BPF::R2, BPF::R3, BPF::R4, BPF::R5 |
45 | 0 | }; |
46 | 0 | static const MCPhysReg RegList4[] = { |
47 | 0 | BPF::W1, BPF::W2, BPF::W3, BPF::W4, BPF::W5 |
48 | 0 | }; |
49 | 0 | if (unsigned Reg = State.AllocateReg(RegList3, RegList4)) { |
50 | 0 | State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo)); |
51 | 0 | return false; |
52 | 0 | } |
53 | 0 | } |
54 | | |
55 | 0 | int64_t Offset5 = State.AllocateStack(8, Align(8)); |
56 | 0 | State.addLoc(CCValAssign::getMem(ValNo, ValVT, Offset5, LocVT, LocInfo)); |
57 | 0 | return false; |
58 | | |
59 | 0 | return true; // CC didn't match. |
60 | 0 | } |
61 | | |
62 | | |
63 | | static bool CC_BPF64(unsigned ValNo, MVT ValVT, |
64 | | MVT LocVT, CCValAssign::LocInfo LocInfo, |
65 | 5 | ISD::ArgFlagsTy ArgFlags, CCState &State) { |
66 | | |
67 | 5 | if (LocVT == MVT::i8 || |
68 | 5 | LocVT == MVT::i16 || |
69 | 5 | LocVT == MVT::i32) { |
70 | 0 | LocVT = MVT::i64; |
71 | 0 | if (ArgFlags.isSExt()) |
72 | 0 | LocInfo = CCValAssign::SExt; |
73 | 0 | else if (ArgFlags.isZExt()) |
74 | 0 | LocInfo = CCValAssign::ZExt; |
75 | 0 | else |
76 | 0 | LocInfo = CCValAssign::AExt; |
77 | 0 | } |
78 | | |
79 | 5 | if (LocVT == MVT::i64) { |
80 | 5 | static const MCPhysReg RegList1[] = { |
81 | 5 | BPF::R1, BPF::R2, BPF::R3, BPF::R4, BPF::R5 |
82 | 5 | }; |
83 | 5 | if (unsigned Reg = State.AllocateReg(RegList1)) { |
84 | 5 | State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo)); |
85 | 5 | return false; |
86 | 5 | } |
87 | 5 | } |
88 | | |
89 | 0 | int64_t Offset2 = State.AllocateStack(8, Align(8)); |
90 | 0 | State.addLoc(CCValAssign::getMem(ValNo, ValVT, Offset2, LocVT, LocInfo)); |
91 | 0 | return false; |
92 | | |
93 | 0 | return true; // CC didn't match. |
94 | 5 | } |
95 | | |
96 | | |
97 | | static bool RetCC_BPF32(unsigned ValNo, MVT ValVT, |
98 | | MVT LocVT, CCValAssign::LocInfo LocInfo, |
99 | 0 | ISD::ArgFlagsTy ArgFlags, CCState &State) { |
100 | |
|
101 | 0 | if (LocVT == MVT::i32) { |
102 | 0 | if (unsigned Reg = State.AllocateReg(BPF::W0, BPF::R0)) { |
103 | 0 | State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo)); |
104 | 0 | return false; |
105 | 0 | } |
106 | 0 | } |
107 | | |
108 | 0 | if (LocVT == MVT::i64) { |
109 | 0 | if (unsigned Reg = State.AllocateReg(BPF::R0, BPF::W0)) { |
110 | 0 | State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo)); |
111 | 0 | return false; |
112 | 0 | } |
113 | 0 | } |
114 | | |
115 | 0 | return true; // CC didn't match. |
116 | 0 | } |
117 | | |
118 | | |
119 | | static bool RetCC_BPF64(unsigned ValNo, MVT ValVT, |
120 | | MVT LocVT, CCValAssign::LocInfo LocInfo, |
121 | 2 | ISD::ArgFlagsTy ArgFlags, CCState &State) { |
122 | | |
123 | 2 | if (LocVT == MVT::i64) { |
124 | 2 | if (unsigned Reg = State.AllocateReg(BPF::R0)) { |
125 | 2 | State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo)); |
126 | 2 | return false; |
127 | 2 | } |
128 | 2 | } |
129 | | |
130 | 0 | return true; // CC didn't match. |
131 | 2 | } |
132 | | |
133 | | #else |
134 | | |
135 | | const MCRegister CC_BPF32_ArgRegs[] = { 0 }; |
136 | | const MCRegister CC_BPF64_ArgRegs[] = { BPF::R1, BPF::R2, BPF::R3, BPF::R4, BPF::R5 }; |
137 | | const MCRegister RetCC_BPF32_ArgRegs[] = { 0 }; |
138 | | const MCRegister RetCC_BPF64_ArgRegs[] = { BPF::R0 }; |
139 | | |
140 | | #endif // CC_REGISTER_LIST |