Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(69)

Side by Side Diff: test/cctest/compiler/test-run-calls-to-external-references.cc

Issue 1775903002: [wasm] Int64Lowering of I64XConvertFXX instructions. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: rebase Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/wasm/wasm-external-refs.h ('k') | test/cctest/wasm/test-run-wasm.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "test/cctest/cctest.h" 5 #include "test/cctest/cctest.h"
6 #include "test/cctest/compiler/codegen-tester.h" 6 #include "test/cctest/compiler/codegen-tester.h"
7 #include "test/cctest/compiler/value-helper.h" 7 #include "test/cctest/compiler/value-helper.h"
8 8
9 namespace v8 { 9 namespace v8 {
10 namespace internal { 10 namespace internal {
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 m.PointerConstant(&output)); 324 m.PointerConstant(&output));
325 m.Return(m.Int32Constant(4356)); 325 m.Return(m.Int32Constant(4356));
326 326
327 for (size_t i = 0; i < arraysize(values); i++) { 327 for (size_t i = 0; i < arraysize(values); i++) {
328 input = values[i].input; 328 input = values[i].input;
329 m.Call(); 329 m.Call();
330 CHECK_EQ(values[i].expected, bit_cast<uint64_t>(output)); 330 CHECK_EQ(values[i].expected, bit_cast<uint64_t>(output));
331 } 331 }
332 } 332 }
333 333
334 TEST(RunCallFloat32ToInt64) {
335 BufferedRawMachineAssemblerTester<int32_t> m;
336 ExternalReference ref = ExternalReference::wasm_float32_to_int64(m.isolate());
337
338 float input;
339 int64_t output;
340
341 Node* function = m.ExternalConstant(ref);
342 m.Return(m.CallCFunction2(
343 MachineType::Int32(), MachineType::Pointer(), MachineType::Pointer(),
344 function, m.PointerConstant(&input), m.PointerConstant(&output)));
345 FOR_FLOAT32_INPUTS(i) {
346 input = *i;
347 if (*i >= static_cast<float>(std::numeric_limits<int64_t>::min()) &&
348 *i < static_cast<float>(std::numeric_limits<int64_t>::max())) {
349 CHECK_EQ(1, m.Call());
350 CHECK_EQ(static_cast<int64_t>(*i), output);
351 } else {
352 CHECK_EQ(0, m.Call());
353 }
354 }
355 }
356
357 TEST(RunCallFloat32ToUint64) {
358 BufferedRawMachineAssemblerTester<int32_t> m;
359 ExternalReference ref =
360 ExternalReference::wasm_float32_to_uint64(m.isolate());
361
362 float input;
363 uint64_t output;
364
365 Node* function = m.ExternalConstant(ref);
366 m.Return(m.CallCFunction2(
367 MachineType::Int32(), MachineType::Pointer(), MachineType::Pointer(),
368 function, m.PointerConstant(&input), m.PointerConstant(&output)));
369 FOR_FLOAT32_INPUTS(i) {
370 input = *i;
371 if (*i > -1.0 &&
372 *i < static_cast<float>(std::numeric_limits<uint64_t>::max())) {
373 CHECK_EQ(1, m.Call());
374 CHECK_EQ(static_cast<uint64_t>(*i), output);
375 } else {
376 CHECK_EQ(0, m.Call());
377 }
378 }
379 }
380
381 TEST(RunCallFloat64ToInt64) {
382 BufferedRawMachineAssemblerTester<int32_t> m;
383 ExternalReference ref = ExternalReference::wasm_float64_to_int64(m.isolate());
384
385 double input;
386 int64_t output;
387
388 Node* function = m.ExternalConstant(ref);
389 m.Return(m.CallCFunction2(
390 MachineType::Int32(), MachineType::Pointer(), MachineType::Pointer(),
391 function, m.PointerConstant(&input), m.PointerConstant(&output)));
392 FOR_FLOAT64_INPUTS(i) {
393 input = *i;
394 if (*i >= static_cast<double>(std::numeric_limits<int64_t>::min()) &&
395 *i < static_cast<double>(std::numeric_limits<int64_t>::max())) {
396 CHECK_EQ(1, m.Call());
397 CHECK_EQ(static_cast<int64_t>(*i), output);
398 } else {
399 CHECK_EQ(0, m.Call());
400 }
401 }
402 }
403
404 TEST(RunCallFloat64ToUint64) {
405 BufferedRawMachineAssemblerTester<int32_t> m;
406 ExternalReference ref =
407 ExternalReference::wasm_float64_to_uint64(m.isolate());
408
409 double input;
410 uint64_t output;
411
412 Node* function = m.ExternalConstant(ref);
413 m.Return(m.CallCFunction2(
414 MachineType::Int32(), MachineType::Pointer(), MachineType::Pointer(),
415 function, m.PointerConstant(&input), m.PointerConstant(&output)));
416 FOR_FLOAT64_INPUTS(i) {
417 input = *i;
418 if (*i > -1.0 &&
419 *i < static_cast<double>(std::numeric_limits<uint64_t>::max())) {
420 CHECK_EQ(1, m.Call());
421 CHECK_EQ(static_cast<uint64_t>(*i), output);
422 } else {
423 CHECK_EQ(0, m.Call());
424 }
425 }
426 }
334 } // namespace compiler 427 } // namespace compiler
335 } // namespace internal 428 } // namespace internal
336 } // namespace v8 429 } // namespace v8
OLDNEW
« no previous file with comments | « src/wasm/wasm-external-refs.h ('k') | test/cctest/wasm/test-run-wasm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698