v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
register-arm64.h File Reference
Include dependency graph for register-arm64.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  v8::internal::CPURegister
 
class  v8::internal::Register
 
class  v8::internal::VRegister
 

Namespaces

namespace  v8
 
namespace  v8::internal
 

Macros

#define GENERAL_REGISTER_CODE_LIST(R)
 
#define GENERAL_REGISTERS(R)
 
#define ALWAYS_ALLOCATABLE_GENERAL_REGISTERS(R)
 
#define MAYBE_ALLOCATABLE_GENERAL_REGISTERS(R)
 
#define ALLOCATABLE_GENERAL_REGISTERS(V)
 
#define FLOAT_REGISTERS(V)
 
#define DOUBLE_REGISTERS(R)
 
#define SIMD128_REGISTERS(V)
 
#define VECTOR_REGISTERS(V)
 
#define ALLOCATABLE_DOUBLE_REGISTERS(R)
 
#define MAGLEV_SCRATCH_DOUBLE_REGISTERS(R)
 
#define REGISTER_CODE(R)
 
#define REGISTER_CODE(R)
 
#define DEFINE_REGISTER(register_class, name, ...)
 
#define ALIAS_REGISTER(register_class, alias, name)
 
#define DEFINE_REGISTERS(N)
 
#define DEFINE_VREGISTERS(N)
 

Enumerations

enum  v8::internal::RegisterCode {
  v8::internal::kRegAfterLast , v8::internal::kRegAfterLast , v8::internal::kRegAfterLast , v8::internal::kRegAfterLast ,
  v8::internal::kRegAfterLast , v8::internal::kRegAfterLast , v8::internal::kRegAfterLast , v8::internal::kRegAfterLast ,
  v8::internal::kRegAfterLast
}
 
enum  v8::internal::DoubleRegisterCode {
  v8::internal::kDoubleAfterLast , v8::internal::kDoubleAfterLast , v8::internal::kDoubleAfterLast , v8::internal::kDoubleAfterLast ,
  v8::internal::kDoubleAfterLast , v8::internal::kDoubleAfterLast , v8::internal::kDoubleAfterLast , v8::internal::kDoubleAfterLast
}
 
enum  v8::internal::VectorFormat {
  v8::internal::kFormatUndefined = 0xffffffff , v8::internal::kFormat8B = NEON_8B , v8::internal::kFormat16B = NEON_16B , v8::internal::kFormat4H = NEON_4H ,
  v8::internal::kFormat8H = NEON_8H , v8::internal::kFormat2S = NEON_2S , v8::internal::kFormat4S = NEON_4S , v8::internal::kFormat1D = NEON_1D ,
  v8::internal::kFormat2D = NEON_2D , v8::internal::kFormatB = NEON_B | NEONScalar , v8::internal::kFormatH = NEON_H | NEONScalar , v8::internal::kFormatS = NEON_S | NEONScalar ,
  v8::internal::kFormatD = NEON_D | NEONScalar , v8::internal::kFormat1Q = 0xfffffffd
}
 

Functions

 v8::internal::ASSERT_TRIVIALLY_COPYABLE (CPURegister)
 
 v8::internal::ASSERT_TRIVIALLY_COPYABLE (Register)
 
template<typename RegT >
RegT v8::internal::ReassignRegister (RegT &source)
 
constexpr int v8::internal::ArgumentPaddingSlots (int argument_count)
 
VectorFormat v8::internal::VectorFormatHalfWidth (VectorFormat vform)
 
VectorFormat v8::internal::VectorFormatDoubleWidth (VectorFormat vform)
 
VectorFormat v8::internal::VectorFormatDoubleLanes (VectorFormat vform)
 
VectorFormat v8::internal::VectorFormatHalfLanes (VectorFormat vform)
 
VectorFormat v8::internal::ScalarFormatFromLaneSize (int lanesize)
 
VectorFormat v8::internal::VectorFormatHalfWidthDoubleLanes (VectorFormat vform)
 
VectorFormat v8::internal::VectorFormatFillQ (int laneSize)
 
VectorFormat v8::internal::VectorFormatFillQ (VectorFormat vform)
 
VectorFormat v8::internal::ScalarFormatFromFormat (VectorFormat vform)
 
