From bc401279d9b3bb27ff8e8aba614105cf9ae633df Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Thu, 5 Sep 2002 22:48:53 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 5 +++++ gcc/config/rs6000/rs6000.md | 12 +++++------- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e33cd4943e0..835e6eca812 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2002-09-06 Alan Modra + + * config/rs6000/rs6000.md (extzvsi_internal2): Revert most of + 2002-07-26 change. Comment. + 2002-09-05 Kaveh R. Ghazi * frv.c (frv_unique_section, frv_select_section, diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index c3ff213832e..7c564a47263 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) -- 2.30.2