Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 <stdint.h> | 5 #include <stdint.h> |
| 6 #include <stdlib.h> | 6 #include <stdlib.h> |
| 7 #include <string.h> | 7 #include <string.h> |
| 8 | 8 |
| 9 #include "src/base/platform/elapsed-timer.h" | 9 #include "src/base/platform/elapsed-timer.h" |
| 10 #include "src/utils.h" | 10 #include "src/utils.h" |
| (...skipping 1189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1200 FOR_INT32_INPUTS(i) { CHECK_EQ(*i, r.Call(*i)); } | 1200 FOR_INT32_INPUTS(i) { CHECK_EQ(*i, r.Call(*i)); } |
| 1201 } | 1201 } |
| 1202 | 1202 |
| 1203 WASM_EXEC_TEST(Block_empty_brif1) { | 1203 WASM_EXEC_TEST(Block_empty_brif1) { |
| 1204 WasmRunner<int32_t> r(execution_mode, MachineType::Int32()); | 1204 WasmRunner<int32_t> r(execution_mode, MachineType::Int32()); |
| 1205 BUILD(r, WASM_BLOCK(WASM_BR_IF(0, WASM_ZERO)), WASM_GET_LOCAL(0)); | 1205 BUILD(r, WASM_BLOCK(WASM_BR_IF(0, WASM_ZERO)), WASM_GET_LOCAL(0)); |
| 1206 FOR_INT32_INPUTS(i) { CHECK_EQ(*i, r.Call(*i)); } | 1206 FOR_INT32_INPUTS(i) { CHECK_EQ(*i, r.Call(*i)); } |
| 1207 } | 1207 } |
| 1208 | 1208 |
| 1209 WASM_EXEC_TEST(Block_empty_brif2) { | 1209 WASM_EXEC_TEST(Block_empty_brif2) { |
| 1210 WasmRunner<uint32_t> r(execution_mode, MachineType::Uint32(), | 1210 WasmRunner<int32_t> r(execution_mode, MachineType::Uint32(), |
|
ahaas
2016/11/10 09:03:39
I think it would be better to not change the templ
ulan
2016/11/10 12:23:43
Done.
| |
| 1211 MachineType::Uint32()); | 1211 MachineType::Uint32()); |
| 1212 BUILD(r, WASM_BLOCK(WASM_BR_IF(0, WASM_GET_LOCAL(1))), WASM_GET_LOCAL(0)); | 1212 BUILD(r, WASM_BLOCK(WASM_BR_IF(0, WASM_GET_LOCAL(1))), WASM_GET_LOCAL(0)); |
| 1213 FOR_INT32_INPUTS(i) { CHECK_EQ(*i, r.Call(*i, *i + 1)); } | 1213 FOR_INT32_INPUTS(i) { CHECK_EQ(*i, r.Call(*i, *i + 1)); } |
| 1214 } | 1214 } |
| 1215 | 1215 |
| 1216 WASM_EXEC_TEST(Block_i) { | 1216 WASM_EXEC_TEST(Block_i) { |
| 1217 WasmRunner<int32_t> r(execution_mode, MachineType::Int32()); | 1217 WasmRunner<int32_t> r(execution_mode, MachineType::Int32()); |
| 1218 BUILD(r, WASM_BLOCK_I(WASM_GET_LOCAL(0))); | 1218 BUILD(r, WASM_BLOCK_I(WASM_GET_LOCAL(0))); |
| 1219 FOR_INT32_INPUTS(i) { CHECK_EQ(*i, r.Call(*i)); } | 1219 FOR_INT32_INPUTS(i) { CHECK_EQ(*i, r.Call(*i)); } |
| 1220 } | 1220 } |
| 1221 | 1221 |
| 1222 WASM_EXEC_TEST(Block_f) { | 1222 WASM_EXEC_TEST(Block_f) { |
| 1223 WasmRunner<float> r(execution_mode, MachineType::Float32()); | 1223 WasmRunner<float> r(execution_mode, MachineType::Float32()); |
| 1224 BUILD(r, WASM_BLOCK_F(WASM_GET_LOCAL(0))); | 1224 BUILD(r, WASM_BLOCK_F(WASM_GET_LOCAL(0))); |
| 1225 FOR_FLOAT32_INPUTS(i) { CHECK_FLOAT_EQ(*i, r.Call(*i)); } | 1225 FOR_FLOAT32_INPUTS(i) { CHECK_FLOAT_EQ(*i, r.Call(*i)); } |
| 1226 } | 1226 } |
| 1227 | 1227 |
| 1228 WASM_EXEC_TEST(Block_d) { | 1228 WASM_EXEC_TEST(Block_d) { |
| 1229 WasmRunner<double> r(execution_mode, MachineType::Float64()); | 1229 WasmRunner<double> r(execution_mode, MachineType::Float64()); |
| 1230 BUILD(r, WASM_BLOCK_D(WASM_GET_LOCAL(0))); | 1230 BUILD(r, WASM_BLOCK_D(WASM_GET_LOCAL(0))); |
| 1231 FOR_FLOAT64_INPUTS(i) { CHECK_FLOAT_EQ(*i, r.Call(*i)); } | 1231 FOR_FLOAT64_INPUTS(i) { CHECK_FLOAT_EQ(*i, r.Call(*i)); } |
| 1232 } | 1232 } |
| 1233 | 1233 |
| 1234 WASM_EXEC_TEST(Block_br2) { | 1234 WASM_EXEC_TEST(Block_br2) { |
| 1235 WasmRunner<int32_t> r(execution_mode, MachineType::Int32()); | 1235 WasmRunner<int32_t> r(execution_mode, MachineType::Int32()); |
| 1236 BUILD(r, WASM_BLOCK_I(WASM_BRV(0, WASM_GET_LOCAL(0)))); | 1236 BUILD(r, WASM_BLOCK_I(WASM_BRV(0, WASM_GET_LOCAL(0)))); |
| 1237 FOR_UINT32_INPUTS(i) { CHECK_EQ(*i, r.Call(*i)); } | 1237 FOR_UINT32_INPUTS(i) { CHECK_EQ(*i, static_cast<uint32_t>(r.Call(*i))); } |
| 1238 } | 1238 } |
| 1239 | 1239 |
| 1240 WASM_EXEC_TEST(Block_If_P) { | 1240 WASM_EXEC_TEST(Block_If_P) { |
| 1241 WasmRunner<int32_t> r(execution_mode, MachineType::Int32()); | 1241 WasmRunner<int32_t> r(execution_mode, MachineType::Int32()); |
| 1242 // block { if (p0) break 51; 52; } | 1242 // block { if (p0) break 51; 52; } |
| 1243 BUILD(r, WASM_BLOCK_I( // -- | 1243 BUILD(r, WASM_BLOCK_I( // -- |
| 1244 WASM_IF(WASM_GET_LOCAL(0), // -- | 1244 WASM_IF(WASM_GET_LOCAL(0), // -- |
| 1245 WASM_BRV(1, WASM_I8(51))), // -- | 1245 WASM_BRV(1, WASM_I8(51))), // -- |
| 1246 WASM_I8(52))); // -- | 1246 WASM_I8(52))); // -- |
| 1247 FOR_INT32_INPUTS(i) { | 1247 FOR_INT32_INPUTS(i) { |
| (...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1589 for (int index = 0; index < kMemSize + 5; ++index) { | 1589 for (int index = 0; index < kMemSize + 5; ++index) { |
| 1590 TestingModule module(execution_mode); | 1590 TestingModule module(execution_mode); |
| 1591 module.AddMemoryElems<byte>(kMemSize); | 1591 module.AddMemoryElems<byte>(kMemSize); |
| 1592 | 1592 |
| 1593 WasmRunner<int32_t> r(&module); | 1593 WasmRunner<int32_t> r(&module); |
| 1594 module.RandomizeMemory(); | 1594 module.RandomizeMemory(); |
| 1595 | 1595 |
| 1596 BUILD(r, | 1596 BUILD(r, |
| 1597 WASM_LOAD_MEM_OFFSET(MachineType::Int32(), offset, WASM_I8(index))); | 1597 WASM_LOAD_MEM_OFFSET(MachineType::Int32(), offset, WASM_I8(index))); |
| 1598 | 1598 |
| 1599 if ((offset + index) <= (kMemSize - sizeof(int32_t))) { | 1599 if ((offset + index) <= static_cast<int>((kMemSize - sizeof(int32_t)))) { |
| 1600 CHECK_EQ(module.raw_val_at<int32_t>(offset + index), r.Call()); | 1600 CHECK_EQ(module.raw_val_at<int32_t>(offset + index), r.Call()); |
| 1601 } else { | 1601 } else { |
| 1602 CHECK_TRAP(r.Call()); | 1602 CHECK_TRAP(r.Call()); |
| 1603 } | 1603 } |
| 1604 } | 1604 } |
| 1605 } | 1605 } |
| 1606 } | 1606 } |
| 1607 | 1607 |
| 1608 WASM_EXEC_TEST(LoadMemI32_const_oob) { | 1608 WASM_EXEC_TEST(LoadMemI32_const_oob) { |
| 1609 const int kMemSize = 24; | 1609 const int kMemSize = 24; |
| 1610 for (int offset = 0; offset < kMemSize + 5; offset += 4) { | 1610 for (int offset = 0; offset < kMemSize + 5; offset += 4) { |
| 1611 for (int index = 0; index < kMemSize + 5; index += 4) { | 1611 for (int index = 0; index < kMemSize + 5; index += 4) { |
| 1612 TestingModule module(execution_mode); | 1612 TestingModule module(execution_mode); |
| 1613 module.AddMemoryElems<byte>(kMemSize); | 1613 module.AddMemoryElems<byte>(kMemSize); |
| 1614 | 1614 |
| 1615 WasmRunner<int32_t> r(&module); | 1615 WasmRunner<int32_t> r(&module); |
| 1616 module.RandomizeMemory(); | 1616 module.RandomizeMemory(); |
| 1617 | 1617 |
| 1618 BUILD(r, | 1618 BUILD(r, |
| 1619 WASM_LOAD_MEM_OFFSET(MachineType::Int32(), offset, WASM_I8(index))); | 1619 WASM_LOAD_MEM_OFFSET(MachineType::Int32(), offset, WASM_I8(index))); |
| 1620 | 1620 |
| 1621 if ((offset + index) <= (kMemSize - sizeof(int32_t))) { | 1621 if ((offset + index) <= static_cast<int>((kMemSize - sizeof(int32_t)))) { |
| 1622 CHECK_EQ(module.raw_val_at<int32_t>(offset + index), r.Call()); | 1622 CHECK_EQ(module.raw_val_at<int32_t>(offset + index), r.Call()); |
| 1623 } else { | 1623 } else { |
| 1624 CHECK_TRAP(r.Call()); | 1624 CHECK_TRAP(r.Call()); |
| 1625 } | 1625 } |
| 1626 } | 1626 } |
| 1627 } | 1627 } |
| 1628 } | 1628 } |
| 1629 | 1629 |
| 1630 WASM_EXEC_TEST(StoreMemI32_alignment) { | 1630 WASM_EXEC_TEST(StoreMemI32_alignment) { |
| 1631 TestingModule module(execution_mode); | 1631 TestingModule module(execution_mode); |
| (...skipping 1353 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2985 BUILD(r, WASM_I32_REMS(WASM_GET_LOCAL(0), WASM_GET_LOCAL(1)), WASM_DROP, | 2985 BUILD(r, WASM_I32_REMS(WASM_GET_LOCAL(0), WASM_GET_LOCAL(1)), WASM_DROP, |
| 2986 WASM_ZERO); | 2986 WASM_ZERO); |
| 2987 const int32_t kMin = std::numeric_limits<int32_t>::min(); | 2987 const int32_t kMin = std::numeric_limits<int32_t>::min(); |
| 2988 CHECK_EQ(0, r.Call(133, 100)); | 2988 CHECK_EQ(0, r.Call(133, 100)); |
| 2989 CHECK_EQ(0, r.Call(kMin, -1)); | 2989 CHECK_EQ(0, r.Call(kMin, -1)); |
| 2990 CHECK_EQ(0, r.Call(0, 1)); | 2990 CHECK_EQ(0, r.Call(0, 1)); |
| 2991 CHECK_TRAP(r.Call(100, 0)); | 2991 CHECK_TRAP(r.Call(100, 0)); |
| 2992 CHECK_TRAP(r.Call(-1001, 0)); | 2992 CHECK_TRAP(r.Call(-1001, 0)); |
| 2993 CHECK_TRAP(r.Call(kMin, 0)); | 2993 CHECK_TRAP(r.Call(kMin, 0)); |
| 2994 } | 2994 } |
| OLD | NEW |