V8_EXPORT_PRIVATE unsigned v8::internal::RegisterSizeInBitsFromFormat (VectorFormat vform)
 
unsigned v8::internal::RegisterSizeInBytesFromFormat (VectorFormat vform)
 
int v8::internal::LaneSizeInBytesFromFormat (VectorFormat vform)
 
unsigned v8::internal::LaneSizeInBitsFromFormat (VectorFormat vform)
 
int v8::internal::LaneSizeInBytesLog2FromFormat (VectorFormat vform)
 
V8_EXPORT_PRIVATE int v8::internal::LaneCountFromFormat (VectorFormat vform)
 
int v8::internal::MaxLaneCountFromFormat (VectorFormat vform)
 
V8_EXPORT_PRIVATE bool v8::internal::IsVectorFormat (VectorFormat vform)
 
int64_t v8::internal::MaxIntFromFormat (VectorFormat vform)
 
int64_t v8::internal::MinIntFromFormat (VectorFormat vform)
 
uint64_t v8::internal::MaxUintFromFormat (VectorFormat vform)
 
 v8::internal::ASSERT_TRIVIALLY_COPYABLE (VRegister)
 
 v8::internal::DEFINE_REGISTER (Register, wsp, kSPRegInternalCode, kWRegSizeInBits)
 
 v8::internal::DEFINE_REGISTER (Register, sp, kSPRegInternalCode, kXRegSizeInBits)
 
 v8::internal::ALIAS_REGISTER (Register, kStackPointerRegister, sp)
 
 v8::internal::ALIAS_REGISTER (VRegister, v8_, v8)
 
 v8::internal::ALIAS_REGISTER (Register, ip0, x16)
 
 v8::internal::ALIAS_REGISTER (Register, ip1, x17)
 
 v8::internal::ALIAS_REGISTER (Register, wip0, w16)
 
 v8::internal::ALIAS_REGISTER (Register, wip1, w17)
 
 v8::internal::ALIAS_REGISTER (Register, kRootRegister, x26)
 
 v8::internal::ALIAS_REGISTER (Register, rr, x26)
 
 v8::internal::ALIAS_REGISTER (Register, kPtrComprCageBaseRegister, no_reg)
 
 v8::internal::ALIAS_REGISTER (Register, cp, x27)
 
 v8::internal::ALIAS_REGISTER (Register, fp, x29)
 
 v8::internal::ALIAS_REGISTER (Register, lr, x30)
 
 v8::internal::ALIAS_REGISTER (Register, xzr, x31)
 
 v8::internal::ALIAS_REGISTER (Register, wzr, w31)
 
 v8::internal::ALIAS_REGISTER (Register, padreg, x31)
 
 v8::internal::ALIAS_REGISTER (VRegister, fp_zero, d15)
 
 v8::internal::ALIAS_REGISTER (VRegister, fp_fixed1, d27)
 
 v8::internal::ALIAS_REGISTER (VRegister, fp_fixed2, d28)
 
 v8::internal::ALIAS_REGISTER (VRegister, fp_scratch, d30)
 
 v8::internal::ALIAS_REGISTER (VRegister, fp_scratch1, d30)
 
 v8::internal::ALIAS_REGISTER (VRegister, fp_scratch2, d31)
 
V8_EXPORT_PRIVATE bool v8::internal::AreAliased (const CPURegister &reg1, const CPURegister &reg2, const CPURegister &reg3=NoReg, const CPURegister &reg4=NoReg, const CPURegister &reg5=NoReg, const CPURegister &reg6=NoReg, const CPURegister &reg7=NoReg, const CPURegister &reg8=NoReg)
 
V8_EXPORT_PRIVATE bool v8::internal::AreSameSizeAndType (const CPURegister &reg1, const CPURegister &reg2=NoCPUReg, const CPURegister &reg3=NoCPUReg, const CPURegister &reg4=NoCPUReg, const CPURegister &reg5=NoCPUReg, const CPURegister &reg6=NoCPUReg, const CPURegister &reg7=NoCPUReg, const CPURegister &reg8=NoCPUReg)
 
bool v8::internal::AreSameFormat (const Register &reg1, const Register &reg2, const Register &reg3=NoReg, const Register &reg4=NoReg)
 
bool v8::internal::AreSameFormat (const VRegister &reg1, const VRegister &reg2, const VRegister &reg3=NoVReg, const VRegister &reg4=NoVReg)
 
V8_EXPORT_PRIVATE bool v8::internal::AreConsecutive (const CPURegister &reg1, const CPURegister &reg2, const CPURegister &reg3=NoReg, const CPURegister &reg4=NoReg)
 
bool v8::internal::AreEven (const CPURegister &reg1, const CPURegister &reg2, const CPURegister &reg3=NoReg, const CPURegister &reg4=NoReg, const CPURegister &reg5=NoReg, const CPURegister &reg6=NoReg, const CPURegister &reg7=NoReg, const CPURegister &reg8=NoReg)
 

Variables

constexpr Register v8::internal::NoReg = Register::no_reg()
 
constexpr VRegister v8::internal::NoVReg = VRegister::no_reg()
 
constexpr CPURegister v8::internal::NoCPUReg = CPURegister::no_reg()
 
constexpr int v8::internal::kFPRegisterPassedArguments = 8
 
constexpr Register v8::internal::kWasmTrapHandlerFaultAddressRegister = x16
 
constexpr Register v8::internal::kSimulatorHltArgument = x16
 

Macro Definition Documentation

◆ ALIAS_REGISTER

#define ALIAS_REGISTER ( register_class,
alias,
name )
Value:
constexpr register_class alias = name

Definition at line 476 of file register-arm64.h.

◆ ALLOCATABLE_DOUBLE_REGISTERS

#define ALLOCATABLE_DOUBLE_REGISTERS ( R)
Value:
R(d0) R(d1) R(d2) R(d3) R(d4) R(d5) R(d6) R(d7) \
R(d8) R(d9) R(d10) R(d11) R(d12) R(d13) R(d14) R(d16) \
R(d17) R(d18) R(d19) R(d20) R(d21) R(d22) R(d23) R(d24) \
R(d25) R(d26) R(d27) R(d28)

Definition at line 74 of file register-arm64.h.

◆ ALLOCATABLE_GENERAL_REGISTERS

#define ALLOCATABLE_GENERAL_REGISTERS ( V)
Value:
MAYBE_ALLOCATABLE_GENERAL_REGISTERS(V)
#define V(Name)
#define ALWAYS_ALLOCATABLE_GENERAL_REGISTERS(R)

Definition at line 44 of file register-arm64.h.

◆ ALWAYS_ALLOCATABLE_GENERAL_REGISTERS

#define ALWAYS_ALLOCATABLE_GENERAL_REGISTERS ( R)
Value:
R(x0) R(x1) R(x2) R(x3) R(x4) R(x5) R(x6) R(x7) \
R(x8) R(x9) R(x10) R(x11) R(x12) R(x13) R(x14) R(x15) \
R(x19) R(x20) R(x21) R(x22) R(x23) R(x24) R(x25) \
R(x27)

Definition at line 32 of file register-arm64.h.

◆ DEFINE_REGISTER

#define DEFINE_REGISTER ( register_class,
name,
... )
Value:
constexpr register_class name = register_class::Create(__VA_ARGS__)

Definition at line 474 of file register-arm64.h.

◆ DEFINE_REGISTERS

