5#ifndef V8_CODEGEN_IA32_REGISTER_IA32_H_
6#define V8_CODEGEN_IA32_REGISTER_IA32_H_
13#define GENERAL_REGISTERS(V) \
23#define ALLOCATABLE_GENERAL_REGISTERS(V) \
30#define DOUBLE_REGISTERS(V) \
40#define FLOAT_REGISTERS DOUBLE_REGISTERS
41#define SIMD128_REGISTERS DOUBLE_REGISTERS
43#define ALLOCATABLE_DOUBLE_REGISTERS(V) \
53#define REGISTER_CODE(R) kRegCode_##R,
59class Register :
public RegisterBase<Register, kRegAfterLast> {
69static_assert(
sizeof(Register) <=
sizeof(int),
70 "Register can efficiently be passed by value");
79#define DEFINE_REGISTER(R) \
80 constexpr Register R = Register::from_code(kRegCode_##R);
95#define REGISTER_CODE(R) kDoubleCode_##R,
101class XMMRegister :
public RegisterBase<XMMRegister, kDoubleAfterLast> {
112#define DEFINE_REGISTER(R) \
113 constexpr DoubleRegister R = DoubleRegister::from_code(kDoubleCode_##R);
115#undef DEFINE_REGISTER
constexpr RegisterBase(int code)
static constexpr DwVfpRegister no_reg()
constexpr int8_t code() const
constexpr Register(int code)
bool is_byte_register() const
static constexpr Register no_reg()
constexpr XMMRegister(int code)
ZoneVector< RpoNumber > & result
InstructionOperand source
constexpr Register no_reg
constexpr Register kRootRegister
constexpr AliasingKind kFPAliasing
constexpr Register kRuntimeCallFunctionRegister
DwVfpRegister DoubleRegister
constexpr DoubleRegister kScratchDoubleReg
constexpr Register kRuntimeCallArgvRegister
constexpr Register kJavaScriptCallTargetRegister
constexpr DwVfpRegister no_dreg
constexpr Register kJavaScriptCallArgCountRegister
constexpr Register kInterpreterAccumulatorRegister
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 kJavaScriptCallExtraArg1Register
constexpr Register kJavaScriptCallCodeStartRegister
constexpr Register kReturnRegister2
Register ReassignRegister(Register &source)
constexpr Register kWasmCompileLazyFuncIndexRegister
constexpr int ArgumentPaddingSlots(int argument_count)
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 DOUBLE_REGISTERS(V)
#define DEFINE_REGISTER_NAMES(RegType, LIST)
#define ASSERT_TRIVIALLY_COPYABLE(T)