diff options
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/rs6000/predicates.md | 2 |
2 files changed, 7 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fa6a35c..5bc604e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2005-11-22 Alan Modra <amodra@bigpond.net.au> + + PR target/24954 + * config/rs6000/predicated.md (easy_vector_constant_add_self): Use + explicit sign extension, not a (char) cast. + 2005-11-22 Ben Elliston <bje@au.ibm.com> * optabs.c: Use SCALAR_FLOAT_MODE_P instead of explicitly testing diff --git a/gcc/config/rs6000/predicates.md b/gcc/config/rs6000/predicates.md index 885ac2c..b940261 100644 --- a/gcc/config/rs6000/predicates.md +++ b/gcc/config/rs6000/predicates.md @@ -317,7 +317,7 @@ (match_test "easy_altivec_constant (op, mode)"))) { rtx last = CONST_VECTOR_ELT (op, GET_MODE_NUNITS (mode) - 1); - HOST_WIDE_INT val = (char) (INTVAL (last) & 255); + HOST_WIDE_INT val = ((INTVAL (last) & 0xff) ^ 0x7f) - 0x7f; return EASY_VECTOR_15_ADD_SELF (val); }) |