From: David Edelsohn Date: Thu, 24 Jun 1999 21:56:38 +0000 (-0600) Subject: rs6000.md (movdf_hardfloat32): Revert previous patch. X-Git-Tag: prereleases/gcc-2.95-test~137 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cd37ed6e26edc497750cee4478ab4fe2b9c5e313;p=thirdparty%2Fgcc.git rs6000.md (movdf_hardfloat32): Revert previous patch. � * rs6000.md (movdf_hardfloat32): Revert previous patch. Handle LO_SUM the same as offsettable in cases 1 and 2. * rs6000.c (find_addr_reg): Revert previous patch. From-SVN: r27751 --- diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index a95b3eeea3cc..a74b139ff083 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -6327,7 +6327,9 @@ else return \"mr %0,%1\;mr %L0,%L1\"; case 1: - if (offsettable_memref_p (operands[1])) + if (offsettable_memref_p (operands[1]) + || (GET_CODE (operands[1]) == MEM + && GET_CODE (XEXP (operands[1], 0)) == LO_SUM)) { /* If the low-address word is used in the address, we must load it last. Otherwise, load it first. Note that we cannot have @@ -6353,21 +6355,23 @@ operands[1], 0)) { output_asm_insn (\"{cal|la} %0,4(%0)\", &addreg); - output_asm_insn (\"{l%X1|lwz%X1} %L0,%1\", operands); + output_asm_insn (\"{lx|lwzx} %L0,%1\", operands); output_asm_insn (\"{cal|la} %0,-4(%0)\", &addreg); - return \"{l%X1|lwz%X1} %0,%1\"; + return \"{lx|lwzx} %0,%1\"; } else { - output_asm_insn (\"{l%X1|lwz%X1} %0,%1\", operands); + output_asm_insn (\"{lx|lwzx} %0,%1\", operands); output_asm_insn (\"{cal|la} %0,4(%0)\", &addreg); - output_asm_insn (\"{l%X1|lwz%X1} %L0,%1\", operands); + output_asm_insn (\"{lx|lwzx} %L0,%1\", operands); output_asm_insn (\"{cal|la} %0,-4(%0)\", &addreg); return \"\"; } } case 2: - if (offsettable_memref_p (operands[0])) + if (offsettable_memref_p (operands[0]) + || (GET_CODE (operands[0]) == MEM + && GET_CODE (XEXP (operands[0], 0)) == LO_SUM)) return \"{st%U0|stw%U0} %1,%0\;{st|stw} %L1,%L0\"; else { @@ -6378,9 +6382,9 @@ abort (); addreg = find_addr_reg (XEXP (operands[0], 0)); - output_asm_insn (\"{st%X0|stw%X0} %1,%0\", operands); + output_asm_insn (\"{stx|stwx} %1,%0\", operands); output_asm_insn (\"{cal|la} %0,4(%0)\", &addreg); - output_asm_insn (\"{st%X0|stw%X0} %L1,%0\", operands); + output_asm_insn (\"{stx|stwx} %L1,%0\", operands); output_asm_insn (\"{cal|la} %0,-4(%0)\", &addreg); return \"\"; }