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

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

Issue 1562513002: Disable several tests, fix PPC build. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: revise 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 | « src/wasm/asm-wasm-builder.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 <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/utils/random-number-generator.h" 9 #include "src/base/utils/random-number-generator.h"
10 10
(...skipping 527 matching lines...) Expand 10 before | Expand all | Expand 10 after
538 FOR_INT32_INPUTS(i) { 538 FOR_INT32_INPUTS(i) {
539 FOR_INT32_INPUTS(j) { 539 FOR_INT32_INPUTS(j) {
540 int32_t expected = static_cast<int32_t>(static_cast<uint32_t>(*i) + 540 int32_t expected = static_cast<int32_t>(static_cast<uint32_t>(*i) +
541 static_cast<uint32_t>(*j)); 541 static_cast<uint32_t>(*j));
542 CHECK_EQ(expected, r.Call(*i, *j)); 542 CHECK_EQ(expected, r.Call(*i, *j));
543 } 543 }
544 } 544 }
545 } 545 }
546 546
547 547
548 // TODO(titzer): Fix for nosee4 and re-enable.
549 #if 0
550
548 TEST(Run_WasmFloat32Add) { 551 TEST(Run_WasmFloat32Add) {
549 WasmRunner<int32_t> r; 552 WasmRunner<int32_t> r;
550 // int(11.5f + 44.5f) 553 // int(11.5f + 44.5f)
551 BUILD(r, 554 BUILD(r,
552 WASM_I32_SCONVERT_F32(WASM_F32_ADD(WASM_F32(11.5f), WASM_F32(44.5f)))); 555 WASM_I32_SCONVERT_F32(WASM_F32_ADD(WASM_F32(11.5f), WASM_F32(44.5f))));
553 CHECK_EQ(56, r.Call()); 556 CHECK_EQ(56, r.Call());
554 } 557 }
555 558
556 559
557 TEST(Run_WasmFloat64Add) { 560 TEST(Run_WasmFloat64Add) {
558 WasmRunner<int32_t> r; 561 WasmRunner<int32_t> r;
559 // return int(13.5d + 43.5d) 562 // return int(13.5d + 43.5d)
560 BUILD(r, WASM_I32_SCONVERT_F64(WASM_F64_ADD(WASM_F64(13.5), WASM_F64(43.5)))); 563 BUILD(r, WASM_I32_SCONVERT_F64(WASM_F64_ADD(WASM_F64(13.5), WASM_F64(43.5))));
561 CHECK_EQ(57, r.Call()); 564 CHECK_EQ(57, r.Call());
562 } 565 }
563 566
567 #endif
568
564 569
565 void TestInt32Binop(WasmOpcode opcode, int32_t expected, int32_t a, int32_t b) { 570 void TestInt32Binop(WasmOpcode opcode, int32_t expected, int32_t a, int32_t b) {
566 { 571 {
567 WasmRunner<int32_t> r; 572 WasmRunner<int32_t> r;
568 // K op K 573 // K op K
569 BUILD(r, WASM_BINOP(opcode, WASM_I32(a), WASM_I32(b))); 574 BUILD(r, WASM_BINOP(opcode, WASM_I32(a), WASM_I32(b)));
570 CHECK_EQ(expected, r.Call()); 575 CHECK_EQ(expected, r.Call());
571 } 576 }
572 { 577 {
573 WasmRunner<int32_t> r(MachineType::Int32(), MachineType::Int32()); 578 WasmRunner<int32_t> r(MachineType::Int32(), MachineType::Int32());
(...skipping 529 matching lines...) Expand 10 before | Expand all | Expand 10 after
1103 1108
1104 void TestFloat64UnopWithConvert(WasmOpcode opcode, int32_t expected, double a) { 1109 void TestFloat64UnopWithConvert(WasmOpcode opcode, int32_t expected, double a) {
1105 WasmRunner<int32_t> r; 1110 WasmRunner<int32_t> r;
1106 // return int(K op K) 1111 // return int(K op K)
1107 BUILD(r, WASM_I32_SCONVERT_F64(WASM_UNOP(opcode, WASM_F64(a)))); 1112 BUILD(r, WASM_I32_SCONVERT_F64(WASM_UNOP(opcode, WASM_F64(a))));
1108 CHECK_EQ(expected, r.Call()); 1113 CHECK_EQ(expected, r.Call());
1109 // TODO(titzer): test float parameters 1114 // TODO(titzer): test float parameters
1110 } 1115 }
1111 1116
1112 1117
1118 // TODO(titzer): Fix for nosee4 and re-enable.
1119 #if 0
1120
1113 TEST(Run_WasmFloat32Binops) { 1121 TEST(Run_WasmFloat32Binops) {
1114 TestFloat32Binop(kExprF32Eq, 1, 8.125f, 8.125f); 1122 TestFloat32Binop(kExprF32Eq, 1, 8.125f, 8.125f);
1115 TestFloat32Binop(kExprF32Ne, 1, 8.125f, 8.127f); 1123 TestFloat32Binop(kExprF32Ne, 1, 8.125f, 8.127f);
1116 TestFloat32Binop(kExprF32Lt, 1, -9.5f, -9.0f); 1124 TestFloat32Binop(kExprF32Lt, 1, -9.5f, -9.0f);
1117 TestFloat32Binop(kExprF32Le, 1, -1111.0f, -1111.0f); 1125 TestFloat32Binop(kExprF32Le, 1, -1111.0f, -1111.0f);
1118 TestFloat32Binop(kExprF32Gt, 1, -9.0f, -9.5f); 1126 TestFloat32Binop(kExprF32Gt, 1, -9.0f, -9.5f);
1119 TestFloat32Binop(kExprF32Ge, 1, -1111.0f, -1111.0f); 1127 TestFloat32Binop(kExprF32Ge, 1, -1111.0f, -1111.0f);
1120 1128
1121 TestFloat32BinopWithConvert(kExprF32Add, 10, 3.5f, 6.5f); 1129 TestFloat32BinopWithConvert(kExprF32Add, 10, 3.5f, 6.5f);
1122 TestFloat32BinopWithConvert(kExprF32Sub, 2, 44.5f, 42.5f); 1130 TestFloat32BinopWithConvert(kExprF32Sub, 2, 44.5f, 42.5f);
(...skipping 25 matching lines...) Expand all
1148 } 1156 }
1149 1157
1150 1158
1151 TEST(Run_WasmFloat64Unops) { 1159 TEST(Run_WasmFloat64Unops) {
1152 TestFloat64UnopWithConvert(kExprF64Abs, 108, 108.125); 1160 TestFloat64UnopWithConvert(kExprF64Abs, 108, 108.125);
1153 TestFloat64UnopWithConvert(kExprF64Abs, 209, -209.125); 1161 TestFloat64UnopWithConvert(kExprF64Abs, 209, -209.125);
1154 TestFloat64UnopWithConvert(kExprF64Neg, -209, 209.125); 1162 TestFloat64UnopWithConvert(kExprF64Neg, -209, 209.125);
1155 TestFloat64UnopWithConvert(kExprF64Sqrt, 13, 169.4); 1163 TestFloat64UnopWithConvert(kExprF64Sqrt, 13, 169.4);
1156 } 1164 }
1157 1165
1166 #endif
1167
1158 1168
1159 TEST(Run_WasmFloat32Neg) { 1169 TEST(Run_WasmFloat32Neg) {
1160 WasmRunner<float> r(MachineType::Float32()); 1170 WasmRunner<float> r(MachineType::Float32());
1161 BUILD(r, WASM_F32_NEG(WASM_GET_LOCAL(0))); 1171 BUILD(r, WASM_F32_NEG(WASM_GET_LOCAL(0)));
1162 1172
1163 FOR_FLOAT32_INPUTS(i) { 1173 FOR_FLOAT32_INPUTS(i) {
1164 CHECK_EQ(0x80000000, 1174 CHECK_EQ(0x80000000,
1165 bit_cast<uint32_t>(*i) ^ bit_cast<uint32_t>(r.Call(*i))); 1175 bit_cast<uint32_t>(*i) ^ bit_cast<uint32_t>(r.Call(*i)));
1166 } 1176 }
1167 } 1177 }
(...skipping 887 matching lines...) Expand 10 before | Expand all | Expand 10 after
2055 BUILD(r, kExprBlock, 2, kExprLoop, 1, kExprIf, kExprGetLocal, 0, kExprBr, 0, 2065 BUILD(r, kExprBlock, 2, kExprLoop, 1, kExprIf, kExprGetLocal, 0, kExprBr, 0,
2056 kExprIfElse, kExprI32LoadMem, 0, kExprGetLocal, 0, kExprBr, 2, 2066 kExprIfElse, kExprI32LoadMem, 0, kExprGetLocal, 0, kExprBr, 2,
2057 kExprI8Const, 255, kExprSetLocal, 0, kExprI32Sub, kExprGetLocal, 0, 2067 kExprI8Const, 255, kExprSetLocal, 0, kExprI32Sub, kExprGetLocal, 0,
2058 kExprI8Const, 4, kExprI8Const, 0); 2068 kExprI8Const, 4, kExprI8Const, 0);
2059 2069
2060 module.BlankMemory(); 2070 module.BlankMemory();
2061 CHECK_EQ(0, r.Call((kNumElems - 1) * 4)); 2071 CHECK_EQ(0, r.Call((kNumElems - 1) * 4));
2062 } 2072 }
2063 2073
2064 2074
2075 // TODO(titzer): Fix for msan and re-enable.
2076 #if 0
2077
2065 TEST(Run_Wasm_MemF32_Sum) { 2078 TEST(Run_Wasm_MemF32_Sum) {
2066 WasmRunner<int32_t> r(MachineType::Int32()); 2079 WasmRunner<int32_t> r(MachineType::Int32());
2067 const byte kSum = r.AllocateLocal(kAstF32); 2080 const byte kSum = r.AllocateLocal(kAstF32);
2068 ModuleEnv module; 2081 ModuleEnv module;
2069 const int kSize = 5; 2082 const int kSize = 5;
2070 float buffer[kSize] = {-99.25, -888.25, -77.25, 66666.25, 5555.25}; 2083 float buffer[kSize] = {-99.25, -888.25, -77.25, 66666.25, 5555.25};
2071 module.mem_start = reinterpret_cast<uintptr_t>(&buffer); 2084 module.mem_start = reinterpret_cast<uintptr_t>(&buffer);
2072 module.mem_end = reinterpret_cast<uintptr_t>(&buffer[kSize]); 2085 module.mem_end = reinterpret_cast<uintptr_t>(&buffer[kSize]);
2073 r.env()->module = &module; 2086 r.env()->module = &module;
2074 2087
(...skipping 10 matching lines...) Expand all
2085 0, WASM_I32_SUB(WASM_GET_LOCAL(0), WASM_I8(4))))), 2098 0, WASM_I32_SUB(WASM_GET_LOCAL(0), WASM_I8(4))))),
2086 WASM_STORE_MEM(MachineType::Float32(), WASM_ZERO, 2099 WASM_STORE_MEM(MachineType::Float32(), WASM_ZERO,
2087 WASM_GET_LOCAL(kSum)), 2100 WASM_GET_LOCAL(kSum)),
2088 WASM_GET_LOCAL(0))); 2101 WASM_GET_LOCAL(0)));
2089 2102
2090 CHECK_EQ(0, r.Call(4 * (kSize - 1))); 2103 CHECK_EQ(0, r.Call(4 * (kSize - 1)));
2091 CHECK_NE(-99.25, buffer[0]); 2104 CHECK_NE(-99.25, buffer[0]);
2092 CHECK_EQ(71256.0f, buffer[0]); 2105 CHECK_EQ(71256.0f, buffer[0]);
2093 } 2106 }
2094 2107
2108 #endif
2109
2095 2110
2096 #if WASM_64 2111 #if WASM_64
2097 TEST(Run_Wasm_MemI64_Sum) { 2112 TEST(Run_Wasm_MemI64_Sum) {
2098 WasmRunner<uint64_t> r(MachineType::Int32()); 2113 WasmRunner<uint64_t> r(MachineType::Int32());
2099 const int kNumElems = 20; 2114 const int kNumElems = 20;
2100 const byte kSum = r.AllocateLocal(kAstI64); 2115 const byte kSum = r.AllocateLocal(kAstI64);
2101 TestingModule module; 2116 TestingModule module;
2102 uint64_t* memory = module.AddMemoryElems<uint64_t>(kNumElems); 2117 uint64_t* memory = module.AddMemoryElems<uint64_t>(kNumElems);
2103 r.env()->module = &module; 2118 r.env()->module = &module;
2104 2119
(...skipping 17 matching lines...) Expand all
2122 for (size_t j = kNumElems - 1; j > 0; j--) { 2137 for (size_t j = kNumElems - 1; j > 0; j--) {
2123 expected += memory[j]; 2138 expected += memory[j];
2124 } 2139 }
2125 uint64_t result = r.Call(8 * (kNumElems - 1)); 2140 uint64_t result = r.Call(8 * (kNumElems - 1));
2126 CHECK_EQ(expected, result); 2141 CHECK_EQ(expected, result);
2127 } 2142 }
2128 } 2143 }
2129 #endif 2144 #endif
2130 2145
2131 2146
2147 // TODO(titzer): Fix for msan and re-enable.
2148 #if 0
2149
2132 template <typename T> 2150 template <typename T>
2133 void GenerateAndRunFold(WasmOpcode binop, T* buffer, size_t size, 2151 void GenerateAndRunFold(WasmOpcode binop, T* buffer, size_t size,
2134 LocalType astType, MachineType memType) { 2152 LocalType astType, MachineType memType) {
2135 WasmRunner<int32_t> r(MachineType::Int32()); 2153 WasmRunner<int32_t> r(MachineType::Int32());
2136 const byte kAccum = r.AllocateLocal(astType); 2154 const byte kAccum = r.AllocateLocal(astType);
2137 ModuleEnv module; 2155 ModuleEnv module;
2138 module.mem_start = reinterpret_cast<uintptr_t>(buffer); 2156 module.mem_start = reinterpret_cast<uintptr_t>(buffer);
2139 module.mem_end = reinterpret_cast<uintptr_t>(buffer + size); 2157 module.mem_end = reinterpret_cast<uintptr_t>(buffer + size);
2140 r.env()->module = &module; 2158 r.env()->module = &module;
2141 2159
(...skipping 17 matching lines...) Expand all
2159 2177
2160 2178
2161 TEST(Run_Wasm_MemF64_Mul) { 2179 TEST(Run_Wasm_MemF64_Mul) {
2162 const size_t kSize = 6; 2180 const size_t kSize = 6;
2163 double buffer[kSize] = {1, 2, 2, 2, 2, 2}; 2181 double buffer[kSize] = {1, 2, 2, 2, 2, 2};
2164 GenerateAndRunFold<double>(kExprF64Mul, buffer, kSize, kAstF64, 2182 GenerateAndRunFold<double>(kExprF64Mul, buffer, kSize, kAstF64,
2165 MachineType::Float64()); 2183 MachineType::Float64());
2166 CHECK_EQ(32, buffer[0]); 2184 CHECK_EQ(32, buffer[0]);
2167 } 2185 }
2168 2186
2187 #endif
2188
2169 2189
2170 TEST(Build_Wasm_Infinite_Loop) { 2190 TEST(Build_Wasm_Infinite_Loop) {
2171 WasmRunner<int32_t> r(MachineType::Int32()); 2191 WasmRunner<int32_t> r(MachineType::Int32());
2172 // Only build the graph and compile, don't run. 2192 // Only build the graph and compile, don't run.
2173 BUILD(r, WASM_INFINITE_LOOP); 2193 BUILD(r, WASM_INFINITE_LOOP);
2174 } 2194 }
2175 2195
2176 2196
2177 TEST(Build_Wasm_Infinite_Loop_effect) { 2197 TEST(Build_Wasm_Infinite_Loop_effect) {
2178 WasmRunner<int32_t> r(MachineType::Int32()); 2198 WasmRunner<int32_t> r(MachineType::Int32());
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
2263 2283
2264 TEST(Run_Wasm_Infinite_Loop_not_taken2_brif) { 2284 TEST(Run_Wasm_Infinite_Loop_not_taken2_brif) {
2265 WasmRunner<int32_t> r(MachineType::Int32()); 2285 WasmRunner<int32_t> r(MachineType::Int32());
2266 BUILD(r, WASM_BLOCK(2, WASM_BRV_IF(0, WASM_GET_LOCAL(0), WASM_I8(45)), 2286 BUILD(r, WASM_BLOCK(2, WASM_BRV_IF(0, WASM_GET_LOCAL(0), WASM_I8(45)),
2267 WASM_INFINITE_LOOP)); 2287 WASM_INFINITE_LOOP));
2268 // Run the code, but don't go into the infinite loop. 2288 // Run the code, but don't go into the infinite loop.
2269 CHECK_EQ(45, r.Call(1)); 2289 CHECK_EQ(45, r.Call(1));
2270 } 2290 }
2271 2291
2272 2292
2293 // TODO(titzer): Fix for nosee4 and re-enable.
2294 #if 0
2295
2273 static void TestBuildGraphForUnop(WasmOpcode opcode, FunctionSig* sig) { 2296 static void TestBuildGraphForUnop(WasmOpcode opcode, FunctionSig* sig) {
2274 WasmRunner<int32_t> r(MachineType::Int32()); 2297 WasmRunner<int32_t> r(MachineType::Int32());
2275 init_env(r.env(), sig); 2298 init_env(r.env(), sig);
2276 BUILD(r, static_cast<byte>(opcode), kExprGetLocal, 0); 2299 BUILD(r, static_cast<byte>(opcode), kExprGetLocal, 0);
2277 } 2300 }
2278 2301
2279 2302
2280 static void TestBuildGraphForBinop(WasmOpcode opcode, FunctionSig* sig) { 2303 static void TestBuildGraphForBinop(WasmOpcode opcode, FunctionSig* sig) {
2281 WasmRunner<int32_t> r(MachineType::Int32(), MachineType::Int32()); 2304 WasmRunner<int32_t> r(MachineType::Int32(), MachineType::Int32());
2282 init_env(r.env(), sig); 2305 init_env(r.env(), sig);
(...skipping 12 matching lines...) Expand all
2295 } else { \ 2318 } else { \
2296 TestBuildGraphForBinop(kExpr##name, sig); \ 2319 TestBuildGraphForBinop(kExpr##name, sig); \
2297 } \ 2320 } \
2298 } 2321 }
2299 2322
2300 FOREACH_SIMPLE_OPCODE(GRAPH_BUILD_TEST); 2323 FOREACH_SIMPLE_OPCODE(GRAPH_BUILD_TEST);
2301 2324
2302 #undef GRAPH_BUILD_TEST 2325 #undef GRAPH_BUILD_TEST
2303 } 2326 }
2304 2327
2328 #endif
2329
2305 2330
2306 TEST(Run_Wasm_Int32LoadInt8_signext) { 2331 TEST(Run_Wasm_Int32LoadInt8_signext) {
2307 TestingModule module; 2332 TestingModule module;
2308 const int kNumElems = 16; 2333 const int kNumElems = 16;
2309 int8_t* memory = module.AddMemoryElems<int8_t>(kNumElems); 2334 int8_t* memory = module.AddMemoryElems<int8_t>(kNumElems);
2310 module.RandomizeMemory(); 2335 module.RandomizeMemory();
2311 memory[0] = -1; 2336 memory[0] = -1;
2312 WasmRunner<int32_t> r(MachineType::Int32()); 2337 WasmRunner<int32_t> r(MachineType::Int32());
2313 r.env()->module = &module; 2338 r.env()->module = &module;
2314 BUILD(r, WASM_LOAD_MEM(MachineType::Int8(), WASM_GET_LOCAL(0))); 2339 BUILD(r, WASM_LOAD_MEM(MachineType::Int8(), WASM_GET_LOCAL(0)));
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
2380 2405
2381 *global = 116; 2406 *global = 116;
2382 for (int i = 9; i < 444444; i += 111111) { 2407 for (int i = 9; i < 444444; i += 111111) {
2383 int32_t expected = *global + i; 2408 int32_t expected = *global + i;
2384 r.Call(i); 2409 r.Call(i);
2385 CHECK_EQ(expected, *global); 2410 CHECK_EQ(expected, *global);
2386 } 2411 }
2387 } 2412 }
2388 2413
2389 2414
2415 // TODO(titzer): Fix for msan and re-enable.
2416 #if 0
2417
2390 TEST(Run_WasmInt32Globals_DontAlias) { 2418 TEST(Run_WasmInt32Globals_DontAlias) {
2391 const int kNumGlobals = 3; 2419 const int kNumGlobals = 3;
2392 TestingModule module; 2420 TestingModule module;
2393 int32_t* globals[] = {module.AddGlobal<int32_t>(MachineType::Int32()), 2421 int32_t* globals[] = {module.AddGlobal<int32_t>(MachineType::Int32()),
2394 module.AddGlobal<int32_t>(MachineType::Int32()), 2422 module.AddGlobal<int32_t>(MachineType::Int32()),
2395 module.AddGlobal<int32_t>(MachineType::Int32())}; 2423 module.AddGlobal<int32_t>(MachineType::Int32())};
2396 2424
2397 for (int g = 0; g < kNumGlobals; g++) { 2425 for (int g = 0; g < kNumGlobals; g++) {
2398 // global = global + p0 2426 // global = global + p0
2399 WasmRunner<int32_t> r(MachineType::Int32()); 2427 WasmRunner<int32_t> r(MachineType::Int32());
2400 r.env()->module = &module; 2428 r.env()->module = &module;
2401 BUILD(r, WASM_STORE_GLOBAL( 2429 BUILD(r, WASM_STORE_GLOBAL(
2402 g, WASM_I32_ADD(WASM_LOAD_GLOBAL(g), WASM_GET_LOCAL(0)))); 2430 g, WASM_I32_ADD(WASM_LOAD_GLOBAL(g), WASM_GET_LOCAL(0))));
2403 2431
2404 // Check that reading/writing global number {g} doesn't alter the others. 2432 // Check that reading/writing global number {g} doesn't alter the others.
2405 *globals[g] = 116 * g; 2433 *globals[g] = 116 * g;
2406 int32_t before[kNumGlobals]; 2434 int32_t before[kNumGlobals];
2407 for (int i = 9; i < 444444; i += 111113) { 2435 for (int i = 9; i < 444444; i += 111113) {
2408 int32_t sum = *globals[g] + i; 2436 int32_t sum = *globals[g] + i;
2409 for (int j = 0; j < kNumGlobals; j++) before[j] = *globals[j]; 2437 for (int j = 0; j < kNumGlobals; j++) before[j] = *globals[j];
2410 r.Call(i); 2438 r.Call(i);
2411 for (int j = 0; j < kNumGlobals; j++) { 2439 for (int j = 0; j < kNumGlobals; j++) {
2412 int32_t expected = j == g ? sum : before[j]; 2440 int32_t expected = j == g ? sum : before[j];
2413 CHECK_EQ(expected, *globals[j]); 2441 CHECK_EQ(expected, *globals[j]);
2414 } 2442 }
2415 } 2443 }
2416 } 2444 }
2417 } 2445 }
2418 2446
2447 #endif
2448
2419 2449
2420 #if WASM_64 2450 #if WASM_64
2421 TEST(Run_WasmInt64Global) { 2451 TEST(Run_WasmInt64Global) {
2422 TestingModule module; 2452 TestingModule module;
2423 int64_t* global = module.AddGlobal<int64_t>(MachineType::Int64()); 2453 int64_t* global = module.AddGlobal<int64_t>(MachineType::Int64());
2424 WasmRunner<int32_t> r(MachineType::Int32()); 2454 WasmRunner<int32_t> r(MachineType::Int32());
2425 r.env()->module = &module; 2455 r.env()->module = &module;
2426 // global = global + p0 2456 // global = global + p0
2427 BUILD(r, WASM_BLOCK(2, WASM_STORE_GLOBAL( 2457 BUILD(r, WASM_BLOCK(2, WASM_STORE_GLOBAL(
2428 0, WASM_I64_ADD( 2458 0, WASM_I64_ADD(
(...skipping 752 matching lines...) Expand 10 before | Expand all | Expand 10 after
3181 CHECK_EQ(1, r.Call(1, 0, 2)); 3211 CHECK_EQ(1, r.Call(1, 0, 2));
3182 CHECK_EQ(1, r.Call(1, 0, 9)); 3212 CHECK_EQ(1, r.Call(1, 0, 9));
3183 3213
3184 CHECK_TRAP(r.Call(0, 2, 1)); 3214 CHECK_TRAP(r.Call(0, 2, 1));
3185 CHECK_TRAP(r.Call(1, 2, 0)); 3215 CHECK_TRAP(r.Call(1, 2, 0));
3186 CHECK_TRAP(r.Call(2, 0, 1)); 3216 CHECK_TRAP(r.Call(2, 0, 1));
3187 CHECK_TRAP(r.Call(2, 1, 0)); 3217 CHECK_TRAP(r.Call(2, 1, 0));
3188 } 3218 }
3189 3219
3190 3220
3221 // TODO(titzer): Fix for nosee4 and re-enable.
3222 #if 0
3223
3191 TEST(Run_Wasm_F32Floor) { 3224 TEST(Run_Wasm_F32Floor) {
3192 WasmRunner<float> r(MachineType::Float32()); 3225 WasmRunner<float> r(MachineType::Float32());
3193 BUILD(r, WASM_F32_FLOOR(WASM_GET_LOCAL(0))); 3226 BUILD(r, WASM_F32_FLOOR(WASM_GET_LOCAL(0)));
3194 3227
3195 FOR_FLOAT32_INPUTS(i) { CheckFloatEq(floor(*i), r.Call(*i)); } 3228 FOR_FLOAT32_INPUTS(i) { CheckFloatEq(floor(*i), r.Call(*i)); }
3196 } 3229 }
3197 3230
3198 3231
3199 TEST(Run_Wasm_F32Ceil) { 3232 TEST(Run_Wasm_F32Ceil) {
3200 WasmRunner<float> r(MachineType::Float32()); 3233 WasmRunner<float> r(MachineType::Float32());
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
3244 } 3277 }
3245 3278
3246 3279
3247 TEST(Run_Wasm_F64NearestInt) { 3280 TEST(Run_Wasm_F64NearestInt) {
3248 WasmRunner<double> r(MachineType::Float64()); 3281 WasmRunner<double> r(MachineType::Float64());
3249 BUILD(r, WASM_F64_NEARESTINT(WASM_GET_LOCAL(0))); 3282 BUILD(r, WASM_F64_NEARESTINT(WASM_GET_LOCAL(0)));
3250 3283
3251 FOR_FLOAT64_INPUTS(i) { CheckDoubleEq(nearbyint(*i), r.Call(*i)); } 3284 FOR_FLOAT64_INPUTS(i) { CheckDoubleEq(nearbyint(*i), r.Call(*i)); }
3252 } 3285 }
3253 3286
3287 #endif
3288
3254 3289
3255 TEST(Run_Wasm_F32Min) { 3290 TEST(Run_Wasm_F32Min) {
3256 WasmRunner<float> r(MachineType::Float32(), MachineType::Float32()); 3291 WasmRunner<float> r(MachineType::Float32(), MachineType::Float32());
3257 BUILD(r, WASM_F32_MIN(WASM_GET_LOCAL(0), WASM_GET_LOCAL(1))); 3292 BUILD(r, WASM_F32_MIN(WASM_GET_LOCAL(0), WASM_GET_LOCAL(1)));
3258 3293
3259 FOR_FLOAT32_INPUTS(i) { 3294 FOR_FLOAT32_INPUTS(i) {
3260 FOR_FLOAT32_INPUTS(j) { 3295 FOR_FLOAT32_INPUTS(j) {
3261 float expected; 3296 float expected;
3262 if (*i < *j) { 3297 if (*i < *j) {
3263 expected = *i; 3298 expected = *i;
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after
3514 3549
3515 3550
3516 TEST(Run_Wasm_F32CopySign) { 3551 TEST(Run_Wasm_F32CopySign) {
3517 WasmRunner<float> r(MachineType::Float32(), MachineType::Float32()); 3552 WasmRunner<float> r(MachineType::Float32(), MachineType::Float32());
3518 BUILD(r, WASM_F32_COPYSIGN(WASM_GET_LOCAL(0), WASM_GET_LOCAL(1))); 3553 BUILD(r, WASM_F32_COPYSIGN(WASM_GET_LOCAL(0), WASM_GET_LOCAL(1)));
3519 3554
3520 FOR_FLOAT32_INPUTS(i) { 3555 FOR_FLOAT32_INPUTS(i) {
3521 FOR_FLOAT32_INPUTS(j) { CheckFloatEq(copysign(*i, *j), r.Call(*i, *j)); } 3556 FOR_FLOAT32_INPUTS(j) { CheckFloatEq(copysign(*i, *j), r.Call(*i, *j)); }
3522 } 3557 }
3523 } 3558 }
OLDNEW
« no previous file with comments | « src/wasm/asm-wasm-builder.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698