Coverage Report

Created: 2024-01-17 10:31

/src/build/lib/Target/Sparc/SparcGenCallingConv.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_Sparc32(unsigned ValNo, MVT ValVT,
12
                       MVT LocVT, CCValAssign::LocInfo LocInfo,
13
                       ISD::ArgFlagsTy ArgFlags, CCState &State);
14
static bool CC_Sparc64(unsigned ValNo, MVT ValVT,
15
                       MVT LocVT, CCValAssign::LocInfo LocInfo,
16
                       ISD::ArgFlagsTy ArgFlags, CCState &State);
17
static bool RetCC_Sparc32(unsigned ValNo, MVT ValVT,
18
                          MVT LocVT, CCValAssign::LocInfo LocInfo,
19
                          ISD::ArgFlagsTy ArgFlags, CCState &State);
20
static bool RetCC_Sparc64(unsigned ValNo, MVT ValVT,
21
                          MVT LocVT, CCValAssign::LocInfo LocInfo,
22
                          ISD::ArgFlagsTy ArgFlags, CCState &State);
23
24
25
static bool CC_Sparc32(unsigned ValNo, MVT ValVT,
26
                       MVT LocVT, CCValAssign::LocInfo LocInfo,
27
0
                       ISD::ArgFlagsTy ArgFlags, CCState &State) {
28
29
0
  if (ArgFlags.isSRet()) {
30
0
    if (CC_Sparc_Assign_SRet(ValNo, ValVT, LocVT, LocInfo, ArgFlags, State))
31
0
      return false;
32
0
  }
33
34
0
  if (LocVT == MVT::i32 ||
35
0
      LocVT == MVT::f32) {
36
0
    static const MCPhysReg RegList1[] = {
37
0
      SP::I0, SP::I1, SP::I2, SP::I3, SP::I4, SP::I5
38
0
    };
39
0
    if (unsigned Reg = State.AllocateReg(RegList1)) {
40
0
      State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo));
41
0
      return false;
42
0
    }
43
0
  }
44
45
0
  if (LocVT == MVT::f64) {
46
0
    if (CC_Sparc_Assign_Split_64(ValNo, ValVT, LocVT, LocInfo, ArgFlags, State))
47
0
      return false;
48
0
  }
49
50
0
  if (LocVT == MVT::v2i32) {
51
0
    if (CC_Sparc_Assign_Split_64(ValNo, ValVT, LocVT, LocInfo, ArgFlags, State))
52
0
      return false;
53
0
  }
54
55
0
  int64_t Offset2 = State.AllocateStack(4, Align(4));
56
0
  State.addLoc(CCValAssign::getMem(ValNo, ValVT, Offset2, LocVT, LocInfo));
57
0
  return false;
58
59
0
  return true; // CC didn't match.
60
0
}
61
62
63
static bool CC_Sparc64(unsigned ValNo, MVT ValVT,
64
                       MVT LocVT, CCValAssign::LocInfo LocInfo,
65
0
                       ISD::ArgFlagsTy ArgFlags, CCState &State) {
66
67
0
  if (ArgFlags.isInReg()) {
68
0
    if (LocVT == MVT::i32 ||
69
0
        LocVT == MVT::f32) {
70
0
      if (CC_Sparc64_Half(ValNo, ValVT, LocVT, LocInfo, ArgFlags, State))
71
0
        return false;
72
0
    }
73
0
  }
74
75
0
  if (LocVT == MVT::i32) {
76
0
    LocVT = MVT::i64;
77
0
    if (ArgFlags.isSExt())
78
0
      LocInfo = CCValAssign::SExt;
79
0
    else if (ArgFlags.isZExt())
80
0
      LocInfo = CCValAssign::ZExt;
81
0
    else
82
0
      LocInfo = CCValAssign::AExt;
83
0
  }
84
85
0
  if (CC_Sparc64_Full(ValNo, ValVT, LocVT, LocInfo, ArgFlags, State))
86
0
    return false;
87
88
0
  return true; // CC didn't match.
89
0
}
90
91
92
static bool RetCC_Sparc32(unsigned ValNo, MVT ValVT,
93
                          MVT LocVT, CCValAssign::LocInfo LocInfo,
94
0
                          ISD::ArgFlagsTy ArgFlags, CCState &State) {
95
96
0
  if (LocVT == MVT::i32) {
97
0
    static const MCPhysReg RegList1[] = {
98
0
      SP::I0, SP::I1, SP::I2, SP::I3, SP::I4, SP::I5
99
0
    };
100
0
    if (unsigned Reg = State.AllocateReg(RegList1)) {
101
0
      State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo));
102
0
      return false;
103
0
    }
