OLD | NEW |
(Empty) | |
| 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 |
| 3 // found in the LICENSE file. |
| 4 |
| 5 load("test/mjsunit/wasm/wasm-constants.js"); |
| 6 |
| 7 function runSelect2(module, which, a, b) { |
| 8 assertEquals(which == 0 ? a : b, module.select(a, b)); |
| 9 } |
| 10 |
| 11 function testSelect2(type) { |
| 12 var kBodySize = 2; |
| 13 var kNameOffset = 21 + kBodySize + 1; |
| 14 |
| 15 for (var which = 0; which < 2; which++) { |
| 16 print("type = " + type + ", which = " + which); |
| 17 |
| 18 var data = bytes( |
| 19 // -- memory |
| 20 kDeclMemory, |
| 21 12, 12, 1, // memory |
| 22 // -- signatures |
| 23 kDeclSignatures, 1, |
| 24 2, type, type, type, // signature: (t,t)->t |
| 25 // -- select |
| 26 kDeclFunctions, 1, |
| 27 kDeclFunctionName | kDeclFunctionExport, |
| 28 0, 0, |
| 29 kNameOffset, 0, 0, 0, // name offset |
| 30 kBodySize, 0, // body size |
| 31 kExprGetLocal, which, // -- |
| 32 kDeclEnd, |
| 33 's','e','l','e','c','t',0 // name |
| 34 ); |
| 35 |
| 36 var module = WASM.instantiateModule(data); |
| 37 |
| 38 assertEquals("function", typeof module.select); |
| 39 runSelect2(module, which, 99, 97); |
| 40 runSelect2(module, which, -99, -97); |
| 41 |
| 42 if (type != kAstF32) { |
| 43 runSelect2(module, which, 0x80000000 | 0, 0x7fffffff | 0); |
| 44 runSelect2(module, which, 0x80000001 | 0, 0x7ffffffe | 0); |
| 45 runSelect2(module, which, 0xffffffff | 0, 0xfffffffe | 0); |
| 46 runSelect2(module, which, -2147483647, 2147483646); |
| 47 runSelect2(module, which, -2147483646, 2147483645); |
| 48 runSelect2(module, which, -2147483648, 2147483647); |
| 49 } |
| 50 |
| 51 if (type != kAstI32 && type != kAstI64) { |
| 52 runSelect2(module, which, -1.25, 5.25); |
| 53 runSelect2(module, which, Infinity, -Infinity); |
| 54 } |
| 55 } |
| 56 } |
| 57 |
| 58 |
| 59 testSelect2(kAstI32); |
| 60 testSelect2(kAstF32); |
| 61 testSelect2(kAstF64); |
| 62 |
| 63 |
| 64 function runSelect10(module, which, a, b) { |
| 65 var x = -1; |
| 66 |
| 67 var result = [ |
| 68 module.select(a, b, x, x, x, x, x, x, x, x), |
| 69 module.select(x, a, b, x, x, x, x, x, x, x), |
| 70 module.select(x, x, a, b, x, x, x, x, x, x), |
| 71 module.select(x, x, x, a, b, x, x, x, x, x), |
| 72 module.select(x, x, x, x, a, b, x, x, x, x), |
| 73 module.select(x, x, x, x, x, a, b, x, x, x), |
| 74 module.select(x, x, x, x, x, x, a, b, x, x), |
| 75 module.select(x, x, x, x, x, x, x, a, b, x), |
| 76 module.select(x, x, x, x, x, x, x, x, a, b), |
| 77 module.select(x, x, x, x, x, x, x, x, x, a) |
| 78 ]; |
| 79 |
| 80 for (var i = 0; i < 10; i++) { |
| 81 if (which == i) assertEquals(a, result[i]); |
| 82 else if (which == i+1) assertEquals(b, result[i]); |
| 83 else assertEquals(x, result[i]); |
| 84 } |
| 85 } |
| 86 |
| 87 function testSelect10(type) { |
| 88 var kBodySize = 2; |
| 89 var kNameOffset = 29 + kBodySize + 1; |
| 90 |
| 91 for (var which = 0; which < 10; which++) { |
| 92 print("type = " + type + ", which = " + which); |
| 93 |
| 94 var t = type; |
| 95 var data = bytes( |
| 96 kDeclMemory, |
| 97 12, 12, 1, // memory |
| 98 // signatures |
| 99 kDeclSignatures, 1, |
| 100 10, t,t,t,t,t,t,t,t,t,t,t, // (tx10)->t |
| 101 // main function |
| 102 kDeclFunctions, 1, |
| 103 kDeclFunctionName | kDeclFunctionExport, |
| 104 0, 0, |
| 105 kNameOffset, 0, 0, 0, // name offset |
| 106 kBodySize, 0, // body size |
| 107 kExprGetLocal, which, // -- |
| 108 kDeclEnd, |
| 109 's','e','l','e','c','t',0 // name |
| 110 ); |
| 111 |
| 112 var module = WASM.instantiateModule(data); |
| 113 |
| 114 assertEquals("function", typeof module.select); |
| 115 runSelect10(module, which, 99, 97); |
| 116 runSelect10(module, which, -99, -97); |
| 117 |
| 118 if (type != kAstF32) { |
| 119 runSelect10(module, which, 0x80000000 | 0, 0x7fffffff | 0); |
| 120 runSelect10(module, which, 0x80000001 | 0, 0x7ffffffe | 0); |
| 121 runSelect10(module, which, 0xffffffff | 0, 0xfffffffe | 0); |
| 122 runSelect10(module, which, -2147483647, 2147483646); |
| 123 runSelect10(module, which, -2147483646, 2147483645); |
| 124 runSelect10(module, which, -2147483648, 2147483647); |
| 125 } |
| 126 |
| 127 if (type != kAstI32 && type != kAstI64) { |
| 128 runSelect10(module, which, -1.25, 5.25); |
| 129 runSelect10(module, which, Infinity, -Infinity); |
| 130 } |
| 131 } |
| 132 } |
| 133 |
| 134 |
| 135 testSelect10(kAstI32); |
| 136 testSelect10(kAstF32); |
| 137 testSelect10(kAstF64); |
OLD | NEW |