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

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

Issue 1564553002: Disable more crashing / failing wasm tests. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 11 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/cctest/wasm/test-run-wasm-module.cc ('k') | no next file » | 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 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 byte code[] = {kExprI64Const, 0, 0, 0, 0, 0, 0, 0, 0}; 244 byte code[] = {kExprI64Const, 0, 0, 0, 0, 0, 0, 0, 0};
245 int64_t* ptr = reinterpret_cast<int64_t*>(code + 1); 245 int64_t* ptr = reinterpret_cast<int64_t*>(code + 1);
246 const int kInc = 4498211; 246 const int kInc = 4498211;
247 for (int32_t i = kMinInt; i < kMaxInt - kInc; i = i + kInc) { 247 for (int32_t i = kMinInt; i < kMaxInt - kInc; i = i + kInc) {
248 *ptr = (static_cast<int64_t>(i) << 32) | i; 248 *ptr = (static_cast<int64_t>(i) << 32) | i;
249 EXPECT_VERIFIES(&env_l_l, code); 249 EXPECT_VERIFIES(&env_l_l, code);
250 } 250 }
251 } 251 }
252 252
253 253
254 // TODO(tizer): Fix on arm and reenable.
255 #if !V8_TARGET_ARCH_ARM && !V8_TARGET_ARCH_ARM64
256
254 TEST_F(WasmDecoderTest, Float32Const) { 257 TEST_F(WasmDecoderTest, Float32Const) {
255 byte code[] = {kExprF32Const, 0, 0, 0, 0}; 258 byte code[] = {kExprF32Const, 0, 0, 0, 0};
256 float* ptr = reinterpret_cast<float*>(code + 1); 259 float* ptr = reinterpret_cast<float*>(code + 1);
257 for (int i = 0; i < 30; i++) { 260 for (int i = 0; i < 30; i++) {
258 *ptr = i * -7.75f; 261 *ptr = i * -7.75f;
259 EXPECT_VERIFIES(&env_f_ff, code); 262 EXPECT_VERIFIES(&env_f_ff, code);
260 } 263 }
261 } 264 }
262 265
263 266
264 TEST_F(WasmDecoderTest, Float64Const) { 267 TEST_F(WasmDecoderTest, Float64Const) {
265 byte code[] = {kExprF64Const, 0, 0, 0, 0, 0, 0, 0, 0}; 268 byte code[] = {kExprF64Const, 0, 0, 0, 0, 0, 0, 0, 0};
266 double* ptr = reinterpret_cast<double*>(code + 1); 269 double* ptr = reinterpret_cast<double*>(code + 1);
267 for (int i = 0; i < 30; i++) { 270 for (int i = 0; i < 30; i++) {
268 *ptr = i * 33.45; 271 *ptr = i * 33.45;
269 EXPECT_VERIFIES(&env_d_dd, code); 272 EXPECT_VERIFIES(&env_d_dd, code);
270 } 273 }
271 } 274 }
272 275
276 #endif
277
273 278
274 TEST_F(WasmDecoderTest, Int32Const_off_end) { 279 TEST_F(WasmDecoderTest, Int32Const_off_end) {
275 byte code[] = {kExprI32Const, 0xaa, 0xbb, 0xcc, 0x44}; 280 byte code[] = {kExprI32Const, 0xaa, 0xbb, 0xcc, 0x44};
276 281
277 for (int size = 1; size <= 4; size++) { 282 for (int size = 1; size <= 4; size++) {
278 Verify(kError, &env_i_i, code, code + size); 283 Verify(kError, &env_i_i, code, code + size);
279 } 284 }
280 } 285 }
281 286
282 287
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
520 EXPECT_VERIFIES(&env_i_i, code); 525 EXPECT_VERIFIES(&env_i_i, code);
521 } 526 }
522 527
523 528
524 TEST_F(WasmDecoderTest, ExprBlock1b) { 529 TEST_F(WasmDecoderTest, ExprBlock1b) {
525 static const byte code[] = {kExprBlock, 1, kExprI8Const, 0}; 530 static const byte code[] = {kExprBlock, 1, kExprI8Const, 0};
526 EXPECT_FAILURE(&env_f_ff, code); 531 EXPECT_FAILURE(&env_f_ff, code);
527 } 532 }
528 533
529 534
535 // TODO(tizer): Fix on arm and reenable.
536 #if !V8_TARGET_ARCH_ARM && !V8_TARGET_ARCH_ARM64
537
530 TEST_F(WasmDecoderTest, ExprBlock1c) { 538 TEST_F(WasmDecoderTest, ExprBlock1c) {
531 static const byte code[] = {kExprBlock, 1, kExprF32Const, 0, 0, 0, 0}; 539 static const byte code[] = {kExprBlock, 1, kExprF32Const, 0, 0, 0, 0};
532 EXPECT_VERIFIES(&env_f_ff, code); 540 EXPECT_VERIFIES(&env_f_ff, code);
533 } 541 }
534 542
543 #endif
544
535 545
536 TEST_F(WasmDecoderTest, IfEmpty) { 546 TEST_F(WasmDecoderTest, IfEmpty) {
537 static const byte code[] = {kExprIf, kExprGetLocal, 0, kExprNop}; 547 static const byte code[] = {kExprIf, kExprGetLocal, 0, kExprNop};
538 EXPECT_VERIFIES(&env_v_i, code); 548 EXPECT_VERIFIES(&env_v_i, code);
539 } 549 }
540 550
541 551
542 TEST_F(WasmDecoderTest, IfSet) { 552 TEST_F(WasmDecoderTest, IfSet) {
543 static const byte code[] = {kExprIfElse, kExprGetLocal, 0, kExprSetLocal, 553 static const byte code[] = {kExprIfElse, kExprGetLocal, 0, kExprSetLocal,
544 0, kExprI8Const, 0, kExprNop}; 554 0, kExprI8Const, 0, kExprNop};
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
687 697
688 698
689 TEST_F(WasmDecoderTest, ReturnVoid2) { 699 TEST_F(WasmDecoderTest, ReturnVoid2) {
690 static const byte code[] = {kExprBlock, 1, kExprBr, 0, kExprNop}; 700 static const byte code[] = {kExprBlock, 1, kExprBr, 0, kExprNop};
691 EXPECT_VERIFIES(&env_v_v, code); 701 EXPECT_VERIFIES(&env_v_v, code);
692 EXPECT_FAILURE(&env_i_i, code); 702 EXPECT_FAILURE(&env_i_i, code);
693 EXPECT_FAILURE(&env_i_f, code); 703 EXPECT_FAILURE(&env_i_f, code);
694 } 704 }
695 705
696 706
707 // TODO(tizer): Fix on arm and reenable.
708 #if !V8_TARGET_ARCH_ARM && !V8_TARGET_ARCH_ARM64
709
697 TEST_F(WasmDecoderTest, ReturnVoid3) { 710 TEST_F(WasmDecoderTest, ReturnVoid3) {
698 EXPECT_VERIFIES_INLINE(&env_v_v, kExprI8Const, 0); 711 EXPECT_VERIFIES_INLINE(&env_v_v, kExprI8Const, 0);
699 EXPECT_VERIFIES_INLINE(&env_v_v, kExprI32Const, 0, 0, 0, 0); 712 EXPECT_VERIFIES_INLINE(&env_v_v, kExprI32Const, 0, 0, 0, 0);
700 EXPECT_VERIFIES_INLINE(&env_v_v, kExprI64Const, 0, 0, 0, 0, 0, 0, 0, 0); 713 EXPECT_VERIFIES_INLINE(&env_v_v, kExprI64Const, 0, 0, 0, 0, 0, 0, 0, 0);
701 EXPECT_VERIFIES_INLINE(&env_v_v, kExprF32Const, 0, 0, 0, 0); 714 EXPECT_VERIFIES_INLINE(&env_v_v, kExprF32Const, 0, 0, 0, 0);
702 EXPECT_VERIFIES_INLINE(&env_v_v, kExprF64Const, 0, 0, 0, 0, 0, 0, 0, 0); 715 EXPECT_VERIFIES_INLINE(&env_v_v, kExprF64Const, 0, 0, 0, 0, 0, 0, 0, 0);
703 716
704 EXPECT_VERIFIES_INLINE(&env_v_i, kExprGetLocal, 0); 717 EXPECT_VERIFIES_INLINE(&env_v_i, kExprGetLocal, 0);
705 } 718 }
706 719
720 #endif
721
707 722
708 TEST_F(WasmDecoderTest, Unreachable1) { 723 TEST_F(WasmDecoderTest, Unreachable1) {
709 EXPECT_VERIFIES_INLINE(&env_v_v, kExprUnreachable); 724 EXPECT_VERIFIES_INLINE(&env_v_v, kExprUnreachable);
710 EXPECT_VERIFIES_INLINE(&env_v_v, kExprUnreachable, kExprUnreachable); 725 EXPECT_VERIFIES_INLINE(&env_v_v, kExprUnreachable, kExprUnreachable);
711 EXPECT_VERIFIES_INLINE(&env_v_v, WASM_BLOCK(2, WASM_UNREACHABLE, WASM_ZERO)); 726 EXPECT_VERIFIES_INLINE(&env_v_v, WASM_BLOCK(2, WASM_UNREACHABLE, WASM_ZERO));
712 EXPECT_VERIFIES_INLINE(&env_v_v, WASM_BLOCK(2, WASM_BR(0), WASM_ZERO)); 727 EXPECT_VERIFIES_INLINE(&env_v_v, WASM_BLOCK(2, WASM_BR(0), WASM_ZERO));
713 EXPECT_VERIFIES_INLINE(&env_v_v, WASM_LOOP(2, WASM_UNREACHABLE, WASM_ZERO)); 728 EXPECT_VERIFIES_INLINE(&env_v_v, WASM_LOOP(2, WASM_UNREACHABLE, WASM_ZERO));
714 EXPECT_VERIFIES_INLINE(&env_v_v, WASM_LOOP(2, WASM_BR(0), WASM_ZERO)); 729 EXPECT_VERIFIES_INLINE(&env_v_v, WASM_LOOP(2, WASM_BR(0), WASM_ZERO));
715 } 730 }
716 731
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
859 VERIFY(WASM_IF(WASM_GET_LOCAL(0), WASM_NOP)); 874 VERIFY(WASM_IF(WASM_GET_LOCAL(0), WASM_NOP));
860 VERIFY(WASM_IF_ELSE(WASM_GET_LOCAL(0), WASM_NOP, WASM_NOP)); 875 VERIFY(WASM_IF_ELSE(WASM_GET_LOCAL(0), WASM_NOP, WASM_NOP));
861 VERIFY(WASM_NOP); 876 VERIFY(WASM_NOP);
862 VERIFY(WASM_BLOCK(1, WASM_NOP)); 877 VERIFY(WASM_BLOCK(1, WASM_NOP));
863 VERIFY(WASM_LOOP(1, WASM_NOP)); 878 VERIFY(WASM_LOOP(1, WASM_NOP));
864 VERIFY(WASM_LOOP(1, WASM_BREAK(0))); 879 VERIFY(WASM_LOOP(1, WASM_BREAK(0)));
865 VERIFY(WASM_LOOP(1, WASM_CONTINUE(0))); 880 VERIFY(WASM_LOOP(1, WASM_CONTINUE(0)));
866 } 881 }
867 882
868 883
884 // TODO(tizer): Fix on arm and reenable.
885 #if !V8_TARGET_ARCH_ARM && !V8_TARGET_ARCH_ARM64
886
869 TEST_F(WasmDecoderTest, MacrosBreak) { 887 TEST_F(WasmDecoderTest, MacrosBreak) {
870 EXPECT_VERIFIES_INLINE(&env_v_v, WASM_LOOP(1, WASM_BREAK(0))); 888 EXPECT_VERIFIES_INLINE(&env_v_v, WASM_LOOP(1, WASM_BREAK(0)));
871 889
872 EXPECT_VERIFIES_INLINE(&env_i_i, WASM_LOOP(1, WASM_BREAKV(0, WASM_ZERO))); 890 EXPECT_VERIFIES_INLINE(&env_i_i, WASM_LOOP(1, WASM_BREAKV(0, WASM_ZERO)));
873 EXPECT_VERIFIES_INLINE(&env_l_l, WASM_LOOP(1, WASM_BREAKV(0, WASM_I64(0)))); 891 EXPECT_VERIFIES_INLINE(&env_l_l, WASM_LOOP(1, WASM_BREAKV(0, WASM_I64(0))));
874 EXPECT_VERIFIES_INLINE(&env_f_ff, 892 EXPECT_VERIFIES_INLINE(&env_f_ff,
875 WASM_LOOP(1, WASM_BREAKV(0, WASM_F32(0.0)))); 893 WASM_LOOP(1, WASM_BREAKV(0, WASM_F32(0.0))));
876 EXPECT_VERIFIES_INLINE(&env_d_dd, 894 EXPECT_VERIFIES_INLINE(&env_d_dd,
877 WASM_LOOP(1, WASM_BREAKV(0, WASM_F64(0.0)))); 895 WASM_LOOP(1, WASM_BREAKV(0, WASM_F64(0.0))));
878 } 896 }
879 897
898 #endif
899
880 900
881 TEST_F(WasmDecoderTest, MacrosContinue) { 901 TEST_F(WasmDecoderTest, MacrosContinue) {
882 EXPECT_VERIFIES_INLINE(&env_v_v, WASM_LOOP(1, WASM_CONTINUE(0))); 902 EXPECT_VERIFIES_INLINE(&env_v_v, WASM_LOOP(1, WASM_CONTINUE(0)));
883 } 903 }
884 904
885 905
886 TEST_F(WasmDecoderTest, MacrosVariadic) { 906 TEST_F(WasmDecoderTest, MacrosVariadic) {
887 VERIFY(WASM_BLOCK(2, WASM_NOP, WASM_NOP)); 907 VERIFY(WASM_BLOCK(2, WASM_NOP, WASM_NOP));
888 VERIFY(WASM_BLOCK(3, WASM_NOP, WASM_NOP, WASM_NOP)); 908 VERIFY(WASM_BLOCK(3, WASM_NOP, WASM_NOP, WASM_NOP));
889 VERIFY(WASM_LOOP(2, WASM_NOP, WASM_NOP)); 909 VERIFY(WASM_LOOP(2, WASM_NOP, WASM_NOP));
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after
1238 module_env.AddFunction(sigs.i_i()); 1258 module_env.AddFunction(sigs.i_i());
1239 module_env.AddFunction(sigs.i_ii()); 1259 module_env.AddFunction(sigs.i_ii());
1240 module_env.AddFunction(sigs.f_ff()); 1260 module_env.AddFunction(sigs.f_ff());
1241 1261
1242 EXPECT_FAILURE_INLINE(env, WASM_CALL_FUNCTION0(0)); 1262 EXPECT_FAILURE_INLINE(env, WASM_CALL_FUNCTION0(0));
1243 EXPECT_FAILURE_INLINE(env, WASM_CALL_FUNCTION(1, WASM_ZERO)); 1263 EXPECT_FAILURE_INLINE(env, WASM_CALL_FUNCTION(1, WASM_ZERO));
1244 EXPECT_FAILURE_INLINE(env, WASM_CALL_FUNCTION(2, WASM_GET_LOCAL(0))); 1264 EXPECT_FAILURE_INLINE(env, WASM_CALL_FUNCTION(2, WASM_GET_LOCAL(0)));
1245 } 1265 }
1246 1266
1247 1267
1268 // TODO(tizer): Fix on arm and reenable.
1269 #if !V8_TARGET_ARCH_ARM && !V8_TARGET_ARCH_ARM64
1270
1248 TEST_F(WasmDecoderTest, CallsWithSpilloverArgs) { 1271 TEST_F(WasmDecoderTest, CallsWithSpilloverArgs) {
1249 static LocalType a_i_ff[] = {kAstI32, kAstF32, kAstF32}; 1272 static LocalType a_i_ff[] = {kAstI32, kAstF32, kAstF32};
1250 FunctionSig sig_i_ff(1, 2, a_i_ff); 1273 FunctionSig sig_i_ff(1, 2, a_i_ff);
1251 FunctionEnv env_i_ff; 1274 FunctionEnv env_i_ff;
1252 init_env(&env_i_ff, &sig_i_ff); 1275 init_env(&env_i_ff, &sig_i_ff);
1253 1276
1254 TestModuleEnv module_env; 1277 TestModuleEnv module_env;
1255 env_i_ff.module = &module_env; 1278 env_i_ff.module = &module_env;
1256 env_i_i.module = &module_env; 1279 env_i_i.module = &module_env;
1257 env_f_ff.module = &module_env; 1280 env_f_ff.module = &module_env;
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
1301 EXPECT_FAILURE_INLINE(env, WASM_CALL_FUNCTION(0, WASM_I64(27))); 1324 EXPECT_FAILURE_INLINE(env, WASM_CALL_FUNCTION(0, WASM_I64(27)));
1302 EXPECT_FAILURE_INLINE(env, WASM_CALL_FUNCTION(0, WASM_F64(37.2))); 1325 EXPECT_FAILURE_INLINE(env, WASM_CALL_FUNCTION(0, WASM_F64(37.2)));
1303 1326
1304 module_env.AddFunction(sigs.i_d()); 1327 module_env.AddFunction(sigs.i_d());
1305 1328
1306 EXPECT_FAILURE_INLINE(env, WASM_CALL_FUNCTION(1, WASM_I8(16))); 1329 EXPECT_FAILURE_INLINE(env, WASM_CALL_FUNCTION(1, WASM_I8(16)));
1307 EXPECT_FAILURE_INLINE(env, WASM_CALL_FUNCTION(1, WASM_I64(16))); 1330 EXPECT_FAILURE_INLINE(env, WASM_CALL_FUNCTION(1, WASM_I64(16)));
1308 EXPECT_FAILURE_INLINE(env, WASM_CALL_FUNCTION(1, WASM_F32(17.6))); 1331 EXPECT_FAILURE_INLINE(env, WASM_CALL_FUNCTION(1, WASM_F32(17.6)));
1309 } 1332 }
1310 1333
1334 #endif
1335
1311 1336
1312 TEST_F(WasmDecoderTest, SimpleIndirectCalls) { 1337 TEST_F(WasmDecoderTest, SimpleIndirectCalls) {
1313 FunctionEnv* env = &env_i_i; 1338 FunctionEnv* env = &env_i_i;
1314 TestModuleEnv module_env; 1339 TestModuleEnv module_env;
1315 env->module = &module_env; 1340 env->module = &module_env;
1316 1341
1317 byte f0 = module_env.AddSignature(sigs.i_v()); 1342 byte f0 = module_env.AddSignature(sigs.i_v());
1318 byte f1 = module_env.AddSignature(sigs.i_i()); 1343 byte f1 = module_env.AddSignature(sigs.i_i());
1319 byte f2 = module_env.AddSignature(sigs.i_ii()); 1344 byte f2 = module_env.AddSignature(sigs.i_ii());
1320 1345
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
1543 1, WASM_BLOCK(1, WASM_IF(WASM_GET_LOCAL(0), WASM_BREAK(i)))))}; 1568 1, WASM_BLOCK(1, WASM_IF(WASM_GET_LOCAL(0), WASM_BREAK(i)))))};
1544 if (i < 3) { 1569 if (i < 3) {
1545 EXPECT_VERIFIES(&env_v_v, code); 1570 EXPECT_VERIFIES(&env_v_v, code);
1546 } else { 1571 } else {
1547 EXPECT_FAILURE(&env_v_v, code); 1572 EXPECT_FAILURE(&env_v_v, code);
1548 } 1573 }
1549 } 1574 }
1550 } 1575 }
1551 1576
1552 1577
1578 // TODO(tizer): Fix on arm and reenable.
1579 #if !V8_TARGET_ARCH_ARM && !V8_TARGET_ARCH_ARM64
1580
1553 TEST_F(WasmDecoderTest, BreaksWithMultipleTypes) { 1581 TEST_F(WasmDecoderTest, BreaksWithMultipleTypes) {
1554 EXPECT_FAILURE_INLINE( 1582 EXPECT_FAILURE_INLINE(
1555 &env_i_i, 1583 &env_i_i,
1556 WASM_BLOCK(2, WASM_BRV_IF(0, WASM_ZERO, WASM_I8(7)), WASM_F32(7.7))); 1584 WASM_BLOCK(2, WASM_BRV_IF(0, WASM_ZERO, WASM_I8(7)), WASM_F32(7.7)));
1557 EXPECT_FAILURE_INLINE(&env_i_i, 1585 EXPECT_FAILURE_INLINE(&env_i_i,
1558 WASM_BLOCK(2, WASM_BRV_IF(0, WASM_ZERO, WASM_I8(7)), 1586 WASM_BLOCK(2, WASM_BRV_IF(0, WASM_ZERO, WASM_I8(7)),
1559 WASM_BRV_IF(0, WASM_ZERO, WASM_F32(7.7)))); 1587 WASM_BRV_IF(0, WASM_ZERO, WASM_F32(7.7))));
1560 EXPECT_FAILURE_INLINE(&env_i_i, 1588 EXPECT_FAILURE_INLINE(&env_i_i,
1561 WASM_BLOCK(3, WASM_BRV_IF(0, WASM_ZERO, WASM_I8(8)), 1589 WASM_BLOCK(3, WASM_BRV_IF(0, WASM_ZERO, WASM_I8(8)),
1562 WASM_BRV_IF(0, WASM_ZERO, WASM_I8(0)), 1590 WASM_BRV_IF(0, WASM_ZERO, WASM_I8(0)),
1563 WASM_BRV_IF(0, WASM_ZERO, WASM_F32(7.7)))); 1591 WASM_BRV_IF(0, WASM_ZERO, WASM_F32(7.7))));
1564 EXPECT_FAILURE_INLINE(&env_i_i, 1592 EXPECT_FAILURE_INLINE(&env_i_i,
1565 WASM_BLOCK(3, WASM_BRV_IF(0, WASM_ZERO, WASM_I8(9)), 1593 WASM_BLOCK(3, WASM_BRV_IF(0, WASM_ZERO, WASM_I8(9)),
1566 WASM_BRV_IF(0, WASM_ZERO, WASM_F32(7.7)), 1594 WASM_BRV_IF(0, WASM_ZERO, WASM_F32(7.7)),
1567 WASM_BRV_IF(0, WASM_ZERO, WASM_I8(11)))); 1595 WASM_BRV_IF(0, WASM_ZERO, WASM_I8(11))));
1568 } 1596 }
1569 1597
1598 #endif
1599
1570 1600
1571 TEST_F(WasmDecoderTest, BreakNesting_6_levels) { 1601 TEST_F(WasmDecoderTest, BreakNesting_6_levels) {
1572 for (int mask = 0; mask < 64; mask++) { 1602 for (int mask = 0; mask < 64; mask++) {
1573 for (int i = 0; i < 14; i++) { 1603 for (int i = 0; i < 14; i++) {
1574 byte code[] = { 1604 byte code[] = {
1575 kExprBlock, 1, // -- 1605 kExprBlock, 1, // --
1576 kExprBlock, 1, // -- 1606 kExprBlock, 1, // --
1577 kExprBlock, 1, // -- 1607 kExprBlock, 1, // --
1578 kExprBlock, 1, // -- 1608 kExprBlock, 1, // --
1579 kExprBlock, 1, // -- 1609 kExprBlock, 1, // --
(...skipping 13 matching lines...) Expand all
1593 if (i < depth) { 1623 if (i < depth) {
1594 EXPECT_VERIFIES(&env_v_v, code); 1624 EXPECT_VERIFIES(&env_v_v, code);
1595 } else { 1625 } else {
1596 EXPECT_FAILURE(&env_v_v, code); 1626 EXPECT_FAILURE(&env_v_v, code);
1597 } 1627 }
1598 } 1628 }
1599 } 1629 }
1600 } 1630 }
1601 1631
1602 1632
1633 // TODO(tizer): Fix on arm and reenable.
1634 #if !V8_TARGET_ARCH_ARM && !V8_TARGET_ARCH_ARM64
1635
1603 TEST_F(WasmDecoderTest, ExprBreak_TypeCheck) { 1636 TEST_F(WasmDecoderTest, ExprBreak_TypeCheck) {
1604 FunctionEnv* envs[] = {&env_i_i, &env_l_l, &env_f_ff, &env_d_dd}; 1637 FunctionEnv* envs[] = {&env_i_i, &env_l_l, &env_f_ff, &env_d_dd};
1605 for (size_t i = 0; i < arraysize(envs); i++) { 1638 for (size_t i = 0; i < arraysize(envs); i++) {
1606 FunctionEnv* env = envs[i]; 1639 FunctionEnv* env = envs[i];
1607 // unify X and X => OK 1640 // unify X and X => OK
1608 EXPECT_VERIFIES_INLINE( 1641 EXPECT_VERIFIES_INLINE(
1609 env, WASM_BLOCK(2, WASM_IF(WASM_ZERO, WASM_BRV(0, WASM_GET_LOCAL(0))), 1642 env, WASM_BLOCK(2, WASM_IF(WASM_ZERO, WASM_BRV(0, WASM_GET_LOCAL(0))),
1610 WASM_GET_LOCAL(0))); 1643 WASM_GET_LOCAL(0)));
1611 } 1644 }
1612 1645
1613 // unify i32 and f32 => fail 1646 // unify i32 and f32 => fail
1614 EXPECT_FAILURE_INLINE( 1647 EXPECT_FAILURE_INLINE(
1615 &env_i_i, 1648 &env_i_i,
1616 WASM_BLOCK(2, WASM_IF(WASM_ZERO, WASM_BRV(0, WASM_ZERO)), WASM_F32(1.2))); 1649 WASM_BLOCK(2, WASM_IF(WASM_ZERO, WASM_BRV(0, WASM_ZERO)), WASM_F32(1.2)));
1617 1650
1618 // unify f64 and f64 => OK 1651 // unify f64 and f64 => OK
1619 EXPECT_VERIFIES_INLINE( 1652 EXPECT_VERIFIES_INLINE(
1620 &env_d_dd, 1653 &env_d_dd,
1621 WASM_BLOCK(2, WASM_IF(WASM_ZERO, WASM_BRV(0, WASM_GET_LOCAL(0))), 1654 WASM_BLOCK(2, WASM_IF(WASM_ZERO, WASM_BRV(0, WASM_GET_LOCAL(0))),
1622 WASM_F64(1.2))); 1655 WASM_F64(1.2)));
1623 } 1656 }
1624 1657
1658 #endif
1659
1625 1660
1626 TEST_F(WasmDecoderTest, ExprBreak_TypeCheckAll) { 1661 TEST_F(WasmDecoderTest, ExprBreak_TypeCheckAll) {
1627 byte code1[] = {WASM_BLOCK(2, 1662 byte code1[] = {WASM_BLOCK(2,
1628 WASM_IF(WASM_ZERO, WASM_BRV(0, WASM_GET_LOCAL(0))), 1663 WASM_IF(WASM_ZERO, WASM_BRV(0, WASM_GET_LOCAL(0))),
1629 WASM_GET_LOCAL(1))}; 1664 WASM_GET_LOCAL(1))};
1630 byte code2[] = {WASM_BLOCK( 1665 byte code2[] = {WASM_BLOCK(
1631 2, WASM_IF(WASM_ZERO, WASM_BRV_IF(0, WASM_ZERO, WASM_GET_LOCAL(0))), 1666 2, WASM_IF(WASM_ZERO, WASM_BRV_IF(0, WASM_ZERO, WASM_GET_LOCAL(0))),
1632 WASM_GET_LOCAL(1))}; 1667 WASM_GET_LOCAL(1))};
1633 1668
1634 1669
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
1789 static byte code[] = { 1824 static byte code[] = {
1790 WASM_TABLESWITCH_OP(2, 2, WASM_CASE(0), WASM_CASE(1)), 1825 WASM_TABLESWITCH_OP(2, 2, WASM_CASE(0), WASM_CASE(1)),
1791 WASM_TABLESWITCH_BODY(WASM_I8(3), WASM_I8(10), WASM_I8(11))}; 1826 WASM_TABLESWITCH_BODY(WASM_I8(3), WASM_I8(10), WASM_I8(11))};
1792 EXPECT_VERIFIES(&env_i_i, code); 1827 EXPECT_VERIFIES(&env_i_i, code);
1793 EXPECT_VERIFIES(&env_v_v, code); 1828 EXPECT_VERIFIES(&env_v_v, code);
1794 EXPECT_FAILURE(&env_f_ff, code); 1829 EXPECT_FAILURE(&env_f_ff, code);
1795 EXPECT_FAILURE(&env_d_dd, code); 1830 EXPECT_FAILURE(&env_d_dd, code);
1796 } 1831 }
1797 1832
1798 1833
1834 // TODO(tizer): Fix on arm and reenable.
1835 #if !V8_TARGET_ARCH_ARM && !V8_TARGET_ARCH_ARM64
1836
1799 TEST_F(WasmDecoderTest, TableSwitch1b) { 1837 TEST_F(WasmDecoderTest, TableSwitch1b) {
1800 EXPECT_VERIFIES_INLINE(&env_i_i, WASM_TABLESWITCH_OP(1, 1, WASM_CASE(0)), 1838 EXPECT_VERIFIES_INLINE(&env_i_i, WASM_TABLESWITCH_OP(1, 1, WASM_CASE(0)),
1801 WASM_TABLESWITCH_BODY(WASM_GET_LOCAL(0), WASM_ZERO)); 1839 WASM_TABLESWITCH_BODY(WASM_GET_LOCAL(0), WASM_ZERO));
1802 1840
1803 EXPECT_VERIFIES_INLINE(&env_f_ff, WASM_TABLESWITCH_OP(1, 1, WASM_CASE(0)), 1841 EXPECT_VERIFIES_INLINE(&env_f_ff, WASM_TABLESWITCH_OP(1, 1, WASM_CASE(0)),
1804 WASM_TABLESWITCH_BODY(WASM_ZERO, WASM_F32(0.0))); 1842 WASM_TABLESWITCH_BODY(WASM_ZERO, WASM_F32(0.0)));
1805 1843
1806 EXPECT_VERIFIES_INLINE(&env_d_dd, WASM_TABLESWITCH_OP(1, 1, WASM_CASE(0)), 1844 EXPECT_VERIFIES_INLINE(&env_d_dd, WASM_TABLESWITCH_OP(1, 1, WASM_CASE(0)),
1807 WASM_TABLESWITCH_BODY(WASM_ZERO, WASM_F64(0.0))); 1845 WASM_TABLESWITCH_BODY(WASM_ZERO, WASM_F64(0.0)));
1808 } 1846 }
1809 1847
1848 #endif
1849
1810 1850
1811 TEST_F(WasmDecoderTest, TableSwitch_br) { 1851 TEST_F(WasmDecoderTest, TableSwitch_br) {
1812 EXPECT_VERIFIES_INLINE(&env_i_i, WASM_TABLESWITCH_OP(0, 1, WASM_CASE_BR(0)), 1852 EXPECT_VERIFIES_INLINE(&env_i_i, WASM_TABLESWITCH_OP(0, 1, WASM_CASE_BR(0)),
1813 WASM_GET_LOCAL(0)); 1853 WASM_GET_LOCAL(0));
1814 for (int depth = 0; depth < 2; depth++) { 1854 for (int depth = 0; depth < 2; depth++) {
1815 EXPECT_VERIFIES_INLINE( 1855 EXPECT_VERIFIES_INLINE(
1816 &env_i_i, WASM_BLOCK(1, WASM_TABLESWITCH_OP(0, 1, WASM_CASE_BR(depth)), 1856 &env_i_i, WASM_BLOCK(1, WASM_TABLESWITCH_OP(0, 1, WASM_CASE_BR(depth)),
1817 WASM_GET_LOCAL(0))); 1857 WASM_GET_LOCAL(0)));
1818 } 1858 }
1819 } 1859 }
(...skipping 13 matching lines...) Expand all
1833 1873
1834 1874
1835 TEST_F(WasmDecoderTest, TableSwitch_invalid_case_ref) { 1875 TEST_F(WasmDecoderTest, TableSwitch_invalid_case_ref) {
1836 EXPECT_FAILURE_INLINE(&env_i_i, WASM_TABLESWITCH_OP(0, 1, WASM_CASE(0)), 1876 EXPECT_FAILURE_INLINE(&env_i_i, WASM_TABLESWITCH_OP(0, 1, WASM_CASE(0)),
1837 WASM_GET_LOCAL(0)); 1877 WASM_GET_LOCAL(0));
1838 EXPECT_FAILURE_INLINE(&env_i_i, WASM_TABLESWITCH_OP(1, 1, WASM_CASE(1)), 1878 EXPECT_FAILURE_INLINE(&env_i_i, WASM_TABLESWITCH_OP(1, 1, WASM_CASE(1)),
1839 WASM_TABLESWITCH_BODY(WASM_GET_LOCAL(0), WASM_ZERO)); 1879 WASM_TABLESWITCH_BODY(WASM_GET_LOCAL(0), WASM_ZERO));
1840 } 1880 }
1841 1881
1842 1882
1883 // TODO(tizer): Fix on arm and reenable.
1884 #if !V8_TARGET_ARCH_ARM && !V8_TARGET_ARCH_ARM64
1885
1843 TEST_F(WasmDecoderTest, TableSwitch1_br) { 1886 TEST_F(WasmDecoderTest, TableSwitch1_br) {
1844 EXPECT_VERIFIES_INLINE( 1887 EXPECT_VERIFIES_INLINE(
1845 &env_i_i, WASM_TABLESWITCH_OP(1, 1, WASM_CASE(0)), 1888 &env_i_i, WASM_TABLESWITCH_OP(1, 1, WASM_CASE(0)),
1846 WASM_TABLESWITCH_BODY(WASM_GET_LOCAL(0), WASM_BRV(0, WASM_ZERO))); 1889 WASM_TABLESWITCH_BODY(WASM_GET_LOCAL(0), WASM_BRV(0, WASM_ZERO)));
1847 } 1890 }
1848 1891
1892 #endif
1893
1849 1894
1850 TEST_F(WasmDecoderTest, TableSwitch2_br) { 1895 TEST_F(WasmDecoderTest, TableSwitch2_br) {
1851 EXPECT_VERIFIES_INLINE( 1896 EXPECT_VERIFIES_INLINE(
1852 &env_i_i, WASM_TABLESWITCH_OP(2, 2, WASM_CASE(0), WASM_CASE(1)), 1897 &env_i_i, WASM_TABLESWITCH_OP(2, 2, WASM_CASE(0), WASM_CASE(1)),
1853 WASM_TABLESWITCH_BODY(WASM_GET_LOCAL(0), WASM_BRV(0, WASM_I8(0)), 1898 WASM_TABLESWITCH_BODY(WASM_GET_LOCAL(0), WASM_BRV(0, WASM_I8(0)),
1854 WASM_BRV(0, WASM_I8(1)))); 1899 WASM_BRV(0, WASM_I8(1))));
1855 1900
1856 EXPECT_FAILURE_INLINE( 1901 EXPECT_FAILURE_INLINE(
1857 &env_f_ff, WASM_TABLESWITCH_OP(2, 2, WASM_CASE(0), WASM_CASE(1)), 1902 &env_f_ff, WASM_TABLESWITCH_OP(2, 2, WASM_CASE(0), WASM_CASE(1)),
1858 WASM_TABLESWITCH_BODY(WASM_ZERO, WASM_BRV(0, WASM_I8(3)), 1903 WASM_TABLESWITCH_BODY(WASM_ZERO, WASM_BRV(0, WASM_I8(3)),
1859 WASM_BRV(0, WASM_I8(4)))); 1904 WASM_BRV(0, WASM_I8(4))));
1860 } 1905 }
1861 1906
1862 1907
1863 TEST_F(WasmDecoderTest, TableSwitch2x2) { 1908 TEST_F(WasmDecoderTest, TableSwitch2x2) {
1864 EXPECT_VERIFIES_INLINE( 1909 EXPECT_VERIFIES_INLINE(
1865 &env_i_i, WASM_TABLESWITCH_OP(2, 4, WASM_CASE(0), WASM_CASE(1), 1910 &env_i_i, WASM_TABLESWITCH_OP(2, 4, WASM_CASE(0), WASM_CASE(1),
1866 WASM_CASE(0), WASM_CASE(1)), 1911 WASM_CASE(0), WASM_CASE(1)),
1867 WASM_TABLESWITCH_BODY(WASM_GET_LOCAL(0), WASM_BRV(0, WASM_I8(3)), 1912 WASM_TABLESWITCH_BODY(WASM_GET_LOCAL(0), WASM_BRV(0, WASM_I8(3)),
1868 WASM_BRV(0, WASM_I8(4)))); 1913 WASM_BRV(0, WASM_I8(4))));
1869 } 1914 }
1870 1915
1871 1916
1917 // TODO(tizer): Fix on arm and reenable.
1918 #if !V8_TARGET_ARCH_ARM && !V8_TARGET_ARCH_ARM64
1919
1872 TEST_F(WasmDecoderTest, ExprBreakNesting1) { 1920 TEST_F(WasmDecoderTest, ExprBreakNesting1) {
1873 EXPECT_VERIFIES_INLINE(&env_v_v, WASM_BLOCK(1, WASM_BRV(0, WASM_ZERO))); 1921 EXPECT_VERIFIES_INLINE(&env_v_v, WASM_BLOCK(1, WASM_BRV(0, WASM_ZERO)));
1874 EXPECT_VERIFIES_INLINE(&env_v_v, WASM_BLOCK(1, WASM_BR(0))); 1922 EXPECT_VERIFIES_INLINE(&env_v_v, WASM_BLOCK(1, WASM_BR(0)));
1875 EXPECT_VERIFIES_INLINE(&env_v_v, 1923 EXPECT_VERIFIES_INLINE(&env_v_v,
1876 WASM_BLOCK(1, WASM_BRV_IF(0, WASM_ZERO, WASM_ZERO))); 1924 WASM_BLOCK(1, WASM_BRV_IF(0, WASM_ZERO, WASM_ZERO)));
1877 EXPECT_VERIFIES_INLINE(&env_v_v, WASM_BLOCK(1, WASM_BR_IF(0, WASM_ZERO))); 1925 EXPECT_VERIFIES_INLINE(&env_v_v, WASM_BLOCK(1, WASM_BR_IF(0, WASM_ZERO)));
1878 1926
1879 EXPECT_VERIFIES_INLINE(&env_v_v, WASM_LOOP(1, WASM_BRV(0, WASM_ZERO))); 1927 EXPECT_VERIFIES_INLINE(&env_v_v, WASM_LOOP(1, WASM_BRV(0, WASM_ZERO)));
1880 EXPECT_VERIFIES_INLINE(&env_v_v, WASM_LOOP(1, WASM_BR(0))); 1928 EXPECT_VERIFIES_INLINE(&env_v_v, WASM_LOOP(1, WASM_BR(0)));
1881 EXPECT_VERIFIES_INLINE(&env_v_v, 1929 EXPECT_VERIFIES_INLINE(&env_v_v,
1882 WASM_LOOP(1, WASM_BRV_IF(0, WASM_ZERO, WASM_ZERO))); 1930 WASM_LOOP(1, WASM_BRV_IF(0, WASM_ZERO, WASM_ZERO)));
1883 EXPECT_VERIFIES_INLINE(&env_v_v, WASM_LOOP(1, WASM_BR_IF(0, WASM_ZERO))); 1931 EXPECT_VERIFIES_INLINE(&env_v_v, WASM_LOOP(1, WASM_BR_IF(0, WASM_ZERO)));
1884 1932
1885 EXPECT_VERIFIES_INLINE(&env_v_v, WASM_LOOP(1, WASM_BRV(1, WASM_ZERO))); 1933 EXPECT_VERIFIES_INLINE(&env_v_v, WASM_LOOP(1, WASM_BRV(1, WASM_ZERO)));
1886 EXPECT_VERIFIES_INLINE(&env_v_v, WASM_LOOP(1, WASM_BR(1))); 1934 EXPECT_VERIFIES_INLINE(&env_v_v, WASM_LOOP(1, WASM_BR(1)));
1887 } 1935 }
1888 1936
1937 #endif
1938
1889 1939
1890 TEST_F(WasmDecoderTest, Select) { 1940 TEST_F(WasmDecoderTest, Select) {
1891 EXPECT_VERIFIES_INLINE( 1941 EXPECT_VERIFIES_INLINE(
1892 &env_i_i, 1942 &env_i_i,
1893 WASM_SELECT(WASM_GET_LOCAL(0), WASM_GET_LOCAL(0), WASM_GET_LOCAL(0))); 1943 WASM_SELECT(WASM_GET_LOCAL(0), WASM_GET_LOCAL(0), WASM_GET_LOCAL(0)));
1894 } 1944 }
1895 1945
1896 1946
1947 // TODO(tizer): Fix on arm and reenable.
1948 #if !V8_TARGET_ARCH_ARM && !V8_TARGET_ARCH_ARM64
1949
1897 TEST_F(WasmDecoderTest, Select_TypeCheck) { 1950 TEST_F(WasmDecoderTest, Select_TypeCheck) {
1898 EXPECT_FAILURE_INLINE(&env_i_i, WASM_SELECT(WASM_F32(9.9), WASM_GET_LOCAL(0), 1951 EXPECT_FAILURE_INLINE(&env_i_i, WASM_SELECT(WASM_F32(9.9), WASM_GET_LOCAL(0),
1899 WASM_GET_LOCAL(0))); 1952 WASM_GET_LOCAL(0)));
1900 1953
1901 EXPECT_FAILURE_INLINE(&env_i_i, WASM_SELECT(WASM_GET_LOCAL(0), WASM_F64(0.25), 1954 EXPECT_FAILURE_INLINE(&env_i_i, WASM_SELECT(WASM_GET_LOCAL(0), WASM_F64(0.25),
1902 WASM_GET_LOCAL(0))); 1955 WASM_GET_LOCAL(0)));
1903 1956
1904 EXPECT_FAILURE_INLINE( 1957 EXPECT_FAILURE_INLINE(
1905 &env_i_i, WASM_SELECT(WASM_F32(9.9), WASM_GET_LOCAL(0), WASM_I64(0))); 1958 &env_i_i, WASM_SELECT(WASM_F32(9.9), WASM_GET_LOCAL(0), WASM_I64(0)));
1906 } 1959 }
1907 1960
1961 #endif
1962
1908 1963
1909 class WasmOpcodeLengthTest : public TestWithZone { 1964 class WasmOpcodeLengthTest : public TestWithZone {
1910 public: 1965 public:
1911 WasmOpcodeLengthTest() : TestWithZone() {} 1966 WasmOpcodeLengthTest() : TestWithZone() {}
1912 }; 1967 };
1913 1968
1914 1969
1915 #define EXPECT_LENGTH(expected, opcode) \ 1970 #define EXPECT_LENGTH(expected, opcode) \
1916 { \ 1971 { \
1917 static const byte code[] = {opcode, 0, 0, 0, 0, 0, 0, 0, 0}; \ 1972 static const byte code[] = {opcode, 0, 0, 0, 0, 0, 0, 0, 0}; \
(...skipping 457 matching lines...) Expand 10 before | Expand all | Expand 10 after
2375 EXPECT_ARITY(1, kExprF64SConvertI64); 2430 EXPECT_ARITY(1, kExprF64SConvertI64);
2376 EXPECT_ARITY(1, kExprF64UConvertI64); 2431 EXPECT_ARITY(1, kExprF64UConvertI64);
2377 EXPECT_ARITY(1, kExprF64ConvertF32); 2432 EXPECT_ARITY(1, kExprF64ConvertF32);
2378 EXPECT_ARITY(1, kExprF64ReinterpretI64); 2433 EXPECT_ARITY(1, kExprF64ReinterpretI64);
2379 EXPECT_ARITY(1, kExprI32ReinterpretF32); 2434 EXPECT_ARITY(1, kExprI32ReinterpretF32);
2380 EXPECT_ARITY(1, kExprI64ReinterpretF64); 2435 EXPECT_ARITY(1, kExprI64ReinterpretF64);
2381 } 2436 }
2382 } // namespace wasm 2437 } // namespace wasm
2383 } // namespace internal 2438 } // namespace internal
2384 } // namespace v8 2439 } // namespace v8
OLDNEW
« no previous file with comments | « test/cctest/wasm/test-run-wasm-module.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698