#define DEFINE_REGISTERS ( N)
Value:
DEFINE_REGISTER(Register, w##N, N, kWRegSizeInBits); \
DEFINE_REGISTER(Register, x##N, N, kXRegSizeInBits);
int x
#define DEFINE_REGISTER(register_class, name,...)

Definition at line 479 of file register-arm64.h.

◆ DEFINE_VREGISTERS

#define DEFINE_VREGISTERS ( N)
Value:
DEFINE_REGISTER(VRegister, b##N, N, kBRegSizeInBits); \
DEFINE_REGISTER(VRegister, h##N, N, kHRegSizeInBits); \
DEFINE_REGISTER(VRegister, s##N, N, kSRegSizeInBits); \
DEFINE_REGISTER(VRegister, d##N, N, kDRegSizeInBits); \
DEFINE_REGISTER(VRegister, q##N, N, kQRegSizeInBits); \
DEFINE_REGISTER(VRegister, v##N, N, kQRegSizeInBits);

Definition at line 488 of file register-arm64.h.

◆ DOUBLE_REGISTERS

#define DOUBLE_REGISTERS ( R)
Value:
R(d0) R(d1) R(d2) R(d3) R(d4) R(d5) R(d6) R(d7) \
R(d8) R(d9) R(d10) R(d11) R(d12) R(d13) R(d14) R(d15) \
R(d16) R(d17) R(d18) R(d19) R(d20) R(d21) R(d22) R(d23) \
R(d24) R(d25) R(d26) R(d27) R(d28) R(d29) R(d30) R(d31)

Definition at line 54 of file register-arm64.h.

◆ FLOAT_REGISTERS

#define FLOAT_REGISTERS ( V)
Value:
V(s0) V(s1) V(s2) V(s3) V(s4) V(s5) V(s6) V(s7) \
V(s8) V(s9) V(s10) V(s11) V(s12) V(s13) V(s14) V(s15) \
V(s16) V(s17) V(s18) V(s19) V(s20) V(s21) V(s22) V(s23) \
V(s24) V(s25) V(s26) V(s27) V(s28) V(s29) V(s30) V(s31)

Definition at line 48 of file register-arm64.h.

◆ GENERAL_REGISTER_CODE_LIST

#define GENERAL_REGISTER_CODE_LIST ( R)
Value:
R(0) R(1) R(2) R(3) R(4) R(5) R(6) R(7) \
R(8) R(9) R(10) R(11) R(12) R(13) R(14) R(15) \
R(16) R(17) R(18) R(19) R(20) R(21) R(22) R(23) \
R(24) R(25) R(26) R(27) R(28) R(29) R(30) R(31)

Definition at line 18 of file register-arm64.h.

◆ GENERAL_REGISTERS

#define GENERAL_REGISTERS ( R)
Value:
R(x0) R(x1) R(x2) R(x3) R(x4) R(x5) R(x6) R(x7) \
R(x8) R(x9) R(x10) R(x11) R(x12) R(x13) R(x14) R(x15) \
R(x16) R(x17) R(x18) R(x19) R(x20) R(x21) R(x22) R(x23) \
R(x24) R(x25) R(x26) R(x27) R(x28) R(x29) R(x30) R(x31)

Definition at line 24 of file register-arm64.h.

◆ MAGLEV_SCRATCH_DOUBLE_REGISTERS

#define MAGLEV_SCRATCH_DOUBLE_REGISTERS ( R)
Value:
R(d30) R(d31)

Definition at line 80 of file register-arm64.h.

◆ MAYBE_ALLOCATABLE_GENERAL_REGISTERS

#define MAYBE_ALLOCATABLE_GENERAL_REGISTERS ( R)
Value:
R(x28)

Definition at line 41 of file register-arm64.h.

◆ REGISTER_CODE [1/2]

#define REGISTER_CODE ( R)
Value:
kRegCode_##R,

Definition at line 91 of file register-arm64.h.

◆ REGISTER_CODE [2/2]

#define REGISTER_CODE ( R)
Value:
kDoubleCode_##R,

Definition at line 91 of file register-arm64.h.

◆ SIMD128_REGISTERS

#define SIMD128_REGISTERS ( V)
Value:
V(q0) V(q1) V(q2) V(q3) V(q4) V(q5) V(q6) V(q7) \
V(q8) V(q9) V(q10) V(q11) V(q12) V(q13) V(q14) V(q15) \
V(q16) V(q17) V(q18) V(q19) V(q20) V(q21) V(q22) V(q23) \
V(q24) V(q25) V(q26) V(q27) V(q28) V(q29) V(q30) V(q31)

Definition at line 60 of file register-arm64.h.

◆ VECTOR_REGISTERS

#define VECTOR_REGISTERS ( V)
Value:
V(v0) V(v1) V(v2) V(v3) V(v4) V(v5) V(v6) V(v7) \
V(v8) V(v9) V(v10) V(v11) V(v12) V(v13) V(v14) V(v15) \
V(v16) V(v17) V(v18) V(v19) V(v20) V(v21) V(v22) V(v23) \
V(v24) V(v25) V(v26) V(v27) V(v28) V(v29) V(v30) V(v31)

Definition at line 66 of file register-arm64.h.