| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. Use of this | 1 // Copyright 2014 the V8 project authors. All rights reserved. Use of this |
| 2 // source code is governed by a BSD-style license that can be found in the | 2 // source code is governed by a BSD-style license that can be found in the |
| 3 // LICENSE file. | 3 // LICENSE file. |
| 4 | 4 |
| 5 #include <cmath> | 5 #include <cmath> |
| 6 #include <functional> | 6 #include <functional> |
| 7 #include <limits> | 7 #include <limits> |
| 8 | 8 |
| 9 #include "src/base/bits.h" | 9 #include "src/base/bits.h" |
| 10 #include "src/base/utils/random-number-generator.h" | 10 #include "src/base/utils/random-number-generator.h" |
| (...skipping 5305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5316 m.Return(m.TruncateInt64ToInt32( | 5316 m.Return(m.TruncateInt64ToInt32( |
| 5317 m.LoadFromPointer(&expected, MachineType::Int64()))); | 5317 m.LoadFromPointer(&expected, MachineType::Int64()))); |
| 5318 FOR_UINT32_INPUTS(i) { | 5318 FOR_UINT32_INPUTS(i) { |
| 5319 FOR_UINT32_INPUTS(j) { | 5319 FOR_UINT32_INPUTS(j) { |
| 5320 expected = (static_cast<uint64_t>(*j) << 32) | *i; | 5320 expected = (static_cast<uint64_t>(*j) << 32) | *i; |
| 5321 CHECK_EQ(static_cast<int32_t>(expected), m.Call()); | 5321 CHECK_EQ(static_cast<int32_t>(expected), m.Call()); |
| 5322 } | 5322 } |
| 5323 } | 5323 } |
| 5324 } | 5324 } |
| 5325 | 5325 |
| 5326 | 5326 TEST(RunTruncateFloat64ToWord32P) { |
| 5327 TEST(RunTruncateFloat64ToInt32P) { | |
| 5328 struct { | 5327 struct { |
| 5329 double from; | 5328 double from; |
| 5330 double raw; | 5329 double raw; |
| 5331 } kValues[] = {{0, 0}, | 5330 } kValues[] = {{0, 0}, |
| 5332 {0.5, 0}, | 5331 {0.5, 0}, |
| 5333 {-0.5, 0}, | 5332 {-0.5, 0}, |
| 5334 {1.5, 1}, | 5333 {1.5, 1}, |
| 5335 {-1.5, -1}, | 5334 {-1.5, -1}, |
| 5336 {5.5, 5}, | 5335 {5.5, 5}, |
| 5337 {-5.0, -5}, | 5336 {-5.0, -5}, |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5378 {9.6714157802890681e+24, -2147483648.0}, | 5377 {9.6714157802890681e+24, -2147483648.0}, |
| 5379 {-9.6714157802890681e+24, -2147483648.0}, | 5378 {-9.6714157802890681e+24, -2147483648.0}, |
| 5380 {1.9342813113834065e+25, 2147483648.0}, | 5379 {1.9342813113834065e+25, 2147483648.0}, |
| 5381 {-1.9342813113834065e+25, 2147483648.0}, | 5380 {-1.9342813113834065e+25, 2147483648.0}, |
| 5382 {3.868562622766813e+25, 0}, | 5381 {3.868562622766813e+25, 0}, |
| 5383 {-3.868562622766813e+25, 0}, | 5382 {-3.868562622766813e+25, 0}, |
| 5384 {1.7976931348623157e+308, 0}, | 5383 {1.7976931348623157e+308, 0}, |
| 5385 {-1.7976931348623157e+308, 0}}; | 5384 {-1.7976931348623157e+308, 0}}; |
| 5386 double input = -1.0; | 5385 double input = -1.0; |
| 5387 RawMachineAssemblerTester<int32_t> m; | 5386 RawMachineAssemblerTester<int32_t> m; |
| 5388 m.Return(m.TruncateFloat64ToInt32( | 5387 m.Return(m.TruncateFloat64ToWord32( |
| 5389 TruncationMode::kJavaScript, | |
| 5390 m.LoadFromPointer(&input, MachineType::Float64()))); | 5388 m.LoadFromPointer(&input, MachineType::Float64()))); |
| 5391 for (size_t i = 0; i < arraysize(kValues); ++i) { | 5389 for (size_t i = 0; i < arraysize(kValues); ++i) { |
| 5392 input = kValues[i].from; | 5390 input = kValues[i].from; |
| 5393 uint64_t expected = static_cast<int64_t>(kValues[i].raw); | 5391 uint64_t expected = static_cast<int64_t>(kValues[i].raw); |
| 5394 CHECK_EQ(static_cast<int>(expected), m.Call()); | 5392 CHECK_EQ(static_cast<int>(expected), m.Call()); |
| 5395 } | 5393 } |
| 5396 } | 5394 } |
| 5397 | 5395 |
| 5398 | 5396 |
| 5399 TEST(RunChangeFloat32ToFloat64) { | 5397 TEST(RunChangeFloat32ToFloat64) { |
| (...skipping 842 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6242 r.Goto(&merge); | 6240 r.Goto(&merge); |
| 6243 r.Bind(&merge); | 6241 r.Bind(&merge); |
| 6244 Node* phi = r.Phi(MachineRepresentation::kWord32, fa, fb); | 6242 Node* phi = r.Phi(MachineRepresentation::kWord32, fa, fb); |
| 6245 r.Return(phi); | 6243 r.Return(phi); |
| 6246 CHECK_EQ(1, r.Call(1)); | 6244 CHECK_EQ(1, r.Call(1)); |
| 6247 } | 6245 } |
| 6248 | 6246 |
| 6249 } // namespace compiler | 6247 } // namespace compiler |
| 6250 } // namespace internal | 6248 } // namespace internal |
| 6251 } // namespace v8 | 6249 } // namespace v8 |
| OLD | NEW |