Coverage Report

Created: 2024-01-17 10:31

/src/build/lib/Target/VE/VEGenCallingConv.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_VE2(unsigned ValNo, MVT ValVT,
12
                   MVT LocVT, CCValAssign::LocInfo LocInfo,
13
                   ISD::ArgFlagsTy ArgFlags, CCState &State);
14
static bool CC_VE_C(unsigned ValNo, MVT ValVT,
15
                    MVT LocVT, CCValAssign::LocInfo LocInfo,
16
                    ISD::ArgFlagsTy ArgFlags, CCState &State);
17
static bool CC_VE_C_Stack(unsigned ValNo, MVT ValVT,
18
                          MVT LocVT, CCValAssign::LocInfo LocInfo,
19
                          ISD::ArgFlagsTy ArgFlags, CCState &State);
20
static bool CC_VE_Fast(unsigned ValNo, MVT ValVT,
21
                       MVT LocVT, CCValAssign::LocInfo LocInfo,
22
                       ISD::ArgFlagsTy ArgFlags, CCState &State);
23
static bool RetCC_VE_C(unsigned ValNo, MVT ValVT,
24
                       MVT LocVT, CCValAssign::LocInfo LocInfo,
25
                       ISD::ArgFlagsTy ArgFlags, CCState &State);
26
static bool RetCC_VE_Fast(unsigned ValNo, MVT ValVT,
27
                          MVT LocVT, CCValAssign::LocInfo LocInfo,
28
                          ISD::ArgFlagsTy ArgFlags, CCState &State);
29
30
31
static bool CC_VE2(unsigned ValNo, MVT ValVT,
32
                   MVT LocVT, CCValAssign::LocInfo LocInfo,
33
0
                   ISD::ArgFlagsTy ArgFlags, CCState &State) {
34
35
0
  if (LocVT == MVT::i1 ||
36
0
      LocVT == MVT::i8 ||
37
0
      LocVT == MVT::i16 ||
38
0
      LocVT == MVT::i32) {
39
0
    LocVT = MVT::i64;
40
0
    if (ArgFlags.isSExt())
41
0
      LocInfo = CCValAssign::SExt;
42
0
    else if (ArgFlags.isZExt())
43
0
      LocInfo = CCValAssign::ZExt;
44
0
    else
45
0
      LocInfo = CCValAssign::AExt;
46
0
  }
47
48
0
  if (LocVT == MVT::f32) {
49
0
    LocVT = MVT::i64;
50
0
    LocInfo = CCValAssign::BCvt;
51
0
  }
52
53
0
  if (LocVT == MVT::f128) {
54
0
    int64_t Offset1 = State.AllocateStack(16, Align(16));
55
0
    State.addLoc(CCValAssign::getMem(ValNo, ValVT, Offset1, LocVT, LocInfo));
56
0
    return false;
57
0
  }
58
59
0
  int64_t Offset2 = State.AllocateStack(
60
0
    State.getMachineFunction().getDataLayout().getTypeAllocSize(EVT(LocVT).getTypeForEVT(State.getContext())), Align(8));
61
0
  State.addLoc(CCValAssign::getMem(ValNo, ValVT, Offset2, LocVT, LocInfo));
62
0
  return false;
63
64
0
  return true; // CC didn't match.
65
0
}
66
67
68
static bool CC_VE_C(unsigned ValNo, MVT ValVT,
69
                    MVT LocVT, CCValAssign::LocInfo LocInfo,
70
8.29k
                    ISD::ArgFlagsTy ArgFlags, CCState &State) {
71
72
8.29k
  if (LocVT == MVT::i1 ||
73
8.29k
      LocVT == MVT::i8 ||
74
8.29k
      LocVT == MVT::i16 ||
75
8.29k
      LocVT == MVT::i32) {
76
4.24k
    LocVT = MVT::i64;
77
4.24k
    if (ArgFlags.isSExt())
78
0
      LocInfo = CCValAssign::SExt;
79
4.24k
    else if (ArgFlags.isZExt())
80
0
      LocInfo = CCValAssign::ZExt;
81
4.24k
    else
82
4.24k
      LocInfo = CCValAssign::AExt;
83
4.24k
  }
84
85
8.29k
  if (LocVT == MVT::f32) {
86
857
    LocVT = MVT::i64;
87
857
    LocInfo = CCValAssign::BCvt;
88
857
  }
89
90
8.29k
  if (LocVT == MVT::i64 ||
91
8.29k
      LocVT == MVT::f64) {
92
8.29k
    static const MCPhysReg RegList1[] = {
93
8.29k
      VE::SX0, VE::SX1, VE::SX2, VE::SX3, VE::SX4, VE::SX5, VE::SX6, VE::SX7
94
8.29k
    };
95
8.29k
    if (unsigned Reg = State.AllocateReg(RegList1)) {
96
8.29k
      State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo));
97
8.29k
      return false;
98
8.29k
    }
99
8.29k
  }
100
101
0
  if (LocVT == MVT::f128) {
102
0
    static const MCPhysReg RegList2[] = {
103
0
      VE::Q0, VE::Q1, VE::Q2, VE::Q3
104
0
    };
105
0
    static const MCPhysReg RegList3[] = {
106
0
      VE::SX0, VE::SX1, VE::SX3, VE::SX5
107
0
    };
108
0
    if (unsigned Reg = State.AllocateReg(RegList2, RegList3)) {
109
0
      State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo));
110
0
      return false;
111
0
    }
112
0
  }
113
114
0
  if (!CC_VE_C_Stack(ValNo, ValVT, LocVT, LocInfo, ArgFlags, State))
115
0
    return false;
116
117
0
  return true; // CC didn't match.
118
0
}
119
120
121
static bool CC_VE_C_Stack(unsigned ValNo, MVT ValVT,
122
                          MVT LocVT, CCValAssign::LocInfo LocInfo,
123
0
                          ISD::ArgFlagsTy ArgFlags, CCState &State) {
124
125
0
  if (LocVT == MVT::f128) {
126
0
    static const MCPhysReg ShadowRegList1[] = {
127
0
      VE::SX7
128
0
    };
129
0
    int64_t Offset2 = State.AllocateStack(16, Align(16), ShadowRegList1);
130
0
    State.addLoc(CCValAssign::getMem(ValNo, ValVT, Offset2, LocVT, LocInfo));
131
0
    return false;
132
0
  }
133
134
0
  int64_t Offset3 = State.AllocateStack(
135
0
    State.getMachineFunction().getDataLayout().getTypeAllocSize(EVT(LocVT).getTypeForEVT(State.getContext())), Align(8));
136
0
  State.addLoc(CCValAssign::getMem(ValNo, ValVT, Offset3, LocVT, LocInfo));
137
0
  return false;
138
139
0
  return true; // CC didn't match.
140
0
}
141
142
143
static bool CC_VE_Fast(unsigned ValNo, MVT ValVT,
144
                       MVT LocVT, CCValAssign::LocInfo LocInfo,
145
0
                       ISD::ArgFlagsTy ArgFlags, CCState &State) {
146
147
0
  if (LocVT == MVT::v256i32 ||
148
0
      LocVT == MVT::v256f32 ||
149
0
      LocVT == MVT::v256i64 ||
150
0
      LocVT == MVT::v256f64) {
151
0
    static const MCPhysReg RegList1[] = {
152
0
      VE::V0, VE::V1, VE::V2, VE::V3, VE::V4, VE::V5, VE::V6, VE::V7
153
0
    };
154
0
    if (unsigned Reg = State.AllocateReg(RegList1)) {
155
0
      State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo));
156
0
      return false;
157
0
    }
158
0
  }
