5#ifndef V8_CODEGEN_LOONG64_REGISTER_LOONG64_H_
6#define V8_CODEGEN_LOONG64_REGISTER_LOONG64_H_
15#define GENERAL_REGISTERS(V) \
16 V(zero_reg) V(ra) V(tp) V(sp) \
17 V(a0) V(a1) V(a2) V(a3) V(a4) V(a5) V(a6) V(a7) \
18 V(t0) V(t1) V(t2) V(t3) V(t4) V(t5) V(t6) V(t7) V(t8) \
20 V(s0) V(s1) V(s2) V(s3) V(s4) V(s5) V(s6) V(s7) V(s8) \
22#define ALWAYS_ALLOCATABLE_GENERAL_REGISTERS(V) \
23 V(a0) V(a1) V(a2) V(a3) V(a4) V(a5) V(a6) V(a7) \
24 V(t0) V(t1) V(t2) V(t3) V(t4) V(t5) \
25 V(s0) V(s1) V(s2) V(s3) V(s4) V(s5) V(s7)
27#ifdef V8_COMPRESS_POINTERS
28#define MAYBE_ALLOCATABLE_GENERAL_REGISTERS(V)
30#define MAYBE_ALLOCATABLE_GENERAL_REGISTERS(V) V(s8)
33#define ALLOCATABLE_GENERAL_REGISTERS(V) \
34 ALWAYS_ALLOCATABLE_GENERAL_REGISTERS(V) \
35 MAYBE_ALLOCATABLE_GENERAL_REGISTERS(V)
37#define DOUBLE_REGISTERS(V) \
38 V(f0) V(f1) V(f2) V(f3) V(f4) V(f5) V(f6) V(f7) \
39 V(f8) V(f9) V(f10) V(f11) V(f12) V(f13) V(f14) V(f15) \
40 V(f16) V(f17) V(f18) V(f19) V(f20) V(f21) V(f22) V(f23) \
41 V(f24) V(f25) V(f26) V(f27) V(f28) V(f29) V(f30) V(f31)
43#define FLOAT_REGISTERS DOUBLE_REGISTERS
44#define SIMD128_REGISTERS(V) \
45 V(w0) V(w1) V(w2) V(w3) V(w4) V(w5) V(w6) V(w7) \
46 V(w8) V(w9) V(w10) V(w11) V(w12) V(w13) V(w14) V(w15) \
47 V(w16) V(w17) V(w18) V(w19) V(w20) V(w21) V(w22) V(w23) \
48 V(w24) V(w25) V(w26) V(w27) V(w28) V(w29) V(w30) V(w31)
50#define ALLOCATABLE_DOUBLE_REGISTERS(V) \
51 V(f0) V(f1) V(f2) V(f3) V(f4) V(f5) V(f6) V(f7) \
52 V(f8) V(f9) V(f10) V(f11) V(f12) V(f13) V(f14) V(f15) \
53 V(f16) V(f17) V(f18) V(f19) V(f20) V(f21) V(f22) V(f23) \
54 V(f24) V(f25) V(f26) V(f27) V(f28)
86#define REGISTER_CODE(R) kRegCode_##R,
92class Register :
public RegisterBase<Register, kRegAfterLast> {
105#define DECLARE_REGISTER(R) \
106 constexpr Register R = Register::from_code(kRegCode_##R);
108#undef DECLARE_REGISTER
133#define REGISTER_CODE(R) kDoubleCode_##R,
140class FPURegister :
public RegisterBase<FPURegister, kDoubleAfterLast> {
158#define DECLARE_DOUBLE_REGISTER(R) \
159 constexpr DoubleRegister R = DoubleRegister::from_code(kDoubleCode_##R);
161#undef DECLARE_DOUBLE_REGISTER
168constexpr Register
cp = s7;
207constexpr Register
kCArgRegs[] = {a0, a1, a2, a3, a4, a5, a6, a7};
236#ifdef V8_COMPRESS_POINTERS
constexpr FPURegister(int code)
static constexpr FPURegister from_code(int8_t code)
static constexpr DwVfpRegister no_reg()
constexpr int8_t code() const
static constexpr int kMantissaOffset
constexpr Register(int code)
static constexpr int kExponentOffset
static constexpr Register no_reg()
ZoneVector< RpoNumber > & result
InstructionOperand source
constexpr Register no_reg
constexpr Register kRootRegister
constexpr FPUControlRegister no_fpucreg
const int kInvalidFPUControlRegister
constexpr AliasingKind kFPAliasing
constexpr Register kRuntimeCallFunctionRegister
constexpr int kFPRegisterPassedArguments
DwVfpRegister DoubleRegister
constexpr DoubleRegister kScratchDoubleReg
constexpr Register kRuntimeCallArgvRegister
constexpr Register kJavaScriptCallTargetRegister
constexpr FPUControlRegister FCSR2
constexpr DwVfpRegister no_dreg
constexpr FPUControlRegister FCSR
constexpr DoubleRegister kScratchDoubleReg2
constexpr Register kJavaScriptCallArgCountRegister
constexpr Register kInterpreterAccumulatorRegister
int ToNumber(Register reg)
constexpr Register kScratchReg2
constexpr Register kScratchReg
static const int kRegisterPassedArguments
QwNeonRegister Simd128Register
constexpr DoubleRegister kFPReturnRegister0
constexpr Register kReturnRegister1
constexpr Register kReturnRegister0
constexpr Register kWasmImplicitArgRegister
constexpr Register kContextRegister
constexpr Register kRuntimeCallArgCountRegister
constexpr Register kInterpreterDispatchTableRegister
constexpr Register kAllocateSizeRegister
constexpr Register kWasmTrapHandlerFaultAddressRegister
constexpr LowDwVfpRegister kDoubleRegZero
constexpr Register kJavaScriptCallExtraArg1Register
Register ToRegister(int num)
constexpr Register kJavaScriptCallCodeStartRegister
constexpr Register kPtrComprCageBaseRegister
constexpr Register kReturnRegister2
Register ReassignRegister(Register &source)
constexpr Register kWasmCompileLazyFuncIndexRegister
constexpr FPUControlRegister FCSR3
constexpr int ArgumentPaddingSlots(int argument_count)
constexpr FPUControlRegister FCSR1
constexpr Register kCArgRegs[]
constexpr bool kSimdMaskRegisters
constexpr Register kJavaScriptCallDispatchHandleRegister
constexpr FPUControlRegister FCSR0
constexpr Register kInterpreterBytecodeOffsetRegister
constexpr Register kJavaScriptCallNewTargetRegister
constexpr Register kJSFunctionRegister
SwVfpRegister FloatRegister
constexpr Register kInterpreterBytecodeArrayRegister
#define GENERAL_REGISTERS(V)
#define DECLARE_DOUBLE_REGISTER(R)
#define DECLARE_REGISTER(R)
#define DOUBLE_REGISTERS(V)
#define DEFINE_REGISTER_NAMES(RegType, LIST)
#define DCHECK(condition)
bool is(FPUControlRegister creg) const