| OLD | NEW |
| 1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <math.h> | 5 #include <math.h> |
| 6 #include <stdint.h> | 6 #include <stdint.h> |
| 7 #include <stdlib.h> | 7 #include <stdlib.h> |
| 8 #include <limits> | 8 #include <limits> |
| 9 | 9 |
| 10 #include "include/v8config.h" | 10 #include "include/v8config.h" |
| 11 | 11 |
| 12 #include "src/base/bits.h" | 12 #include "src/base/bits.h" |
| 13 #include "src/utils.h" | 13 #include "src/utils.h" |
| 14 #include "src/wasm/wasm-external-refs.h" | 14 #include "src/wasm/wasm-external-refs.h" |
| 15 | 15 |
| 16 namespace v8 { | 16 namespace v8 { |
| 17 namespace internal { | 17 namespace internal { |
| 18 namespace wasm { | 18 namespace wasm { |
| 19 | 19 |
| 20 void f32_trunc_wrapper(float* param) { *param = truncf(*param); } | 20 void f32_trunc_wrapper(float* param) { *param = truncf(*param); } |
| 21 | 21 |
| 22 void f32_floor_wrapper(float* param) { *param = floorf(*param); } | 22 void f32_floor_wrapper(float* param) { *param = floorf(*param); } |
| 23 | 23 |
| 24 void f32_ceil_wrapper(float* param) { *param = ceilf(*param); } | 24 void f32_ceil_wrapper(float* param) { *param = ceilf(*param); } |
| 25 | 25 |
| 26 void f32_nearest_int_wrapper(float* param) { *param = nearbyintf(*param); } | 26 void f32_nearest_int_wrapper(float* param) { *param = nearbyintf(*param); } |
| 27 | 27 |
| 28 void f64_trunc_wrapper(double* param) { *param = trunc(*param); } | 28 void f64_trunc_wrapper(double* param) { |
| 29 WriteDoubleValue(param, trunc(ReadDoubleValue(param))); |
| 30 } |
| 29 | 31 |
| 30 void f64_floor_wrapper(double* param) { *param = floor(*param); } | 32 void f64_floor_wrapper(double* param) { |
| 33 WriteDoubleValue(param, floor(ReadDoubleValue(param))); |
| 34 } |
| 31 | 35 |
| 32 void f64_ceil_wrapper(double* param) { *param = ceil(*param); } | 36 void f64_ceil_wrapper(double* param) { |
| 37 WriteDoubleValue(param, ceil(ReadDoubleValue(param))); |
| 38 } |
| 33 | 39 |
| 34 void f64_nearest_int_wrapper(double* param) { *param = nearbyint(*param); } | 40 void f64_nearest_int_wrapper(double* param) { |
| 41 WriteDoubleValue(param, nearbyint(ReadDoubleValue(param))); |
| 42 } |
| 35 | 43 |
| 36 void int64_to_float32_wrapper(int64_t* input, float* output) { | 44 void int64_to_float32_wrapper(int64_t* input, float* output) { |
| 37 *output = static_cast<float>(*input); | 45 *output = static_cast<float>(*input); |
| 38 } | 46 } |
| 39 | 47 |
| 40 void uint64_to_float32_wrapper(uint64_t* input, float* output) { | 48 void uint64_to_float32_wrapper(uint64_t* input, float* output) { |
| 41 #if V8_CC_MSVC | 49 #if V8_CC_MSVC |
| 42 // With MSVC we use static_cast<float>(uint32_t) instead of | 50 // With MSVC we use static_cast<float>(uint32_t) instead of |
| 43 // static_cast<float>(uint64_t) to achieve round-to-nearest-ties-even | 51 // static_cast<float>(uint64_t) to achieve round-to-nearest-ties-even |
| 44 // semantics. The idea is to calculate | 52 // semantics. The idea is to calculate |
| (...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 199 double x = ReadDoubleValue(param0); | 207 double x = ReadDoubleValue(param0); |
| 200 double y = ReadDoubleValue(param1); | 208 double y = ReadDoubleValue(param1); |
| 201 if (std::isnan(y) || ((x == 1 || x == -1) && std::isinf(y))) { | 209 if (std::isnan(y) || ((x == 1 || x == -1) && std::isinf(y))) { |
| 202 WriteDoubleValue(param0, std::numeric_limits<double>::quiet_NaN()); | 210 WriteDoubleValue(param0, std::numeric_limits<double>::quiet_NaN()); |
| 203 } | 211 } |
| 204 WriteDoubleValue(param0, Pow(x, y)); | 212 WriteDoubleValue(param0, Pow(x, y)); |
| 205 } | 213 } |
| 206 } // namespace wasm | 214 } // namespace wasm |
| 207 } // namespace internal | 215 } // namespace internal |
| 208 } // namespace v8 | 216 } // namespace v8 |
| OLD | NEW |