104
0
  }
105
106
0
  if (LocVT == MVT::f32) {
107
0
    static const MCPhysReg RegList2[] = {
108
0
      SP::F0, SP::F1, SP::F2, SP::F3
109
0
    };
110
0
    if (unsigned Reg = State.AllocateReg(RegList2)) {
111
0
      State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo));
112
0
      return false;
113
0
    }
114
0
  }
115
116
0
  if (LocVT == MVT::f64) {
117
0
    static const MCPhysReg RegList3[] = {
118
0
      SP::D0, SP::D1
119
0
    };
120
0
    if (unsigned Reg = State.AllocateReg(RegList3)) {
121
0
      State.addLoc(CCValAssign::getReg(ValNo, ValVT, Reg, LocVT, LocInfo));
122
0
      return false;
123
0
    }
124
0
  }
125
126
0
  if (LocVT == MVT::v2i32) {
127
0
    if (CC_Sparc_Assign_Ret_Split_64(ValNo, ValVT, LocVT, LocInfo, ArgFlags, State))
128
0
      return false;
129
0
  }
130
131
0
  return true; // CC didn't match.
132
0
}
133
134
135
static bool RetCC_Sparc64(unsigned ValNo, MVT ValVT,
136
                          MVT LocVT, CCValAssign::LocInfo LocInfo,
137
0
                          ISD::ArgFlagsTy ArgFlags, CCState &State) {
138
139
0
  if (LocVT == MVT::f32) {
140
0
    if (RetCC_Sparc64_Half(ValNo, ValVT, LocVT, LocInfo, ArgFlags, State))
141
0
      return false;
142
0
  }
143
144
0
  if (ArgFlags.isInReg()) {
145
0
    if (LocVT == MVT::i32 ||
146
0
        LocVT == MVT::f32) {
147
0
      if (RetCC_Sparc64_Half(ValNo, ValVT, LocVT, LocInfo, ArgFlags, State))
148
0
        return false;
149
0
    }
150
0
  }
151
152
0
  if (LocVT == MVT::i32) {
153
0
    LocVT = MVT::i64;
154
0
    if (ArgFlags.isSExt())
155
0
      LocInfo = CCValAssign::SExt;
156
0
    else if (ArgFlags.isZExt())
157
0
      LocInfo = CCValAssign::ZExt;
158
0
    else
159
0
      LocInfo = CCValAssign::AExt;
160
0
  }
161
162
0
  if (RetCC_Sparc64_Full(ValNo, ValVT, LocVT, LocInfo, ArgFlags, State))
163
0
    return false;
164
165
0
  return true; // CC didn't match.
166
0
}
167
168
#else
169
170
const MCRegister CC_Sparc32_ArgRegs[] = { SP::I0, SP::I1, SP::I2, SP::I3, SP::I4, SP::I5 };
171
const MCRegister CC_Sparc64_ArgRegs[] = { 0 };
172
const MCRegister RetCC_Sparc32_ArgRegs[] = { SP::D0, SP::D1, SP::F0, SP::F1, SP::F2, SP::F3, SP::I0, SP::I1, SP::I2, SP::I3, SP::I4, SP::I5 };
173
const MCRegister RetCC_Sparc64_ArgRegs[] = { 0 };
174
175
#endif // CC_REGISTER_LIST