diff options
Diffstat (limited to 'js/src/jit-test/tests/asm.js/bug1126251.js')
-rw-r--r-- | js/src/jit-test/tests/asm.js/bug1126251.js | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/asm.js/bug1126251.js b/js/src/jit-test/tests/asm.js/bug1126251.js new file mode 100644 index 000000000..8470a9772 --- /dev/null +++ b/js/src/jit-test/tests/asm.js/bug1126251.js @@ -0,0 +1,53 @@ +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); |