Chromium Code Reviews| Index: test/cctest/wasm/test-run-wasm.cc |
| diff --git a/test/cctest/wasm/test-run-wasm.cc b/test/cctest/wasm/test-run-wasm.cc |
| index 93b9647a34fc0e70dfa8663da65fabdceff1e436..ddd19f3435fe956d76f93e2d17ce1212fe3b0832 100644 |
| --- a/test/cctest/wasm/test-run-wasm.cc |
| +++ b/test/cctest/wasm/test-run-wasm.cc |
| @@ -18,6 +18,12 @@ using namespace v8::internal; |
| using namespace v8::internal::compiler; |
| using namespace v8::internal::wasm; |
| +// for even shorter tests. |
| +#define B2(a, b) kExprBlock, 2, a, b |
|
binji
2016/03/04 00:04:17
imagine if we could package an argument in the opc
|
| +#define B1(a) kExprBlock, 1, a |
| +#define RET(x) kExprReturn, x |
| +#define RET_I8(x) kExprReturn, kExprI8Const, x |
| + |
| TEST(Run_WasmInt8Const) { |
| WasmRunner<int32_t> r; |
| const byte kExpectedValue = 121; |
| @@ -868,7 +874,7 @@ TEST(Run_Wasm_IfElse_Unreachable1) { |
| TEST(Run_Wasm_Return12) { |
| WasmRunner<int32_t> r; |
| - BUILD(r, WASM_RETURN(WASM_I8(12))); |
| + BUILD(r, RET_I8(12)); |
| CHECK_EQ(12, r.Call()); |
| } |
| @@ -876,7 +882,7 @@ TEST(Run_Wasm_Return12) { |
| TEST(Run_Wasm_Return17) { |
| WasmRunner<int32_t> r; |
| - BUILD(r, WASM_BLOCK(1, WASM_RETURN(WASM_I8(17)))); |
| + BUILD(r, B1(RET_I8(17))); |
| CHECK_EQ(17, r.Call()); |
| } |
| @@ -884,7 +890,7 @@ TEST(Run_Wasm_Return17) { |
| TEST(Run_Wasm_Return_I32) { |
| WasmRunner<int32_t> r(MachineType::Int32()); |
| - BUILD(r, WASM_RETURN(WASM_GET_LOCAL(0))); |
| + BUILD(r, RET(WASM_GET_LOCAL(0))); |
| FOR_INT32_INPUTS(i) { CHECK_EQ(*i, r.Call(*i)); } |
| } |
| @@ -894,7 +900,7 @@ TEST(Run_Wasm_Return_I32) { |
| TEST(Run_Wasm_Return_I64) { |
| WasmRunner<int64_t> r(MachineType::Int64()); |
| - BUILD(r, WASM_RETURN(WASM_GET_LOCAL(0))); |
| + BUILD(r, RET(WASM_GET_LOCAL(0))); |
| FOR_INT64_INPUTS(i) { CHECK_EQ(*i, r.Call(*i)); } |
| } |
| @@ -904,7 +910,7 @@ TEST(Run_Wasm_Return_I64) { |
| TEST(Run_Wasm_Return_F32) { |
| WasmRunner<float> r(MachineType::Float32()); |
| - BUILD(r, WASM_RETURN(WASM_GET_LOCAL(0))); |
| + BUILD(r, RET(WASM_GET_LOCAL(0))); |
| FOR_FLOAT32_INPUTS(i) { |
| float expect = *i; |
| @@ -921,7 +927,7 @@ TEST(Run_Wasm_Return_F32) { |
| TEST(Run_Wasm_Return_F64) { |
| WasmRunner<double> r(MachineType::Float64()); |
| - BUILD(r, WASM_RETURN(WASM_GET_LOCAL(0))); |
| + BUILD(r, RET(WASM_GET_LOCAL(0))); |
| FOR_FLOAT64_INPUTS(i) { |
| double expect = *i; |
| @@ -949,10 +955,10 @@ TEST(Run_Wasm_Select) { |
| TEST(Run_Wasm_Select_strict1) { |
| WasmRunner<int32_t> r(MachineType::Int32()); |
| // select(a=0, a=1, a=2); return a |
| - BUILD(r, WASM_BLOCK(2, WASM_SELECT(WASM_SET_LOCAL(0, WASM_I8(0)), |
| - WASM_SET_LOCAL(0, WASM_I8(1)), |
| - WASM_SET_LOCAL(0, WASM_I8(2))), |
| - WASM_GET_LOCAL(0))); |
| + BUILD(r, B2(WASM_SELECT(WASM_SET_LOCAL(0, WASM_I8(0)), |
| + WASM_SET_LOCAL(0, WASM_I8(1)), |
| + WASM_SET_LOCAL(0, WASM_I8(2))), |
| + WASM_GET_LOCAL(0))); |
| FOR_INT32_INPUTS(i) { CHECK_EQ(2, r.Call(*i)); } |
| } |
| @@ -985,55 +991,67 @@ TEST(Run_Wasm_Select_strict3) { |
| TEST(Run_Wasm_BrIf_strict) { |
| WasmRunner<int32_t> r(MachineType::Int32()); |
| - BUILD(r, WASM_BLOCK( |
| - 2, WASM_BLOCK(1, WASM_BRV_IF(0, WASM_GET_LOCAL(0), |
| - WASM_SET_LOCAL(0, WASM_I8(99)))), |
| - WASM_GET_LOCAL(0))); |
| + BUILD( |
| + r, |
| + B2(B1(WASM_BRV_IF(0, WASM_GET_LOCAL(0), WASM_SET_LOCAL(0, WASM_I8(99)))), |
| + WASM_GET_LOCAL(0))); |
| FOR_INT32_INPUTS(i) { CHECK_EQ(99, r.Call(*i)); } |
| } |
| -TEST(Run_Wasm_TableSwitch0a) { |
| +TEST(Run_Wasm_BrTable0a) { |
| WasmRunner<int32_t> r(MachineType::Int32()); |
| - BUILD(r, WASM_BLOCK(2, WASM_TABLESWITCH_OP(0, 1, WASM_CASE_BR(0)), |
| - WASM_TABLESWITCH_BODY0(WASM_GET_LOCAL(0)), WASM_I8(91))); |
| + BUILD(r, |
| + B2(B1(WASM_BR_TABLE(WASM_GET_LOCAL(0), 1, BR_TARGET(0))), WASM_I8(91))); |
| FOR_INT32_INPUTS(i) { CHECK_EQ(91, r.Call(*i)); } |
| } |
| -TEST(Run_Wasm_TableSwitch0b) { |
| +TEST(Run_Wasm_BrTable0b) { |
| WasmRunner<int32_t> r(MachineType::Int32()); |
| - BUILD(r, WASM_BLOCK( |
| - 2, WASM_TABLESWITCH_OP(0, 2, WASM_CASE_BR(0), WASM_CASE_BR(0)), |
| - WASM_TABLESWITCH_BODY0(WASM_GET_LOCAL(0)), WASM_I8(92))); |
| + BUILD(r, |
| + B2(B1(WASM_BR_TABLE(WASM_GET_LOCAL(0), 2, BR_TARGET(0), BR_TARGET(0))), |
| + WASM_I8(92))); |
| FOR_INT32_INPUTS(i) { CHECK_EQ(92, r.Call(*i)); } |
| } |
| -TEST(Run_Wasm_TableSwitch0c) { |
| +TEST(Run_Wasm_BrTable0c) { |
| WasmRunner<int32_t> r(MachineType::Int32()); |
| - BUILD(r, |
| - WASM_BLOCK(2, WASM_BLOCK(2, WASM_TABLESWITCH_OP(0, 2, WASM_CASE_BR(0), |
| - WASM_CASE_BR(1)), |
| - WASM_TABLESWITCH_BODY0(WASM_GET_LOCAL(0)), |
| - WASM_RETURN(WASM_I8(76))), |
| - WASM_I8(77))); |
| + BUILD( |
| + r, |
| + B2(B2(B1(WASM_BR_TABLE(WASM_GET_LOCAL(0), 2, BR_TARGET(0), BR_TARGET(1))), |
| + RET_I8(76)), |
| + WASM_I8(77))); |
| FOR_INT32_INPUTS(i) { |
| int32_t expected = *i == 0 ? 76 : 77; |
| CHECK_EQ(expected, r.Call(*i)); |
| } |
| } |
| -TEST(Run_Wasm_TableSwitch1) { |
| +TEST(Run_Wasm_BrTable1) { |
| WasmRunner<int32_t> r(MachineType::Int32()); |
| - BUILD(r, WASM_TABLESWITCH_OP(1, 1, WASM_CASE(0)), |
| - WASM_TABLESWITCH_BODY(WASM_GET_LOCAL(0), WASM_RETURN(WASM_I8(93)))); |
| + BUILD(r, B1(WASM_BR_TABLE(WASM_GET_LOCAL(0), 1, BR_TARGET(0))), RET_I8(93)); |
| FOR_INT32_INPUTS(i) { CHECK_EQ(93, r.Call(*i)); } |
| } |
| +TEST(Run_Wasm_BrTable_loop) { |
| + WasmRunner<int32_t> r(MachineType::Int32()); |
| + BUILD(r, |
| + B2(WASM_LOOP(1, WASM_BR_TABLE(WASM_INC_LOCAL_BY(0, 1), 3, BR_TARGET(2), |
| + BR_TARGET(1), BR_TARGET(0))), |
| + RET_I8(99)), |
| + WASM_I8(98)); |
| + CHECK_EQ(99, r.Call(0)); |
| + CHECK_EQ(98, r.Call(-1)); |
| + CHECK_EQ(98, r.Call(-2)); |
| + CHECK_EQ(98, r.Call(-3)); |
| + CHECK_EQ(98, r.Call(-100)); |
| +} |
| -TEST(Run_Wasm_TableSwitch_br) { |
| +TEST(Run_Wasm_BrTable_br) { |
| WasmRunner<int32_t> r(MachineType::Int32()); |
| - BUILD(r, WASM_TABLESWITCH_OP(1, 2, WASM_CASE_BR(0), WASM_CASE(0)), |
| - WASM_TABLESWITCH_BODY(WASM_GET_LOCAL(0), WASM_RETURN(WASM_I8(91))), |
| + BUILD(r, |
| + B2(B1(WASM_BR_TABLE(WASM_GET_LOCAL(0), 2, BR_TARGET(1), BR_TARGET(0))), |
| + RET_I8(91)), |
| WASM_I8(99)); |
| CHECK_EQ(99, r.Call(0)); |
| CHECK_EQ(91, r.Call(1)); |
| @@ -1041,17 +1059,14 @@ TEST(Run_Wasm_TableSwitch_br) { |
| CHECK_EQ(91, r.Call(3)); |
| } |
| - |
| -TEST(Run_Wasm_TableSwitch_br2) { |
| +TEST(Run_Wasm_BrTable_br2) { |
| WasmRunner<int32_t> r(MachineType::Int32()); |
| - BUILD(r, WASM_BLOCK( |
| - 2, WASM_BLOCK(2, WASM_TABLESWITCH_OP( |
| - 1, 4, WASM_CASE_BR(0), WASM_CASE_BR(1), |
| - WASM_CASE_BR(2), WASM_CASE(0)), |
| - WASM_TABLESWITCH_BODY(WASM_GET_LOCAL(0), |
| - WASM_RETURN(WASM_I8(85))), |
| - WASM_RETURN(WASM_I8(86))), |
| - WASM_RETURN(WASM_I8(87))), |
| + |
| + BUILD(r, B2(B2(B2(B1(WASM_BR_TABLE(WASM_GET_LOCAL(0), 4, BR_TARGET(1), |
| + BR_TARGET(2), BR_TARGET(3), BR_TARGET(0))), |
| + RET_I8(85)), |
| + RET_I8(86)), |
| + RET_I8(87)), |
| WASM_I8(88)); |
| CHECK_EQ(86, r.Call(0)); |
| CHECK_EQ(87, r.Call(1)); |
| @@ -1061,95 +1076,74 @@ TEST(Run_Wasm_TableSwitch_br2) { |
| CHECK_EQ(85, r.Call(5)); |
| } |
| - |
| -TEST(Run_Wasm_TableSwitch2) { |
| - WasmRunner<int32_t> r(MachineType::Int32()); |
| - BUILD(r, WASM_TABLESWITCH_OP(2, 2, WASM_CASE(0), WASM_CASE(1)), |
| - WASM_TABLESWITCH_BODY(WASM_GET_LOCAL(0), WASM_RETURN(WASM_I8(91)), |
| - WASM_RETURN(WASM_I8(92)))); |
| - FOR_INT32_INPUTS(i) { |
| - int32_t expected = *i == 0 ? 91 : 92; |
| - CHECK_EQ(expected, r.Call(*i)); |
| - } |
| -} |
| - |
| - |
| -TEST(Run_Wasm_TableSwitch2b) { |
| - WasmRunner<int32_t> r(MachineType::Int32()); |
| - BUILD(r, WASM_TABLESWITCH_OP(2, 2, WASM_CASE(1), WASM_CASE(0)), |
| - WASM_TABLESWITCH_BODY(WASM_GET_LOCAL(0), WASM_RETURN(WASM_I8(81)), |
| - WASM_RETURN(WASM_I8(82)))); |
| - FOR_INT32_INPUTS(i) { |
| - int32_t expected = *i == 0 ? 82 : 81; |
| - CHECK_EQ(expected, r.Call(*i)); |
| - } |
| -} |
| - |
| - |
| -TEST(Run_Wasm_TableSwitch4) { |
| +TEST(Run_Wasm_BrTable4) { |
| for (int i = 0; i < 4; i++) { |
| - const uint16_t br = 0x8000u; |
| - uint16_t c = 0; |
| - uint16_t cases[] = {i == 0 ? br : c++, i == 1 ? br : c++, i == 2 ? br : c++, |
| - i == 3 ? br : c++}; |
| - byte code[] = { |
| - WASM_BLOCK(1, WASM_TABLESWITCH_OP( |
| - 3, 4, WASM_CASE(cases[0]), WASM_CASE(cases[1]), |
| - WASM_CASE(cases[2]), WASM_CASE(cases[3])), |
| - WASM_TABLESWITCH_BODY( |
| - WASM_GET_LOCAL(0), WASM_RETURN(WASM_I8(71)), |
| - WASM_RETURN(WASM_I8(72)), WASM_RETURN(WASM_I8(73)))), |
| - WASM_RETURN(WASM_I8(74))}; |
| - |
| - WasmRunner<int32_t> r(MachineType::Int32()); |
| - r.Build(code, code + arraysize(code)); |
| - |
| - FOR_INT32_INPUTS(i) { |
| - int index = (*i < 0 || *i > 3) ? 3 : *i; |
| - int32_t expected = 71 + cases[index]; |
| - if (expected >= 0x8000) expected = 74; |
| - CHECK_EQ(expected, r.Call(*i)); |
| + for (int t = 0; t < 4; t++) { |
| + uint16_t cases[] = {0, 1, 2, 3}; |
| + cases[i] = t; |
| + byte code[] = {B2(B2(B2(B2(B1(WASM_BR_TABLE( |
| + WASM_GET_LOCAL(0), 4, BR_TARGET(cases[0]), |
| + BR_TARGET(cases[1]), BR_TARGET(cases[2]), |
| + BR_TARGET(cases[3]))), |
| + RET_I8(70)), |
| + RET_I8(71)), |
| + RET_I8(72)), |
| + RET_I8(73)), |
| + WASM_I8(75)}; |
| + |
| + WasmRunner<int32_t> r(MachineType::Int32()); |
| + r.Build(code, code + arraysize(code)); |
| + |
| + for (int x = -3; x < 50; x++) { |
| + int index = (x > 3 || x < 0) ? 3 : x; |
| + int32_t expected = 70 + cases[index]; |
| + CHECK_EQ(expected, r.Call(x)); |
| + } |
| } |
| } |
| } |
| - |
| -TEST(Run_Wasm_TableSwitch4b) { |
| - for (int a = 0; a < 2; a++) { |
| - for (int b = 0; b < 2; b++) { |
| - for (int c = 0; c < 2; c++) { |
| - for (int d = 0; d < 2; d++) { |
| - if (a + b + c + d == 0) continue; |
| - if (a + b + c + d == 4) continue; |
| - |
| - byte code[] = { |
| - WASM_TABLESWITCH_OP(2, 4, WASM_CASE(a), WASM_CASE(b), |
| - WASM_CASE(c), WASM_CASE(d)), |
| - WASM_TABLESWITCH_BODY(WASM_GET_LOCAL(0), WASM_RETURN(WASM_I8(61)), |
| - WASM_RETURN(WASM_I8(62)))}; |
| - |
| - WasmRunner<int32_t> r(MachineType::Int32()); |
| - r.Build(code, code + arraysize(code)); |
| - |
| - CHECK_EQ(61 + a, r.Call(0)); |
| - CHECK_EQ(61 + b, r.Call(1)); |
| - CHECK_EQ(61 + c, r.Call(2)); |
| - CHECK_EQ(61 + d, r.Call(3)); |
| - CHECK_EQ(61 + d, r.Call(4)); |
| +TEST(Run_Wasm_BrTable4x4) { |
| + for (byte a = 0; a < 4; a++) { |
| + for (byte b = 0; b < 4; b++) { |
| + for (byte c = 0; c < 4; c++) { |
| + for (byte d = 0; d < 4; d++) { |
| + for (int i = 0; i < 4; i++) { |
| + uint16_t cases[] = {a, b, c, d}; |
| + byte code[] = { |
| + B2(B2(B2(B2(B1(WASM_BR_TABLE( |
| + WASM_GET_LOCAL(0), 4, BR_TARGET(cases[0]), |
| + BR_TARGET(cases[1]), BR_TARGET(cases[2]), |
| + BR_TARGET(cases[3]))), |
| + RET_I8(50)), |
| + RET_I8(51)), |
| + RET_I8(52)), |
| + RET_I8(53)), |
| + WASM_I8(55)}; |
| + |
| + WasmRunner<int32_t> r(MachineType::Int32()); |
| + r.Build(code, code + arraysize(code)); |
| + |
| + for (int x = -6; x < 47; x++) { |
| + int index = (x > 3 || x < 0) ? 3 : x; |
| + int32_t expected = 50 + cases[index]; |
| + CHECK_EQ(expected, r.Call(x)); |
| + } |
| + } |
| } |
| } |
| } |
| } |
| } |
| - |
| -TEST(Run_Wasm_TableSwitch4_fallthru) { |
| +TEST(Run_Wasm_BrTable4_fallthru) { |
| byte code[] = { |
| - WASM_TABLESWITCH_OP(4, 4, WASM_CASE(0), WASM_CASE(1), WASM_CASE(2), |
| - WASM_CASE(3)), |
| - WASM_TABLESWITCH_BODY(WASM_GET_LOCAL(0), WASM_INC_LOCAL_BY(1, 1), |
| - WASM_INC_LOCAL_BY(1, 2), WASM_INC_LOCAL_BY(1, 4), |
| - WASM_INC_LOCAL_BY(1, 8)), |
| + B2(B2(B2(B2(B1(WASM_BR_TABLE(WASM_GET_LOCAL(0), 4, BR_TARGET(0), |
| + BR_TARGET(1), BR_TARGET(2), BR_TARGET(3))), |
| + WASM_INC_LOCAL_BY(1, 1)), |
| + WASM_INC_LOCAL_BY(1, 2)), |
| + WASM_INC_LOCAL_BY(1, 4)), |
| + WASM_INC_LOCAL_BY(1, 8)), |
| WASM_GET_LOCAL(1)}; |
| WasmRunner<int32_t> r(MachineType::Int32(), MachineType::Int32()); |
| @@ -1168,34 +1162,6 @@ TEST(Run_Wasm_TableSwitch4_fallthru) { |
| CHECK_EQ(108, r.Call(4, 100)); |
| } |
| - |
| -TEST(Run_Wasm_TableSwitch4_fallthru_br) { |
| - byte code[] = { |
| - WASM_TABLESWITCH_OP(4, 4, WASM_CASE(0), WASM_CASE(1), WASM_CASE(2), |
| - WASM_CASE(3)), |
| - WASM_TABLESWITCH_BODY(WASM_GET_LOCAL(0), WASM_INC_LOCAL_BY(1, 1), |
| - WASM_BRV(0, WASM_INC_LOCAL_BY(1, 2)), |
| - WASM_INC_LOCAL_BY(1, 4), |
| - WASM_BRV(0, WASM_INC_LOCAL_BY(1, 8))), |
| - WASM_GET_LOCAL(1)}; |
| - |
| - WasmRunner<int32_t> r(MachineType::Int32(), MachineType::Int32()); |
| - r.Build(code, code + arraysize(code)); |
| - |
| - CHECK_EQ(3, r.Call(0, 0)); |
| - CHECK_EQ(2, r.Call(1, 0)); |
| - CHECK_EQ(12, r.Call(2, 0)); |
| - CHECK_EQ(8, r.Call(3, 0)); |
| - CHECK_EQ(8, r.Call(4, 0)); |
| - |
| - CHECK_EQ(203, r.Call(0, 200)); |
| - CHECK_EQ(202, r.Call(1, 200)); |
| - CHECK_EQ(212, r.Call(2, 200)); |
| - CHECK_EQ(208, r.Call(3, 200)); |
| - CHECK_EQ(208, r.Call(4, 200)); |
| -} |
| - |
| - |
| TEST(Run_Wasm_F32ReinterpretI32) { |
| TestingModule module; |
| int32_t* memory = module.AddMemoryElems<int32_t>(8); |
| @@ -1260,7 +1226,7 @@ TEST(Run_Wasm_VoidReturn1) { |
| // Build the calling function. |
| WasmRunner<int32_t> r; |
| r.env()->module = &module; |
| - BUILD(r, WASM_BLOCK(2, WASM_CALL_FUNCTION0(index), WASM_I32(kExpected))); |
| + BUILD(r, B2(WASM_CALL_FUNCTION0(index), WASM_I32(kExpected))); |
| int32_t result = r.Call(); |
| CHECK_EQ(kExpected, result); |
| @@ -1280,7 +1246,7 @@ TEST(Run_Wasm_VoidReturn2) { |
| // Build the calling function. |
| WasmRunner<int32_t> r; |
| r.env()->module = &module; |
| - BUILD(r, WASM_BLOCK(2, WASM_CALL_FUNCTION0(index), WASM_I32(kExpected))); |
| + BUILD(r, B2(WASM_CALL_FUNCTION0(index), WASM_I32(kExpected))); |
| int32_t result = r.Call(); |
| CHECK_EQ(kExpected, result); |
| @@ -1290,10 +1256,10 @@ TEST(Run_Wasm_VoidReturn2) { |
| TEST(Run_Wasm_Block_If_P) { |
| WasmRunner<int32_t> r(MachineType::Int32()); |
| // { if (p0) return 51; return 52; } |
| - BUILD(r, WASM_BLOCK(2, // -- |
| - WASM_IF(WASM_GET_LOCAL(0), // -- |
| - WASM_BRV(0, WASM_I8(51))), // -- |
| - WASM_I8(52))); // -- |
| + BUILD(r, B2( // -- |
| + WASM_IF(WASM_GET_LOCAL(0), // -- |
| + WASM_BRV(0, WASM_I8(51))), // -- |
| + WASM_I8(52))); // -- |
| FOR_INT32_INPUTS(i) { |
| int32_t expected = *i ? 51 : 52; |
| CHECK_EQ(expected, r.Call(*i)); |
| @@ -1303,8 +1269,7 @@ TEST(Run_Wasm_Block_If_P) { |
| TEST(Run_Wasm_Block_BrIf_P) { |
| WasmRunner<int32_t> r(MachineType::Int32()); |
| - BUILD(r, WASM_BLOCK(2, WASM_BRV_IF(0, WASM_I8(51), WASM_GET_LOCAL(0)), |
| - WASM_I8(52))); |
| + BUILD(r, B2(WASM_BRV_IF(0, WASM_I8(51), WASM_GET_LOCAL(0)), WASM_I8(52))); |
| FOR_INT32_INPUTS(i) { |
| int32_t expected = *i ? 51 : 52; |
| CHECK_EQ(expected, r.Call(*i)); |
| @@ -1315,11 +1280,11 @@ TEST(Run_Wasm_Block_BrIf_P) { |
| TEST(Run_Wasm_Block_IfElse_P_assign) { |
| WasmRunner<int32_t> r(MachineType::Int32()); |
| // { if (p0) p0 = 71; else p0 = 72; return p0; } |
| - BUILD(r, WASM_BLOCK(2, // -- |
| - WASM_IF_ELSE(WASM_GET_LOCAL(0), // -- |
| - WASM_SET_LOCAL(0, WASM_I8(71)), // -- |
| - WASM_SET_LOCAL(0, WASM_I8(72))), // -- |
| - WASM_GET_LOCAL(0))); |
| + BUILD(r, B2( // -- |
| + WASM_IF_ELSE(WASM_GET_LOCAL(0), // -- |
| + WASM_SET_LOCAL(0, WASM_I8(71)), // -- |
| + WASM_SET_LOCAL(0, WASM_I8(72))), // -- |
| + WASM_GET_LOCAL(0))); |
| FOR_INT32_INPUTS(i) { |
| int32_t expected = *i ? 71 : 72; |
| CHECK_EQ(expected, r.Call(*i)); |
| @@ -1330,10 +1295,10 @@ TEST(Run_Wasm_Block_IfElse_P_assign) { |
| TEST(Run_Wasm_Block_IfElse_P_return) { |
| WasmRunner<int32_t> r(MachineType::Int32()); |
| // if (p0) return 81; else return 82; |
| - BUILD(r, // -- |
| - WASM_IF_ELSE(WASM_GET_LOCAL(0), // -- |
| - WASM_RETURN(WASM_I8(81)), // -- |
| - WASM_RETURN(WASM_I8(82)))); // -- |
| + BUILD(r, // -- |
| + WASM_IF_ELSE(WASM_GET_LOCAL(0), // -- |
| + RET_I8(81), // -- |
| + RET_I8(82))); // -- |
| FOR_INT32_INPUTS(i) { |
| int32_t expected = *i ? 81 : 82; |
| CHECK_EQ(expected, r.Call(*i)); |
| @@ -1357,8 +1322,7 @@ TEST(Run_Wasm_Block_If_P_assign) { |
| TEST(Run_Wasm_DanglingAssign) { |
| WasmRunner<int32_t> r(MachineType::Int32()); |
| // { return 0; p0 = 0; } |
| - BUILD(r, |
| - WASM_BLOCK(2, WASM_RETURN(WASM_I8(99)), WASM_SET_LOCAL(0, WASM_ZERO))); |
| + BUILD(r, B2(RET_I8(99), WASM_SET_LOCAL(0, WASM_ZERO))); |
| CHECK_EQ(99, r.Call(1)); |
| } |
| @@ -1435,9 +1399,9 @@ TEST(Run_Wasm_WhileCountDown) { |
| TEST(Run_Wasm_Loop_if_break1) { |
| WasmRunner<int32_t> r(MachineType::Int32()); |
| - BUILD(r, WASM_BLOCK(2, WASM_LOOP(2, WASM_IF(WASM_GET_LOCAL(0), WASM_BREAK(0)), |
| - WASM_SET_LOCAL(0, WASM_I8(99))), |
| - WASM_GET_LOCAL(0))); |
| + BUILD(r, B2(WASM_LOOP(2, WASM_IF(WASM_GET_LOCAL(0), WASM_BREAK(0)), |
| + WASM_SET_LOCAL(0, WASM_I8(99))), |
| + WASM_GET_LOCAL(0))); |
| CHECK_EQ(99, r.Call(0)); |
| CHECK_EQ(3, r.Call(3)); |
| CHECK_EQ(10000, r.Call(10000)); |
| @@ -1447,9 +1411,9 @@ TEST(Run_Wasm_Loop_if_break1) { |
| TEST(Run_Wasm_Loop_if_break2) { |
| WasmRunner<int32_t> r(MachineType::Int32()); |
| - BUILD(r, WASM_BLOCK(2, WASM_LOOP(2, WASM_BR_IF(1, WASM_GET_LOCAL(0)), |
| - WASM_SET_LOCAL(0, WASM_I8(99))), |
| - WASM_GET_LOCAL(0))); |
| + BUILD(r, B2(WASM_LOOP(2, WASM_BR_IF(1, WASM_GET_LOCAL(0)), |
| + WASM_SET_LOCAL(0, WASM_I8(99))), |
| + WASM_GET_LOCAL(0))); |
| CHECK_EQ(99, r.Call(0)); |
| CHECK_EQ(3, r.Call(3)); |
| CHECK_EQ(10000, r.Call(10000)); |
| @@ -1459,8 +1423,8 @@ TEST(Run_Wasm_Loop_if_break2) { |
| TEST(Run_Wasm_Loop_if_break_fallthru) { |
| WasmRunner<int32_t> r(MachineType::Int32()); |
| - BUILD(r, WASM_BLOCK(1, WASM_LOOP(2, WASM_IF(WASM_GET_LOCAL(0), WASM_BREAK(1)), |
| - WASM_SET_LOCAL(0, WASM_I8(93)))), |
| + BUILD(r, B1(WASM_LOOP(2, WASM_IF(WASM_GET_LOCAL(0), WASM_BREAK(1)), |
| + WASM_SET_LOCAL(0, WASM_I8(93)))), |
| WASM_GET_LOCAL(0)); |
| CHECK_EQ(93, r.Call(0)); |
| CHECK_EQ(3, r.Call(3)); |
| @@ -1942,8 +1906,7 @@ TEST(Build_Wasm_Infinite_Loop_effect) { |
| TEST(Run_Wasm_Unreachable0a) { |
| WasmRunner<int32_t> r(MachineType::Int32()); |
| - BUILD(r, |
| - WASM_BLOCK(2, WASM_BRV(0, WASM_I8(9)), WASM_RETURN(WASM_GET_LOCAL(0)))); |
| + BUILD(r, B2(WASM_BRV(0, WASM_I8(9)), RET(WASM_GET_LOCAL(0)))); |
| CHECK_EQ(9, r.Call(0)); |
| CHECK_EQ(9, r.Call(1)); |
| } |
| @@ -1951,7 +1914,7 @@ TEST(Run_Wasm_Unreachable0a) { |
| TEST(Run_Wasm_Unreachable0b) { |
| WasmRunner<int32_t> r(MachineType::Int32()); |
| - BUILD(r, WASM_BLOCK(2, WASM_BRV(0, WASM_I8(7)), WASM_UNREACHABLE)); |
| + BUILD(r, B2(WASM_BRV(0, WASM_I8(7)), WASM_UNREACHABLE)); |
| CHECK_EQ(7, r.Call(0)); |
| CHECK_EQ(7, r.Call(1)); |
| } |
| @@ -1990,8 +1953,8 @@ TEST(Build_Wasm_UnreachableIf2) { |
| TEST(Run_Wasm_Unreachable_Load) { |
| WasmRunner<int32_t> r(MachineType::Int32()); |
| - BUILD(r, WASM_BLOCK(2, WASM_BRV(0, WASM_GET_LOCAL(0)), |
| - WASM_LOAD_MEM(MachineType::Int8(), WASM_GET_LOCAL(0)))); |
| + BUILD(r, B2(WASM_BRV(0, WASM_GET_LOCAL(0)), |
| + WASM_LOAD_MEM(MachineType::Int8(), WASM_GET_LOCAL(0)))); |
| CHECK_EQ(11, r.Call(11)); |
| CHECK_EQ(21, r.Call(21)); |
| } |
| @@ -1999,8 +1962,7 @@ TEST(Run_Wasm_Unreachable_Load) { |
| TEST(Run_Wasm_Infinite_Loop_not_taken1) { |
| WasmRunner<int32_t> r(MachineType::Int32()); |
| - BUILD(r, WASM_BLOCK(2, WASM_IF(WASM_GET_LOCAL(0), WASM_INFINITE_LOOP), |
| - WASM_I8(45))); |
| + BUILD(r, B2(WASM_IF(WASM_GET_LOCAL(0), WASM_INFINITE_LOOP), WASM_I8(45))); |
| // Run the code, but don't go into the infinite loop. |
| CHECK_EQ(45, r.Call(0)); |
| } |
| @@ -2008,9 +1970,8 @@ TEST(Run_Wasm_Infinite_Loop_not_taken1) { |
| TEST(Run_Wasm_Infinite_Loop_not_taken2) { |
| WasmRunner<int32_t> r(MachineType::Int32()); |
| - BUILD(r, |
| - WASM_BLOCK(1, WASM_IF_ELSE(WASM_GET_LOCAL(0), WASM_BRV(0, WASM_I8(45)), |
| - WASM_INFINITE_LOOP))); |
| + BUILD(r, B1(WASM_IF_ELSE(WASM_GET_LOCAL(0), WASM_BRV(0, WASM_I8(45)), |
| + WASM_INFINITE_LOOP))); |
| // Run the code, but don't go into the infinite loop. |
| CHECK_EQ(45, r.Call(1)); |
| } |
| @@ -2018,8 +1979,8 @@ TEST(Run_Wasm_Infinite_Loop_not_taken2) { |
| TEST(Run_Wasm_Infinite_Loop_not_taken2_brif) { |
| WasmRunner<int32_t> r(MachineType::Int32()); |
| - BUILD(r, WASM_BLOCK(2, WASM_BRV_IF(0, WASM_I8(45), WASM_GET_LOCAL(0)), |
| - WASM_INFINITE_LOOP)); |
| + BUILD(r, |
| + B2(WASM_BRV_IF(0, WASM_I8(45), WASM_GET_LOCAL(0)), WASM_INFINITE_LOOP)); |
| // Run the code, but don't go into the infinite loop. |
| CHECK_EQ(45, r.Call(1)); |
| } |
| @@ -2178,11 +2139,10 @@ TEST(Run_WasmInt64Global) { |
| int64_t* global = module.AddGlobal<int64_t>(MachineType::Int64()); |
| WasmRunner<int32_t> r(&module, MachineType::Int32()); |
| // global = global + p0 |
| - BUILD(r, WASM_BLOCK(2, WASM_STORE_GLOBAL( |
| - 0, WASM_I64_ADD( |
| - WASM_LOAD_GLOBAL(0), |
| - WASM_I64_SCONVERT_I32(WASM_GET_LOCAL(0)))), |
| - WASM_ZERO)); |
| + BUILD(r, B2(WASM_STORE_GLOBAL( |
| + 0, WASM_I64_ADD(WASM_LOAD_GLOBAL(0), |
| + WASM_I64_SCONVERT_I32(WASM_GET_LOCAL(0)))), |
| + WASM_ZERO)); |
| *global = 0xFFFFFFFFFFFFFFFFLL; |
| for (int i = 9; i < 444444; i += 111111) { |
| @@ -2199,11 +2159,10 @@ TEST(Run_WasmFloat32Global) { |
| float* global = module.AddGlobal<float>(MachineType::Float32()); |
| WasmRunner<int32_t> r(&module, MachineType::Int32()); |
| // global = global + p0 |
| - BUILD(r, WASM_BLOCK(2, WASM_STORE_GLOBAL( |
| - 0, WASM_F32_ADD( |
| - WASM_LOAD_GLOBAL(0), |
| - WASM_F32_SCONVERT_I32(WASM_GET_LOCAL(0)))), |
| - WASM_ZERO)); |
| + BUILD(r, B2(WASM_STORE_GLOBAL( |
| + 0, WASM_F32_ADD(WASM_LOAD_GLOBAL(0), |
| + WASM_F32_SCONVERT_I32(WASM_GET_LOCAL(0)))), |
| + WASM_ZERO)); |
| *global = 1.25; |
| for (int i = 9; i < 4444; i += 1111) { |
| @@ -2219,11 +2178,10 @@ TEST(Run_WasmFloat64Global) { |
| double* global = module.AddGlobal<double>(MachineType::Float64()); |
| WasmRunner<int32_t> r(&module, MachineType::Int32()); |
| // global = global + p0 |
| - BUILD(r, WASM_BLOCK(2, WASM_STORE_GLOBAL( |
| - 0, WASM_F64_ADD( |
| - WASM_LOAD_GLOBAL(0), |
| - WASM_F64_SCONVERT_I32(WASM_GET_LOCAL(0)))), |
| - WASM_ZERO)); |
| + BUILD(r, B2(WASM_STORE_GLOBAL( |
| + 0, WASM_F64_ADD(WASM_LOAD_GLOBAL(0), |
| + WASM_F64_SCONVERT_I32(WASM_GET_LOCAL(0)))), |
| + WASM_ZERO)); |
| *global = 1.25; |
| for (int i = 9; i < 4444; i += 1111) { |
| @@ -2639,13 +2597,12 @@ TEST(Run_Wasm_AddCall) { |
| WasmRunner<int32_t> r(&module, MachineType::Int32()); |
| byte local = r.AllocateLocal(kAstI32); |
| - BUILD(r, |
| - WASM_BLOCK(2, WASM_SET_LOCAL(local, WASM_I8(99)), |
| - WASM_I32_ADD( |
| - WASM_CALL_FUNCTION(t1.function_index_, WASM_GET_LOCAL(0), |
| - WASM_GET_LOCAL(0)), |
| - WASM_CALL_FUNCTION(t1.function_index_, WASM_GET_LOCAL(1), |
| - WASM_GET_LOCAL(local))))); |
| + BUILD(r, B2(WASM_SET_LOCAL(local, WASM_I8(99)), |
| + WASM_I32_ADD( |
| + WASM_CALL_FUNCTION(t1.function_index_, WASM_GET_LOCAL(0), |
| + WASM_GET_LOCAL(0)), |
| + WASM_CALL_FUNCTION(t1.function_index_, WASM_GET_LOCAL(1), |
| + WASM_GET_LOCAL(local))))); |
| CHECK_EQ(198, r.Call(0)); |
| CHECK_EQ(200, r.Call(1)); |
| @@ -2667,8 +2624,7 @@ TEST(Run_Wasm_CountDown_expr) { |
| TEST(Run_Wasm_ExprBlock2a) { |
| WasmRunner<int32_t> r(MachineType::Int32()); |
| - BUILD(r, WASM_BLOCK(2, WASM_IF(WASM_GET_LOCAL(0), WASM_BRV(0, WASM_I8(1))), |
| - WASM_I8(1))); |
| + BUILD(r, B2(WASM_IF(WASM_GET_LOCAL(0), WASM_BRV(0, WASM_I8(1))), WASM_I8(1))); |
| CHECK_EQ(1, r.Call(0)); |
| CHECK_EQ(1, r.Call(1)); |
| } |
| @@ -2676,8 +2632,7 @@ TEST(Run_Wasm_ExprBlock2a) { |
| TEST(Run_Wasm_ExprBlock2b) { |
| WasmRunner<int32_t> r(MachineType::Int32()); |
| - BUILD(r, WASM_BLOCK(2, WASM_IF(WASM_GET_LOCAL(0), WASM_BRV(0, WASM_I8(1))), |
| - WASM_I8(2))); |
| + BUILD(r, B2(WASM_IF(WASM_GET_LOCAL(0), WASM_BRV(0, WASM_I8(1))), WASM_I8(2))); |
| CHECK_EQ(2, r.Call(0)); |
| CHECK_EQ(1, r.Call(1)); |
| } |
| @@ -2685,8 +2640,7 @@ TEST(Run_Wasm_ExprBlock2b) { |
| TEST(Run_Wasm_ExprBlock2c) { |
| WasmRunner<int32_t> r(MachineType::Int32()); |
| - BUILD(r, WASM_BLOCK(2, WASM_BRV_IF(0, WASM_I8(1), WASM_GET_LOCAL(0)), |
| - WASM_I8(1))); |
| + BUILD(r, B2(WASM_BRV_IF(0, WASM_I8(1), WASM_GET_LOCAL(0)), WASM_I8(1))); |
| CHECK_EQ(1, r.Call(0)); |
| CHECK_EQ(1, r.Call(1)); |
| } |
| @@ -2694,8 +2648,7 @@ TEST(Run_Wasm_ExprBlock2c) { |
| TEST(Run_Wasm_ExprBlock2d) { |
| WasmRunner<int32_t> r(MachineType::Int32()); |
| - BUILD(r, WASM_BLOCK(2, WASM_BRV_IF(0, WASM_I8(1), WASM_GET_LOCAL(0)), |
| - WASM_I8(2))); |
| + BUILD(r, B2(WASM_BRV_IF(0, WASM_I8(1), WASM_GET_LOCAL(0)), WASM_I8(2))); |
| CHECK_EQ(2, r.Call(0)); |
| CHECK_EQ(1, r.Call(1)); |
| } |
| @@ -2767,9 +2720,8 @@ TEST(Run_Wasm_nested_ifs) { |
| TEST(Run_Wasm_ExprBlock_if) { |
| WasmRunner<int32_t> r(MachineType::Int32()); |
| - BUILD(r, |
| - WASM_BLOCK(1, WASM_IF_ELSE(WASM_GET_LOCAL(0), WASM_BRV(0, WASM_I8(11)), |
| - WASM_BRV(0, WASM_I8(14))))); |
| + BUILD(r, B1(WASM_IF_ELSE(WASM_GET_LOCAL(0), WASM_BRV(0, WASM_I8(11)), |
| + WASM_BRV(0, WASM_I8(14))))); |
| CHECK_EQ(11, r.Call(1)); |
| CHECK_EQ(14, r.Call(0)); |