https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78556

--- Comment #1 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
Sorry, should be:

diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 6c28e6a..89751c5 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -6214,7 +6214,7 @@ vspltis_constant (rtx op, unsigned step, unsigned copies)
       bitsize /= 2;
       small_val = splat_val >> bitsize;
       mask >>= bitsize;
-      if (splat_val != ((small_val << bitsize) | (small_val & mask)))
+      if (splat_val != ((absu_hwi (small_val) << bitsize) | (small_val &
mask)))
        return false;
       splat_val = small_val;
     }

Reply via email to