• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2022 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can b in the
3 // LICENSE file.
4 
5 #ifndef V8_CODEGEN_LOONG64_REGLIST_LOONG64_H_
6 #define V8_CODEGEN_LOONG64_REGLIST_LOONG64_H_
7 
8 #include "src/codegen/loong64/constants-loong64.h"
9 #include "src/codegen/register-arch.h"
10 #include "src/codegen/reglist-base.h"
11 
12 namespace v8 {
13 namespace internal {
14 
15 using RegList = RegListBase<Register>;
16 using DoubleRegList = RegListBase<DoubleRegister>;
17 ASSERT_TRIVIALLY_COPYABLE(RegList);
18 ASSERT_TRIVIALLY_COPYABLE(DoubleRegList);
19 
20 const RegList kJSCallerSaved = {a0, a1, a2, a3, a4, a5, a6, a7,
21                                 t0, t1, t2, t3, t4, t5, t8};
22 
23 const int kNumJSCallerSaved = 15;
24 
25 // Callee-saved registers preserved when switching from C to JavaScript.
26 const RegList kCalleeSaved = {fp,   // fp
27                               s0,   // s0
28                               s1,   // s1
29                               s2,   // s2
30                               s3,   // s3
31                               s4,   // s4
32                               s5,   // s5
33                               s6,   // s6 (roots in Javascript code)
34                               s7,   // s7 (cp in Javascript code)
35                               s8};  // s8
36 
37 const int kNumCalleeSaved = 10;
38 
39 const DoubleRegList kCalleeSavedFPU = {f24, f25, f26, f27, f28, f29, f30, f31};
40 
41 const int kNumCalleeSavedFPU = 8;
42 
43 const DoubleRegList kCallerSavedFPU = {f0,  f1,  f2,  f3,  f4,  f5,  f6,  f7,
44                                        f8,  f9,  f10, f11, f12, f13, f14, f15,
45                                        f16, f17, f18, f19, f20, f21, f22, f23};
46 
47 }  // namespace internal
48 }  // namespace v8
49 
50 #endif  // V8_CODEGEN_LOONG64_REGLIST_LOONG64_H_
51