load(libdir + "asm.js"); // Bug 1126251 var v = asmLink(asmCompile('global', ` "use asm"; var frd = global.Math.fround; function e() { var x = frd(.1e+71); x = frd(x / x); return +x; } return e; `), this)(); assertEq(v, NaN); if (!isSimdAvailable() || typeof SIMD === 'undefined') { quit(0); } var v = asmLink(asmCompile('global', ` "use asm"; var frd = global.Math.fround; var Float32x4 = global.SIMD.Float32x4; var splat = Float32x4.splat; var ext = Float32x4.extractLane; function e() { var v = Float32x4(0,0,0,0); var x = frd(0.); v = splat(.1e+71); x = ext(v,0); x = frd(x / x); return +x; } return e; `), this)(); assertEq(v, NaN); // Bug 1130618: without GVN setJitCompilerOption("ion.gvn.enable", 0); var v = asmLink(asmCompile('global', ` "use asm"; var Float32x4 = global.SIMD.Float32x4; var splat = Float32x4.splat; var ext = Float32x4.extractLane; function e() { return +ext(splat(.1e+71),0); } return e; `), this)(); assertEq(v, Infinity);