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 1302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1313 WASM_I8(52))); // -- | 1313 WASM_I8(52))); // -- |
1314 FOR_INT32_INPUTS(i) { | 1314 FOR_INT32_INPUTS(i) { |
1315 int32_t expected = *i ? 51 : 52; | 1315 int32_t expected = *i ? 51 : 52; |
1316 CHECK_EQ(expected, r.Call(*i)); | 1316 CHECK_EQ(expected, r.Call(*i)); |
1317 } | 1317 } |
1318 } | 1318 } |
1319 | 1319 |
1320 | 1320 |
1321 TEST(Run_Wasm_Block_BrIf_P) { | 1321 TEST(Run_Wasm_Block_BrIf_P) { |
1322 WasmRunner<int32_t> r(MachineType::Int32()); | 1322 WasmRunner<int32_t> r(MachineType::Int32()); |
1323 BUILD(r, WASM_BLOCK(2, WASM_BRV_IF(0, WASM_GET_LOCAL(0), WASM_I8(51)), | 1323 BUILD(r, WASM_BLOCK(2, WASM_BRV_IF(0, WASM_I8(51), WASM_GET_LOCAL(0)), |
1324 WASM_I8(52))); | 1324 WASM_I8(52))); |
1325 FOR_INT32_INPUTS(i) { | 1325 FOR_INT32_INPUTS(i) { |
1326 int32_t expected = *i ? 51 : 52; | 1326 int32_t expected = *i ? 51 : 52; |
1327 CHECK_EQ(expected, r.Call(*i)); | 1327 CHECK_EQ(expected, r.Call(*i)); |
1328 } | 1328 } |
1329 } | 1329 } |
1330 | 1330 |
1331 | 1331 |
1332 TEST(Run_Wasm_Block_IfElse_P_assign) { | 1332 TEST(Run_Wasm_Block_IfElse_P_assign) { |
1333 WasmRunner<int32_t> r(MachineType::Int32()); | 1333 WasmRunner<int32_t> r(MachineType::Int32()); |
(...skipping 713 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2047 BUILD(r, | 2047 BUILD(r, |
2048 WASM_BLOCK(1, WASM_IF_ELSE(WASM_GET_LOCAL(0), WASM_BRV(0, WASM_I8(45)), | 2048 WASM_BLOCK(1, WASM_IF_ELSE(WASM_GET_LOCAL(0), WASM_BRV(0, WASM_I8(45)), |
2049 WASM_INFINITE_LOOP))); | 2049 WASM_INFINITE_LOOP))); |
2050 // Run the code, but don't go into the infinite loop. | 2050 // Run the code, but don't go into the infinite loop. |
2051 CHECK_EQ(45, r.Call(1)); | 2051 CHECK_EQ(45, r.Call(1)); |
2052 } | 2052 } |
2053 | 2053 |
2054 | 2054 |
2055 TEST(Run_Wasm_Infinite_Loop_not_taken2_brif) { | 2055 TEST(Run_Wasm_Infinite_Loop_not_taken2_brif) { |
2056 WasmRunner<int32_t> r(MachineType::Int32()); | 2056 WasmRunner<int32_t> r(MachineType::Int32()); |
2057 BUILD(r, WASM_BLOCK(2, WASM_BRV_IF(0, WASM_GET_LOCAL(0), WASM_I8(45)), | 2057 BUILD(r, WASM_BLOCK(2, WASM_BRV_IF(0, WASM_I8(45), WASM_GET_LOCAL(0)), |
2058 WASM_INFINITE_LOOP)); | 2058 WASM_INFINITE_LOOP)); |
2059 // Run the code, but don't go into the infinite loop. | 2059 // Run the code, but don't go into the infinite loop. |
2060 CHECK_EQ(45, r.Call(1)); | 2060 CHECK_EQ(45, r.Call(1)); |
2061 } | 2061 } |
2062 | 2062 |
2063 | 2063 |
2064 static void TestBuildGraphForSimpleExpression(WasmOpcode opcode) { | 2064 static void TestBuildGraphForSimpleExpression(WasmOpcode opcode) { |
2065 if (!WasmOpcodes::IsSupported(opcode)) return; | 2065 if (!WasmOpcodes::IsSupported(opcode)) return; |
2066 | 2066 |
2067 Zone zone; | 2067 Zone zone; |
(...skipping 650 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2718 WasmRunner<int32_t> r(MachineType::Int32()); | 2718 WasmRunner<int32_t> r(MachineType::Int32()); |
2719 BUILD(r, WASM_BLOCK(2, WASM_IF(WASM_GET_LOCAL(0), WASM_BRV(0, WASM_I8(1))), | 2719 BUILD(r, WASM_BLOCK(2, WASM_IF(WASM_GET_LOCAL(0), WASM_BRV(0, WASM_I8(1))), |
2720 WASM_I8(2))); | 2720 WASM_I8(2))); |
2721 CHECK_EQ(2, r.Call(0)); | 2721 CHECK_EQ(2, r.Call(0)); |
2722 CHECK_EQ(1, r.Call(1)); | 2722 CHECK_EQ(1, r.Call(1)); |
2723 } | 2723 } |
2724 | 2724 |
2725 | 2725 |
2726 TEST(Run_Wasm_ExprBlock2c) { | 2726 TEST(Run_Wasm_ExprBlock2c) { |
2727 WasmRunner<int32_t> r(MachineType::Int32()); | 2727 WasmRunner<int32_t> r(MachineType::Int32()); |
2728 BUILD(r, WASM_BLOCK(2, WASM_BRV_IF(0, WASM_GET_LOCAL(0), WASM_I8(1)), | 2728 BUILD(r, WASM_BLOCK(2, WASM_BRV_IF(0, WASM_I8(1), WASM_GET_LOCAL(0)), |
2729 WASM_I8(1))); | 2729 WASM_I8(1))); |
2730 CHECK_EQ(1, r.Call(0)); | 2730 CHECK_EQ(1, r.Call(0)); |
2731 CHECK_EQ(1, r.Call(1)); | 2731 CHECK_EQ(1, r.Call(1)); |
2732 } | 2732 } |
2733 | 2733 |
2734 | 2734 |
2735 TEST(Run_Wasm_ExprBlock2d) { | 2735 TEST(Run_Wasm_ExprBlock2d) { |
2736 WasmRunner<int32_t> r(MachineType::Int32()); | 2736 WasmRunner<int32_t> r(MachineType::Int32()); |
2737 BUILD(r, WASM_BLOCK(2, WASM_BRV_IF(0, WASM_GET_LOCAL(0), WASM_I8(1)), | 2737 BUILD(r, WASM_BLOCK(2, WASM_BRV_IF(0, WASM_I8(1), WASM_GET_LOCAL(0)), |
2738 WASM_I8(2))); | 2738 WASM_I8(2))); |
2739 CHECK_EQ(2, r.Call(0)); | 2739 CHECK_EQ(2, r.Call(0)); |
2740 CHECK_EQ(1, r.Call(1)); | 2740 CHECK_EQ(1, r.Call(1)); |
2741 } | 2741 } |
2742 | 2742 |
2743 | 2743 |
2744 TEST(Run_Wasm_ExprBlock_ManualSwitch) { | 2744 TEST(Run_Wasm_ExprBlock_ManualSwitch) { |
2745 WasmRunner<int32_t> r(MachineType::Int32()); | 2745 WasmRunner<int32_t> r(MachineType::Int32()); |
2746 BUILD(r, WASM_BLOCK(6, WASM_IF(WASM_I32_EQ(WASM_GET_LOCAL(0), WASM_I8(1)), | 2746 BUILD(r, WASM_BLOCK(6, WASM_IF(WASM_I32_EQ(WASM_GET_LOCAL(0), WASM_I8(1)), |
2747 WASM_BRV(0, WASM_I8(11))), | 2747 WASM_BRV(0, WASM_I8(11))), |
(...skipping 12 matching lines...) Expand all Loading... |
2760 CHECK_EQ(13, r.Call(3)); | 2760 CHECK_EQ(13, r.Call(3)); |
2761 CHECK_EQ(14, r.Call(4)); | 2761 CHECK_EQ(14, r.Call(4)); |
2762 CHECK_EQ(15, r.Call(5)); | 2762 CHECK_EQ(15, r.Call(5)); |
2763 CHECK_EQ(99, r.Call(6)); | 2763 CHECK_EQ(99, r.Call(6)); |
2764 } | 2764 } |
2765 | 2765 |
2766 | 2766 |
2767 TEST(Run_Wasm_ExprBlock_ManualSwitch_brif) { | 2767 TEST(Run_Wasm_ExprBlock_ManualSwitch_brif) { |
2768 WasmRunner<int32_t> r(MachineType::Int32()); | 2768 WasmRunner<int32_t> r(MachineType::Int32()); |
2769 BUILD(r, | 2769 BUILD(r, |
2770 WASM_BLOCK(6, WASM_BRV_IF(0, WASM_I32_EQ(WASM_GET_LOCAL(0), WASM_I8(1)), | 2770 WASM_BLOCK(6, WASM_BRV_IF(0, WASM_I8(11), |
2771 WASM_I8(11)), | 2771 WASM_I32_EQ(WASM_GET_LOCAL(0), WASM_I8(1))), |
2772 WASM_BRV_IF(0, WASM_I32_EQ(WASM_GET_LOCAL(0), WASM_I8(2)), | 2772 WASM_BRV_IF(0, WASM_I8(12), |
2773 WASM_I8(12)), | 2773 WASM_I32_EQ(WASM_GET_LOCAL(0), WASM_I8(2))), |
2774 WASM_BRV_IF(0, WASM_I32_EQ(WASM_GET_LOCAL(0), WASM_I8(3)), | 2774 WASM_BRV_IF(0, WASM_I8(13), |
2775 WASM_I8(13)), | 2775 WASM_I32_EQ(WASM_GET_LOCAL(0), WASM_I8(3))), |
2776 WASM_BRV_IF(0, WASM_I32_EQ(WASM_GET_LOCAL(0), WASM_I8(4)), | 2776 WASM_BRV_IF(0, WASM_I8(14), |
2777 WASM_I8(14)), | 2777 WASM_I32_EQ(WASM_GET_LOCAL(0), WASM_I8(4))), |
2778 WASM_BRV_IF(0, WASM_I32_EQ(WASM_GET_LOCAL(0), WASM_I8(5)), | 2778 WASM_BRV_IF(0, WASM_I8(15), |
2779 WASM_I8(15)), | 2779 WASM_I32_EQ(WASM_GET_LOCAL(0), WASM_I8(5))), |
2780 WASM_I8(99))); | 2780 WASM_I8(99))); |
2781 CHECK_EQ(99, r.Call(0)); | 2781 CHECK_EQ(99, r.Call(0)); |
2782 CHECK_EQ(11, r.Call(1)); | 2782 CHECK_EQ(11, r.Call(1)); |
2783 CHECK_EQ(12, r.Call(2)); | 2783 CHECK_EQ(12, r.Call(2)); |
2784 CHECK_EQ(13, r.Call(3)); | 2784 CHECK_EQ(13, r.Call(3)); |
2785 CHECK_EQ(14, r.Call(4)); | 2785 CHECK_EQ(14, r.Call(4)); |
2786 CHECK_EQ(15, r.Call(5)); | 2786 CHECK_EQ(15, r.Call(5)); |
2787 CHECK_EQ(99, r.Call(6)); | 2787 CHECK_EQ(99, r.Call(6)); |
2788 } | 2788 } |
2789 | 2789 |
(...skipping 633 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3423 | 3423 |
3424 #if WASM_64 | 3424 #if WASM_64 |
3425 TEST(Compile_Wasm_CallIndirect_Many_i64) { CompileCallIndirectMany(kAstI64); } | 3425 TEST(Compile_Wasm_CallIndirect_Many_i64) { CompileCallIndirectMany(kAstI64); } |
3426 #endif | 3426 #endif |
3427 | 3427 |
3428 | 3428 |
3429 TEST(Compile_Wasm_CallIndirect_Many_f32) { CompileCallIndirectMany(kAstF32); } | 3429 TEST(Compile_Wasm_CallIndirect_Many_f32) { CompileCallIndirectMany(kAstF32); } |
3430 | 3430 |
3431 | 3431 |
3432 TEST(Compile_Wasm_CallIndirect_Many_f64) { CompileCallIndirectMany(kAstF64); } | 3432 TEST(Compile_Wasm_CallIndirect_Many_f64) { CompileCallIndirectMany(kAstF64); } |
OLD | NEW |