]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
spe.md (frob_di_df_2): Handle non-offsettable memory operand.
authorJoseph Myers <joseph@codesourcery.com>
Thu, 16 Nov 2006 13:36:23 +0000 (13:36 +0000)
committerJoseph Myers <jsm28@gcc.gnu.org>
Thu, 16 Nov 2006 13:36:23 +0000 (13:36 +0000)
* config/rs6000/spe.md (frob_di_df_2): Handle non-offsettable
memory operand.

From-SVN: r118889

gcc/ChangeLog
gcc/config/rs6000/spe.md

index c5ae49aec635e1d1d26e64e1fe14fbb69f67c3a0..fed1fb5e85a0111c41fbf3f570e51756844c03a7 100644 (file)
@@ -1,3 +1,8 @@
+2006-11-16  Joseph Myers  <joseph@codesourcery.com>
+
+       * config/rs6000/spe.md (frob_di_df_2): Handle non-offsettable
+       memory operand.
+
 2006-11-16  Richard Earnshaw  <rearnsha@arm.com>
 
        * arm.md (abssi2): Allow Thumb as well.  Use an SImode scratch for
index 1ac1a8492c17cb8f20ae05f8aa77eb6a4a52f670..f2410dd291639c2f47989e679c7c2efa68b3b9ce 100644 (file)
     case 0:
       return \"evmergehi %0,%1,%1\;mr %L0,%1\";
     case 1:
+      /* If the address is not offsettable we need to load the whole
+        doubleword into a 64-bit register and then copy the high word
+        to form the correct output layout.  */
+      if (!offsettable_nonstrict_memref_p (operands[1]))
+       return \"evldd%X1 %L0,%y1\;evmergehi %0,%L0,%L0\";
       /* If the low-address word is used in the address, we must load
        it last.  Otherwise, load it first.  Note that we cannot have
        auto-increment in that case since the address register is