5#ifndef V8_CODEGEN_MIPS64_REGISTER_MIPS64_H_
6#define V8_CODEGEN_MIPS64_REGISTER_MIPS64_H_
15#define GENERAL_REGISTERS(V) \
16 V(zero_reg) V(at) V(v0) V(v1) V(a0) V(a1) V(a2) V(a3) \
17 V(a4) V(a5) V(a6) V(a7) V(t0) V(t1) V(t2) V(t3) \
18 V(s0) V(s1) V(s2) V(s3) V(s4) V(s5) V(s6) V(s7) V(t8) V(t9) \
19 V(k0) V(k1) V(gp) V(sp) V(fp) V(ra)
21#define ALLOCATABLE_GENERAL_REGISTERS(V) \
22 V(a0) V(a1) V(a2) V(a3) \
23 V(a4) V(a5) V(a6) V(a7) V(t0) V(t1) V(t2) V(t3) V(s7) \
26#define DOUBLE_REGISTERS(V) \
27 V(f0) V(f1) V(f2) V(f3) V(f4) V(f5) V(f6) V(f7) \
28 V(f8) V(f9) V(f10) V(f11) V(f12) V(f13) V(f14) V(f15) \
29 V(f16) V(f17) V(f18) V(f19) V(f20) V(f21) V(f22) V(f23) \
30 V(f24) V(f25) V(f26) V(f27) V(f28) V(f29) V(f30) V(f31)
34#define DOUBLE_USE_REGISTERS(V) \
35 V(f0) V(f2) V(f4) V(f6) V(f8) V(f10) V(f12) V(f13) \
36 V(f14) V(f15) V(f16) V(f17) V(f18) V(f19) V(f20) V(f22) \
37 V(f24) V(f26) V(f28) V(f30)
39#define FLOAT_REGISTERS DOUBLE_REGISTERS
40#define SIMD128_REGISTERS(V) \
41 V(w0) V(w1) V(w2) V(w3) V(w4) V(w5) V(w6) V(w7) \
42 V(w8) V(w9) V(w10) V(w11) V(w12) V(w13) V(w14) V(w15) \
43 V(w16) V(w17) V(w18) V(w19) V(w20) V(w21) V(w22) V(w23) \
44 V(w24) V(w25) V(w26) V(w27) V(w28) V(w29) V(w30) V(w31)
46#define ALLOCATABLE_DOUBLE_REGISTERS(V) \
47 V(f0) V(f2) V(f4) V(f6) V(f8) V(f10) V(f12) V(f14) \
48 V(f16) V(f18) V(f20) V(f22) V(f24) V(f26)
80#define REGISTER_CODE(R) kRegCode_##R,
86class Register :
public RegisterBase<Register, kRegAfterLast> {
88#if defined(V8_TARGET_LITTLE_ENDIAN)
91#elif defined(V8_TARGET_BIG_ENDIAN)
95#error Unknown endianness
106#define DECLARE_REGISTER(R) \
107 constexpr Register R = Register::from_code(kRegCode_##R);
109#undef DECLARE_REGISTER
134#define REGISTER_CODE(R) kMsaCode_##R,
147#define REGISTER_CODE(R) kDoubleCode_##R,
154class FPURegister :
public RegisterBase<FPURegister, kDoubleAfterLast> {
198#define DECLARE_DOUBLE_REGISTER(R) \
199 constexpr DoubleRegister R = DoubleRegister::from_code(kDoubleCode_##R);
201#undef DECLARE_DOUBLE_REGISTER
208#define DECLARE_SIMD128_REGISTER(R) \
209 constexpr Simd128Register R = Simd128Register::from_code(kMsaCode_##R);
211#undef DECLARE_SIMD128_REGISTER
288constexpr Register
kCArgRegs[] = {a0, a1, a2, a3, a4, a5, a6, a7};
constexpr FPURegister(int code)
constexpr MSARegister(int code)
static constexpr FPURegister from_code(int8_t code)
static constexpr DwVfpRegister no_reg()
constexpr int8_t code() const
static constexpr int kMantissaOffset
friend class RegisterBase
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 Simd128Register no_msareg
const int kInvalidMSAControlRegister
const int kInvalidFPUControlRegister
constexpr AliasingKind kFPAliasing
constexpr Register kRuntimeCallFunctionRegister
constexpr int kFPRegisterPassedArguments
constexpr DoubleRegister kDoubleCompareReg
DwVfpRegister DoubleRegister
constexpr Simd128Register kSimd128RegZero
constexpr DoubleRegister kScratchDoubleReg
constexpr Register kRuntimeCallArgvRegister
constexpr Register kJavaScriptCallTargetRegister
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
constexpr MSAControlRegister MSAIR
QwNeonRegister Simd128Register
constexpr DoubleRegister kFPReturnRegister0
constexpr Register kReturnRegister1
constexpr Simd128Register kSimd128ScratchReg
constexpr MSAControlRegister MSACSR
constexpr Register kReturnRegister0
constexpr Register kWasmImplicitArgRegister
constexpr Register kContextRegister
constexpr Register kRuntimeCallArgCountRegister
constexpr Register kInterpreterDispatchTableRegister
constexpr Register kAllocateSizeRegister
constexpr MSAControlRegister no_msacreg
constexpr LowDwVfpRegister kDoubleRegZero
constexpr Register kJavaScriptCallExtraArg1Register
Register ToRegister(int num)
constexpr Register kJavaScriptCallCodeStartRegister
constexpr Register kReturnRegister2
Register ReassignRegister(Register &source)
constexpr Register kWasmCompileLazyFuncIndexRegister
constexpr int ArgumentPaddingSlots(int argument_count)
constexpr Register kCArgRegs[]
constexpr bool kSimdMaskRegisters
const int kMSACSRRegister
constexpr Register kJavaScriptCallDispatchHandleRegister
constexpr Register kInterpreterBytecodeOffsetRegister
constexpr Register kJavaScriptCallNewTargetRegister
constexpr Register kJSFunctionRegister
SwVfpRegister FloatRegister
constexpr Register kInterpreterBytecodeArrayRegister
#define GENERAL_REGISTERS(V)
#define SIMD128_REGISTERS(V)
#define DECLARE_DOUBLE_REGISTER(R)
#define DECLARE_REGISTER(R)
#define DOUBLE_REGISTERS(V)
#define DECLARE_SIMD128_REGISTER(R)
#define DEFINE_REGISTER_NAMES(RegType, LIST)
#define DCHECK(condition)
#define DCHECK_EQ(v1, v2)
bool is(FPUControlRegister creg) const
bool is(MSAControlRegister creg) const