159
160
0
  if (LocVT == MVT::v512i32 ||
161
0
      LocVT == MVT::v512f32) {
162
0
    static const MCPhysReg RegList2[] = {
163
0
      VE::V0, VE::V1, VE::V2, VE::V3, VE::V4, VE::V5, VE::V6, VE::V7
164
0
    };
165
0
    if (unsigned Reg = State.AllocateReg(RegList2)) {
166
0
      State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo));
167
0
      return false;
168
0
    }
169
0
  }
170
171
0
  if (LocVT == MVT::v256i1) {
172
0
    static const MCPhysReg RegList3[] = {
173
0
      VE::VM1, VE::VM2, VE::VM3, VE::VM4, VE::VM5, VE::VM6, VE::VM7
174
0
    };
175
0
    if (unsigned Reg = State.AllocateReg(RegList3)) {
176
0
      State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo));
177
0
      return false;
178
0
    }
179
0
  }
180
181
0
  if (LocVT == MVT::v512i1) {
182
0
    static const MCPhysReg RegList4[] = {
183
0
      VE::VMP1, VE::VMP2, VE::VMP3
184
0
    };
185
0
    static const MCPhysReg RegList5[] = {
186
0
      VE::VM1, VE::VM3, VE::VM5
187
0
    };
188
0
    if (unsigned Reg = State.AllocateReg(RegList4, RegList5)) {
189
0
      State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo));
190
0
      return false;
191
0
    }
192
0
  }
193
194
0
  if (!CC_VE_C(ValNo, ValVT, LocVT, LocInfo, ArgFlags, State))
195
0
    return false;
196
197
0
  return true; // CC didn't match.
198
0
}
199
200
201
static bool RetCC_VE_C(unsigned ValNo, MVT ValVT,
202
                       MVT LocVT, CCValAssign::LocInfo LocInfo,
203
6.81k
                       ISD::ArgFlagsTy ArgFlags, CCState &State) {
204
205
6.81k
  if (LocVT == MVT::i1 ||
206
6.81k
      LocVT == MVT::i8 ||
207
6.81k
      LocVT == MVT::i16 ||
208
6.81k
      LocVT == MVT::i32) {
209
2.09k
    LocVT = MVT::i64;
210
2.09k
    if (ArgFlags.isSExt())
211
0
      LocInfo = CCValAssign::SExt;
212
2.09k
    else if (ArgFlags.isZExt())
213
0
      LocInfo = CCValAssign::ZExt;
214
2.09k
    else
215
2.09k
      LocInfo = CCValAssign::AExt;
216
2.09k
  }
217
218
6.81k
  if (LocVT == MVT::f32) {
219
1.37k
    LocVT = MVT::i64;
220
1.37k
    LocInfo = CCValAssign::BCvt;
221
1.37k
  }
222
223
6.81k
  if (LocVT == MVT::i64 ||
224
6.81k
      LocVT == MVT::f64) {
225
6.81k
    static const MCPhysReg RegList1[] = {
226
6.81k
      VE::SX0, VE::SX1, VE::SX2, VE::SX3, VE::SX4, VE::SX5, VE::SX6, VE::SX7
227
6.81k
    };
228
6.81k
    if (unsigned Reg = State.AllocateReg(RegList1)) {
229
6.81k
      State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo));
230
6.81k
      return false;
231
6.81k
    }
232
6.81k
  }
233
234
0
  if (LocVT == MVT::f128) {
235
0
    static const MCPhysReg RegList2[] = {
236
0
      VE::Q0, VE::Q1, VE::Q2, VE::Q3
237
0
    };
238
0
    static const MCPhysReg RegList3[] = {
239
0
      VE::SX0, VE::SX1, VE::SX3, VE::SX5
240
0
    };
241
0
    if (unsigned Reg = State.AllocateReg(RegList2, RegList3)) {
242
0
      State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo));
243
0
      return false;
244
0
    }
245
0
  }
