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

Side by Side Diff: test/cctest/wasm/test-run-wasm.cc

Issue 1843983002: [wasm] Fixed float-to-int conversion tests. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 8 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
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 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 <stdint.h> 5 #include <stdint.h>
6 #include <stdlib.h> 6 #include <stdlib.h>
7 #include <string.h> 7 #include <string.h>
8 8
9 #include "src/wasm/wasm-macro-gen.h" 9 #include "src/wasm/wasm-macro-gen.h"
10 10
(...skipping 2682 matching lines...) Expand 10 before | Expand all | Expand 10 after
2693 { 2693 {
2694 WasmRunner<double> r; 2694 WasmRunner<double> r;
2695 BUILD(r, WASM_F64_MAX(WASM_F64(45.73), 2695 BUILD(r, WASM_F64_MAX(WASM_F64(45.73),
2696 WASM_F64(bit_cast<double>(0x7ff000000000f1e2)))); 2696 WASM_F64(bit_cast<double>(0x7ff000000000f1e2))));
2697 CHECK_EQ(0x7ff800000000f1e2, bit_cast<uint64_t>(r.Call())); 2697 CHECK_EQ(0x7ff800000000f1e2, bit_cast<uint64_t>(r.Call()));
2698 } 2698 }
2699 } 2699 }
2700 2700
2701 #endif 2701 #endif
2702 2702
2703 // TODO(titzer): Fix and re-enable.
2704 #if 0
2705 TEST(Run_Wasm_I32SConvertF32) { 2703 TEST(Run_Wasm_I32SConvertF32) {
2706 WasmRunner<int32_t> r(MachineType::Float32()); 2704 WasmRunner<int32_t> r(MachineType::Float32());
2707 BUILD(r, WASM_I32_SCONVERT_F32(WASM_GET_LOCAL(0))); 2705 BUILD(r, WASM_I32_SCONVERT_F32(WASM_GET_LOCAL(0)));
2708 2706
2709 FOR_FLOAT32_INPUTS(i) { 2707 FOR_FLOAT32_INPUTS(i) {
2710 if (*i < static_cast<float>(INT32_MAX) && 2708 if (*i < static_cast<float>(INT32_MAX) &&
2711 *i >= static_cast<float>(INT32_MIN)) { 2709 *i >= static_cast<float>(INT32_MIN)) {
2712 CHECK_EQ(static_cast<int32_t>(*i), r.Call(*i)); 2710 CHECK_EQ(static_cast<int32_t>(*i), r.Call(*i));
2713 } else { 2711 } else {
2714 CHECK_TRAP32(r.Call(*i)); 2712 CHECK_TRAP32(r.Call(*i));
2715 } 2713 }
2716 } 2714 }
2717 } 2715 }
2718 2716
2719 2717
2720 TEST(Run_Wasm_I32SConvertF64) { 2718 TEST(Run_Wasm_I32SConvertF64) {
2721 WasmRunner<int32_t> r(MachineType::Float64()); 2719 WasmRunner<int32_t> r(MachineType::Float64());
2722 BUILD(r, WASM_I32_SCONVERT_F64(WASM_GET_LOCAL(0))); 2720 BUILD(r, WASM_I32_SCONVERT_F64(WASM_GET_LOCAL(0)));
2723 2721
2724 FOR_FLOAT64_INPUTS(i) { 2722 FOR_FLOAT64_INPUTS(i) {
2725 if (*i < static_cast<double>(INT32_MAX) && 2723 if (*i < (static_cast<double>(INT32_MAX) + 1.0) &&
2726 *i >= static_cast<double>(INT32_MIN)) { 2724 *i > (static_cast<double>(INT32_MIN) - 1.0)) {
2727 CHECK_EQ(static_cast<int64_t>(*i), r.Call(*i)); 2725 CHECK_EQ(static_cast<int64_t>(*i), r.Call(*i));
2728 } else { 2726 } else {
2729 CHECK_TRAP32(r.Call(*i)); 2727 CHECK_TRAP32(r.Call(*i));
2730 } 2728 }
2731 } 2729 }
2732 } 2730 }
2733 2731
2734 2732
2735 TEST(Run_Wasm_I32UConvertF32) { 2733 TEST(Run_Wasm_I32UConvertF32) {
2736 WasmRunner<uint32_t> r(MachineType::Float32()); 2734 WasmRunner<uint32_t> r(MachineType::Float32());
2737 BUILD(r, WASM_I32_UCONVERT_F32(WASM_GET_LOCAL(0))); 2735 BUILD(r, WASM_I32_UCONVERT_F32(WASM_GET_LOCAL(0)));
2738 2736
2739 FOR_FLOAT32_INPUTS(i) { 2737 FOR_FLOAT32_INPUTS(i) {
2740 if (*i < static_cast<float>(UINT32_MAX) && *i > -1) { 2738 if (*i < (static_cast<float>(UINT32_MAX) + 1.0) && *i > -1) {
2741 CHECK_EQ(static_cast<uint32_t>(*i), r.Call(*i)); 2739 CHECK_EQ(static_cast<uint32_t>(*i), r.Call(*i));
2742 } else { 2740 } else {
2743 CHECK_TRAP32(r.Call(*i)); 2741 CHECK_TRAP32(r.Call(*i));
2744 } 2742 }
2745 } 2743 }
2746 } 2744 }
2747 2745
2748 2746
2749 TEST(Run_Wasm_I32UConvertF64) { 2747 TEST(Run_Wasm_I32UConvertF64) {
2750 WasmRunner<uint32_t> r(MachineType::Float64()); 2748 WasmRunner<uint32_t> r(MachineType::Float64());
2751 BUILD(r, WASM_I32_UCONVERT_F64(WASM_GET_LOCAL(0))); 2749 BUILD(r, WASM_I32_UCONVERT_F64(WASM_GET_LOCAL(0)));
2752 2750
2753 FOR_FLOAT64_INPUTS(i) { 2751 FOR_FLOAT64_INPUTS(i) {
2754 if (*i < static_cast<float>(UINT32_MAX) && *i > -1) { 2752 if (*i < (static_cast<float>(UINT32_MAX) + 1.0) && *i > -1) {
2755 CHECK_EQ(static_cast<uint32_t>(*i), r.Call(*i)); 2753 CHECK_EQ(static_cast<uint32_t>(*i), r.Call(*i));
2756 } else { 2754 } else {
2757 CHECK_TRAP32(r.Call(*i)); 2755 CHECK_TRAP32(r.Call(*i));
2758 } 2756 }
2759 } 2757 }
2760 } 2758 }
2761 #endif
2762
2763 2759
2764 TEST(Run_Wasm_F64CopySign) { 2760 TEST(Run_Wasm_F64CopySign) {
2765 WasmRunner<double> r(MachineType::Float64(), MachineType::Float64()); 2761 WasmRunner<double> r(MachineType::Float64(), MachineType::Float64());
2766 BUILD(r, WASM_F64_COPYSIGN(WASM_GET_LOCAL(0), WASM_GET_LOCAL(1))); 2762 BUILD(r, WASM_F64_COPYSIGN(WASM_GET_LOCAL(0), WASM_GET_LOCAL(1)));
2767 2763
2768 FOR_FLOAT64_INPUTS(i) { 2764 FOR_FLOAT64_INPUTS(i) {
2769 FOR_FLOAT64_INPUTS(j) { CHECK_DOUBLE_EQ(copysign(*i, *j), r.Call(*i, *j)); } 2765 FOR_FLOAT64_INPUTS(j) { CHECK_DOUBLE_EQ(copysign(*i, *j), r.Call(*i, *j)); }
2770 } 2766 }
2771 } 2767 }
2772 2768
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
2814 2810
2815 #if WASM_64 2811 #if WASM_64
2816 TEST(Compile_Wasm_CallIndirect_Many_i64) { CompileCallIndirectMany(kAstI64); } 2812 TEST(Compile_Wasm_CallIndirect_Many_i64) { CompileCallIndirectMany(kAstI64); }
2817 #endif 2813 #endif
2818 2814
2819 2815
2820 TEST(Compile_Wasm_CallIndirect_Many_f32) { CompileCallIndirectMany(kAstF32); } 2816 TEST(Compile_Wasm_CallIndirect_Many_f32) { CompileCallIndirectMany(kAstF32); }
2821 2817
2822 2818
2823 TEST(Compile_Wasm_CallIndirect_Many_f64) { CompileCallIndirectMany(kAstF64); } 2819 TEST(Compile_Wasm_CallIndirect_Many_f64) { CompileCallIndirectMany(kAstF64); }
OLDNEW
« src/compiler/x64/instruction-selector-x64.cc ('K') | « src/compiler/x87/instruction-selector-x87.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698