Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(53)

Side by Side Diff: test/unittests/wasm/ast-decoder-unittest.cc

Issue 2209433002: [wasm] Make LoadGlobal/StoreGlobal opcodes match what is coming in binary 0xC. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « test/mjsunit/wasm/wasm-constants.js ('k') | test/unittests/wasm/wasm-macro-gen-unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "test/unittests/test-utils.h" 5 #include "test/unittests/test-utils.h"
6 6
7 #include "src/v8.h" 7 #include "src/v8.h"
8 8
9 #include "test/cctest/wasm/test-signatures.h" 9 #include "test/cctest/wasm/test-signatures.h"
10 10
(...skipping 1329 matching lines...) Expand 10 before | Expand all | Expand 10 after
1340 EXPECT_FAILURE_INLINE(sig, WASM_CALL_IMPORT1(f1, WASM_F32(17.6))); 1340 EXPECT_FAILURE_INLINE(sig, WASM_CALL_IMPORT1(f1, WASM_F32(17.6)));
1341 } 1341 }
1342 1342
1343 TEST_F(AstDecoderTest, Int32Globals) { 1343 TEST_F(AstDecoderTest, Int32Globals) {
1344 FunctionSig* sig = sigs.i_i(); 1344 FunctionSig* sig = sigs.i_i();
1345 TestModuleEnv module_env; 1345 TestModuleEnv module_env;
1346 module = &module_env; 1346 module = &module_env;
1347 1347
1348 module_env.AddGlobal(kAstI32); 1348 module_env.AddGlobal(kAstI32);
1349 1349
1350 EXPECT_VERIFIES_INLINE(sig, WASM_LOAD_GLOBAL(0)); 1350 EXPECT_VERIFIES_INLINE(sig, WASM_GET_GLOBAL(0));
1351 EXPECT_VERIFIES_INLINE(sig, WASM_STORE_GLOBAL(0, WASM_GET_LOCAL(0))); 1351 EXPECT_VERIFIES_INLINE(sig, WASM_SET_GLOBAL(0, WASM_GET_LOCAL(0)));
1352 } 1352 }
1353 1353
1354 TEST_F(AstDecoderTest, Int32Globals_fail) { 1354 TEST_F(AstDecoderTest, Int32Globals_fail) {
1355 FunctionSig* sig = sigs.i_i(); 1355 FunctionSig* sig = sigs.i_i();
1356 TestModuleEnv module_env; 1356 TestModuleEnv module_env;
1357 module = &module_env; 1357 module = &module_env;
1358 1358
1359 module_env.AddGlobal(kAstI64); 1359 module_env.AddGlobal(kAstI64);
1360 module_env.AddGlobal(kAstI64); 1360 module_env.AddGlobal(kAstI64);
1361 module_env.AddGlobal(kAstF32); 1361 module_env.AddGlobal(kAstF32);
1362 module_env.AddGlobal(kAstF64); 1362 module_env.AddGlobal(kAstF64);
1363 1363
1364 EXPECT_FAILURE_INLINE(sig, WASM_LOAD_GLOBAL(0)); 1364 EXPECT_FAILURE_INLINE(sig, WASM_GET_GLOBAL(0));
1365 EXPECT_FAILURE_INLINE(sig, WASM_LOAD_GLOBAL(1)); 1365 EXPECT_FAILURE_INLINE(sig, WASM_GET_GLOBAL(1));
1366 EXPECT_FAILURE_INLINE(sig, WASM_LOAD_GLOBAL(2)); 1366 EXPECT_FAILURE_INLINE(sig, WASM_GET_GLOBAL(2));
1367 EXPECT_FAILURE_INLINE(sig, WASM_LOAD_GLOBAL(3)); 1367 EXPECT_FAILURE_INLINE(sig, WASM_GET_GLOBAL(3));
1368 1368
1369 EXPECT_FAILURE_INLINE(sig, WASM_STORE_GLOBAL(0, WASM_GET_LOCAL(0))); 1369 EXPECT_FAILURE_INLINE(sig, WASM_SET_GLOBAL(0, WASM_GET_LOCAL(0)));
1370 EXPECT_FAILURE_INLINE(sig, WASM_STORE_GLOBAL(1, WASM_GET_LOCAL(0))); 1370 EXPECT_FAILURE_INLINE(sig, WASM_SET_GLOBAL(1, WASM_GET_LOCAL(0)));
1371 EXPECT_FAILURE_INLINE(sig, WASM_STORE_GLOBAL(2, WASM_GET_LOCAL(0))); 1371 EXPECT_FAILURE_INLINE(sig, WASM_SET_GLOBAL(2, WASM_GET_LOCAL(0)));
1372 EXPECT_FAILURE_INLINE(sig, WASM_STORE_GLOBAL(3, WASM_GET_LOCAL(0))); 1372 EXPECT_FAILURE_INLINE(sig, WASM_SET_GLOBAL(3, WASM_GET_LOCAL(0)));
1373 } 1373 }
1374 1374
1375 TEST_F(AstDecoderTest, Int64Globals) { 1375 TEST_F(AstDecoderTest, Int64Globals) {
1376 FunctionSig* sig = sigs.l_l(); 1376 FunctionSig* sig = sigs.l_l();
1377 TestModuleEnv module_env; 1377 TestModuleEnv module_env;
1378 module = &module_env; 1378 module = &module_env;
1379 1379
1380 module_env.AddGlobal(kAstI64); 1380 module_env.AddGlobal(kAstI64);
1381 module_env.AddGlobal(kAstI64); 1381 module_env.AddGlobal(kAstI64);
1382 1382
1383 EXPECT_VERIFIES_INLINE(sig, WASM_LOAD_GLOBAL(0)); 1383 EXPECT_VERIFIES_INLINE(sig, WASM_GET_GLOBAL(0));
1384 EXPECT_VERIFIES_INLINE(sig, WASM_LOAD_GLOBAL(1)); 1384 EXPECT_VERIFIES_INLINE(sig, WASM_GET_GLOBAL(1));
1385 1385
1386 EXPECT_VERIFIES_INLINE(sig, WASM_STORE_GLOBAL(0, WASM_GET_LOCAL(0))); 1386 EXPECT_VERIFIES_INLINE(sig, WASM_SET_GLOBAL(0, WASM_GET_LOCAL(0)));
1387 EXPECT_VERIFIES_INLINE(sig, WASM_STORE_GLOBAL(1, WASM_GET_LOCAL(0))); 1387 EXPECT_VERIFIES_INLINE(sig, WASM_SET_GLOBAL(1, WASM_GET_LOCAL(0)));
1388 } 1388 }
1389 1389
1390 TEST_F(AstDecoderTest, Float32Globals) { 1390 TEST_F(AstDecoderTest, Float32Globals) {
1391 FunctionSig* sig = sigs.f_ff(); 1391 FunctionSig* sig = sigs.f_ff();
1392 TestModuleEnv module_env; 1392 TestModuleEnv module_env;
1393 module = &module_env; 1393 module = &module_env;
1394 1394
1395 module_env.AddGlobal(kAstF32); 1395 module_env.AddGlobal(kAstF32);
1396 1396
1397 EXPECT_VERIFIES_INLINE(sig, WASM_LOAD_GLOBAL(0)); 1397 EXPECT_VERIFIES_INLINE(sig, WASM_GET_GLOBAL(0));
1398 EXPECT_VERIFIES_INLINE(sig, WASM_STORE_GLOBAL(0, WASM_GET_LOCAL(0))); 1398 EXPECT_VERIFIES_INLINE(sig, WASM_SET_GLOBAL(0, WASM_GET_LOCAL(0)));
1399 } 1399 }
1400 1400
1401 TEST_F(AstDecoderTest, Float64Globals) { 1401 TEST_F(AstDecoderTest, Float64Globals) {
1402 FunctionSig* sig = sigs.d_dd(); 1402 FunctionSig* sig = sigs.d_dd();
1403 TestModuleEnv module_env; 1403 TestModuleEnv module_env;
1404 module = &module_env; 1404 module = &module_env;
1405 1405
1406 module_env.AddGlobal(kAstF64); 1406 module_env.AddGlobal(kAstF64);
1407 1407
1408 EXPECT_VERIFIES_INLINE(sig, WASM_LOAD_GLOBAL(0)); 1408 EXPECT_VERIFIES_INLINE(sig, WASM_GET_GLOBAL(0));
1409 EXPECT_VERIFIES_INLINE(sig, WASM_STORE_GLOBAL(0, WASM_GET_LOCAL(0))); 1409 EXPECT_VERIFIES_INLINE(sig, WASM_SET_GLOBAL(0, WASM_GET_LOCAL(0)));
1410 } 1410 }
1411 1411
1412 TEST_F(AstDecoderTest, AllLoadGlobalCombinations) { 1412 TEST_F(AstDecoderTest, AllGetGlobalCombinations) {
1413 for (size_t i = 0; i < arraysize(kLocalTypes); i++) { 1413 for (size_t i = 0; i < arraysize(kLocalTypes); i++) {
1414 LocalType local_type = kLocalTypes[i]; 1414 LocalType local_type = kLocalTypes[i];
1415 for (size_t j = 0; j < arraysize(kLocalTypes); j++) { 1415 for (size_t j = 0; j < arraysize(kLocalTypes); j++) {
1416 LocalType global_type = kLocalTypes[j]; 1416 LocalType global_type = kLocalTypes[j];
1417 FunctionSig sig(1, 0, &local_type); 1417 FunctionSig sig(1, 0, &local_type);
1418 TestModuleEnv module_env; 1418 TestModuleEnv module_env;
1419 module = &module_env; 1419 module = &module_env;
1420 module_env.AddGlobal(global_type); 1420 module_env.AddGlobal(global_type);
1421 if (local_type == global_type) { 1421 if (local_type == global_type) {
1422 EXPECT_VERIFIES_INLINE(&sig, WASM_LOAD_GLOBAL(0)); 1422 EXPECT_VERIFIES_INLINE(&sig, WASM_GET_GLOBAL(0));
1423 } else { 1423 } else {
1424 EXPECT_FAILURE_INLINE(&sig, WASM_LOAD_GLOBAL(0)); 1424 EXPECT_FAILURE_INLINE(&sig, WASM_GET_GLOBAL(0));
1425 } 1425 }
1426 } 1426 }
1427 } 1427 }
1428 } 1428 }
1429 1429
1430 TEST_F(AstDecoderTest, AllStoreGlobalCombinations) { 1430 TEST_F(AstDecoderTest, AllSetGlobalCombinations) {
1431 for (size_t i = 0; i < arraysize(kLocalTypes); i++) { 1431 for (size_t i = 0; i < arraysize(kLocalTypes); i++) {
1432 LocalType local_type = kLocalTypes[i]; 1432 LocalType local_type = kLocalTypes[i];
1433 for (size_t j = 0; j < arraysize(kLocalTypes); j++) { 1433 for (size_t j = 0; j < arraysize(kLocalTypes); j++) {
1434 LocalType global_type = kLocalTypes[j]; 1434 LocalType global_type = kLocalTypes[j];
1435 FunctionSig sig(0, 1, &local_type); 1435 FunctionSig sig(0, 1, &local_type);
1436 TestModuleEnv module_env; 1436 TestModuleEnv module_env;
1437 module = &module_env; 1437 module = &module_env;
1438 module_env.AddGlobal(global_type); 1438 module_env.AddGlobal(global_type);
1439 if (local_type == global_type) { 1439 if (local_type == global_type) {
1440 EXPECT_VERIFIES_INLINE(&sig, WASM_STORE_GLOBAL(0, WASM_GET_LOCAL(0))); 1440 EXPECT_VERIFIES_INLINE(&sig, WASM_SET_GLOBAL(0, WASM_GET_LOCAL(0)));
1441 } else { 1441 } else {
1442 EXPECT_FAILURE_INLINE(&sig, WASM_STORE_GLOBAL(0, WASM_GET_LOCAL(0))); 1442 EXPECT_FAILURE_INLINE(&sig, WASM_SET_GLOBAL(0, WASM_GET_LOCAL(0)));
1443 } 1443 }
1444 } 1444 }
1445 } 1445 }
1446 } 1446 }
1447 1447
1448 TEST_F(AstDecoderTest, BreakEnd) { 1448 TEST_F(AstDecoderTest, BreakEnd) {
1449 EXPECT_VERIFIES_INLINE(sigs.i_i(), 1449 EXPECT_VERIFIES_INLINE(sigs.i_i(),
1450 B1(WASM_I32_ADD(WASM_BRV(0, WASM_ZERO), WASM_ZERO))); 1450 B1(WASM_I32_ADD(WASM_BRV(0, WASM_ZERO), WASM_ZERO)));
1451 EXPECT_VERIFIES_INLINE(sigs.i_i(), 1451 EXPECT_VERIFIES_INLINE(sigs.i_i(),
1452 B1(WASM_I32_ADD(WASM_ZERO, WASM_BRV(0, WASM_ZERO)))); 1452 B1(WASM_I32_ADD(WASM_ZERO, WASM_BRV(0, WASM_ZERO))));
(...skipping 404 matching lines...) Expand 10 before | Expand all | Expand 10 after
1857 EXPECT_LENGTH(3, kExprBr); 1857 EXPECT_LENGTH(3, kExprBr);
1858 EXPECT_LENGTH(3, kExprBrIf); 1858 EXPECT_LENGTH(3, kExprBrIf);
1859 } 1859 }
1860 1860
1861 TEST_F(WasmOpcodeLengthTest, MiscExpressions) { 1861 TEST_F(WasmOpcodeLengthTest, MiscExpressions) {
1862 EXPECT_LENGTH(2, kExprI8Const); 1862 EXPECT_LENGTH(2, kExprI8Const);
1863 EXPECT_LENGTH(5, kExprF32Const); 1863 EXPECT_LENGTH(5, kExprF32Const);
1864 EXPECT_LENGTH(9, kExprF64Const); 1864 EXPECT_LENGTH(9, kExprF64Const);
1865 EXPECT_LENGTH(2, kExprGetLocal); 1865 EXPECT_LENGTH(2, kExprGetLocal);
1866 EXPECT_LENGTH(2, kExprSetLocal); 1866 EXPECT_LENGTH(2, kExprSetLocal);
1867 EXPECT_LENGTH(2, kExprLoadGlobal); 1867 EXPECT_LENGTH(2, kExprGetGlobal);
1868 EXPECT_LENGTH(2, kExprStoreGlobal); 1868 EXPECT_LENGTH(2, kExprSetGlobal);
1869 EXPECT_LENGTH(3, kExprCallFunction); 1869 EXPECT_LENGTH(3, kExprCallFunction);
1870 EXPECT_LENGTH(3, kExprCallImport); 1870 EXPECT_LENGTH(3, kExprCallImport);
1871 EXPECT_LENGTH(3, kExprCallIndirect); 1871 EXPECT_LENGTH(3, kExprCallIndirect);
1872 EXPECT_LENGTH(1, kExprIf); 1872 EXPECT_LENGTH(1, kExprIf);
1873 EXPECT_LENGTH(1, kExprBlock); 1873 EXPECT_LENGTH(1, kExprBlock);
1874 EXPECT_LENGTH(1, kExprLoop); 1874 EXPECT_LENGTH(1, kExprLoop);
1875 EXPECT_LENGTH(3, kExprBr); 1875 EXPECT_LENGTH(3, kExprBr);
1876 EXPECT_LENGTH(3, kExprBrIf); 1876 EXPECT_LENGTH(3, kExprBrIf);
1877 } 1877 }
1878 1878
(...skipping 11 matching lines...) Expand all
1890 EXPECT_LENGTH_N(4, kExprI64Const, U32V_3(9999)); 1890 EXPECT_LENGTH_N(4, kExprI64Const, U32V_3(9999));
1891 EXPECT_LENGTH_N(5, kExprI64Const, U32V_4(99999)); 1891 EXPECT_LENGTH_N(5, kExprI64Const, U32V_4(99999));
1892 EXPECT_LENGTH_N(6, kExprI64Const, U32V_5(9999999)); 1892 EXPECT_LENGTH_N(6, kExprI64Const, U32V_5(9999999));
1893 EXPECT_LENGTH_N(7, WASM_I64V_6(777777)); 1893 EXPECT_LENGTH_N(7, WASM_I64V_6(777777));
1894 EXPECT_LENGTH_N(8, WASM_I64V_7(7777777)); 1894 EXPECT_LENGTH_N(8, WASM_I64V_7(7777777));
1895 EXPECT_LENGTH_N(9, WASM_I64V_8(77777777)); 1895 EXPECT_LENGTH_N(9, WASM_I64V_8(77777777));
1896 EXPECT_LENGTH_N(10, WASM_I64V_9(777777777)); 1896 EXPECT_LENGTH_N(10, WASM_I64V_9(777777777));
1897 } 1897 }
1898 1898
1899 TEST_F(WasmOpcodeLengthTest, VariableLength) { 1899 TEST_F(WasmOpcodeLengthTest, VariableLength) {
1900 EXPECT_LENGTH_N(2, kExprLoadGlobal, U32V_1(1)); 1900 EXPECT_LENGTH_N(2, kExprGetGlobal, U32V_1(1));
1901 EXPECT_LENGTH_N(3, kExprLoadGlobal, U32V_2(33)); 1901 EXPECT_LENGTH_N(3, kExprGetGlobal, U32V_2(33));
1902 EXPECT_LENGTH_N(4, kExprLoadGlobal, U32V_3(44)); 1902 EXPECT_LENGTH_N(4, kExprGetGlobal, U32V_3(44));
1903 EXPECT_LENGTH_N(5, kExprLoadGlobal, U32V_4(66)); 1903 EXPECT_LENGTH_N(5, kExprGetGlobal, U32V_4(66));
1904 EXPECT_LENGTH_N(6, kExprLoadGlobal, U32V_5(77)); 1904 EXPECT_LENGTH_N(6, kExprGetGlobal, U32V_5(77));
1905 } 1905 }
1906 1906
1907 TEST_F(WasmOpcodeLengthTest, LoadsAndStores) { 1907 TEST_F(WasmOpcodeLengthTest, LoadsAndStores) {
1908 EXPECT_LENGTH(3, kExprI32LoadMem8S); 1908 EXPECT_LENGTH(3, kExprI32LoadMem8S);
1909 EXPECT_LENGTH(3, kExprI32LoadMem8U); 1909 EXPECT_LENGTH(3, kExprI32LoadMem8U);
1910 EXPECT_LENGTH(3, kExprI32LoadMem16S); 1910 EXPECT_LENGTH(3, kExprI32LoadMem16S);
1911 EXPECT_LENGTH(3, kExprI32LoadMem16U); 1911 EXPECT_LENGTH(3, kExprI32LoadMem16U);
1912 EXPECT_LENGTH(3, kExprI32LoadMem); 1912 EXPECT_LENGTH(3, kExprI32LoadMem);
1913 EXPECT_LENGTH(3, kExprI64LoadMem8S); 1913 EXPECT_LENGTH(3, kExprI64LoadMem8S);
1914 EXPECT_LENGTH(3, kExprI64LoadMem8U); 1914 EXPECT_LENGTH(3, kExprI64LoadMem8U);
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
2100 } 2100 }
2101 2101
2102 TEST_F(WasmOpcodeArityTest, Misc) { 2102 TEST_F(WasmOpcodeArityTest, Misc) {
2103 EXPECT_ARITY(0, kExprI8Const); 2103 EXPECT_ARITY(0, kExprI8Const);
2104 EXPECT_ARITY(0, kExprI32Const); 2104 EXPECT_ARITY(0, kExprI32Const);
2105 EXPECT_ARITY(0, kExprF32Const); 2105 EXPECT_ARITY(0, kExprF32Const);
2106 EXPECT_ARITY(0, kExprI64Const); 2106 EXPECT_ARITY(0, kExprI64Const);
2107 EXPECT_ARITY(0, kExprF64Const); 2107 EXPECT_ARITY(0, kExprF64Const);
2108 EXPECT_ARITY(0, kExprGetLocal); 2108 EXPECT_ARITY(0, kExprGetLocal);
2109 EXPECT_ARITY(1, kExprSetLocal); 2109 EXPECT_ARITY(1, kExprSetLocal);
2110 EXPECT_ARITY(0, kExprLoadGlobal); 2110 EXPECT_ARITY(0, kExprGetGlobal);
2111 EXPECT_ARITY(1, kExprStoreGlobal); 2111 EXPECT_ARITY(1, kExprSetGlobal);
2112 } 2112 }
2113 2113
2114 TEST_F(WasmOpcodeArityTest, Calls) { 2114 TEST_F(WasmOpcodeArityTest, Calls) {
2115 { 2115 {
2116 EXPECT_ARITY(2, kExprCallFunction, 2, 0); 2116 EXPECT_ARITY(2, kExprCallFunction, 2, 0);
2117 EXPECT_ARITY(2, kExprCallImport, 2, 0); 2117 EXPECT_ARITY(2, kExprCallImport, 2, 0);
2118 EXPECT_ARITY(3, kExprCallIndirect, 2, 0); 2118 EXPECT_ARITY(3, kExprCallIndirect, 2, 0);
2119 2119
2120 EXPECT_ARITY(1, kExprBr, ARITY_1); 2120 EXPECT_ARITY(1, kExprBr, ARITY_1);
2121 EXPECT_ARITY(2, kExprBrIf, ARITY_1); 2121 EXPECT_ARITY(2, kExprBrIf, ARITY_1);
(...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after
2464 iter.next(); 2464 iter.next();
2465 EXPECT_TRUE(iter.has_next()); 2465 EXPECT_TRUE(iter.has_next());
2466 EXPECT_EQ(kExprI8Const, iter.current()); 2466 EXPECT_EQ(kExprI8Const, iter.current());
2467 iter.next(); 2467 iter.next();
2468 EXPECT_FALSE(iter.has_next()); 2468 EXPECT_FALSE(iter.has_next());
2469 } 2469 }
2470 2470
2471 } // namespace wasm 2471 } // namespace wasm
2472 } // namespace internal 2472 } // namespace internal
2473 } // namespace v8 2473 } // namespace v8
OLDNEW
« no previous file with comments | « test/mjsunit/wasm/wasm-constants.js ('k') | test/unittests/wasm/wasm-macro-gen-unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698