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

Side by Side Diff: test/mjsunit/wasm/float-constant-folding.js

Issue 2669753002: [wasm] Do not fold f32-to-f64 and f64-to-f32 conversions. (Closed)
Patch Set: Created 3 years, 10 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
OLDNEW
1 // Copyright 2017 the V8 project authors. All rights reserved. 1 // Copyright 2017 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 (function() { 10 (function() {
11 print("F32: sNaN - 0 = qNaN"); 11 print("F32: sNaN - 0 = qNaN");
12 var builder = new WasmModuleBuilder(); 12 var builder = new WasmModuleBuilder();
13 builder.addFunction("F32Sub0", kSig_i_i) 13 builder.addFunction("F32Sub0", kSig_i_i).addBody(
14 .addBody([ 14 [ kExprGetLocal, 0, kExprF32ReinterpretI32, kExprF32Const, 0x00, 0x00,
15 kExprGetLocal, 0, 15 0x00, 0x00, // 0.0
16 kExprF32ReinterpretI32, 16 kExprF32Sub, kExprI32ReinterpretF32, ]).exportFunc();
17 kExprF32Const, 0x00, 0x00, 0x00, 0x00, // 0.0
18 kExprF32Sub,
19 kExprI32ReinterpretF32,
20 ])
21 .exportFunc();
22 var module = builder.instantiate(); 17 var module = builder.instantiate();
23 // F32Sub0(signalling_NaN) 18 // F32Sub0(signalling_NaN)
24 assertEquals(0x7fe00000, module.exports.F32Sub0(0x7fa00000)); 19 assertEquals(0x7fe00000, module.exports.F32Sub0(0x7fa00000));
25 })(); 20 })();
26 21
27 (function() { 22 (function() {
28 print("F32: -0 sNaN = qNaN"); 23 print("F32: -0 sNaN = qNaN");
29 var builder = new WasmModuleBuilder(); 24 var builder = new WasmModuleBuilder();
30 builder.addFunction("F32Sub0", kSig_i_i) 25 builder.addFunction("F32Sub0", kSig_i_i).addBody(
31 .addBody([ 26 [ kExprF32Const, 0x00, 0x00, 0x00, 0x80, // 0.0
32 kExprF32Const, 0x00, 0x00, 0x00, 0x80, // 0.0 27 kExprGetLocal, 0, kExprF32ReinterpretI32, kExprF32Sub,
33 kExprGetLocal, 0, 28 kExprI32ReinterpretF32, ]).exportFunc();
34 kExprF32ReinterpretI32,
35 kExprF32Sub,
36 kExprI32ReinterpretF32,
37 ])
38 .exportFunc();
39 var module = builder.instantiate(); 29 var module = builder.instantiate();
40 // F32Sub0(signalling_NaN) 30 // F32Sub0(signalling_NaN)
41 assertEquals(0x7fe00000, module.exports.F32Sub0(0x7fa00000)); 31 assertEquals(0x7fe00000, module.exports.F32Sub0(0x7fa00000));
42 })(); 32 })();
43 33
44 (function() { 34 (function() {
45 print("F32: sNaN - X = qNaN"); 35 print("F32: sNaN - X = qNaN");
46 var builder = new WasmModuleBuilder(); 36 var builder = new WasmModuleBuilder();
47 builder.addFunction("F32NaNSubX", kSig_i_i) 37 builder.addFunction("F32NaNSubX", kSig_i_i).addBody(
48 .addBody([ 38 [ kExprF32Const, 0x00, 0x00, 0xa0, 0x7f, kExprF32Const, 0x12, 0x34, 0x56,
49 kExprF32Const, 0x00, 0x00, 0xa0, 0x7f, 39 0x78, kExprF32Sub, kExprI32ReinterpretF32, ]).exportFunc();
50 kExprF32Const, 0x12, 0x34, 0x56, 0x78,
51 kExprF32Sub,
52 kExprI32ReinterpretF32,
53 ])
54 .exportFunc();
55 var module = builder.instantiate(); 40 var module = builder.instantiate();
56 assertEquals(0x7fe00000, module.exports.F32NaNSubX()); 41 assertEquals(0x7fe00000, module.exports.F32NaNSubX());
57 })(); 42 })();
58 43
59 (function() { 44 (function() {
60 print("F32: X - sNaN = qNaN"); 45 print("F32: X - sNaN = qNaN");
61 var builder = new WasmModuleBuilder(); 46 var builder = new WasmModuleBuilder();
62 builder.addFunction("F32XSubNaN", kSig_i_i) 47 builder.addFunction("F32XSubNaN", kSig_i_i).addBody(
63 .addBody([ 48 [ kExprF32Const, 0x12, 0x34, 0x56, 0x78, kExprF32Const, 0x00, 0x00, 0xa0,
64 kExprF32Const, 0x12, 0x34, 0x56, 0x78, 49 0x7f, kExprF32Sub, kExprI32ReinterpretF32, ]).exportFunc();
65 kExprF32Const, 0x00, 0x00, 0xa0, 0x7f,
66 kExprF32Sub,
67 kExprI32ReinterpretF32,
68 ])
69 .exportFunc();
70 var module = builder.instantiate(); 50 var module = builder.instantiate();
71 assertEquals(0x7fe00000, module.exports.F32XSubNaN()); 51 assertEquals(0x7fe00000, module.exports.F32XSubNaN());
72 })(); 52 })();
73 53
74 (function() { 54 (function() {
75 print("F64: X + sNaN = qNaN"); 55 print("F64: X + sNaN = qNaN");
76 var builder = new WasmModuleBuilder(); 56 var builder = new WasmModuleBuilder();
77 builder.addFunction("F32XAddNaN", kSig_i_i) 57 builder.addFunction("F32XAddNaN", kSig_i_i).addBody(
78 .addBody([ 58 [ kExprF64Const, 0xde, 0xbc, 0x0a, 0x89, 0x67, 0x45, 0x23, 0x01,
79 kExprF64Const, 0xde, 0xbc, 0x0a, 0x89, 0x67, 0x45, 0x23, 0x01, 59 kExprF64Const, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x7f,
80 kExprF64Const, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x7f, 60 kExprF64Add, kExprI64ReinterpretF64, kExprI64Const, 32, kExprI64ShrU,
81 kExprF64Add, 61 kExprI32ConvertI64, ]).exportFunc();
82 kExprI64ReinterpretF64,
83 kExprI64Const, 32,
84 kExprI64ShrU,
85 kExprI32ConvertI64,
86 ])
87 .exportFunc();
88 var module = builder.instantiate(); 62 var module = builder.instantiate();
89 assertEquals(0x7ffa0000, module.exports.F32XAddNaN()); 63 assertEquals(0x7ffa0000, module.exports.F32XAddNaN());
90 })(); 64 })();
91 65
92 (function() { 66 (function() {
93 print("F64: sNaN - 0 = qNaN"); 67 print("F64: sNaN - 0 = qNaN");
94 var builder = new WasmModuleBuilder(); 68 var builder = new WasmModuleBuilder();
95 builder.addFunction("F64Sub0", kSig_i_i) 69 builder.addFunction("F64Sub0", kSig_i_i).addBody(
96 .addBody([ 70 [ kExprI64Const, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xf9, 0xff,
97 kExprI64Const, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xf9, 0xff, 0x00, 71 0x00, kExprF64ReinterpretI64, kExprF64Const, 0x00, 0x00, 0x00, 0x00,
98 kExprF64ReinterpretI64, 72 0x00, 0x00, 0x00, 0x00, // 0.0
99 kExprF64Const, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0.0 73 kExprF64Sub, kExprI64ReinterpretF64, kExprI64Const, 32, kExprI64ShrU,
100 kExprF64Sub, 74 kExprI32ConvertI64, ]).exportFunc();
101 kExprI64ReinterpretF64,
102 kExprI64Const, 32,
103 kExprI64ShrU,
104 kExprI32ConvertI64,
105 ])
106 .exportFunc();
107 var module = builder.instantiate(); 75 var module = builder.instantiate();
108 assertEquals(0x7ffa0000, module.exports.F64Sub0()); 76 assertEquals(0x7ffa0000, module.exports.F64Sub0());
109 })(); 77 })();
110 78
111 (function() { 79 (function() {
112 print("F64: -0 - sNaN = qNaN"); 80 print("F64: -0 - sNaN = qNaN");
113 var builder = new WasmModuleBuilder(); 81 var builder = new WasmModuleBuilder();
114 builder.addFunction("F64Sub0", kSig_i_i) 82 builder.addFunction("F64Sub0", kSig_i_i).addBody(
115 .addBody([ 83 [ kExprF64Const, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, // 0.0
116 kExprF64Const, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, // 0.0 84 kExprI64Const, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xf9, 0xff,
117 kExprI64Const, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xf9, 0xff, 0x00, 85 0x00, kExprF64ReinterpretI64, kExprF64Sub, kExprI64ReinterpretF64,
118 kExprF64ReinterpretI64, 86 kExprI64Const, 32, kExprI64ShrU, kExprI32ConvertI64, ]).exportFunc();
119 kExprF64Sub,
120 kExprI64ReinterpretF64,
121 kExprI64Const, 32,
122 kExprI64ShrU,
123 kExprI32ConvertI64,
124 ])
125 .exportFunc();
126 var module = builder.instantiate(); 87 var module = builder.instantiate();
127 assertEquals(0x7ffa0000, module.exports.F64Sub0()); 88 assertEquals(0x7ffa0000, module.exports.F64Sub0());
128 })(); 89 })();
129 90
130 (function() { 91 (function() {
131 print("F64: sNaN - X = qNaN"); 92 print("F64: sNaN - X = qNaN");
132 var builder = new WasmModuleBuilder(); 93 var builder = new WasmModuleBuilder();
133 builder.addFunction("F64NaNSubX", kSig_i_i) 94 builder.addFunction("F64NaNSubX", kSig_i_i).addBody(
134 .addBody([ 95 [ kExprF64Const, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x7f,
135 kExprF64Const, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x7f, 96 kExprF64Const, 0xde, 0xbc, 0x0a, 0x89, 0x67, 0x45, 0x23, 0x01,
136 kExprF64Const, 0xde, 0xbc, 0x0a, 0x89, 0x67, 0x45, 0x23, 0x01, 97 kExprF64Sub, kExprI64ReinterpretF64, kExprI64Const, 32, kExprI64ShrU,
137 kExprF64Sub, 98 kExprI32ConvertI64, ]).exportFunc();
138 kExprI64ReinterpretF64,
139 kExprI64Const, 32,
140 kExprI64ShrU,
141 kExprI32ConvertI64,
142 ])
143 .exportFunc();
144 var module = builder.instantiate(); 99 var module = builder.instantiate();
145 assertEquals(0x7ffa0000, module.exports.F64NaNSubX()); 100 assertEquals(0x7ffa0000, module.exports.F64NaNSubX());
146 })(); 101 })();
147 102
148 (function() { 103 (function() {
149 print("F64: X - sNaN = qNaN"); 104 print("F64: X - sNaN = qNaN");
150 var builder = new WasmModuleBuilder(); 105 var builder = new WasmModuleBuilder();
151 builder.addFunction("F64XSubNaN", kSig_i_i) 106 builder.addFunction("F64XSubNaN", kSig_i_i).addBody(
152 .addBody([ 107 [ kExprF64Const, 0xde, 0xbc, 0x0a, 0x89, 0x67, 0x45, 0x23, 0x01,
153 kExprF64Const, 0xde, 0xbc, 0x0a, 0x89, 0x67, 0x45, 0x23, 0x01, 108 kExprF64Const, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x7f,
154 kExprF64Const, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x7f, 109 kExprF64Sub, kExprI64ReinterpretF64, kExprI64Const, 32, kExprI64ShrU,
155 kExprF64Sub, 110 kExprI32ConvertI64, ]).exportFunc();
156 kExprI64ReinterpretF64,
157 kExprI64Const, 32,
158 kExprI64ShrU,
159 kExprI32ConvertI64,
160 ])
161 .exportFunc();
162 var module = builder.instantiate(); 111 var module = builder.instantiate();
163 assertEquals(0x7ffa0000, module.exports.F64XSubNaN()); 112 assertEquals(0x7ffa0000, module.exports.F64XSubNaN());
164 })(); 113 })();
165 114
166 (function() { 115 (function() {
167 print("F64: sNaN * 1 = qNaN"); 116 print("F64: sNaN * 1 = qNaN");
168 var builder = new WasmModuleBuilder(); 117 var builder = new WasmModuleBuilder();
169 builder.addFunction("F64Mul1", kSig_i_i) 118 builder.addFunction("F64Mul1", kSig_i_i).addBody(
170 .addBody([ 119 [ kExprI64Const, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xf9, 0xff,
171 kExprI64Const, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xf9, 0xff, 0x00, 120 0x00, kExprF64ReinterpretI64, kExprF64Const, 0x00, 0x00, 0x00, 0x00,
172 kExprF64ReinterpretI64, 121 0x00, 0x00, 0xf0, 0x3f, kExprF64Mul, kExprI64ReinterpretF64,
173 kExprF64Const, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 122 kExprI64Const, 32, kExprI64ShrU, kExprI32ConvertI64, ]).exportFunc();
174 kExprF64Mul,
175 kExprI64ReinterpretF64,
176 kExprI64Const, 32,
177 kExprI64ShrU,
178 kExprI32ConvertI64,
179 ])
180 .exportFunc();
181 var module = builder.instantiate(); 123 var module = builder.instantiate();
182 assertEquals(0x7ffa0000, module.exports.F64Mul1()); 124 assertEquals(0x7ffa0000, module.exports.F64Mul1());
183 })(); 125 })();
184 126
185 (function() { 127 (function() {
186 print("F64: X * sNaN = qNaN"); 128 print("F64: X * sNaN = qNaN");
187 var builder = new WasmModuleBuilder(); 129 var builder = new WasmModuleBuilder();
188 builder.addFunction("F64XMulNaN", kSig_i_i) 130 builder.addFunction("F64XMulNaN", kSig_i_i).addBody(
189 .addBody([ 131 [ kExprF64Const, 0xde, 0xbc, 0x0a, 0x89, 0x67, 0x45, 0x23, 0x01,
190 kExprF64Const, 0xde, 0xbc, 0x0a, 0x89, 0x67, 0x45, 0x23, 0x01, 132 kExprF64Const, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x7f,
191 kExprF64Const, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x7f, 133 kExprF64Mul, kExprI64ReinterpretF64, kExprI64Const, 32, kExprI64ShrU,
192 kExprF64Mul, 134 kExprI32ConvertI64, ]).exportFunc();
193 kExprI64ReinterpretF64,
194 kExprI64Const, 32,
195 kExprI64ShrU,
196 kExprI32ConvertI64,
197 ])
198 .exportFunc();
199 var module = builder.instantiate(); 135 var module = builder.instantiate();
200 assertEquals(0x7ffa0000, module.exports.F64XMulNaN()); 136 assertEquals(0x7ffa0000, module.exports.F64XMulNaN());
201 })(); 137 })();
202 138
203 (function() { 139 (function() {
204 print("F64: sNaN / 1 = qNaN"); 140 print("F64: sNaN / 1 = qNaN");
205 var builder = new WasmModuleBuilder(); 141 var builder = new WasmModuleBuilder();
206 builder.addFunction("F64Div1", kSig_i_i) 142 builder.addFunction("F64Div1", kSig_i_i).addBody(
207 .addBody([ 143 [ kExprI64Const, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xf9, 0xff,
208 kExprI64Const, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xf9, 0xff, 0x00, 144 0x00, kExprF64ReinterpretI64, kExprF64Const, 0x00, 0x00, 0x00, 0x00,
209 kExprF64ReinterpretI64, 145 0x00, 0x00, 0xf0, 0x3f, kExprF64Div, kExprI64ReinterpretF64,
210 kExprF64Const, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 146 kExprI64Const, 32, kExprI64ShrU, kExprI32ConvertI64, ]).exportFunc();
211 kExprF64Div,
212 kExprI64ReinterpretF64,
213 kExprI64Const, 32,
214 kExprI64ShrU,
215 kExprI32ConvertI64,
216 ])
217 .exportFunc();
218 var module = builder.instantiate(); 147 var module = builder.instantiate();
219 assertEquals(0x7ffa0000, module.exports.F64Div1()); 148 assertEquals(0x7ffa0000, module.exports.F64Div1());
220 })(); 149 })();
221 150
222 (function() { 151 (function() {
223 print("F64: sNaN / -1 = qNaN"); 152 print("F64: sNaN / -1 = qNaN");
224 var builder = new WasmModuleBuilder(); 153 var builder = new WasmModuleBuilder();
225 builder.addFunction("F64Div1", kSig_i_i) 154 builder.addFunction("F64Div1", kSig_i_i).addBody(
226 .addBody([ 155 [ kExprI64Const, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xf9, 0xff,
227 kExprI64Const, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xf9, 0xff, 0x00, 156 0x00, kExprF64ReinterpretI64, kExprF64Const, 0x00, 0x00, 0x00, 0x00,
228 kExprF64ReinterpretI64, 157 0x00, 0x00, 0xf0, 0xbf, kExprF64Div, kExprI64ReinterpretF64,
229 kExprF64Const, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xbf, 158 kExprI64Const, 32, kExprI64ShrU, kExprI32ConvertI64, ]).exportFunc();
230 kExprF64Div,
231 kExprI64ReinterpretF64,
232 kExprI64Const, 32,
233 kExprI64ShrU,
234 kExprI32ConvertI64,
235 ])
236 .exportFunc();
237 var module = builder.instantiate(); 159 var module = builder.instantiate();
238 assertEquals(0x7ffa0000, module.exports.F64Div1()); 160 assertEquals(0x7ffa0000, module.exports.F64Div1());
239 })(); 161 })();
240 162
241 (function() { 163 (function() {
242 print("F64: X / sNaN = qNaN"); 164 print("F64: X / sNaN = qNaN");
243 var builder = new WasmModuleBuilder(); 165 var builder = new WasmModuleBuilder();
244 builder.addFunction("F64XDivNaN", kSig_i_i) 166 builder.addFunction("F64XDivNaN", kSig_i_i).addBody(
245 .addBody([ 167 [ kExprF64Const, 0xde, 0xbc, 0x0a, 0x89, 0x67, 0x45, 0x23, 0x01,
246 kExprF64Const, 0xde, 0xbc, 0x0a, 0x89, 0x67, 0x45, 0x23, 0x01, 168 kExprF64Const, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x7f,
247 kExprF64Const, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x7f, 169 kExprF64Div, kExprI64ReinterpretF64, kExprI64Const, 32, kExprI64ShrU,
248 kExprF64Div, 170 kExprI32ConvertI64, ]).exportFunc();
249 kExprI64ReinterpretF64,
250 kExprI64Const, 32,
251 kExprI64ShrU,
252 kExprI32ConvertI64,
253 ])
254 .exportFunc();
255 var module = builder.instantiate(); 171 var module = builder.instantiate();
256 assertEquals(0x7ffa0000, module.exports.F64XDivNaN()); 172 assertEquals(0x7ffa0000, module.exports.F64XDivNaN());
257 })(); 173 })();
258 174
259 (function() { 175 (function() {
260 print("F64: sNaN / X = qNaN"); 176 print("F64: sNaN / X = qNaN");
261 var builder = new WasmModuleBuilder(); 177 var builder = new WasmModuleBuilder();
262 builder.addFunction("F64NaNDivX", kSig_i_i) 178 builder.addFunction("F64NaNDivX", kSig_i_i).addBody(
263 .addBody([ 179 [ kExprF64Const, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x7f,
264 kExprF64Const, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x7f, 180 kExprF64Const, 0xde, 0xbc, 0x0a, 0x89, 0x67, 0x45, 0x23, 0x01,
265 kExprF64Const, 0xde, 0xbc, 0x0a, 0x89, 0x67, 0x45, 0x23, 0x01, 181 kExprF64Div, kExprI64ReinterpretF64, kExprI64Const, 32, kExprI64ShrU,
266 kExprF64Div, 182 kExprI32ConvertI64, ]).exportFunc();
267 kExprI64ReinterpretF64,
268 kExprI64Const, 32,
269 kExprI64ShrU,
270 kExprI32ConvertI64,
271 ])
272 .exportFunc();
273 var module = builder.instantiate(); 183 var module = builder.instantiate();
274 assertEquals(0x7ffa0000, module.exports.F64NaNDivX()); 184 assertEquals(0x7ffa0000, module.exports.F64NaNDivX());
275 })(); 185 })();
186
187 (function() {
188 print("F32ConvertF64(sNaN) = qNaN");
189 var builder = new WasmModuleBuilder();
190 builder.addFunction("F32ConvertF64X", kSig_i_i).addBody(
191 [ kExprF64Const, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x7f,
192 kExprF32ConvertF64, kExprI32ReinterpretF32, ]).exportFunc();
193 var module = builder.instantiate();
194 assertEquals(0x7fd00000, module.exports.F32ConvertF64X());
195 })();
196
197 (function() {
198 print("F64ConvertF32(sNaN) = qNaN");
199 var builder = new WasmModuleBuilder();
200 builder.addFunction("F64ConvertF32X", kSig_i_i).addBody(
201 [ kExprF32Const, 0x00, 0x00, 0xa0, 0x7f, kExprF64ConvertF32,
202 kExprI64ReinterpretF64, kExprI64Const, 32, kExprI64ShrU,
203 kExprI32ConvertI64, ]).exportFunc();
204 var module = builder.instantiate();
205 assertEquals(0x7ffc0000, module.exports.F64ConvertF32X());
206 })();
207
208 (function() {
209 print("F64ConvertF32(F32ConvertF64(sNaN)) = qNaN");
210 var builder = new WasmModuleBuilder();
211 builder.addFunction("F64toF32toF64", kSig_i_i).addBody(
212 [ kExprI64Const, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xf9, 0xff,
213 0x00, kExprF64ReinterpretI64, kExprF32ConvertF64, kExprF64ConvertF32,
214 kExprI64ReinterpretF64, kExprI64Const, 32, kExprI64ShrU,
215 kExprI32ConvertI64, ]).exportFunc();
216 var module = builder.instantiate();
217 assertEquals(0x7ffa0000, module.exports.F64toF32toF64());
218 })();
OLDNEW
« src/compiler/machine-operator-reducer.cc ('K') | « src/compiler/machine-operator-reducer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698