| 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/wasm/wasm-macro-gen.h" | 9 #include "src/wasm/wasm-macro-gen.h" |
| 10 | 10 |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 76 V(I64SConvertF64, false) \ | 76 V(I64SConvertF64, false) \ |
| 77 V(I64UConvertF32, false) \ | 77 V(I64UConvertF32, false) \ |
| 78 V(I64UConvertF64, false) \ | 78 V(I64UConvertF64, false) \ |
| 79 V(I64SConvertI32, true) \ | 79 V(I64SConvertI32, true) \ |
| 80 V(I64UConvertI32, true) \ | 80 V(I64UConvertI32, true) \ |
| 81 V(F32SConvertI64, true) \ | 81 V(F32SConvertI64, true) \ |
| 82 V(F32UConvertI64, true) \ | 82 V(F32UConvertI64, true) \ |
| 83 V(F64SConvertI64, true) \ | 83 V(F64SConvertI64, true) \ |
| 84 V(F64UConvertI64, true) \ | 84 V(F64UConvertI64, true) \ |
| 85 V(F64ReinterpretI64, false) \ | 85 V(F64ReinterpretI64, false) \ |
| 86 V(I64ReinterpretF64, false) \ | 86 V(I64ReinterpretF64, true) \ |
| 87 V(I64Ror, false) \ | 87 V(I64Ror, false) \ |
| 88 V(I64Rol, false) | 88 V(I64Rol, false) |
| 89 | 89 |
| 90 #define DECLARE_CONST(name, cond) static const bool kSupported_##name = cond; | 90 #define DECLARE_CONST(name, cond) static const bool kSupported_##name = cond; |
| 91 FOREACH_I64_OPERATOR(DECLARE_CONST) | 91 FOREACH_I64_OPERATOR(DECLARE_CONST) |
| 92 #undef DECLARE_CONST | 92 #undef DECLARE_CONST |
| 93 | 93 |
| 94 #define REQUIRE(name) \ | 94 #define REQUIRE(name) \ |
| 95 if (!WASM_64 && !kSupported_##name) return | 95 if (!WASM_64 && !kSupported_##name) return |
| 96 | 96 |
| (...skipping 1080 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1177 | 1177 |
| 1178 FOR_FLOAT64_INPUTS(i) { | 1178 FOR_FLOAT64_INPUTS(i) { |
| 1179 if (*i < static_cast<float>(UINT64_MAX) && *i > -1) { | 1179 if (*i < static_cast<float>(UINT64_MAX) && *i > -1) { |
| 1180 CHECK_EQ(static_cast<uint64_t>(*i), r.Call(*i)); | 1180 CHECK_EQ(static_cast<uint64_t>(*i), r.Call(*i)); |
| 1181 } else { | 1181 } else { |
| 1182 CHECK_TRAP64(r.Call(*i)); | 1182 CHECK_TRAP64(r.Call(*i)); |
| 1183 } | 1183 } |
| 1184 } | 1184 } |
| 1185 } | 1185 } |
| 1186 | 1186 |
| 1187 TEST(Run_Wasm_F64ReinterpretI64) { | 1187 TEST(Run_Wasm_I64ReinterpretF64) { |
| 1188 REQUIRE(F64ReinterpretI64); | 1188 REQUIRE(I64ReinterpretF64); |
| 1189 TestingModule module; | 1189 TestingModule module; |
| 1190 int64_t* memory = module.AddMemoryElems<int64_t>(8); | 1190 int64_t* memory = module.AddMemoryElems<int64_t>(8); |
| 1191 WasmRunner<int64_t> r(&module); | 1191 WasmRunner<int64_t> r(&module); |
| 1192 | 1192 |
| 1193 BUILD(r, WASM_I64_REINTERPRET_F64( | 1193 BUILD(r, WASM_I64_REINTERPRET_F64( |
| 1194 WASM_LOAD_MEM(MachineType::Float64(), WASM_ZERO))); | 1194 WASM_LOAD_MEM(MachineType::Float64(), WASM_ZERO))); |
| 1195 | 1195 |
| 1196 FOR_INT32_INPUTS(i) { | 1196 FOR_INT32_INPUTS(i) { |
| 1197 int64_t expected = static_cast<int64_t>(*i) * 0x300010001; | 1197 int64_t expected = static_cast<int64_t>(*i) * 0x300010001; |
| 1198 memory[0] = expected; | 1198 memory[0] = expected; |
| 1199 CHECK_EQ(expected, r.Call()); | 1199 CHECK_EQ(expected, r.Call()); |
| 1200 } | 1200 } |
| 1201 } | 1201 } |
| 1202 | 1202 |
| 1203 TEST(Run_Wasm_I64ReinterpretF64) { | 1203 TEST(Run_Wasm_F64ReinterpretI64) { |
| 1204 REQUIRE(I64ReinterpretF64); | 1204 REQUIRE(F64ReinterpretI64); |
| 1205 TestingModule module; | 1205 TestingModule module; |
| 1206 int64_t* memory = module.AddMemoryElems<int64_t>(8); | 1206 int64_t* memory = module.AddMemoryElems<int64_t>(8); |
| 1207 WasmRunner<int64_t> r(&module, MachineType::Int64()); | 1207 WasmRunner<int64_t> r(&module, MachineType::Int64()); |
| 1208 | 1208 |
| 1209 BUILD(r, WASM_BLOCK( | 1209 BUILD(r, WASM_BLOCK( |
| 1210 2, WASM_STORE_MEM(MachineType::Float64(), WASM_ZERO, | 1210 2, WASM_STORE_MEM(MachineType::Float64(), WASM_ZERO, |
| 1211 WASM_F64_REINTERPRET_I64(WASM_GET_LOCAL(0))), | 1211 WASM_F64_REINTERPRET_I64(WASM_GET_LOCAL(0))), |
| 1212 WASM_GET_LOCAL(0))); | 1212 WASM_GET_LOCAL(0))); |
| 1213 | 1213 |
| 1214 FOR_INT32_INPUTS(i) { | 1214 FOR_INT32_INPUTS(i) { |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1298 REQUIRE(I64Eq); | 1298 REQUIRE(I64Eq); |
| 1299 | 1299 |
| 1300 WasmRunner<int32_t> r(MachineType::Int64()); | 1300 WasmRunner<int32_t> r(MachineType::Int64()); |
| 1301 BUILD(r, WASM_I64_EQZ(WASM_GET_LOCAL(0))); | 1301 BUILD(r, WASM_I64_EQZ(WASM_GET_LOCAL(0))); |
| 1302 | 1302 |
| 1303 FOR_INT64_INPUTS(i) { | 1303 FOR_INT64_INPUTS(i) { |
| 1304 int32_t result = *i == 0 ? 1 : 0; | 1304 int32_t result = *i == 0 ? 1 : 0; |
| 1305 CHECK_EQ(result, r.Call(*i)); | 1305 CHECK_EQ(result, r.Call(*i)); |
| 1306 } | 1306 } |
| 1307 } | 1307 } |
| OLD | NEW |