rs6000.md (extzvsi_internal2): Revert most of 2002-07-26 change.
authorAlan Modra <amodra@bigpond.net.au>
Thu, 5 Sep 2002 22:48:53 +0000 (22:48 +0000)
committerAlan Modra <amodra@gcc.gnu.org>
Thu, 5 Sep 2002 22:48:53 +0000 (08:18 +0930)
* config/rs6000/rs6000.md (extzvsi_internal2): Revert most of
2002-07-26 change.  Comment.

From-SVN: r56867

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

index e33cd4943e02cbeb53d01b03e7d3d7c4fa94c393..835e6eca812b11a73374a0b23ee03b8af4fdcf2b 100644 (file)
@@ -1,3 +1,8 @@
+2002-09-06  Alan Modra  <amodra@bigpond.net.au>
+
+       * config/rs6000/rs6000.md (extzvsi_internal2): Revert most of
+       2002-07-26 change.  Comment.
+
 2002-09-05  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
        * frv.c (frv_unique_section, frv_select_section,
index c3ff213832ec5b8249783415e34349492168ae94..7c564a47263109676b47d4c363eaab471059dc6d 100644 (file)
   if (which_alternative == 1)
      return \"#\";
 
-  if ((start > 0 && start + size <= 16) || start >= 16)
+  /* Since we are using the output value, we can't ignore any need for
+     a shift.  The bitfield must end at the LSB.  */
+  if (start >= 16 && start + size == 32)
     {
-      operands[3] = GEN_INT (((1 << (16 - (start & 15)))
-                             - (1 << (16 - (start & 15) - size))));
-      if (start < 16)
-       return \"{andiu.|andis.} %0,%1,%3\";
-      else
-       return \"{andil.|andi.} %0,%1,%3\";
+      operands[3] = GEN_INT ((1 << size) - 1);
+      return \"{andil.|andi.} %0,%1,%3\";
     }
 
   if (start + size >= 32)