Coverage Report

Created: 2024-01-17 10:31

/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