| Index: runtime/platform/globals.h | 
| diff --git a/runtime/platform/globals.h b/runtime/platform/globals.h | 
| index 9e27506dd2b77ee001cd26958b8115a8b7753345..52adc16c79a292a586e918f525a852a65ddf28d3 100644 | 
| --- a/runtime/platform/globals.h | 
| +++ b/runtime/platform/globals.h | 
| @@ -73,20 +73,22 @@ | 
| #endif | 
|  | 
| struct simd128_value_t { | 
| -  float storage[4]; | 
| +  union { | 
| +    float float_storage[4]; | 
| +    int32_t int_storage[4]; | 
| +  }; | 
| simd128_value_t& readFrom(const float* v) { | 
| -    storage[0] = v[0]; | 
| -    storage[1] = v[1]; | 
| -    storage[2] = v[2]; | 
| -    storage[3] = v[3]; | 
| +    float_storage[0] = v[0]; | 
| +    float_storage[1] = v[1]; | 
| +    float_storage[2] = v[2]; | 
| +    float_storage[3] = v[3]; | 
| return *this; | 
| } | 
| simd128_value_t& readFrom(const int32_t* v) { | 
| -    const float* vv = reinterpret_cast<const float*>(v); | 
| -    storage[0] = vv[0]; | 
| -    storage[1] = vv[1]; | 
| -    storage[2] = vv[2]; | 
| -    storage[3] = vv[3]; | 
| +    int_storage[0] = v[0]; | 
| +    int_storage[1] = v[1]; | 
| +    int_storage[2] = v[2]; | 
| +    int_storage[3] = v[3]; | 
| return *this; | 
| } | 
| simd128_value_t& readFrom(const simd128_value_t* v) { | 
| @@ -94,17 +96,16 @@ struct simd128_value_t { | 
| return *this; | 
| } | 
| void writeTo(float* v) { | 
| -    v[0] = storage[0]; | 
| -    v[1] = storage[1]; | 
| -    v[2] = storage[2]; | 
| -    v[3] = storage[3]; | 
| +    v[0] = float_storage[0]; | 
| +    v[1] = float_storage[1]; | 
| +    v[2] = float_storage[2]; | 
| +    v[3] = float_storage[3]; | 
| } | 
| void writeTo(int32_t* v) { | 
| -    float* vv = reinterpret_cast<float*>(v); | 
| -    vv[0] = storage[0]; | 
| -    vv[1] = storage[1]; | 
| -    vv[2] = storage[2]; | 
| -    vv[3] = storage[3]; | 
| +    v[0] = int_storage[0]; | 
| +    v[1] = int_storage[1]; | 
| +    v[2] = int_storage[2]; | 
| +    v[3] = int_storage[3]; | 
| } | 
| void writeTo(simd128_value_t* v) { | 
| *v = *this; | 
|  |