5#ifndef V8_CODEGEN_S390_REGISTER_S390_H_
6#define V8_CODEGEN_S390_REGISTER_S390_H_
14#define GENERAL_REGISTERS(V) \
15 V(r0) V(r1) V(r2) V(r3) V(r4) V(r5) V(r6) V(r7) \
16 V(r8) V(r9) V(r10) V(fp) V(ip) V(r13) V(r14) V(sp)
18#define ALWAYS_ALLOCATABLE_GENERAL_REGISTERS(V) \
19 V(r2) V(r3) V(r4) V(r5) V(r6) V(r7) \
22#ifdef V8_COMPRESS_POINTERS_IN_SHARED_CAGE
23#define MAYBE_ALLOCATABLE_GENERAL_REGISTERS(V)
25#define MAYBE_ALLOCATABLE_GENERAL_REGISTERS(V) V(r9)
28#define ALLOCATABLE_GENERAL_REGISTERS(V) \
29 ALWAYS_ALLOCATABLE_GENERAL_REGISTERS(V) \
30 MAYBE_ALLOCATABLE_GENERAL_REGISTERS(V)
32#define DOUBLE_REGISTERS(V) \
33 V(d0) V(d1) V(d2) V(d3) V(d4) V(d5) V(d6) V(d7) \
34 V(d8) V(d9) V(d10) V(d11) V(d12) V(d13) V(d14) V(d15)
36#define FLOAT_REGISTERS DOUBLE_REGISTERS
37#define SIMD128_REGISTERS DOUBLE_REGISTERS
39#define ALLOCATABLE_DOUBLE_REGISTERS(V) \
40 V(d1) V(d2) V(d3) V(d4) V(d5) V(d6) V(d7) \
41 V(d8) V(d9) V(d10) V(d11) V(d12) V(d15) V(d0)
43#define C_REGISTERS(V) \
44 V(cr0) V(cr1) V(cr2) V(cr3) V(cr4) V(cr5) V(cr6) V(cr7) \
45 V(cr8) V(cr9) V(cr10) V(cr11) V(cr12) V(cr15)
89const int kXPLINKStackFrameExtraParamSlot = 19;
90const int kStackPointerBias = 2048;
113#define REGISTER_CODE(R) kRegCode_##R,
119class Register :
public RegisterBase<Register, kRegAfterLast> {
121#if V8_TARGET_LITTLE_ENDIAN
135static_assert(
sizeof(Register) <=
sizeof(int),
136 "Register can efficiently be passed by value");
145#define DEFINE_REGISTER(R) \
146 constexpr Register R = Register::from_code(kRegCode_##R);
148#undef DEFINE_REGISTER
153#ifdef V8_COMPRESS_POINTERS_IN_SHARED_CAGE
158constexpr Register
cp = r13;
161constexpr Register
kCArgRegs[] = {r2, r3, r4, r5, r6};
174#define REGISTER_CODE(R) kDoubleCode_##R,
202 "DoubleRegister can efficiently be passed by value");
209#define DEFINE_REGISTER(R) \
210 constexpr DoubleRegister R = DoubleRegister::from_code(kDoubleCode_##R);
212#undef DEFINE_REGISTER
221#define REGISTER_CODE(R) kCCode_##R,
234#define DECLARE_C_REGISTER(R) \
235 constexpr CRegister R = CRegister::from_code(kCCode_##R);
237#undef DECLARE_C_REGISTER
constexpr CRegister(int code)
static int SupportedRegisterCount()
constexpr DoubleRegister(int code)
static constexpr int kSizeInBytes
static constexpr DwVfpRegister no_reg()
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 AliasingKind kFPAliasing
constexpr Register kRuntimeCallFunctionRegister
const int kStackFrameRASlot
const int kNumRequiredStackFrameSlots
DwVfpRegister DoubleRegister
constexpr DoubleRegister kScratchDoubleReg
constexpr Register kRuntimeCallArgvRegister
constexpr Register kJavaScriptCallTargetRegister
const int kStackFrameExtraParamSlot
constexpr DwVfpRegister no_dreg
constexpr Register kJavaScriptCallArgCountRegister
constexpr Register kInterpreterAccumulatorRegister
static const int kRegisterPassedArguments
QwNeonRegister Simd128Register
constexpr DoubleRegister kFPReturnRegister0
constexpr Register kReturnRegister1
const int kStackFrameSPSlot
constexpr Register kReturnRegister0
constexpr Register kWasmImplicitArgRegister
constexpr Register kContextRegister
constexpr Register kRuntimeCallArgCountRegister
constexpr Register kInterpreterDispatchTableRegister
constexpr Register kAllocateSizeRegister
const int kCalleeRegisterSaveAreaSize
constexpr LowDwVfpRegister kDoubleRegZero
constexpr Register kJavaScriptCallExtraArg1Register
Register ToRegister(int num)
constexpr Register kJavaScriptCallCodeStartRegister
constexpr Register kPtrComprCageBaseRegister
constexpr Register kReturnRegister2
Register ReassignRegister(Register &source)
constexpr CRegister no_creg
constexpr Register kWasmCompileLazyFuncIndexRegister
constexpr Register kStackPointerRegister
constexpr int ArgumentPaddingSlots(int argument_count)
constexpr Register kCArgRegs[]
constexpr bool kSimdMaskRegisters
constexpr Register kJavaScriptCallDispatchHandleRegister
constexpr Register kInterpreterBytecodeOffsetRegister
constexpr Register kJavaScriptCallNewTargetRegister
constexpr Register kJSFunctionRegister
SwVfpRegister FloatRegister
constexpr Register kInterpreterBytecodeArrayRegister
#define DEFINE_REGISTER(register_class, name,...)
#define GENERAL_REGISTERS(V)
#define DECLARE_C_REGISTER(R)
#define DOUBLE_REGISTERS(V)
#define DEFINE_REGISTER_NAMES(RegType, LIST)
#define ASSERT_TRIVIALLY_COPYABLE(T)