| 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 7df2e5739bdfd73715f4602edc3008967072c1f4..c29c52cdb63e1b1402f8f49c0602b700041b0d43 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
|
| +#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;
|
| @@ -876,7 +882,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());
|
| }
|
|
|
| @@ -884,7 +890,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());
|
| }
|
|
|
| @@ -892,7 +898,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)); }
|
| }
|
| @@ -902,7 +908,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)); }
|
| }
|
| @@ -912,7 +918,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;
|
| @@ -929,7 +935,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;
|
| @@ -957,10 +963,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)); }
|
| }
|
|
|
| @@ -993,55 +999,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), 0, 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), 1, 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), 1, 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), 0, 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), 2, 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), 1, BR_TARGET(1), BR_TARGET(0))),
|
| + RET_I8(91)),
|
| WASM_I8(99));
|
| CHECK_EQ(99, r.Call(0));
|
| CHECK_EQ(91, r.Call(1));
|
| @@ -1049,17 +1067,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), 3, 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));
|
| @@ -1069,95 +1084,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), 3, 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), 3, 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), 3, 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());
|
| @@ -1176,34 +1170,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);
|
| @@ -1268,7 +1234,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_I32V_3(kExpected)));
|
| + BUILD(r, B2(WASM_CALL_FUNCTION0(index), WASM_I32V_3(kExpected)));
|
|
|
| int32_t result = r.Call();
|
| CHECK_EQ(kExpected, result);
|
| @@ -1288,7 +1254,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_I32V_3(kExpected)));
|
| + BUILD(r, B2(WASM_CALL_FUNCTION0(index), WASM_I32V_3(kExpected)));
|
|
|
| int32_t result = r.Call();
|
| CHECK_EQ(kExpected, result);
|
| @@ -1298,10 +1264,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));
|
| @@ -1311,8 +1277,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));
|
| @@ -1323,11 +1288,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));
|
| @@ -1338,10 +1303,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));
|
| @@ -1365,8 +1330,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));
|
| }
|
|
|
| @@ -1443,9 +1407,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));
|
| @@ -1455,9 +1419,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));
|
| @@ -1467,8 +1431,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));
|
| @@ -1950,8 +1914,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));
|
| }
|
| @@ -1959,7 +1922,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));
|
| }
|
| @@ -1998,8 +1961,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));
|
| }
|
| @@ -2007,8 +1970,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));
|
| }
|
| @@ -2016,9 +1978,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));
|
| }
|
| @@ -2026,8 +1987,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));
|
| }
|
| @@ -2186,11 +2147,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) {
|
| @@ -2207,11 +2167,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) {
|
| @@ -2227,11 +2186,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) {
|
| @@ -2647,13 +2605,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));
|
| @@ -2675,8 +2632,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));
|
| }
|
| @@ -2684,8 +2640,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));
|
| }
|
| @@ -2693,8 +2648,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));
|
| }
|
| @@ -2702,8 +2656,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));
|
| }
|
| @@ -2775,9 +2728,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));
|
|
|