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 // Flags: --expose-wasm | 5 // Flags: --expose-wasm |
6 | 6 |
7 load("test/mjsunit/wasm/wasm-constants.js"); | 7 load("test/mjsunit/wasm/wasm-constants.js"); |
8 load("test/mjsunit/wasm/wasm-module-builder.js"); | 8 load("test/mjsunit/wasm/wasm-module-builder.js"); |
9 | 9 |
10 const JS = false; // for testing the tests. | 10 const JS = false; // for testing the tests. |
11 const WRONG1 = 0x0DEDFACE; | 11 const WRONG1 = 0x0DEDFACE; |
12 const WRONG2 = 0x0DEDBABE; | 12 const WRONG2 = 0x0DEDBABE; |
13 const WRONG3 = 0x0DEDD011 | 13 const WRONG3 = 0x0DEDD011 |
14 | 14 |
15 function makeSelect(type, args, which) { | 15 function makeSelect(type, args, which) { |
16 if (JS) { | 16 if (JS) { |
17 // For testing the tests. | 17 // For testing the tests. |
18 return function() { | 18 return function() { |
19 var val = +arguments[which]; | 19 var val = +arguments[which]; |
20 print(" " + val); | 20 print(" " + val); |
21 if (type == kAstI32) return val | 0; | 21 if (type == kAstI32) return val | 0; |
22 if (type == kAstF32) return Math.fround(val); | 22 if (type == kAstF32) return Math.fround(val); |
23 if (type == kAstF64) return val; | 23 if (type == kAstF64) return val; |
24 return undefined; | 24 return undefined; |
25 } | 25 } |
26 } | 26 } |
27 | 27 |
28 var builder = new WasmModuleBuilder(); | 28 var builder = new WasmModuleBuilder(); |
29 var sig = new Array(); | 29 var params = []; |
30 sig.push(args); | 30 for (var i = 0; i < args; i++) params.push(type); |
31 for (var i = 0; i < args; i++) sig.push(type); | 31 builder.addFunction("select", makeSig(params, [type])) |
32 sig.push(1); | |
33 sig.push(type); | |
34 builder.addFunction("select", sig) | |
35 .addBody([kExprGetLocal, which]) | 32 .addBody([kExprGetLocal, which]) |
36 .exportFunc(); | 33 .exportFunc(); |
37 | 34 |
38 return builder.instantiate().exports.select; | 35 return builder.instantiate().exports.select; |
39 } | 36 } |
40 | 37 |
41 const inputs = [ | 38 const inputs = [ |
42 -1, 0, 2.2, 3.3, 3000.11, Infinity, -Infinity, NaN | 39 -1, 0, 2.2, 3.3, 3000.11, Infinity, -Infinity, NaN |
43 ]; | 40 ]; |
44 | 41 |
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
314 assertEquals(C(val), select(WRONG1, WRONG2, val)); | 311 assertEquals(C(val), select(WRONG1, WRONG2, val)); |
315 | 312 |
316 // under args | 313 // under args |
317 assertEquals(C(undefined), select()); | 314 assertEquals(C(undefined), select()); |
318 assertEquals(C(undefined), select(0xDEDFACE)); | 315 assertEquals(C(undefined), select(0xDEDFACE)); |
319 assertEquals(C(undefined), select(WRONG1, WRONG2)); | 316 assertEquals(C(undefined), select(WRONG1, WRONG2)); |
320 // over args | 317 // over args |
321 assertEquals(C(val), select(WRONG1, WRONG2, val, WRONG3)); | 318 assertEquals(C(val), select(WRONG1, WRONG2, val, WRONG3)); |
322 } | 319 } |
323 })(); | 320 })(); |
OLD | NEW |