blob: c0922e3ec6e6b269242ff86ad91f19e5333bba36 [file] [log] [blame]
// Copyright 2022 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can b in the
// LICENSE file.
#ifndef V8_CODEGEN_LOONG64_REGLIST_LOONG64_H_
#define V8_CODEGEN_LOONG64_REGLIST_LOONG64_H_
#include "src/codegen/loong64/constants-loong64.h"
#include "src/codegen/register-arch.h"
#include "src/codegen/reglist-base.h"
namespace v8 {
namespace internal {
using RegList = RegListBase<Register>;
using DoubleRegList = RegListBase<DoubleRegister>;
ASSERT_TRIVIALLY_COPYABLE(RegList);
ASSERT_TRIVIALLY_COPYABLE(DoubleRegList);
const RegList kJSCallerSaved = {a0, a1, a2, a3, a4, a5, a6, a7,
t0, t1, t2, t3, t4, t5, t8};
const int kNumJSCallerSaved = 15;
// Callee-saved registers preserved when switching from C to JavaScript.
const RegList kCalleeSaved = {fp, // fp
s0, // s0
s1, // s1
s2, // s2
s3, // s3
s4, // s4
s5, // s5
s6, // s6 (roots in Javascript code)
s7, // s7 (cp in Javascript code)
s8}; // s8
const int kNumCalleeSaved = 10;
const RegList kCalleeSavedFPU = {f24, f25, f26, f27, f28, f29, f30, f31};
const int kNumCalleeSavedFPU = 8;
const RegList kCallerSavedFPU = {f0, f1, f2, f3, f4, f5, f6, f7,
f8, f9, f10, f11, f12, f13, f14, f15,
f16, f17, f18, f19, f20, f21, f22, f23};
} // namespace internal
} // namespace v8
#endif // V8_CODEGEN_LOONG64_REGLIST_LOONG64_H_