| //@ skip if $architecture == "mips" |
| |
| "use strict"; |
| |
| function assert(b) { |
| if (!b) |
| throw new Error; |
| } |
| |
| function test() { |
| function storeLittleEndian(dv, index, value) { |
| dv.setFloat32(index, value, true); |
| } |
| noInline(storeLittleEndian); |
| |
| function storeBigEndian(dv, index, value) { |
| dv.setFloat32(index, value, false); |
| } |
| noInline(storeBigEndian); |
| |
| function store(dv, index, value, littleEndian) { |
| dv.setFloat32(index, value, littleEndian); |
| } |
| noInline(store); |
| |
| let buffer = new ArrayBuffer(4); |
| let arr = new Float32Array(buffer); |
| let bits = new Uint32Array(buffer); |
| let dv = new DataView(buffer); |
| |
| for (let i = 0; i < 10000; ++i) { |
| storeLittleEndian(dv, 0, 1.5); |
| assert(arr[0] === 1.5); |
| |
| storeLittleEndian(dv, 0, 12912.124123215122); |
| assert(arr[0] === 12912.1240234375); |
| assert(bits[0] === 0x4649c07f); |
| |
| storeLittleEndian(dv, 0, NaN); |
| assert(isNaN(arr[0])); |
| assert(bits[0] === 0x7FC00000); |
| |
| storeLittleEndian(dv, 0, 2.3879393e-38); |
| assert(arr[0] === 2.387939260590663e-38); |
| assert(bits[0] === 0x01020304); |
| |
| storeBigEndian(dv, 0, 2.3879393e-38); |
| assert(arr[0] === 1.539989614439558e-36); |
| assert(bits[0] === 0x04030201); |
| } |
| } |
| test(); |