| OLD | NEW | 
|     1 // Copyright 2016 the V8 project authors. All rights reserved. |     1 // Copyright 2016 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 "src/assembler-inl.h" |     5 #include "src/assembler-inl.h" | 
|     6 #include "test/cctest/cctest.h" |     6 #include "test/cctest/cctest.h" | 
|     7 #include "test/cctest/compiler/value-helper.h" |     7 #include "test/cctest/compiler/value-helper.h" | 
|     8 #include "test/cctest/wasm/wasm-run-utils.h" |     8 #include "test/cctest/wasm/wasm-run-utils.h" | 
|     9 #include "test/common/wasm/wasm-macro-gen.h" |     9 #include "test/common/wasm/wasm-macro-gen.h" | 
|    10  |    10  | 
| (...skipping 724 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   735                        WASM_SIMD_I16x8_REPLACE_LANE(7, WASM_GET_LOCAL(simd), |   735                        WASM_SIMD_I16x8_REPLACE_LANE(7, WASM_GET_LOCAL(simd), | 
|   736                                                     WASM_GET_LOCAL(new_val))), |   736                                                     WASM_GET_LOCAL(new_val))), | 
|   737         WASM_SIMD_CHECK_SPLAT8(I16x8, simd, I32, new_val), WASM_ONE); |   737         WASM_SIMD_CHECK_SPLAT8(I16x8, simd, I32, new_val), WASM_ONE); | 
|   738  |   738  | 
|   739   CHECK_EQ(1, r.Call(1, 2)); |   739   CHECK_EQ(1, r.Call(1, 2)); | 
|   740 } |   740 } | 
|   741 #endif  // V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_X64 || SIMD_LOWERING_TARGET || |   741 #endif  // V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_X64 || SIMD_LOWERING_TARGET || | 
|   742         // V8_TARGET_ARCH_MIPS || V8_TARGET_ARCH_MIPS64 |   742         // V8_TARGET_ARCH_MIPS || V8_TARGET_ARCH_MIPS64 | 
|   743  |   743  | 
|   744 #if V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_X64 || V8_TARGET_ARCH_MIPS || \ |   744 #if V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_X64 || V8_TARGET_ARCH_MIPS || \ | 
|   745     V8_TARGET_ARCH_MIPS64 |   745     V8_TARGET_ARCH_MIPS64 || SIMD_LOWERING_TARGET | 
|   746 WASM_EXEC_COMPILED_TEST(I8x16Splat) { |   746 WASM_EXEC_COMPILED_TEST(I8x16Splat) { | 
|   747   FLAG_wasm_simd_prototype = true; |   747   FLAG_wasm_simd_prototype = true; | 
|   748  |   748  | 
|   749   WasmRunner<int32_t, int32_t> r(kExecuteCompiled); |   749   WasmRunner<int32_t, int32_t> r(kExecuteCompiled); | 
|   750   byte lane_val = 0; |   750   byte lane_val = 0; | 
|   751   byte simd = r.AllocateLocal(kWasmS128); |   751   byte simd = r.AllocateLocal(kWasmS128); | 
|   752   BUILD(r, |   752   BUILD(r, | 
|   753         WASM_SET_LOCAL(simd, WASM_SIMD_I8x16_SPLAT(WASM_GET_LOCAL(lane_val))), |   753         WASM_SET_LOCAL(simd, WASM_SIMD_I8x16_SPLAT(WASM_GET_LOCAL(lane_val))), | 
|   754         WASM_SIMD_CHECK_SPLAT8(I8x16, simd, I32, lane_val), WASM_ONE); |   754         WASM_SIMD_CHECK_SPLAT8(I8x16, simd, I32, lane_val), WASM_ONE); | 
|   755  |   755  | 
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   854                           new_val, new_val, new_val, new_val, new_val, new_val, |   854                           new_val, new_val, new_val, new_val, new_val, new_val, | 
|   855                           new_val, new_val, new_val, new_val, new_val, old_val), |   855                           new_val, new_val, new_val, new_val, new_val, old_val), | 
|   856         WASM_SET_LOCAL(simd, |   856         WASM_SET_LOCAL(simd, | 
|   857                        WASM_SIMD_I8x16_REPLACE_LANE(15, WASM_GET_LOCAL(simd), |   857                        WASM_SIMD_I8x16_REPLACE_LANE(15, WASM_GET_LOCAL(simd), | 
|   858                                                     WASM_GET_LOCAL(new_val))), |   858                                                     WASM_GET_LOCAL(new_val))), | 
|   859         WASM_SIMD_CHECK_SPLAT16(I8x16, simd, I32, new_val), WASM_ONE); |   859         WASM_SIMD_CHECK_SPLAT16(I8x16, simd, I32, new_val), WASM_ONE); | 
|   860  |   860  | 
|   861   CHECK_EQ(1, r.Call(1, 2)); |   861   CHECK_EQ(1, r.Call(1, 2)); | 
|   862 } |   862 } | 
|   863 #endif  // V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_X64 || V8_TARGET_ARCH_MIPS || |   863 #endif  // V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_X64 || V8_TARGET_ARCH_MIPS || | 
|   864         // V8_TARGET_ARCH_MIPS64 |   864         // V8_TARGET_ARCH_MIPS64 || SIMD_LOWERING_TARGET | 
|   865  |   865  | 
|   866 #if V8_TARGET_ARCH_ARM || SIMD_LOWERING_TARGET || V8_TARGET_ARCH_MIPS || \ |   866 #if V8_TARGET_ARCH_ARM || SIMD_LOWERING_TARGET || V8_TARGET_ARCH_MIPS || \ | 
|   867     V8_TARGET_ARCH_MIPS64 |   867     V8_TARGET_ARCH_MIPS64 | 
|   868 // Determines if conversion from float to int will be valid. |   868 // Determines if conversion from float to int will be valid. | 
|   869 bool CanRoundToZeroAndConvert(double val, bool unsigned_integer) { |   869 bool CanRoundToZeroAndConvert(double val, bool unsigned_integer) { | 
|   870   const double max_uint = static_cast<double>(0xffffffffu); |   870   const double max_uint = static_cast<double>(0xffffffffu); | 
|   871   const double max_int = static_cast<double>(kMaxInt); |   871   const double max_int = static_cast<double>(kMaxInt); | 
|   872   const double min_int = static_cast<double>(kMinInt); |   872   const double min_int = static_cast<double>(kMinInt); | 
|   873  |   873  | 
|   874   // Check for NaN. |   874   // Check for NaN. | 
| (...skipping 488 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1363 WASM_EXEC_COMPILED_TEST(I16x8ShrS) { |  1363 WASM_EXEC_COMPILED_TEST(I16x8ShrS) { | 
|  1364   RunI16x8ShiftOpTest(kExprI16x8ShrS, ArithmeticShiftRight, 1); |  1364   RunI16x8ShiftOpTest(kExprI16x8ShrS, ArithmeticShiftRight, 1); | 
|  1365 } |  1365 } | 
|  1366  |  1366  | 
|  1367 WASM_EXEC_COMPILED_TEST(I16x8ShrU) { |  1367 WASM_EXEC_COMPILED_TEST(I16x8ShrU) { | 
|  1368   RunI16x8ShiftOpTest(kExprI16x8ShrU, LogicalShiftRight, 1); |  1368   RunI16x8ShiftOpTest(kExprI16x8ShrU, LogicalShiftRight, 1); | 
|  1369 } |  1369 } | 
|  1370 #endif  // V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_X64 || SIMD_LOWERING_TARGET || |  1370 #endif  // V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_X64 || SIMD_LOWERING_TARGET || | 
|  1371         // V8_TARGET_ARCH_MIPS || V8_TARGET_ARCH_MIPS64 |  1371         // V8_TARGET_ARCH_MIPS || V8_TARGET_ARCH_MIPS64 | 
|  1372  |  1372  | 
|  1373 #if V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_MIPS || V8_TARGET_ARCH_MIPS64 |  1373 #if V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_MIPS || V8_TARGET_ARCH_MIPS64 || \ | 
 |  1374     SIMD_LOWERING_TARGET | 
|  1374 void RunI8x16UnOpTest(WasmOpcode simd_op, Int8UnOp expected_op) { |  1375 void RunI8x16UnOpTest(WasmOpcode simd_op, Int8UnOp expected_op) { | 
|  1375   FLAG_wasm_simd_prototype = true; |  1376   FLAG_wasm_simd_prototype = true; | 
|  1376   WasmRunner<int32_t, int32_t, int32_t> r(kExecuteCompiled); |  1377   WasmRunner<int32_t, int32_t, int32_t> r(kExecuteCompiled); | 
|  1377   byte a = 0; |  1378   byte a = 0; | 
|  1378   byte expected = 1; |  1379   byte expected = 1; | 
|  1379   byte simd = r.AllocateLocal(kWasmS128); |  1380   byte simd = r.AllocateLocal(kWasmS128); | 
|  1380   BUILD(r, WASM_SET_LOCAL(simd, WASM_SIMD_I8x16_SPLAT(WASM_GET_LOCAL(a))), |  1381   BUILD(r, WASM_SET_LOCAL(simd, WASM_SIMD_I8x16_SPLAT(WASM_GET_LOCAL(a))), | 
|  1381         WASM_SET_LOCAL(simd, WASM_SIMD_UNOP(simd_op, WASM_GET_LOCAL(simd))), |  1382         WASM_SET_LOCAL(simd, WASM_SIMD_UNOP(simd_op, WASM_GET_LOCAL(simd))), | 
|  1382         WASM_SIMD_CHECK_SPLAT16(I8x16, simd, I32, expected), WASM_ONE); |  1383         WASM_SIMD_CHECK_SPLAT16(I8x16, simd, I32, expected), WASM_ONE); | 
|  1383  |  1384  | 
|  1384   FOR_INT8_INPUTS(i) { CHECK_EQ(1, r.Call(*i, expected_op(*i))); } |  1385   FOR_INT8_INPUTS(i) { CHECK_EQ(1, r.Call(*i, expected_op(*i))); } | 
|  1385 } |  1386 } | 
|  1386  |  1387  | 
|  1387 WASM_EXEC_COMPILED_TEST(I8x16Neg) { RunI8x16UnOpTest(kExprI8x16Neg, Negate); } |  1388 WASM_EXEC_COMPILED_TEST(I8x16Neg) { RunI8x16UnOpTest(kExprI8x16Neg, Negate); } | 
|  1388 #endif  // V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_MIPS || V8_TARGET_ARCH_MIPS64 |  1389 #endif  // V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_MIPS || V8_TARGET_ARCH_MIPS64 || | 
 |  1390         // SIMD_LOWERING_TARGET | 
|  1389  |  1391  | 
|  1390 #if V8_TARGET_ARCH_ARM |  1392 #if V8_TARGET_ARCH_ARM | 
|  1391 // Tests both signed and unsigned conversion from I16x8 (packing). |  1393 // Tests both signed and unsigned conversion from I16x8 (packing). | 
|  1392 WASM_EXEC_COMPILED_TEST(I8x16ConvertI16x8) { |  1394 WASM_EXEC_COMPILED_TEST(I8x16ConvertI16x8) { | 
|  1393   FLAG_wasm_simd_prototype = true; |  1395   FLAG_wasm_simd_prototype = true; | 
|  1394   WasmRunner<int32_t, int32_t, int32_t, int32_t> r(kExecuteCompiled); |  1396   WasmRunner<int32_t, int32_t, int32_t, int32_t> r(kExecuteCompiled); | 
|  1395   byte a = 0; |  1397   byte a = 0; | 
|  1396   byte packed_signed = 1; |  1398   byte packed_signed = 1; | 
|  1397   byte packed_unsigned = 2; |  1399   byte packed_unsigned = 2; | 
|  1398   byte simd0 = r.AllocateLocal(kWasmS128); |  1400   byte simd0 = r.AllocateLocal(kWasmS128); | 
| (...skipping 12 matching lines...) Expand all  Loading... | 
|  1411   FOR_INT16_INPUTS(i) { |  1413   FOR_INT16_INPUTS(i) { | 
|  1412     int32_t packed_signed = Narrow<int8_t>(*i); |  1414     int32_t packed_signed = Narrow<int8_t>(*i); | 
|  1413     int32_t packed_unsigned = UnsignedNarrow<int8_t>(*i); |  1415     int32_t packed_unsigned = UnsignedNarrow<int8_t>(*i); | 
|  1414     // Sign-extend here, since ExtractLane sign extends. |  1416     // Sign-extend here, since ExtractLane sign extends. | 
|  1415     if (packed_unsigned & 0x80) packed_unsigned |= 0xffffff00; |  1417     if (packed_unsigned & 0x80) packed_unsigned |= 0xffffff00; | 
|  1416     CHECK_EQ(1, r.Call(*i, packed_signed, packed_unsigned)); |  1418     CHECK_EQ(1, r.Call(*i, packed_signed, packed_unsigned)); | 
|  1417   } |  1419   } | 
|  1418 } |  1420 } | 
|  1419 #endif  // V8_TARGET_ARCH_ARM |  1421 #endif  // V8_TARGET_ARCH_ARM | 
|  1420  |  1422  | 
|  1421 #if V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_X64 |  1423 #if V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_X64 || SIMD_LOWERING_TARGET | 
|  1422 void RunI8x16BinOpTest(WasmOpcode simd_op, Int8BinOp expected_op) { |  1424 void RunI8x16BinOpTest(WasmOpcode simd_op, Int8BinOp expected_op) { | 
|  1423   FLAG_wasm_simd_prototype = true; |  1425   FLAG_wasm_simd_prototype = true; | 
|  1424   WasmRunner<int32_t, int32_t, int32_t, int32_t> r(kExecuteCompiled); |  1426   WasmRunner<int32_t, int32_t, int32_t, int32_t> r(kExecuteCompiled); | 
|  1425   byte a = 0; |  1427   byte a = 0; | 
|  1426   byte b = 1; |  1428   byte b = 1; | 
|  1427   byte expected = 2; |  1429   byte expected = 2; | 
|  1428   byte simd0 = r.AllocateLocal(kWasmS128); |  1430   byte simd0 = r.AllocateLocal(kWasmS128); | 
|  1429   byte simd1 = r.AllocateLocal(kWasmS128); |  1431   byte simd1 = r.AllocateLocal(kWasmS128); | 
|  1430   BUILD(r, WASM_SET_LOCAL(simd0, WASM_SIMD_I8x16_SPLAT(WASM_GET_LOCAL(a))), |  1432   BUILD(r, WASM_SET_LOCAL(simd0, WASM_SIMD_I8x16_SPLAT(WASM_GET_LOCAL(a))), | 
|  1431         WASM_SET_LOCAL(simd1, WASM_SIMD_I8x16_SPLAT(WASM_GET_LOCAL(b))), |  1433         WASM_SET_LOCAL(simd1, WASM_SIMD_I8x16_SPLAT(WASM_GET_LOCAL(b))), | 
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1493   FOR_INT8_INPUTS(i) { |  1495   FOR_INT8_INPUTS(i) { | 
|  1494     FOR_INT8_INPUTS(j) { CHECK_EQ(1, r.Call(*i, *j, expected_op(*i, *j))); } |  1496     FOR_INT8_INPUTS(j) { CHECK_EQ(1, r.Call(*i, *j, expected_op(*i, *j))); } | 
|  1495   } |  1497   } | 
|  1496 } |  1498 } | 
|  1497  |  1499  | 
|  1498 WASM_EXEC_COMPILED_TEST(I8x16Eq) { RunI8x16CompareOpTest(kExprI8x16Eq, Equal); } |  1500 WASM_EXEC_COMPILED_TEST(I8x16Eq) { RunI8x16CompareOpTest(kExprI8x16Eq, Equal); } | 
|  1499  |  1501  | 
|  1500 WASM_EXEC_COMPILED_TEST(I8x16Ne) { |  1502 WASM_EXEC_COMPILED_TEST(I8x16Ne) { | 
|  1501   RunI8x16CompareOpTest(kExprI8x16Ne, NotEqual); |  1503   RunI8x16CompareOpTest(kExprI8x16Ne, NotEqual); | 
|  1502 } |  1504 } | 
|  1503 #endif  // V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_X64 |  1505 #endif  // V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_X64 || SIMD_LOWERING_TARGET | 
|  1504  |  1506  | 
|  1505 #if V8_TARGET_ARCH_ARM |  1507 #if V8_TARGET_ARCH_ARM || SIMD_LOWERING_TARGET | 
|  1506 WASM_EXEC_COMPILED_TEST(I8x16Mul) { RunI8x16BinOpTest(kExprI8x16Mul, Mul); } |  1508 WASM_EXEC_COMPILED_TEST(I8x16Mul) { RunI8x16BinOpTest(kExprI8x16Mul, Mul); } | 
|  1507  |  1509  | 
|  1508 WASM_EXEC_COMPILED_TEST(I8x16GtS) { |  1510 WASM_EXEC_COMPILED_TEST(I8x16GtS) { | 
|  1509   RunI8x16CompareOpTest(kExprI8x16GtS, Greater); |  1511   RunI8x16CompareOpTest(kExprI8x16GtS, Greater); | 
|  1510 } |  1512 } | 
|  1511  |  1513  | 
|  1512 WASM_EXEC_COMPILED_TEST(I8x16GeS) { |  1514 WASM_EXEC_COMPILED_TEST(I8x16GeS) { | 
|  1513   RunI8x16CompareOpTest(kExprI8x16GeS, GreaterEqual); |  1515   RunI8x16CompareOpTest(kExprI8x16GeS, GreaterEqual); | 
|  1514 } |  1516 } | 
|  1515  |  1517  | 
| (...skipping 13 matching lines...) Expand all  Loading... | 
|  1529   RunI8x16CompareOpTest(kExprI8x16GeU, UnsignedGreaterEqual); |  1531   RunI8x16CompareOpTest(kExprI8x16GeU, UnsignedGreaterEqual); | 
|  1530 } |  1532 } | 
|  1531  |  1533  | 
|  1532 WASM_EXEC_COMPILED_TEST(I8x16LtU) { |  1534 WASM_EXEC_COMPILED_TEST(I8x16LtU) { | 
|  1533   RunI8x16CompareOpTest(kExprI8x16LtU, UnsignedLess); |  1535   RunI8x16CompareOpTest(kExprI8x16LtU, UnsignedLess); | 
|  1534 } |  1536 } | 
|  1535  |  1537  | 
|  1536 WASM_EXEC_COMPILED_TEST(I8x16LeU) { |  1538 WASM_EXEC_COMPILED_TEST(I8x16LeU) { | 
|  1537   RunI8x16CompareOpTest(kExprI8x16LeU, UnsignedLessEqual); |  1539   RunI8x16CompareOpTest(kExprI8x16LeU, UnsignedLessEqual); | 
|  1538 } |  1540 } | 
|  1539 #endif  // V8_TARGET_ARCH_ARM |  1541 #endif  // V8_TARGET_ARCH_ARM || SIMD_LOWERING_TARGET | 
|  1540  |  1542  | 
|  1541 void RunI8x16ShiftOpTest(WasmOpcode simd_op, Int8ShiftOp expected_op, |  1543 void RunI8x16ShiftOpTest(WasmOpcode simd_op, Int8ShiftOp expected_op, | 
|  1542                          int shift) { |  1544                          int shift) { | 
|  1543   FLAG_wasm_simd_prototype = true; |  1545   FLAG_wasm_simd_prototype = true; | 
|  1544   WasmRunner<int32_t, int32_t, int32_t> r(kExecuteCompiled); |  1546   WasmRunner<int32_t, int32_t, int32_t> r(kExecuteCompiled); | 
|  1545   byte a = 0; |  1547   byte a = 0; | 
|  1546   byte expected = 1; |  1548   byte expected = 1; | 
|  1547   byte simd = r.AllocateLocal(kWasmS128); |  1549   byte simd = r.AllocateLocal(kWasmS128); | 
|  1548   BUILD(r, WASM_SET_LOCAL(simd, WASM_SIMD_I8x16_SPLAT(WASM_GET_LOCAL(a))), |  1550   BUILD(r, WASM_SET_LOCAL(simd, WASM_SIMD_I8x16_SPLAT(WASM_GET_LOCAL(a))), | 
|  1549         WASM_SET_LOCAL( |  1551         WASM_SET_LOCAL( | 
|  1550             simd, WASM_SIMD_SHIFT_OP(simd_op, shift, WASM_GET_LOCAL(simd))), |  1552             simd, WASM_SIMD_SHIFT_OP(simd_op, shift, WASM_GET_LOCAL(simd))), | 
|  1551         WASM_SIMD_CHECK_SPLAT16(I8x16, simd, I32, expected), WASM_ONE); |  1553         WASM_SIMD_CHECK_SPLAT16(I8x16, simd, I32, expected), WASM_ONE); | 
|  1552  |  1554  | 
|  1553   FOR_INT8_INPUTS(i) { CHECK_EQ(1, r.Call(*i, expected_op(*i, shift))); } |  1555   FOR_INT8_INPUTS(i) { CHECK_EQ(1, r.Call(*i, expected_op(*i, shift))); } | 
|  1554 } |  1556 } | 
|  1555  |  1557  | 
|  1556 #if V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_MIPS || V8_TARGET_ARCH_MIPS64 |  1558 #if V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_MIPS || V8_TARGET_ARCH_MIPS64 || \ | 
 |  1559     SIMD_LOWERING_TARGET | 
|  1557 WASM_EXEC_COMPILED_TEST(I8x16Shl) { |  1560 WASM_EXEC_COMPILED_TEST(I8x16Shl) { | 
|  1558   RunI8x16ShiftOpTest(kExprI8x16Shl, LogicalShiftLeft, 1); |  1561   RunI8x16ShiftOpTest(kExprI8x16Shl, LogicalShiftLeft, 1); | 
|  1559 } |  1562 } | 
|  1560  |  1563  | 
|  1561 WASM_EXEC_COMPILED_TEST(I8x16ShrS) { |  1564 WASM_EXEC_COMPILED_TEST(I8x16ShrS) { | 
|  1562   RunI8x16ShiftOpTest(kExprI8x16ShrS, ArithmeticShiftRight, 1); |  1565   RunI8x16ShiftOpTest(kExprI8x16ShrS, ArithmeticShiftRight, 1); | 
|  1563 } |  1566 } | 
|  1564 #endif  // V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_MIPS || V8_TARGET_ARCH_MIPS64 |  1567 #endif  // V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_MIPS || V8_TARGET_ARCH_MIPS64 || | 
 |  1568         // SIMD_LOWERING_TARGET | 
|  1565  |  1569  | 
|  1566 #if V8_TARGET_ARCH_ARM |  1570 #if V8_TARGET_ARCH_ARM || SIMD_LOWERING_TARGET | 
|  1567 WASM_EXEC_COMPILED_TEST(I8x16ShrU) { |  1571 WASM_EXEC_COMPILED_TEST(I8x16ShrU) { | 
|  1568   RunI8x16ShiftOpTest(kExprI8x16ShrU, LogicalShiftRight, 1); |  1572   RunI8x16ShiftOpTest(kExprI8x16ShrU, LogicalShiftRight, 1); | 
|  1569 } |  1573 } | 
|  1570 #endif  // V8_TARGET_ARCH_ARM |  1574 #endif  // V8_TARGET_ARCH_ARM || SIMD_LOWERING_TARGET | 
|  1571  |  1575  | 
|  1572 #if V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_X64 || V8_TARGET_ARCH_MIPS || \ |  1576 #if V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_X64 || V8_TARGET_ARCH_MIPS || \ | 
|  1573     V8_TARGET_ARCH_MIPS64 |  1577     V8_TARGET_ARCH_MIPS64 | 
|  1574 // Test Select by making a mask where the first two lanes are true and the rest |  1578 // Test Select by making a mask where the first two lanes are true and the rest | 
|  1575 // false, and comparing for non-equality with zero to materialize a bool vector. |  1579 // false, and comparing for non-equality with zero to materialize a bool vector. | 
|  1576 #define WASM_SIMD_SELECT_TEST(format)                                         \ |  1580 #define WASM_SIMD_SELECT_TEST(format)                                         \ | 
|  1577   WASM_EXEC_COMPILED_TEST(S##format##Select) {                                \ |  1581   WASM_EXEC_COMPILED_TEST(S##format##Select) {                                \ | 
|  1578     FLAG_wasm_simd_prototype = true;                                          \ |  1582     FLAG_wasm_simd_prototype = true;                                          \ | 
|  1579     WasmRunner<int32_t, int32_t, int32_t> r(kExecuteCompiled);                \ |  1583     WasmRunner<int32_t, int32_t, int32_t> r(kExecuteCompiled);                \ | 
|  1580     byte val1 = 0;                                                            \ |  1584     byte val1 = 0;                                                            \ | 
| (...skipping 472 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  2053 WASM_EXEC_COMPILED_TEST(S1x8Xor) { RunS1x8BinOpTest(kExprS1x8Xor, Xor); } |  2057 WASM_EXEC_COMPILED_TEST(S1x8Xor) { RunS1x8BinOpTest(kExprS1x8Xor, Xor); } | 
|  2054  |  2058  | 
|  2055 WASM_EXEC_COMPILED_TEST(S1x16And) { RunS1x16BinOpTest(kExprS1x16And, And); } |  2059 WASM_EXEC_COMPILED_TEST(S1x16And) { RunS1x16BinOpTest(kExprS1x16And, And); } | 
|  2056  |  2060  | 
|  2057 WASM_EXEC_COMPILED_TEST(S1x16Or) { RunS1x16BinOpTest(kExprS1x16Or, Or); } |  2061 WASM_EXEC_COMPILED_TEST(S1x16Or) { RunS1x16BinOpTest(kExprS1x16Or, Or); } | 
|  2058  |  2062  | 
|  2059 WASM_EXEC_COMPILED_TEST(S1x16Xor) { RunS1x16BinOpTest(kExprS1x16Xor, Xor); } |  2063 WASM_EXEC_COMPILED_TEST(S1x16Xor) { RunS1x16BinOpTest(kExprS1x16Xor, Xor); } | 
|  2060 #endif  // !V8_TARGET_ARCH_ARM |  2064 #endif  // !V8_TARGET_ARCH_ARM | 
|  2061  |  2065  | 
|  2062 #if V8_TARGET_ARCH_ARM || SIMD_LOWERING_TARGET |  2066 #if V8_TARGET_ARCH_ARM || SIMD_LOWERING_TARGET | 
|  2063  |  | 
|  2064 WASM_EXEC_COMPILED_TEST(SimdI32x4ExtractWithF32x4) { |  2067 WASM_EXEC_COMPILED_TEST(SimdI32x4ExtractWithF32x4) { | 
|  2065   FLAG_wasm_simd_prototype = true; |  2068   FLAG_wasm_simd_prototype = true; | 
|  2066   WasmRunner<int32_t> r(kExecuteCompiled); |  2069   WasmRunner<int32_t> r(kExecuteCompiled); | 
|  2067   BUILD(r, WASM_IF_ELSE_I( |  2070   BUILD(r, WASM_IF_ELSE_I( | 
|  2068                WASM_I32_EQ(WASM_SIMD_I32x4_EXTRACT_LANE( |  2071                WASM_I32_EQ(WASM_SIMD_I32x4_EXTRACT_LANE( | 
|  2069                                0, WASM_SIMD_F32x4_SPLAT(WASM_F32(30.5))), |  2072                                0, WASM_SIMD_F32x4_SPLAT(WASM_F32(30.5))), | 
|  2070                            WASM_I32_REINTERPRET_F32(WASM_F32(30.5))), |  2073                            WASM_I32_REINTERPRET_F32(WASM_F32(30.5))), | 
|  2071                WASM_I32V(1), WASM_I32V(0))); |  2074                WASM_I32V(1), WASM_I32V(0))); | 
|  2072   CHECK_EQ(1, r.Call()); |  2075   CHECK_EQ(1, r.Call()); | 
|  2073 } |  2076 } | 
| (...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  2334         WASM_SIMD_I32x4_EXTRACT_LANE( |  2337         WASM_SIMD_I32x4_EXTRACT_LANE( | 
|  2335             0, WASM_LOAD_MEM(MachineType::Simd128(), WASM_ZERO))); |  2338             0, WASM_LOAD_MEM(MachineType::Simd128(), WASM_ZERO))); | 
|  2336  |  2339  | 
|  2337   FOR_INT32_INPUTS(i) { |  2340   FOR_INT32_INPUTS(i) { | 
|  2338     int32_t expected = *i; |  2341     int32_t expected = *i; | 
|  2339     r.module().WriteMemory(&memory[0], expected); |  2342     r.module().WriteMemory(&memory[0], expected); | 
|  2340     CHECK_EQ(expected, r.Call()); |  2343     CHECK_EQ(expected, r.Call()); | 
|  2341   } |  2344   } | 
|  2342 } |  2345 } | 
|  2343 #endif  // V8_TARGET_ARCH_ARM || SIMD_LOWERING_TARGET || V8_TARGET_ARCH_X64 |  2346 #endif  // V8_TARGET_ARCH_ARM || SIMD_LOWERING_TARGET || V8_TARGET_ARCH_X64 | 
| OLD | NEW |