aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@bigpond.net.au>2002-09-05 22:48:53 +0000
committerAlan Modra <amodra@gcc.gnu.org>2002-09-06 08:18:53 +0930
commitbc401279d9b3bb27ff8e8aba614105cf9ae633df (patch)
tree1210049ca743c691b4dc561626b26ecad0a23134
parente2cbee7fd1d126a404e33321057392c5777db950 (diff)
downloadgcc-bc401279d9b3bb27ff8e8aba614105cf9ae633df.zip
gcc-bc401279d9b3bb27ff8e8aba614105cf9ae633df.tar.gz
gcc-bc401279d9b3bb27ff8e8aba614105cf9ae633df.tar.bz2
rs6000.md (extzvsi_internal2): Revert most of 2002-07-26 change.
* config/rs6000/rs6000.md (extzvsi_internal2): Revert most of 2002-07-26 change. Comment. From-SVN: r56867
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/rs6000/rs6000.md12
2 files changed, 10 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e33cd49..835e6ec 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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,
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index c3ff213..7c564a4 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -3880,14 +3880,12 @@
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)