| // Copyright 2018 the V8 project authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // Flags: --allow-natives-syntax |
| |
| function Module(global, env, buffer) { |
| "use asm"; |
| var HEAPF64 = new global.Float64Array(buffer); |
| var HEAPF32 = new global.Float32Array(buffer); |
| var Math_fround = global.Math.fround; |
| function main_d_f() { |
| HEAPF64[0] = Math_fround(+HEAPF64[0]); |
| } |
| function main_d_fq() { |
| HEAPF64[1] = HEAPF32[4096]; |
| } |
| function main_f_dq() { |
| HEAPF32[4] = HEAPF64[4096]; |
| } |
| return {main_d_f: main_d_f, main_d_fq: main_d_fq, main_f_dq: main_f_dq}; |
| }; |
| let buffer = new ArrayBuffer(4096); |
| let module = Module(this, undefined, buffer); |
| let view64 = new Float64Array(buffer); |
| let view32 = new Float32Array(buffer); |
| assertEquals(view64[0] = 2.3, view64[0]); |
| module.main_d_f(); |
| module.main_d_fq(); |
| module.main_f_dq(); |
| assertTrue(%IsAsmWasmCode(Module)); |
| assertEquals(Math.fround(2.3), view64[0]); |
| assertTrue(isNaN(view64[1])); |
| assertTrue(isNaN(view32[4])); |