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

Side by Side Diff: test/mjsunit/wasm/asm-wasm-literals.js

Issue 2745393002: [wasm][asm.js] Fix asm.js in tests to be more strictly valid. (Closed)
Patch Set: Created 3 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
« no previous file with comments | « test/mjsunit/wasm/asm-wasm.js ('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 2016 the V8 project authors. All rights reserved. 1 // Copyright 2016 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: --validate-asm --allow-natives-syntax 5 // Flags: --validate-asm --allow-natives-syntax
6 6
7 function RunAsmJsTest(asmfunc, expect) { 7 function RunAsmJsTest(asmfunc, expect) {
8 var asm_source = asmfunc.toString(); 8 var asm_source = asmfunc.toString();
9 var nonasm_source = asm_source.replace(new RegExp("use asm"), ""); 9 var nonasm_source = asm_source.replace(new RegExp("use asm"), "");
10 var stdlib = {Math: Math}; 10 var stdlib = {Math: Math};
(...skipping 14 matching lines...) Expand all
25 function f1() { return 1; } 25 function f1() { return 1; }
26 function f4() { return 4; } 26 function f4() { return 4; }
27 function f64() { return 64; } 27 function f64() { return 64; }
28 function f127() { return 127; } 28 function f127() { return 127; }
29 function f128() { return 128; } 29 function f128() { return 128; }
30 function f256() { return 256; } 30 function f256() { return 256; }
31 function f1000() { return 1000; } 31 function f1000() { return 1000; }
32 function f2000000() { return 2000000; } 32 function f2000000() { return 2000000; }
33 function fmax() { return 2147483647; } 33 function fmax() { return 2147483647; }
34 return {f0: f0, f1: f1, f4: f4, f64: f64, f127: f127, f128: f128, 34 return {f0: f0, f1: f1, f4: f4, f64: f64, f127: f127, f128: f128,
35 f256: f256, f1000: f1000, f2000000, fmax: fmax}; 35 f256: f256, f1000: f1000, f2000000: f2000000, fmax: fmax};
36 } 36 }
37 37
38 RunAsmJsTest(PositiveIntLiterals, function(module) { 38 RunAsmJsTest(PositiveIntLiterals, function(module) {
39 assertEquals(0, module.f0()); 39 assertEquals(0, module.f0());
40 assertEquals(1, module.f1()); 40 assertEquals(1, module.f1());
41 assertEquals(1, module.f1()); 41 assertEquals(1, module.f1());
42 assertEquals(4, module.f4()); 42 assertEquals(4, module.f4());
43 assertEquals(64, module.f64()); 43 assertEquals(64, module.f64());
44 assertEquals(128, module.f128()); 44 assertEquals(128, module.f128());
45 assertEquals(256, module.f256()); 45 assertEquals(256, module.f256());
46 assertEquals(1000, module.f1000()); 46 assertEquals(1000, module.f1000());
47 assertEquals(2000000, module.f2000000()); 47 assertEquals(2000000, module.f2000000());
48 assertEquals(2147483647, module.fmax()); 48 assertEquals(2147483647, module.fmax());
49 }); 49 });
50 50
51 function NegativeIntLiterals() { 51 function NegativeIntLiterals() {
52 "use asm"; 52 "use asm";
53 function f1() { return -1; } 53 function f1() { return -1; }
54 function f4() { return -4; } 54 function f4() { return -4; }
55 function f64() { return -64; } 55 function f64() { return -64; }
56 function f127() { return -127; } 56 function f127() { return -127; }
57 function f128() { return -128; } 57 function f128() { return -128; }
58 function f256() { return -256; } 58 function f256() { return -256; }
59 function f1000() { return -1000; } 59 function f1000() { return -1000; }
60 function f2000000() { return -2000000; } 60 function f2000000() { return -2000000; }
61 function fmin() { return -2147483648; } 61 function fmin() { return -2147483648; }
62 return {f1: f1, f4: f4, f64: f64, f127: f127, f128: f128, 62 return {f1: f1, f4: f4, f64: f64, f127: f127, f128: f128,
63 f256: f256, f1000: f1000, f2000000, fmin: fmin}; 63 f256: f256, f1000: f1000, f2000000: f2000000, fmin: fmin};
64 } 64 }
65 65
66 RunAsmJsTest(NegativeIntLiterals, function (module) { 66 RunAsmJsTest(NegativeIntLiterals, function (module) {
67 assertEquals(-1, module.f1()); 67 assertEquals(-1, module.f1());
68 assertEquals(-4, module.f4()); 68 assertEquals(-4, module.f4());
69 assertEquals(-64, module.f64()); 69 assertEquals(-64, module.f64());
70 assertEquals(-127, module.f127()); 70 assertEquals(-127, module.f127());
71 assertEquals(-128, module.f128()); 71 assertEquals(-128, module.f128());
72 assertEquals(-256, module.f256()); 72 assertEquals(-256, module.f256());
73 assertEquals(-1000, module.f1000()); 73 assertEquals(-1000, module.f1000());
74 assertEquals(-2000000, module.f2000000()); 74 assertEquals(-2000000, module.f2000000());
75 assertEquals(-2147483648, module.fmin()); 75 assertEquals(-2147483648, module.fmin());
76 }); 76 });
77 77
78 function PositiveUnsignedLiterals() { 78 function PositiveUnsignedLiterals() {
79 "use asm"; 79 "use asm";
80 function f0() { return 0 >>> 0; } 80 function f0() { return +(0 >>> 0); }
Eric Holk 2017/03/14 17:08:50 The + is here to convert these into doubles, right
bradn 2017/03/14 20:15:13 Correct. The asm.js spec doesn't actually allow un
81 function f1() { return 1 >>> 0; } 81 function f1() { return +(1 >>> 0); }
82 function f4() { return 4 >>> 0; } 82 function f4() { return +(4 >>> 0); }
83 function f64() { return 64 >>> 0; } 83 function f64() { return +(64 >>> 0); }
84 function f127() { return 127 >>> 0; } 84 function f127() { return +(127 >>> 0); }
85 function f128() { return 128 >>> 0; } 85 function f128() { return +(128 >>> 0); }
86 function f256() { return 256 >>> 0; } 86 function f256() { return +(256 >>> 0); }
87 function f1000() { return 1000 >>> 0; } 87 function f1000() { return +(1000 >>> 0); }
88 function f2000000() { return 2000000 >>> 0; } 88 function f2000000() { return +(2000000 >>> 0); }
89 function fmax() { return 2147483647 >>> 0; } 89 function fmax() { return +(2147483647 >>> 0); }
90 return {f0: f0, f1: f1, f4: f4, f64: f64, f127: f127, f128: f128, 90 return {f0: f0, f1: f1, f4: f4, f64: f64, f127: f127, f128: f128,
91 f256: f256, f1000: f1000, f2000000, fmax: fmax}; 91 f256: f256, f1000: f1000, f2000000: f2000000, fmax: fmax};
92 } 92 }
93 93
94 RunAsmJsTest(PositiveUnsignedLiterals, function (module) { 94 RunAsmJsTest(PositiveUnsignedLiterals, function (module) {
95 assertEquals(0, module.f0()); 95 assertEquals(0, module.f0());
96 assertEquals(1, module.f1()); 96 assertEquals(1, module.f1());
97 assertEquals(4, module.f4()); 97 assertEquals(4, module.f4());
98 assertEquals(64, module.f64()); 98 assertEquals(64, module.f64());
99 assertEquals(128, module.f128()); 99 assertEquals(128, module.f128());
100 assertEquals(256, module.f256()); 100 assertEquals(256, module.f256());
101 assertEquals(1000, module.f1000()); 101 assertEquals(1000, module.f1000());
(...skipping 30 matching lines...) Expand all
132 assertEquals(2147483648, module.a()); 132 assertEquals(2147483648, module.a());
133 assertEquals(2147483649, module.b()); 133 assertEquals(2147483649, module.b());
134 assertEquals(0x80000000, module.c()); 134 assertEquals(0x80000000, module.c());
135 assertEquals(0x80000001, module.d()); 135 assertEquals(0x80000001, module.d());
136 assertEquals(0xffffffff, module.e()); 136 assertEquals(0xffffffff, module.e());
137 }); 137 });
138 138
139 function ManyI32() { 139 function ManyI32() {
140 "use asm"; 140 "use asm";
141 function main() { 141 function main() {
142 var a = 1 + -2 + 3 + -4 | 0; 142 var a = 0, b = 0, c = 0, d = 0, e = 0, f = 0, g = 0, h = 0, i = 0, j = 0;
143 var b = 11 + -22 + 33 + -44 | 0; 143 a = 1 + -2 + 3 + -4 | 0;
144 var c = 111 + -222 + 333 + -444 | 0; 144 b = 11 + -22 + 33 + -44 | 0;
145 var d = 1111 + -2222 + 3333 + -4444 | 0; 145 c = 111 + -222 + 333 + -444 | 0;
146 var e = 11111 + -22222 + 33333 + -44444 | 0; 146 d = 1111 + -2222 + 3333 + -4444 | 0;
147 var f = 155555 + -266666 + 377777 + -488888 | 0; 147 e = 11111 + -22222 + 33333 + -44444 | 0;
148 var g = 1155555 + -2266666 + 3377777 + -4488888 | 0; 148 f = 155555 + -266666 + 377777 + -488888 | 0;
149 var h = 11155555 + -22266666 + 33377777 + -44488888 | 0; 149 g = 1155555 + -2266666 + 3377777 + -4488888 | 0;
150 var i = 111155555 + -222266666 + 333377777 + -444488888 | 0; 150 h = 11155555 + -22266666 + 33377777 + -44488888 | 0;
151 var j = ( 151 i = 111155555 + -222266666 + 333377777 + -444488888 | 0;
152 j = (
152 0x1 + 0x2 + 0x4 + 0x8 + 153 0x1 + 0x2 + 0x4 + 0x8 +
153 0x10 + 0x20 + 0x40 + 0x80 + 154 0x10 + 0x20 + 0x40 + 0x80 +
154 0x10F + 0x200 + 0x400 + 0x800 + 155 0x10F + 0x200 + 0x400 + 0x800 +
155 0x10E0 + 0x20F0 + 0x4000 + 0x8000 + 156 0x10E0 + 0x20F0 + 0x4000 + 0x8000 +
156 0x10D00 + 0x20E00 + 0x400F0 + 0x80002 + 157 0x10D00 + 0x20E00 + 0x400F0 + 0x80002 +
157 0x10C000 + 0x20D000 + 0x400E00 + 0x800030 + 158 0x10C000 + 0x20D000 + 0x400E00 + 0x800030 +
158 0x10B0000 + 0x20C0000 + 0x400D000 + 0x8000400 + 159 0x10B0000 + 0x20C0000 + 0x400D000 + 0x8000400 +
159 0x10A00000 + 0x20B00000 + 0x400C0000 + 0x80005000 160 0x10A00000 + 0x20B00000 + 0x400C0000 + 0x80005000
160 ) | 0; 161 ) | 0;
161 return (a + b + c + d + e + f + g + h + i + j) | 0; 162 return (a + b + c + d + e + f + g + h + i + j) | 0;
162 } 163 }
163 return {main: main}; 164 return {main: main};
164 } 165 }
165 166
166 RunAsmJsTest(ManyI32, function(module) { 167 RunAsmJsTest(ManyI32, function(module) {
167 assertEquals(-222411306, module.main()); 168 assertEquals(-222411306, module.main());
168 }); 169 });
169 170
170 171
171 function ManyF64a() { 172 function ManyF64a() {
172 "use asm"; 173 "use asm";
173 function main() { 174 function main() {
174 var a = +( 0.1 + -0.2 + 0.3 + -0.4); 175 var a = 0.0, b = 0.0, c = 0.0, d = 0.0,
175 var b = +( 1.1 + -2.2 + 0.33 + -4.4); 176 e = 0.0, f = 0.0, g = 0.0, h = 0.0, i = 0.0;
176 var c = +( 11.1 + -22.2 + 3.33 + -4.44); 177 a = +( 0.1 + -0.2 + 0.3 + -0.4);
177 var d = +( 111.1 + -222.2 + 33.33 + -4.444); 178 b = +( 1.1 + -2.2 + 0.33 + -4.4);
178 var e = +( 1111.1 + -2222.2 + 333.33 + -4.4444); 179 c = +( 11.1 + -22.2 + 3.33 + -4.44);
179 var f = +( 15555.5 + -26666.6 + 3777.77 + -4.88888); 180 d = +( 111.1 + -222.2 + 33.33 + -4.444);
180 var g = +( 115555.5 + -226666.6 + 33777.77 + -4.488888); 181 e = +( 1111.1 + -2222.2 + 333.33 + -4.4444);
181 var h = +( 1115555.5 + -2226666.6 + 333777.77 + -4.4488888); 182 f = +( 15555.5 + -26666.6 + 3777.77 + -4.88888);
182 var i = +(11115555.5 + -22226666.6 + 3333777.77 + -4.44488888); 183 g = +( 115555.5 + -226666.6 + 33777.77 + -4.488888);
184 h = +( 1115555.5 + -2226666.6 + 333777.77 + -4.4488888);
185 i = +(11115555.5 + -22226666.6 + 3333777.77 + -4.44488888);
183 return +(a + b + c + d + e + f + g + h + i); 186 return +(a + b + c + d + e + f + g + h + i);
184 } 187 }
185 return {main: main}; 188 return {main: main};
186 } 189 }
187 190
188 RunAsmJsTest(ManyF64a, function(module) { 191 RunAsmJsTest(ManyF64a, function(module) {
189 assertEquals(-8640233.599945681, module.main()); 192 assertEquals(-8640233.599945681, module.main());
190 }); 193 });
191 194
192 function ManyF64b() { 195 function ManyF64b() {
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
250 // TODO(bradnelson): fails validation of F32 literals somehow. 253 // TODO(bradnelson): fails validation of F32 literals somehow.
251 RunAsmJsTest(ManyF32a, function(module) { 254 RunAsmJsTest(ManyF32a, function(module) {
252 assertEquals(2.0999999917333043e-24, module.k1()); 255 assertEquals(2.0999999917333043e-24, module.k1());
253 assertEquals(2.099999868734112e-19, module.k2()); 256 assertEquals(2.099999868734112e-19, module.k2());
254 assertEquals(2.099999997029825e-14, module.k3()); 257 assertEquals(2.099999997029825e-14, module.k3());
255 assertEquals(2.099999951710174e-9, module.k4()); 258 assertEquals(2.099999951710174e-9, module.k4());
256 assertEquals(0.0002099999983329326, module.k5()); 259 assertEquals(0.0002099999983329326, module.k5());
257 assertEquals(21.399999618530273, module.k6()); 260 assertEquals(21.399999618530273, module.k6());
258 }); 261 });
259 } 262 }
OLDNEW
« no previous file with comments | « test/mjsunit/wasm/asm-wasm.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698