| 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 sig = new Array(); | 
|  | 30   sig.push(args); | 
|  | 31   for (var i = 0; i < args; i++) sig.push(type); | 
|  | 32   sig.push(1); | 
| 30   sig.push(type); | 33   sig.push(type); | 
| 31   for (var i = 0; i < args; i++) sig.push(type); |  | 
| 32   builder.addFunction("select", sig) | 34   builder.addFunction("select", sig) | 
| 33     .addBody([kExprGetLocal, which]) | 35     .addBody([kExprGetLocal, which]) | 
| 34     .exportFunc(); | 36     .exportFunc(); | 
| 35 | 37 | 
| 36   return builder.instantiate().exports.select; | 38   return builder.instantiate().exports.select; | 
| 37 } | 39 } | 
| 38 | 40 | 
| 39 const inputs = [ | 41 const inputs = [ | 
| 40   -1, 0, 2.2, 3.3, 3000.11, Infinity, -Infinity, NaN | 42   -1, 0, 2.2, 3.3, 3000.11, Infinity, -Infinity, NaN | 
| 41 ]; | 43 ]; | 
| (...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 312     assertEquals(C(val), select(WRONG1, WRONG2, val)); | 314     assertEquals(C(val), select(WRONG1, WRONG2, val)); | 
| 313 | 315 | 
| 314     // under args | 316     // under args | 
| 315     assertEquals(C(undefined), select()); | 317     assertEquals(C(undefined), select()); | 
| 316     assertEquals(C(undefined), select(0xDEDFACE)); | 318     assertEquals(C(undefined), select(0xDEDFACE)); | 
| 317     assertEquals(C(undefined), select(WRONG1, WRONG2)); | 319     assertEquals(C(undefined), select(WRONG1, WRONG2)); | 
| 318     // over args | 320     // over args | 
| 319     assertEquals(C(val), select(WRONG1, WRONG2, val, WRONG3)); | 321     assertEquals(C(val), select(WRONG1, WRONG2, val, WRONG3)); | 
| 320   } | 322   } | 
| 321 })(); | 323 })(); | 
| OLD | NEW | 
|---|