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

Side by Side Diff: test/cctest/wasm/test-run-wasm.cc

Issue 1763433002: [wasm] Rework encoding of local declarations. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 9 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
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 <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 941 matching lines...) Expand 10 before | Expand all | Expand 10 after
952 BUILD(r, WASM_BLOCK(2, WASM_SELECT(WASM_SET_LOCAL(0, WASM_I8(0)), 952 BUILD(r, WASM_BLOCK(2, WASM_SELECT(WASM_SET_LOCAL(0, WASM_I8(0)),
953 WASM_SET_LOCAL(0, WASM_I8(1)), 953 WASM_SET_LOCAL(0, WASM_I8(1)),
954 WASM_SET_LOCAL(0, WASM_I8(2))), 954 WASM_SET_LOCAL(0, WASM_I8(2))),
955 WASM_GET_LOCAL(0))); 955 WASM_GET_LOCAL(0)));
956 FOR_INT32_INPUTS(i) { CHECK_EQ(2, r.Call(*i)); } 956 FOR_INT32_INPUTS(i) { CHECK_EQ(2, r.Call(*i)); }
957 } 957 }
958 958
959 959
960 TEST(Run_Wasm_Select_strict2) { 960 TEST(Run_Wasm_Select_strict2) {
961 WasmRunner<int32_t> r(MachineType::Int32()); 961 WasmRunner<int32_t> r(MachineType::Int32());
962 r.env()->AddLocals(kAstI32, 2); 962 r.AllocateLocal(kAstI32);
963 r.AllocateLocal(kAstI32);
963 // select(b=5, c=6, a) 964 // select(b=5, c=6, a)
964 BUILD(r, WASM_SELECT(WASM_SET_LOCAL(1, WASM_I8(5)), 965 BUILD(r, WASM_SELECT(WASM_SET_LOCAL(1, WASM_I8(5)),
965 WASM_SET_LOCAL(2, WASM_I8(6)), WASM_GET_LOCAL(0))); 966 WASM_SET_LOCAL(2, WASM_I8(6)), WASM_GET_LOCAL(0)));
966 FOR_INT32_INPUTS(i) { 967 FOR_INT32_INPUTS(i) {
967 int32_t expected = *i ? 5 : 6; 968 int32_t expected = *i ? 5 : 6;
968 CHECK_EQ(expected, r.Call(*i)); 969 CHECK_EQ(expected, r.Call(*i));
969 } 970 }
970 } 971 }
971 972
972 TEST(Run_Wasm_Select_strict3) { 973 TEST(Run_Wasm_Select_strict3) {
973 WasmRunner<int32_t> r(MachineType::Int32()); 974 WasmRunner<int32_t> r(MachineType::Int32());
974 r.env()->AddLocals(kAstI32, 2); 975 r.AllocateLocal(kAstI32);
976 r.AllocateLocal(kAstI32);
975 // select(b=5, c=6, a=b) 977 // select(b=5, c=6, a=b)
976 BUILD(r, WASM_SELECT(WASM_SET_LOCAL(1, WASM_I8(5)), 978 BUILD(r, WASM_SELECT(WASM_SET_LOCAL(1, WASM_I8(5)),
977 WASM_SET_LOCAL(2, WASM_I8(6)), 979 WASM_SET_LOCAL(2, WASM_I8(6)),
978 WASM_SET_LOCAL(0, WASM_GET_LOCAL(1)))); 980 WASM_SET_LOCAL(0, WASM_GET_LOCAL(1))));
979 FOR_INT32_INPUTS(i) { 981 FOR_INT32_INPUTS(i) {
980 int32_t expected = 5; 982 int32_t expected = 5;
981 CHECK_EQ(expected, r.Call(*i)); 983 CHECK_EQ(expected, r.Call(*i));
982 } 984 }
983 } 985 }
984 986
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after
1251 1253
1252 // Build the test function. 1254 // Build the test function.
1253 TestSignatures sigs; 1255 TestSignatures sigs;
1254 TestingModule module; 1256 TestingModule module;
1255 WasmFunctionCompiler t(sigs.v_v(), &module); 1257 WasmFunctionCompiler t(sigs.v_v(), &module);
1256 BUILD(t, kExprNop); 1258 BUILD(t, kExprNop);
1257 uint32_t index = t.CompileAndAdd(); 1259 uint32_t index = t.CompileAndAdd();
1258 1260
1259 const int32_t kExpected = -414444; 1261 const int32_t kExpected = -414444;
1260 // Build the calling function. 1262 // Build the calling function.
1261 WasmRunner<int32_t> r; 1263 WasmRunner<int32_t> r(&module);
1262 r.env()->module = &module;
1263 BUILD(r, WASM_BLOCK(2, WASM_CALL_FUNCTION0(index), WASM_I32(kExpected))); 1264 BUILD(r, WASM_BLOCK(2, WASM_CALL_FUNCTION0(index), WASM_I32(kExpected)));
1264 1265
1265 int32_t result = r.Call(); 1266 int32_t result = r.Call();
1266 CHECK_EQ(kExpected, result); 1267 CHECK_EQ(kExpected, result);
1267 } 1268 }
1268 1269
1269 1270
1270 TEST(Run_Wasm_VoidReturn2) { 1271 TEST(Run_Wasm_VoidReturn2) {
1271 // We use a wrapper function because WasmRunner<void> does not exist. 1272 // We use a wrapper function because WasmRunner<void> does not exist.
1272 // Build the test function. 1273 // Build the test function.
1273 TestSignatures sigs; 1274 TestSignatures sigs;
1274 TestingModule module; 1275 TestingModule module;
1275 WasmFunctionCompiler t(sigs.v_v(), &module); 1276 WasmFunctionCompiler t(sigs.v_v(), &module);
1276 BUILD(t, WASM_RETURN0); 1277 BUILD(t, WASM_RETURN0);
1277 uint32_t index = t.CompileAndAdd(); 1278 uint32_t index = t.CompileAndAdd();
1278 1279
1279 const int32_t kExpected = -414444; 1280 const int32_t kExpected = -414444;
1280 // Build the calling function. 1281 // Build the calling function.
1281 WasmRunner<int32_t> r; 1282 WasmRunner<int32_t> r(&module);
1282 r.env()->module = &module;
1283 BUILD(r, WASM_BLOCK(2, WASM_CALL_FUNCTION0(index), WASM_I32(kExpected))); 1283 BUILD(r, WASM_BLOCK(2, WASM_CALL_FUNCTION0(index), WASM_I32(kExpected)));
1284 1284
1285 int32_t result = r.Call(); 1285 int32_t result = r.Call();
1286 CHECK_EQ(kExpected, result); 1286 CHECK_EQ(kExpected, result);
1287 } 1287 }
1288 1288
1289 1289
1290 TEST(Run_Wasm_Block_If_P) { 1290 TEST(Run_Wasm_Block_If_P) {
1291 WasmRunner<int32_t> r(MachineType::Int32()); 1291 WasmRunner<int32_t> r(MachineType::Int32());
1292 // { if (p0) return 51; return 52; } 1292 // { if (p0) return 51; return 52; }
(...skipping 737 matching lines...) Expand 10 before | Expand all | Expand 10 after
2030 2030
2031 Zone zone; 2031 Zone zone;
2032 Isolate* isolate = CcTest::InitIsolateOnce(); 2032 Isolate* isolate = CcTest::InitIsolateOnce();
2033 HandleScope scope(isolate); 2033 HandleScope scope(isolate);
2034 // Enable all optional operators. 2034 // Enable all optional operators.
2035 CommonOperatorBuilder common(&zone); 2035 CommonOperatorBuilder common(&zone);
2036 MachineOperatorBuilder machine(&zone, MachineType::PointerRepresentation(), 2036 MachineOperatorBuilder machine(&zone, MachineType::PointerRepresentation(),
2037 MachineOperatorBuilder::kAllOptionalOps); 2037 MachineOperatorBuilder::kAllOptionalOps);
2038 Graph graph(&zone); 2038 Graph graph(&zone);
2039 JSGraph jsgraph(isolate, &graph, &common, nullptr, nullptr, &machine); 2039 JSGraph jsgraph(isolate, &graph, &common, nullptr, nullptr, &machine);
2040 FunctionEnv env;
2041 FunctionSig* sig = WasmOpcodes::Signature(opcode); 2040 FunctionSig* sig = WasmOpcodes::Signature(opcode);
2042 init_env(&env, sig);
2043 2041
2044 if (sig->parameter_count() == 1) { 2042 if (sig->parameter_count() == 1) {
2045 byte code[] = {static_cast<byte>(opcode), kExprGetLocal, 0}; 2043 byte code[] = {WASM_NO_LOCALS, static_cast<byte>(opcode), kExprGetLocal, 0};
2046 TestBuildingGraph(&zone, &jsgraph, &env, code, code + arraysize(code)); 2044 TestBuildingGraph(&zone, &jsgraph, nullptr, sig, code,
2045 code + arraysize(code));
2047 } else { 2046 } else {
2048 CHECK_EQ(2, sig->parameter_count()); 2047 CHECK_EQ(2, sig->parameter_count());
2049 byte code[] = {static_cast<byte>(opcode), kExprGetLocal, 0, kExprGetLocal, 2048 byte code[] = {WASM_NO_LOCALS, static_cast<byte>(opcode),
2050 1}; 2049 kExprGetLocal, 0,
2051 TestBuildingGraph(&zone, &jsgraph, &env, code, code + arraysize(code)); 2050 kExprGetLocal, 1};
2051 TestBuildingGraph(&zone, &jsgraph, nullptr, sig, code,
2052 code + arraysize(code));
2052 } 2053 }
2053 } 2054 }
2054 2055
2055 2056
2056 TEST(Build_Wasm_SimpleExprs) { 2057 TEST(Build_Wasm_SimpleExprs) {
2057 // Test that the decoder can build a graph for all supported simple expressions. 2058 // Test that the decoder can build a graph for all supported simple expressions.
2058 #define GRAPH_BUILD_TEST(name, opcode, sig) \ 2059 #define GRAPH_BUILD_TEST(name, opcode, sig) \
2059 TestBuildGraphForSimpleExpression(kExpr##name); 2060 TestBuildGraphForSimpleExpression(kExpr##name);
2060 2061
2061 FOREACH_SIMPLE_OPCODE(GRAPH_BUILD_TEST); 2062 FOREACH_SIMPLE_OPCODE(GRAPH_BUILD_TEST);
(...skipping 1320 matching lines...) Expand 10 before | Expand all | Expand 10 after
3382 3383
3383 #if WASM_64 3384 #if WASM_64
3384 TEST(Compile_Wasm_CallIndirect_Many_i64) { CompileCallIndirectMany(kAstI64); } 3385 TEST(Compile_Wasm_CallIndirect_Many_i64) { CompileCallIndirectMany(kAstI64); }
3385 #endif 3386 #endif
3386 3387
3387 3388
3388 TEST(Compile_Wasm_CallIndirect_Many_f32) { CompileCallIndirectMany(kAstF32); } 3389 TEST(Compile_Wasm_CallIndirect_Many_f32) { CompileCallIndirectMany(kAstF32); }
3389 3390
3390 3391
3391 TEST(Compile_Wasm_CallIndirect_Many_f64) { CompileCallIndirectMany(kAstF64); } 3392 TEST(Compile_Wasm_CallIndirect_Many_f64) { CompileCallIndirectMany(kAstF64); }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698