Revision: 15788
http://jikesrvm.svn.sourceforge.net/jikesrvm/?rev=15788&view=revAuthor: dgrove-oss
Date: 2009-09-25 18:37:26 +0000 (Fri, 25 Sep 2009)
Log Message:
-----------
RVM-860 : Improper instruction format usage in PPC BURS rules
In the rules that take combinations of NEG(ADD(MULL(r, r), r)) and
produce a FNMADD instruction, the result of the NEG instruction
was being improperly accessed as if NEG was a Binary instead of
a Unary. Wouldn't have actually mattered in terms of what
code was being generated, since the Result operand is at the same
offset in both Unary and Binary instruction forms, but the code
was incorrect.
Modified Paths:
--------------
rvmroot/trunk/rvm/src-generated/opt-burs/ppc/PPC_Common.rules
Modified: rvmroot/trunk/rvm/src-generated/opt-burs/ppc/PPC_Common.rules
===================================================================
--- rvmroot/trunk/rvm/src-generated/opt-burs/ppc/PPC_Common.rules 2009-09-19 03:23:17 UTC (rev 15787)
+++ rvmroot/trunk/rvm/src-generated/opt-burs/ppc/PPC_Common.rules 2009-09-25 18:37:26 UTC (rev 15788)
@@ -859,42 +859,42 @@
r: FLOAT_NEG(FLOAT_ADD(FLOAT_MUL(r, r), r))
burs.ir.strictFP(P(p),PL(p),PLL(p))?INFINITE:10
EMIT_INSTRUCTION
-EMIT(MIR_Ternary.mutate(P(p), PPC_FNMADDS, Binary.getResult(P(p)), \
+EMIT(MIR_Ternary.mutate(P(p), PPC_FNMADDS, Unary.getResult(P(p)), \
R(Binary.getVal1(PLL(p))), R(Binary.getVal2(PLL(p))), \
R(Binary.getVal2(PL(p)))));
r: DOUBLE_NEG(DOUBLE_ADD(DOUBLE_MUL(r, r), r))
burs.ir.strictFP(P(p),PL(p),PLL(p))?INFINITE:10
EMIT_INSTRUCTION
-EMIT(MIR_Ternary.mutate(P(p), PPC_FNMADD, Binary.getResult(P(p)), \
+EMIT(MIR_Ternary.mutate(P(p), PPC_FNMADD, Unary.getResult(P(p)), \
R(Binary.getVal1(PLL(p))), R(Binary.getVal2(PLL(p))), \
R(Binary.getVal2(PL(p)))));
r: FLOAT_NEG(FLOAT_ADD(r, FLOAT_MUL(r,r)))
burs.ir.strictFP(P(p),PL(p),PLR(p))?INFINITE:10
EMIT_INSTRUCTION
-EMIT(MIR_Ternary.mutate(P(p), PPC_FNMADDS, Binary.getResult(P(p)), \
+EMIT(MIR_Ternary.mutate(P(p), PPC_FNMADDS, Unary.getResult(P(p)), \
R(Binary.getVal1(PLR(p))), R(Binary.getVal2(PLR(p))), \
R(Binary.getVal1(PL(p)))));
r: DOUBLE_NEG(DOUBLE_ADD(r, DOUBLE_MUL(r,r)))
burs.ir.strictFP(P(p),PL(p),PLR(p))?INFINITE:10
EMIT_INSTRUCTION
-EMIT(MIR_Ternary.mutate(P(p), PPC_FNMADD, Binary.getResult(P(p)), \
+EMIT(MIR_Ternary.mutate(P(p), PPC_FNMADD, Unary.getResult(P(p)), \
R(Binary.getVal1(PLR(p))), R(Binary.getVal2(PLR(p))),\
R(Binary.getVal1(PL(p)))));
r: FLOAT_NEG(FLOAT_SUB(FLOAT_MUL(r, r), r))
burs.ir.strictFP(P(p),PL(p),PLL(p))?INFINITE:10
EMIT_INSTRUCTION
-EMIT(MIR_Ternary.mutate(P(p), PPC_FNMSUBS, Binary.getResult(P(p)), \
+EMIT(MIR_Ternary.mutate(P(p), PPC_FNMSUBS, Unary.getResult(P(p)), \
R(Binary.getVal1(PLL(p))), R(Binary.getVal2(PLL(p))), \
R(Binary.getVal2(PL(p)))));
r: DOUBLE_NEG(DOUBLE_SUB(DOUBLE_MUL(r, r), r))
burs.ir.strictFP(P(p),PL(p),PLL(p))?INFINITE:10
EMIT_INSTRUCTION
-EMIT(MIR_Ternary.mutate(P(p), PPC_FNMSUB, Binary.getResult(P(p)), \
+EMIT(MIR_Ternary.mutate(P(p), PPC_FNMSUB, Unary.getResult(P(p)), \
R(Binary.getVal1(PLL(p))), R(Binary.getVal2(PLL(p))), \
R(Binary.getVal2(PL(p)))));
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
------------------------------------------------------------------------------
Come build with us! The BlackBerry® Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9-12, 2009. Register now!
http://p.sf.net/sfu/devconf_______________________________________________
Jikesrvm-commits mailing list
Jikesrvm-commits@...
https://lists.sourceforge.net/lists/listinfo/jikesrvm-commits