5 #ifndef V8_REGISTER_CONFIGURATION_H_ 6 #define V8_REGISTER_CONFIGURATION_H_ 8 #include "src/base/macros.h" 9 #include "src/globals.h" 10 #include "src/machine-type.h" 11 #include "src/reglist.h" 28 static const int kMaxGeneralRegisters = 32;
29 static const int kMaxFPRegisters = 32;
41 int num_allocatable_general_registers,
42 int num_allocatable_double_registers,
43 const int* allocatable_general_codes,
44 const int* allocatable_double_codes,
45 AliasingKind fp_aliasing_kind);
47 int num_general_registers()
const {
return num_general_registers_; }
48 int num_float_registers()
const {
return num_float_registers_; }
49 int num_double_registers()
const {
return num_double_registers_; }
50 int num_simd128_registers()
const {
return num_simd128_registers_; }
51 int num_allocatable_general_registers()
const {
52 return num_allocatable_general_registers_;
54 int num_allocatable_float_registers()
const {
55 return num_allocatable_float_registers_;
57 int num_allocatable_double_registers()
const {
58 return num_allocatable_double_registers_;
60 int num_allocatable_simd128_registers()
const {
61 return num_allocatable_simd128_registers_;
63 AliasingKind fp_aliasing_kind()
const {
return fp_aliasing_kind_; }
64 int32_t allocatable_general_codes_mask()
const {
65 return allocatable_general_codes_mask_;
67 int32_t allocatable_double_codes_mask()
const {
68 return allocatable_double_codes_mask_;
70 int32_t allocatable_float_codes_mask()
const {
71 return allocatable_float_codes_mask_;
73 int GetAllocatableGeneralCode(
int index)
const {
74 DCHECK(index >= 0 && index < num_allocatable_general_registers());
75 return allocatable_general_codes_[index];
77 bool IsAllocatableGeneralCode(
int index)
const {
78 return ((1 << index) & allocatable_general_codes_mask_) != 0;
80 int GetAllocatableFloatCode(
int index)
const {
81 DCHECK(index >= 0 && index < num_allocatable_float_registers());
82 return allocatable_float_codes_[index];
84 bool IsAllocatableFloatCode(
int index)
const {
85 return ((1 << index) & allocatable_float_codes_mask_) != 0;
87 int GetAllocatableDoubleCode(
int index)
const {
88 DCHECK(index >= 0 && index < num_allocatable_double_registers());
89 return allocatable_double_codes_[index];
91 bool IsAllocatableDoubleCode(
int index)
const {
92 return ((1 << index) & allocatable_double_codes_mask_) != 0;
94 int GetAllocatableSimd128Code(
int index)
const {
95 DCHECK(index >= 0 && index < num_allocatable_simd128_registers());
96 return allocatable_simd128_codes_[index];
98 bool IsAllocatableSimd128Code(
int index)
const {
99 return ((1 << index) & allocatable_simd128_codes_mask_) != 0;
102 const int* allocatable_general_codes()
const {
103 return allocatable_general_codes_;
105 const int* allocatable_float_codes()
const {
106 return allocatable_float_codes_;
108 const int* allocatable_double_codes()
const {
109 return allocatable_double_codes_;
111 const int* allocatable_simd128_codes()
const {
112 return allocatable_simd128_codes_;
119 int GetAliases(MachineRepresentation rep,
int index,
120 MachineRepresentation other_rep,
int* alias_base_index)
const;
124 bool AreAliases(MachineRepresentation rep,
int index,
125 MachineRepresentation other_rep,
int other_index)
const;
130 const int num_general_registers_;
131 int num_float_registers_;
132 const int num_double_registers_;
133 int num_simd128_registers_;
134 int num_allocatable_general_registers_;
135 int num_allocatable_float_registers_;
136 int num_allocatable_double_registers_;
137 int num_allocatable_simd128_registers_;
138 int32_t allocatable_general_codes_mask_;
139 int32_t allocatable_float_codes_mask_;
140 int32_t allocatable_double_codes_mask_;
141 int32_t allocatable_simd128_codes_mask_;
142 const int* allocatable_general_codes_;
143 int allocatable_float_codes_[kMaxFPRegisters];
144 const int* allocatable_double_codes_;
145 int allocatable_simd128_codes_[kMaxFPRegisters];
146 AliasingKind fp_aliasing_kind_;
152 #endif // V8_REGISTER_CONFIGURATION_H_