246
247
0
  return true; // CC didn't match.
248
0
}
249
250
251
static bool RetCC_VE_Fast(unsigned ValNo, MVT ValVT,
252
                          MVT LocVT, CCValAssign::LocInfo LocInfo,
253
0
                          ISD::ArgFlagsTy ArgFlags, CCState &State) {
254
255
0
  if (LocVT == MVT::v256i32 ||
256
0
      LocVT == MVT::v256f32 ||
257
0
      LocVT == MVT::v256i64 ||
258
0
      LocVT == MVT::v256f64) {
259
0
    static const MCPhysReg RegList1[] = {
260
0
      VE::V0, VE::V1, VE::V2, VE::V3, VE::V4, VE::V5, VE::V6, VE::V7
261
0
    };
262
0
    if (unsigned Reg = State.AllocateReg(RegList1)) {
263
0
      State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo));
264
0
      return false;
265
0
    }
266
0
  }
267
268
0
  if (LocVT == MVT::v512i32 ||
269
0
      LocVT == MVT::v512f32) {
270
0
    static const MCPhysReg RegList2[] = {
271
0
      VE::V0, VE::V1, VE::V2, VE::V3, VE::V4, VE::V5, VE::V6, VE::V7
272
0
    };
273
0
    if (unsigned Reg = State.AllocateReg(RegList2)) {
274
0
      State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo));
275
0
      return false;
276
0
    }
277
0
  }
278
279
0
  if (LocVT == MVT::v256i1) {
280
0
    static const MCPhysReg RegList3[] = {
281
0
      VE::VM1, VE::VM2, VE::VM3, VE::VM4, VE::VM5, VE::VM6, VE::VM7
282
0
    };
283
0
    if (unsigned Reg = State.AllocateReg(RegList3)) {
284
0
      State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo));
285
0
      return false;
286
0
    }
287
0
  }
288
289
0
  if (LocVT == MVT::v512i1) {
290
0
    static const MCPhysReg RegList4[] = {
291
0
      VE::VMP1, VE::VMP2, VE::VMP3
292
0
    };
293
0
    static const MCPhysReg RegList5[] = {
294
0
      VE::VM1, VE::VM3, VE::VM5
295
0
    };
296
0
    if (unsigned Reg = State.AllocateReg(RegList4, RegList5)) {
297
0
      State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo));
298
0
      return false;
299
0
    }
300
0
  }
301
302
0
  if (!RetCC_VE_C(ValNo, ValVT, LocVT, LocInfo, ArgFlags, State))
303
0
    return false;
304
305
0
  return true; // CC didn't match.
306
0
}
307
308
#else
309
310
const MCRegister CC_VE2_ArgRegs[] = { 0 };
311
const MCRegister CC_VE_C_ArgRegs[] = { VE::SX0, VE::SX1, VE::SX2, VE::SX3, VE::SX4, VE::SX5, VE::SX6, VE::SX7 };
312
const MCRegister CC_VE_C_Stack_ArgRegs[] = { 0 };
313
const MCRegister CC_VE_Fast_ArgRegs[] = { VE::V0, VE::V1, VE::V2, VE::V3, VE::V4, VE::V5, VE::V6, VE::V7, VE::VM1, VE::VM2, VE::VM3, VE::VM4, VE::VM5, VE::VM6, VE::VM7 };
314
const MCRegister RetCC_VE_C_ArgRegs[] = { VE::SX0, VE::SX1, VE::SX2, VE::SX3, VE::SX4, VE::SX5, VE::SX6, VE::SX7 };
315
const MCRegister RetCC_VE_Fast_ArgRegs[] = { VE::V0, VE::V1, VE::V2, VE::V3, VE::V4, VE::V5, VE::V6, VE::V7, VE::VM1, VE::VM2, VE::VM3, VE::VM4, VE::VM5, VE::VM6, VE::VM7 };
316
317
#endif // CC_REGISTER_LIST