[vm] Define kFpuRegisterSize based on the target architecture, not the host architecture.
TEST=ci
Bug: https://github.com/dart-lang/sdk/issues/47802
Change-Id: Icf4522df4109dd653727aa988ba4dccd8f939ae2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/226420
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
diff --git a/runtime/platform/globals.h b/runtime/platform/globals.h
index 2a2c087..3891afc 100644
--- a/runtime/platform/globals.h
+++ b/runtime/platform/globals.h
@@ -197,40 +197,15 @@
#if defined(_M_X64) || defined(__x86_64__)
#define HOST_ARCH_X64 1
#define ARCH_IS_64_BIT 1
-#define kFpuRegisterSize 16
-typedef simd128_value_t fpu_register_t;
#elif defined(_M_IX86) || defined(__i386__)
#define HOST_ARCH_IA32 1
#define ARCH_IS_32_BIT 1
-#define kFpuRegisterSize 16
-typedef simd128_value_t fpu_register_t;
#elif defined(__ARMEL__)
#define HOST_ARCH_ARM 1
#define ARCH_IS_32_BIT 1
-#define kFpuRegisterSize 16
-// Mark the fact that we have defined simd_value_t.
-#define SIMD_VALUE_T_
-typedef struct {
- union {
- uint32_t u;
- float f;
- } data_[4];
-} simd_value_t;
-typedef simd_value_t fpu_register_t;
-#define simd_value_safe_load(addr) (*reinterpret_cast<simd_value_t*>(addr))
-#define simd_value_safe_store(addr, value) \
- do { \
- reinterpret_cast<simd_value_t*>(addr)->data_[0] = value.data_[0]; \
- reinterpret_cast<simd_value_t*>(addr)->data_[1] = value.data_[1]; \
- reinterpret_cast<simd_value_t*>(addr)->data_[2] = value.data_[2]; \
- reinterpret_cast<simd_value_t*>(addr)->data_[3] = value.data_[3]; \
- } while (0)
-
#elif defined(__aarch64__)
#define HOST_ARCH_ARM64 1
#define ARCH_IS_64_BIT 1
-#define kFpuRegisterSize 16
-typedef simd128_value_t fpu_register_t;
#else
#error Architecture was not detected as supported by Dart.
#endif
diff --git a/runtime/vm/constants_arm.h b/runtime/vm/constants_arm.h
index c774203..94b214a 100644
--- a/runtime/vm/constants_arm.h
+++ b/runtime/vm/constants_arm.h
@@ -288,6 +288,8 @@
typedef QRegister FpuRegister;
const FpuRegister FpuTMP = QTMP;
+const int kFpuRegisterSize = 16;
+typedef simd128_value_t fpu_register_t;
const int kNumberOfFpuRegisters = kNumberOfQRegisters;
const FpuRegister kNoFpuRegister = kNoQRegister;
diff --git a/runtime/vm/constants_arm64.h b/runtime/vm/constants_arm64.h
index 7947a60..9e4213d 100644
--- a/runtime/vm/constants_arm64.h
+++ b/runtime/vm/constants_arm64.h
@@ -123,6 +123,8 @@
// Architecture independent aliases.
typedef VRegister FpuRegister;
const FpuRegister FpuTMP = VTMP;
+const int kFpuRegisterSize = 16;
+typedef simd128_value_t fpu_register_t;
const int kNumberOfFpuRegisters = kNumberOfVRegisters;
const FpuRegister kNoFpuRegister = kNoVRegister;
diff --git a/runtime/vm/constants_ia32.h b/runtime/vm/constants_ia32.h
index 4a497730..bac9dd5 100644
--- a/runtime/vm/constants_ia32.h
+++ b/runtime/vm/constants_ia32.h
@@ -61,6 +61,8 @@
// Architecture independent aliases.
typedef XmmRegister FpuRegister;
const FpuRegister FpuTMP = XMM7;
+const int kFpuRegisterSize = 16;
+typedef simd128_value_t fpu_register_t;
const int kNumberOfFpuRegisters = kNumberOfXmmRegisters;
const FpuRegister kNoFpuRegister = kNoXmmRegister;
diff --git a/runtime/vm/constants_x64.h b/runtime/vm/constants_x64.h
index 3e7f3c5..2bc9444 100644
--- a/runtime/vm/constants_x64.h
+++ b/runtime/vm/constants_x64.h
@@ -93,6 +93,8 @@
// Architecture independent aliases.
typedef XmmRegister FpuRegister;
const FpuRegister FpuTMP = XMM15;
+const int kFpuRegisterSize = 16;
+typedef simd128_value_t fpu_register_t;
const int kNumberOfFpuRegisters = kNumberOfXmmRegisters;
const FpuRegister kNoFpuRegister = kNoXmmRegister;
diff --git a/runtime/vm/simulator_arm.h b/runtime/vm/simulator_arm.h
index 8074d56..61beaec 100644
--- a/runtime/vm/simulator_arm.h
+++ b/runtime/vm/simulator_arm.h
@@ -25,14 +25,12 @@
class SimulatorSetjmpBuffer;
class Thread;
-#if !defined(SIMD_VALUE_T_)
typedef struct {
union {
uint32_t u;
float f;
} data_[4];
} simd_value_t;
-#endif
class Simulator {
public: