| Index: src/register-configuration.h
|
| diff --git a/src/register-configuration.h b/src/register-configuration.h
|
| index 25f3ef5f20b033a47b1df36c5d7e981cd88986d9..db57026b52054d1d27d5ebb001bf600c5f750f5e 100644
|
| --- a/src/register-configuration.h
|
| +++ b/src/register-configuration.h
|
| @@ -40,19 +40,24 @@ class RegisterConfiguration {
|
| AliasingKind fp_aliasing_kind,
|
| char const* const* general_names,
|
| char const* const* float_names,
|
| - char const* const* double_names);
|
| + char const* const* double_names,
|
| + char const* const* simd128_names);
|
|
|
| int num_general_registers() const { return num_general_registers_; }
|
| int num_float_registers() const { return num_float_registers_; }
|
| int num_double_registers() const { return num_double_registers_; }
|
| + int num_simd128_registers() const { return num_simd128_registers_; }
|
| int num_allocatable_general_registers() const {
|
| return num_allocatable_general_registers_;
|
| }
|
| + int num_allocatable_float_registers() const {
|
| + return num_allocatable_float_registers_;
|
| + }
|
| int num_allocatable_double_registers() const {
|
| return num_allocatable_double_registers_;
|
| }
|
| - int num_allocatable_float_registers() const {
|
| - return num_allocatable_float_registers_;
|
| + int num_allocatable_simd128_registers() const {
|
| + return num_allocatable_simd128_registers_;
|
| }
|
| AliasingKind fp_aliasing_kind() const { return fp_aliasing_kind_; }
|
| int32_t allocatable_general_codes_mask() const {
|
| @@ -67,17 +72,23 @@ class RegisterConfiguration {
|
| bool IsAllocatableGeneralCode(int index) const {
|
| return ((1 << index) & allocatable_general_codes_mask_) != 0;
|
| }
|
| + int GetAllocatableFloatCode(int index) const {
|
| + return allocatable_float_codes_[index];
|
| + }
|
| + bool IsAllocatableFloatCode(int index) const {
|
| + return ((1 << index) & allocatable_float_codes_mask_) != 0;
|
| + }
|
| int GetAllocatableDoubleCode(int index) const {
|
| return allocatable_double_codes_[index];
|
| }
|
| bool IsAllocatableDoubleCode(int index) const {
|
| return ((1 << index) & allocatable_double_codes_mask_) != 0;
|
| }
|
| - int GetAllocatableFloatCode(int index) const {
|
| - return allocatable_float_codes_[index];
|
| + int GetAllocatableSimd128Code(int index) const {
|
| + return allocatable_simd128_codes_[index];
|
| }
|
| - bool IsAllocatableFloatCode(int index) const {
|
| - return ((1 << index) & allocatable_float_codes_mask_) != 0;
|
| + bool IsAllocatableSimd128Code(int index) const {
|
| + return ((1 << index) & allocatable_simd128_codes_mask_) != 0;
|
| }
|
| const char* GetGeneralRegisterName(int code) const {
|
| return general_register_names_[code];
|
| @@ -88,25 +99,31 @@ class RegisterConfiguration {
|
| const char* GetDoubleRegisterName(int code) const {
|
| return double_register_names_[code];
|
| }
|
| + const char* GetSimd128RegisterName(int code) const {
|
| + return simd128_register_names_[code];
|
| + }
|
| const int* allocatable_general_codes() const {
|
| return allocatable_general_codes_;
|
| }
|
| + const int* allocatable_float_codes() const {
|
| + return allocatable_float_codes_;
|
| + }
|
| const int* allocatable_double_codes() const {
|
| return allocatable_double_codes_;
|
| }
|
| - const int* allocatable_float_codes() const {
|
| - return allocatable_float_codes_;
|
| + const int* allocatable_simd128_codes() const {
|
| + return allocatable_simd128_codes_;
|
| }
|
|
|
| // Aliasing calculations for floating point registers, when fp_aliasing_kind()
|
| - // is COMBINE. Currently only implemented for kFloat32, or kFloat64 reps.
|
| - // Returns the number of aliases, and if > 0, alias_base_index is set to the
|
| - // index of the first alias.
|
| + // is COMBINE. Currently only implemented for kFloat32, kFloat64, or kSimd128
|
| + // reps. Returns the number of aliases, and if > 0, alias_base_index is set to
|
| + // the index of the first alias.
|
| int GetAliases(MachineRepresentation rep, int index,
|
| MachineRepresentation other_rep, int* alias_base_index) const;
|
| // Returns a value indicating whether two registers alias each other, when
|
| - // fp_aliasing_kind() is COMBINE. Currently only implemented for kFloat32, or
|
| - // kFloat64 reps.
|
| + // fp_aliasing_kind() is COMBINE. Currently implemented for kFloat32,
|
| + // kFloat64, or kSimd128 reps.
|
| bool AreAliases(MachineRepresentation rep, int index,
|
| MachineRepresentation other_rep, int other_index) const;
|
|
|
| @@ -114,19 +131,24 @@ class RegisterConfiguration {
|
| const int num_general_registers_;
|
| int num_float_registers_;
|
| const int num_double_registers_;
|
| + int num_simd128_registers_;
|
| int num_allocatable_general_registers_;
|
| - int num_allocatable_double_registers_;
|
| int num_allocatable_float_registers_;
|
| + int num_allocatable_double_registers_;
|
| + int num_allocatable_simd128_registers_;
|
| int32_t allocatable_general_codes_mask_;
|
| - int32_t allocatable_double_codes_mask_;
|
| int32_t allocatable_float_codes_mask_;
|
| + int32_t allocatable_double_codes_mask_;
|
| + int32_t allocatable_simd128_codes_mask_;
|
| const int* allocatable_general_codes_;
|
| - const int* allocatable_double_codes_;
|
| int allocatable_float_codes_[kMaxFPRegisters];
|
| + const int* allocatable_double_codes_;
|
| + int allocatable_simd128_codes_[kMaxFPRegisters];
|
| AliasingKind fp_aliasing_kind_;
|
| char const* const* general_register_names_;
|
| char const* const* float_register_names_;
|
| char const* const* double_register_names_;
|
| + char const* const* simd128_register_names_;
|
| };
|
|
|
| } // namespace internal
|
|
|