5#ifndef V8_CODEGEN_REGISTER_CONFIGURATION_H_
6#define V8_CODEGEN_REGISTER_CONFIGURATION_H_
20 static constexpr int kMaxGeneralRegisters = 32;
21 static constexpr int kMaxFPRegisters = 32;
22 static constexpr int kMaxRegisters =
23 std::max(kMaxFPRegisters, kMaxGeneralRegisters);
35 AliasingKind fp_aliasing_kind,
int num_general_registers,
36 int num_double_registers,
int num_simd128_registers,
37 int num_simd256_registers,
int num_allocatable_general_registers,
38 int num_allocatable_double_registers,
39 int num_allocatable_simd128_registers,
40 int num_allocatable_simd256_registers,
41 const int* allocatable_general_codes,
const int* allocatable_double_codes,
42 const int* independent_allocatable_simd128_codes =
nullptr);
50 return num_allocatable_general_registers_;
53 return num_allocatable_float_registers_;
59 return num_allocatable_double_registers_;
62 return num_allocatable_simd128_registers_;
65 return num_allocatable_simd256_registers_;
70 return allocatable_general_codes_mask_;
73 return allocatable_double_codes_mask_;
76 return allocatable_float_codes_mask_;
79 return allocatable_simd128_codes_mask_;
82 DCHECK(index >= 0 && index < num_allocatable_general_registers());
83 return allocatable_general_codes_[
index];
86 return ((1 << index) & allocatable_general_codes_mask_) != 0;
89 DCHECK(index >= 0 && index < num_allocatable_float_registers());
90 return allocatable_float_codes_[
index];
93 return ((1 << index) & allocatable_float_codes_mask_) != 0;
96 DCHECK(index >= 0 && index < num_allocatable_double_registers());
97 return allocatable_double_codes_[
index];
100 return ((1 << index) & allocatable_double_codes_mask_) != 0;
103 DCHECK(index >= 0 && index < num_allocatable_simd128_registers());
104 return allocatable_simd128_codes_[
index];
107 return ((1 << index) & allocatable_simd128_codes_mask_) != 0;
110 DCHECK(index >= 0 && index < num_allocatable_simd256_registers());
111 return allocatable_simd256_codes_[
index];
114 return ((1 << index) & allocatable_simd256_codes_mask_) != 0;
118 return allocatable_general_codes_;
121 return allocatable_float_codes_;
124 return allocatable_double_codes_;
127 return allocatable_simd128_codes_;
130 return allocatable_simd256_codes_;
164 int allocatable_float_codes_[kMaxFPRegisters];
166 int allocatable_simd128_codes_[kMaxFPRegisters];
167 int allocatable_simd256_codes_[kMaxFPRegisters];
bool IsAllocatableDoubleCode(int index) const
AliasingKind fp_aliasing_kind_
int num_allocatable_simd256_registers() const
AliasingKind fp_aliasing_kind() const
static const RegisterConfiguration * Poisoning()
int num_general_registers() const
bool IsAllocatableGeneralCode(int index) const
int num_float_registers() const
int32_t allocatable_float_codes_mask() const
int32_t allocatable_simd128_codes_mask() const
int num_allocatable_simd256_registers_
int32_t allocatable_double_codes_mask_
int num_allocatable_simd128_registers_
bool IsAllocatableSimd128Code(int index) const
int num_allocatable_general_registers() const
int num_double_registers() const
int GetAllocatableDoubleCode(int index) const
const int * allocatable_general_codes_
const int num_double_registers_
const int * allocatable_double_codes() const
const int * allocatable_simd256_codes() const
int num_allocatable_general_registers_
int num_simd128_registers_
const int num_general_registers_
const int * allocatable_double_codes_
int num_allocatable_double_registers_
int32_t allocatable_simd128_codes_mask_
int num_simd256_registers_
int num_allocatable_float_registers_
int GetAllocatableSimd256Code(int index) const
int num_allocatable_double_registers() const
bool IsAllocatableSimd256Code(int index) const
const int * allocatable_float_codes() const
int32_t allocatable_simd256_codes_mask_
int32_t allocatable_general_codes_mask() const
int32_t allocatable_double_codes_mask() const
int GetAllocatableFloatCode(int index) const
int num_allocatable_simd128_registers() const
int GetAllocatableGeneralCode(int index) const
virtual ~RegisterConfiguration()=default
int num_allocatable_float_registers() const
bool IsAllocatableFloatCode(int index) const
int GetAllocatableSimd128Code(int index) const
int32_t allocatable_general_codes_mask_
const int * allocatable_simd128_codes() const
int num_simd128_registers() const
const int * allocatable_general_codes() const
int num_simd256_registers() const
int32_t allocatable_float_codes_mask_
RegListBase< RegisterT > registers
#define DCHECK(condition)
#define V8_EXPORT_PRIVATE