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