# HG changeset patch # User Stefan Anzinger # Date 1429194069 -7200 # Node ID 1b6783efebc801520eae10e7b558bebdb7d53fba # Parent d3b276db28b893234ef32487bf5374b71d640e54 [SPARC] Fix unstable d2i of NaNs diff -r d3b276db28b8 -r 1b6783efebc8 graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCArithmetic.java --- a/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCArithmetic.java Wed Apr 15 18:41:53 2015 +0200 +++ b/graal/com.oracle.graal.lir.sparc/src/com/oracle/graal/lir/sparc/SPARCArithmetic.java Thu Apr 16 16:21:09 2015 +0200 @@ -39,6 +39,7 @@ import com.oracle.graal.asm.sparc.*; import com.oracle.graal.asm.sparc.SPARCMacroAssembler.*; import com.oracle.graal.compiler.common.*; +import com.oracle.graal.debug.internal.*; import com.oracle.graal.lir.*; import com.oracle.graal.lir.asm.*; import com.oracle.graal.lir.gen.*; @@ -724,6 +725,7 @@ masm.fcmp(Fcc0, Fcmps, asFloatReg(src), asFloatReg(src)); masm.fbpcc(F_Ordered, ANNUL, notOrdered, Fcc0, PREDICT_TAKEN); masm.fstox(asFloatReg(src), asDoubleReg(dst)); + masm.fxtod(asRegister(dst), asRegister(dst)); masm.fsubd(asDoubleReg(dst), asDoubleReg(dst), asDoubleReg(dst)); masm.bind(notOrdered); break; @@ -747,8 +749,8 @@ masm.fcmp(Fcc0, Fcmpd, asDoubleReg(src), asDoubleReg(src)); masm.fbpcc(F_Ordered, ANNUL, notOrdered, Fcc0, PREDICT_TAKEN); masm.fdtoi(asDoubleReg(src), asFloatReg(dst)); + masm.fitos(asFloatReg(dst), asFloatReg(dst)); masm.fsubs(asFloatReg(dst), asFloatReg(dst), asFloatReg(dst)); - masm.fstoi(asFloatReg(dst), asFloatReg(dst)); masm.bind(notOrdered); break; case FNEG: