| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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); } |
| OLD | NEW |