Commit ff0b6d49 authored by titzer's avatar titzer Committed by Commit bot

[wasm] Remove the explicit count from WASM_BLOCK and WASM_LOOP macros.

R=ahaas@chromium.org, rossberg@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/2170773003
Cr-Commit-Position: refs/heads/master@{#37939}
parent 17376b6d
...@@ -65,9 +65,9 @@ ...@@ -65,9 +65,9 @@
#define DEPTH_0 0 #define DEPTH_0 0
#define DEPTH_1 1 #define DEPTH_1 1
#define WASM_BLOCK(count, ...) kExprBlock, __VA_ARGS__, kExprEnd #define WASM_BLOCK(...) kExprBlock, __VA_ARGS__, kExprEnd
#define WASM_INFINITE_LOOP kExprLoop, kExprBr, ARITY_0, DEPTH_0, kExprEnd #define WASM_INFINITE_LOOP kExprLoop, kExprBr, ARITY_0, DEPTH_0, kExprEnd
#define WASM_LOOP(count, ...) kExprLoop, __VA_ARGS__, kExprEnd #define WASM_LOOP(...) kExprLoop, __VA_ARGS__, kExprEnd
#define WASM_IF(cond, tstmt) cond, kExprIf, tstmt, kExprEnd #define WASM_IF(cond, tstmt) cond, kExprIf, tstmt, kExprEnd
#define WASM_IF_ELSE(cond, tstmt, fstmt) \ #define WASM_IF_ELSE(cond, tstmt, fstmt) \
cond, kExprIf, tstmt, kExprElse, fstmt, kExprEnd cond, kExprIf, tstmt, kExprElse, fstmt, kExprEnd
......
...@@ -1256,10 +1256,10 @@ WASM_EXEC_TEST(F64ReinterpretI64) { ...@@ -1256,10 +1256,10 @@ WASM_EXEC_TEST(F64ReinterpretI64) {
int64_t* memory = module.AddMemoryElems<int64_t>(8); int64_t* memory = module.AddMemoryElems<int64_t>(8);
WasmRunner<int64_t> r(&module, MachineType::Int64()); WasmRunner<int64_t> r(&module, MachineType::Int64());
BUILD(r, WASM_BLOCK( BUILD(r,
2, WASM_STORE_MEM(MachineType::Float64(), WASM_ZERO, WASM_BLOCK(WASM_STORE_MEM(MachineType::Float64(), WASM_ZERO,
WASM_F64_REINTERPRET_I64(WASM_GET_LOCAL(0))), WASM_F64_REINTERPRET_I64(WASM_GET_LOCAL(0))),
WASM_GET_LOCAL(0))); WASM_GET_LOCAL(0)));
FOR_INT32_INPUTS(i) { FOR_INT32_INPUTS(i) {
int64_t expected = static_cast<int64_t>(*i) * 0x300010001; int64_t expected = static_cast<int64_t>(*i) * 0x300010001;
...@@ -1320,18 +1320,18 @@ WASM_EXEC_TEST(MemI64_Sum) { ...@@ -1320,18 +1320,18 @@ WASM_EXEC_TEST(MemI64_Sum) {
WasmRunner<uint64_t> r(&module, MachineType::Int32()); WasmRunner<uint64_t> r(&module, MachineType::Int32());
const byte kSum = r.AllocateLocal(kAstI64); const byte kSum = r.AllocateLocal(kAstI64);
BUILD(r, WASM_BLOCK( BUILD(r,
2, WASM_WHILE( WASM_BLOCK(
WASM_GET_LOCAL(0), WASM_WHILE(
WASM_BLOCK( WASM_GET_LOCAL(0),
2, WASM_SET_LOCAL( WASM_BLOCK(
kSum, WASM_I64_ADD( WASM_SET_LOCAL(
WASM_GET_LOCAL(kSum), kSum, WASM_I64_ADD(WASM_GET_LOCAL(kSum),
WASM_LOAD_MEM(MachineType::Int64(), WASM_LOAD_MEM(MachineType::Int64(),
WASM_GET_LOCAL(0)))), WASM_GET_LOCAL(0)))),
WASM_SET_LOCAL( WASM_SET_LOCAL(
0, WASM_I32_SUB(WASM_GET_LOCAL(0), WASM_I8(8))))), 0, WASM_I32_SUB(WASM_GET_LOCAL(0), WASM_I8(8))))),
WASM_GET_LOCAL(1))); WASM_GET_LOCAL(1)));
// Run 4 trials. // Run 4 trials.
for (int i = 0; i < 3; i++) { for (int i = 0; i < 3; i++) {
......
...@@ -116,7 +116,6 @@ TEST(Run_WasmModule_CheckMemoryIsZero) { ...@@ -116,7 +116,6 @@ TEST(Run_WasmModule_CheckMemoryIsZero) {
uint16_t localIndex = f->AddLocal(kAstI32); uint16_t localIndex = f->AddLocal(kAstI32);
ExportAsMain(f); ExportAsMain(f);
byte code[] = {WASM_BLOCK( byte code[] = {WASM_BLOCK(
2,
WASM_WHILE( WASM_WHILE(
WASM_I32_LTS(WASM_GET_LOCAL(localIndex), WASM_I32V_3(kCheckSize)), WASM_I32_LTS(WASM_GET_LOCAL(localIndex), WASM_I32V_3(kCheckSize)),
WASM_IF_ELSE( WASM_IF_ELSE(
...@@ -140,11 +139,11 @@ TEST(Run_WasmModule_CallMain_recursive) { ...@@ -140,11 +139,11 @@ TEST(Run_WasmModule_CallMain_recursive) {
uint16_t localIndex = f->AddLocal(kAstI32); uint16_t localIndex = f->AddLocal(kAstI32);
ExportAsMain(f); ExportAsMain(f);
byte code[] = {WASM_BLOCK( byte code[] = {WASM_BLOCK(
2, WASM_SET_LOCAL(localIndex, WASM_SET_LOCAL(localIndex,
WASM_LOAD_MEM(MachineType::Int32(), WASM_ZERO)), WASM_LOAD_MEM(MachineType::Int32(), WASM_ZERO)),
WASM_IF_ELSE(WASM_I32_LTS(WASM_GET_LOCAL(localIndex), WASM_I8(5)), WASM_IF_ELSE(WASM_I32_LTS(WASM_GET_LOCAL(localIndex), WASM_I8(5)),
WASM_BLOCK(2, WASM_STORE_MEM(MachineType::Int32(), WASM_ZERO, WASM_BLOCK(WASM_STORE_MEM(MachineType::Int32(), WASM_ZERO,
WASM_INC_LOCAL(localIndex)), WASM_INC_LOCAL(localIndex)),
WASM_BRV(1, WASM_CALL_FUNCTION0(0))), WASM_BRV(1, WASM_CALL_FUNCTION0(0))),
WASM_BRV(0, WASM_I8(55))))}; WASM_BRV(0, WASM_I8(55))))};
f->EmitCode(code, sizeof(code)); f->EmitCode(code, sizeof(code));
......
This diff is collapsed.
This diff is collapsed.
...@@ -52,7 +52,7 @@ TEST_F(WasmLoopAssignmentAnalyzerTest, Empty1) { ...@@ -52,7 +52,7 @@ TEST_F(WasmLoopAssignmentAnalyzerTest, Empty1) {
TEST_F(WasmLoopAssignmentAnalyzerTest, One) { TEST_F(WasmLoopAssignmentAnalyzerTest, One) {
num_locals = 5; num_locals = 5;
for (int i = 0; i < 5; i++) { for (int i = 0; i < 5; i++) {
byte code[] = {WASM_LOOP(1, WASM_SET_ZERO(i))}; byte code[] = {WASM_LOOP(WASM_SET_ZERO(i))};
BitVector* assigned = Analyze(code, code + arraysize(code)); BitVector* assigned = Analyze(code, code + arraysize(code));
for (int j = 0; j < assigned->length(); j++) { for (int j = 0; j < assigned->length(); j++) {
CHECK_EQ(j == i, assigned->Contains(j)); CHECK_EQ(j == i, assigned->Contains(j));
...@@ -63,7 +63,7 @@ TEST_F(WasmLoopAssignmentAnalyzerTest, One) { ...@@ -63,7 +63,7 @@ TEST_F(WasmLoopAssignmentAnalyzerTest, One) {
TEST_F(WasmLoopAssignmentAnalyzerTest, OneBeyond) { TEST_F(WasmLoopAssignmentAnalyzerTest, OneBeyond) {
num_locals = 5; num_locals = 5;
for (int i = 0; i < 5; i++) { for (int i = 0; i < 5; i++) {
byte code[] = {WASM_LOOP(1, WASM_SET_ZERO(i)), WASM_SET_ZERO(1)}; byte code[] = {WASM_LOOP(WASM_SET_ZERO(i)), WASM_SET_ZERO(1)};
BitVector* assigned = Analyze(code, code + arraysize(code)); BitVector* assigned = Analyze(code, code + arraysize(code));
for (int j = 0; j < assigned->length(); j++) { for (int j = 0; j < assigned->length(); j++) {
CHECK_EQ(j == i, assigned->Contains(j)); CHECK_EQ(j == i, assigned->Contains(j));
...@@ -75,7 +75,7 @@ TEST_F(WasmLoopAssignmentAnalyzerTest, Two) { ...@@ -75,7 +75,7 @@ TEST_F(WasmLoopAssignmentAnalyzerTest, Two) {
num_locals = 5; num_locals = 5;
for (int i = 0; i < 5; i++) { for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) { for (int j = 0; j < 5; j++) {
byte code[] = {WASM_LOOP(2, WASM_SET_ZERO(i), WASM_SET_ZERO(j))}; byte code[] = {WASM_LOOP(WASM_SET_ZERO(i), WASM_SET_ZERO(j))};
BitVector* assigned = Analyze(code, code + arraysize(code)); BitVector* assigned = Analyze(code, code + arraysize(code));
for (int k = 0; k < assigned->length(); k++) { for (int k = 0; k < assigned->length(); k++) {
bool expected = k == i || k == j; bool expected = k == i || k == j;
...@@ -89,7 +89,7 @@ TEST_F(WasmLoopAssignmentAnalyzerTest, NestedIf) { ...@@ -89,7 +89,7 @@ TEST_F(WasmLoopAssignmentAnalyzerTest, NestedIf) {
num_locals = 5; num_locals = 5;
for (int i = 0; i < 5; i++) { for (int i = 0; i < 5; i++) {
byte code[] = {WASM_LOOP( byte code[] = {WASM_LOOP(
1, WASM_IF_ELSE(WASM_SET_ZERO(0), WASM_SET_ZERO(i), WASM_SET_ZERO(1)))}; WASM_IF_ELSE(WASM_SET_ZERO(0), WASM_SET_ZERO(i), WASM_SET_ZERO(1)))};
BitVector* assigned = Analyze(code, code + arraysize(code)); BitVector* assigned = Analyze(code, code + arraysize(code));
for (int j = 0; j < assigned->length(); j++) { for (int j = 0; j < assigned->length(); j++) {
bool expected = i == j || j == 0 || j == 1; bool expected = i == j || j == 0 || j == 1;
...@@ -128,7 +128,7 @@ TEST_F(WasmLoopAssignmentAnalyzerTest, BigLocal) { ...@@ -128,7 +128,7 @@ TEST_F(WasmLoopAssignmentAnalyzerTest, BigLocal) {
TEST_F(WasmLoopAssignmentAnalyzerTest, Break) { TEST_F(WasmLoopAssignmentAnalyzerTest, Break) {
num_locals = 3; num_locals = 3;
byte code[] = { byte code[] = {
WASM_LOOP(1, WASM_IF(WASM_GET_LOCAL(0), WASM_BRV(1, WASM_SET_ZERO(1)))), WASM_LOOP(WASM_IF(WASM_GET_LOCAL(0), WASM_BRV(1, WASM_SET_ZERO(1)))),
WASM_SET_ZERO(0)}; WASM_SET_ZERO(0)};
BitVector* assigned = Analyze(code, code + arraysize(code)); BitVector* assigned = Analyze(code, code + arraysize(code));
...@@ -141,10 +141,10 @@ TEST_F(WasmLoopAssignmentAnalyzerTest, Break) { ...@@ -141,10 +141,10 @@ TEST_F(WasmLoopAssignmentAnalyzerTest, Break) {
TEST_F(WasmLoopAssignmentAnalyzerTest, Loop1) { TEST_F(WasmLoopAssignmentAnalyzerTest, Loop1) {
num_locals = 5; num_locals = 5;
byte code[] = { byte code[] = {
WASM_LOOP(1, WASM_IF(WASM_GET_LOCAL(0), WASM_LOOP(WASM_IF(
WASM_BRV(0, WASM_SET_LOCAL( WASM_GET_LOCAL(0),
3, WASM_I32_SUB(WASM_GET_LOCAL(0), WASM_BRV(0, WASM_SET_LOCAL(
WASM_I8(1)))))), 3, WASM_I32_SUB(WASM_GET_LOCAL(0), WASM_I8(1)))))),
WASM_GET_LOCAL(0)}; WASM_GET_LOCAL(0)};
BitVector* assigned = Analyze(code, code + arraysize(code)); BitVector* assigned = Analyze(code, code + arraysize(code));
...@@ -160,16 +160,15 @@ TEST_F(WasmLoopAssignmentAnalyzerTest, Loop2) { ...@@ -160,16 +160,15 @@ TEST_F(WasmLoopAssignmentAnalyzerTest, Loop2) {
const byte kSum = 3; const byte kSum = 3;
byte code[] = {WASM_BLOCK( byte code[] = {WASM_BLOCK(
3,
WASM_WHILE( WASM_WHILE(
WASM_GET_LOCAL(kIter), WASM_GET_LOCAL(kIter),
WASM_BLOCK(2, WASM_SET_LOCAL( WASM_BLOCK(
kSum, WASM_F32_ADD( WASM_SET_LOCAL(
WASM_GET_LOCAL(kSum), kSum, WASM_F32_ADD(WASM_GET_LOCAL(kSum),
WASM_LOAD_MEM(MachineType::Float32(), WASM_LOAD_MEM(MachineType::Float32(),
WASM_GET_LOCAL(kIter)))), WASM_GET_LOCAL(kIter)))),
WASM_SET_LOCAL(kIter, WASM_I32_SUB(WASM_GET_LOCAL(kIter), WASM_SET_LOCAL(kIter,
WASM_I8(4))))), WASM_I32_SUB(WASM_GET_LOCAL(kIter), WASM_I8(4))))),
WASM_STORE_MEM(MachineType::Float32(), WASM_ZERO, WASM_GET_LOCAL(kSum)), WASM_STORE_MEM(MachineType::Float32(), WASM_ZERO, WASM_GET_LOCAL(kSum)),
WASM_GET_LOCAL(kIter))}; WASM_GET_LOCAL(kIter))};
......
...@@ -65,17 +65,17 @@ TEST_F(WasmMacroGenTest, Statements) { ...@@ -65,17 +65,17 @@ TEST_F(WasmMacroGenTest, Statements) {
EXPECT_SIZE(3, WASM_BR(0)); EXPECT_SIZE(3, WASM_BR(0));
EXPECT_SIZE(5, WASM_BR_IF(0, WASM_ZERO)); EXPECT_SIZE(5, WASM_BR_IF(0, WASM_ZERO));
EXPECT_SIZE(3, WASM_BLOCK(1, WASM_NOP)); EXPECT_SIZE(3, WASM_BLOCK(WASM_NOP));
EXPECT_SIZE(4, WASM_BLOCK(2, WASM_NOP, WASM_NOP)); EXPECT_SIZE(4, WASM_BLOCK(WASM_NOP, WASM_NOP));
EXPECT_SIZE(5, WASM_BLOCK(3, WASM_NOP, WASM_NOP, WASM_NOP)); EXPECT_SIZE(5, WASM_BLOCK(WASM_NOP, WASM_NOP, WASM_NOP));
EXPECT_SIZE(5, WASM_INFINITE_LOOP); EXPECT_SIZE(5, WASM_INFINITE_LOOP);
EXPECT_SIZE(3, WASM_LOOP(1, WASM_NOP)); EXPECT_SIZE(3, WASM_LOOP(WASM_NOP));
EXPECT_SIZE(4, WASM_LOOP(2, WASM_NOP, WASM_NOP)); EXPECT_SIZE(4, WASM_LOOP(WASM_NOP, WASM_NOP));
EXPECT_SIZE(5, WASM_LOOP(3, WASM_NOP, WASM_NOP, WASM_NOP)); EXPECT_SIZE(5, WASM_LOOP(WASM_NOP, WASM_NOP, WASM_NOP));
EXPECT_SIZE(5, WASM_LOOP(1, WASM_BR(0))); EXPECT_SIZE(5, WASM_LOOP(WASM_BR(0)));
EXPECT_SIZE(7, WASM_LOOP(1, WASM_BR_IF(0, WASM_ZERO))); EXPECT_SIZE(7, WASM_LOOP(WASM_BR_IF(0, WASM_ZERO)));
EXPECT_SIZE(2, WASM_RETURN0); EXPECT_SIZE(2, WASM_RETURN0);
EXPECT_SIZE(4, WASM_RETURN1(WASM_ZERO)); EXPECT_SIZE(4, WASM_RETURN1(WASM_ZERO));
...@@ -113,13 +113,13 @@ TEST_F(WasmMacroGenTest, Expressions) { ...@@ -113,13 +113,13 @@ TEST_F(WasmMacroGenTest, Expressions) {
EXPECT_SIZE(5, WASM_BRV(1, WASM_ZERO)); EXPECT_SIZE(5, WASM_BRV(1, WASM_ZERO));
EXPECT_SIZE(7, WASM_BRV_IF(1, WASM_ZERO, WASM_ZERO)); EXPECT_SIZE(7, WASM_BRV_IF(1, WASM_ZERO, WASM_ZERO));
EXPECT_SIZE(4, WASM_BLOCK(1, WASM_ZERO)); EXPECT_SIZE(4, WASM_BLOCK(WASM_ZERO));
EXPECT_SIZE(5, WASM_BLOCK(2, WASM_NOP, WASM_ZERO)); EXPECT_SIZE(5, WASM_BLOCK(WASM_NOP, WASM_ZERO));
EXPECT_SIZE(6, WASM_BLOCK(3, WASM_NOP, WASM_NOP, WASM_ZERO)); EXPECT_SIZE(6, WASM_BLOCK(WASM_NOP, WASM_NOP, WASM_ZERO));
EXPECT_SIZE(4, WASM_LOOP(1, WASM_ZERO)); EXPECT_SIZE(4, WASM_LOOP(WASM_ZERO));
EXPECT_SIZE(5, WASM_LOOP(2, WASM_NOP, WASM_ZERO)); EXPECT_SIZE(5, WASM_LOOP(WASM_NOP, WASM_ZERO));
EXPECT_SIZE(6, WASM_LOOP(3, WASM_NOP, WASM_NOP, WASM_ZERO)); EXPECT_SIZE(6, WASM_LOOP(WASM_NOP, WASM_NOP, WASM_ZERO));
} }
TEST_F(WasmMacroGenTest, CallFunction) { TEST_F(WasmMacroGenTest, CallFunction) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment