From: John David Anglin Date: Sun, 4 Mar 2012 21:31:25 +0000 (+0000) Subject: backport: re PR target/52408 (Incorrect assembler generated for zvdep_imm64) X-Git-Tag: releases/gcc-4.5.4~195 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=39e01a813ca9e23ce3d0494cb350ea43aeab4e98;p=thirdparty%2Fgcc.git backport: re PR target/52408 (Incorrect assembler generated for zvdep_imm64) Backport from mainline 2012-03-01 John David Anglin PR target/52408 * config/pa/pa.md (zvdep_imm32): Change type of variable x from int to unsigned HOST_WIDE_INT. (zvdep_imm64): Likewise. (vdepi_ior): Change type of variable x from int to HOST_WIDE_INT. (vdepi_and): Likewise. Likewise for unamed 64-bit patterns. * config/pa/predicates.md (lhs_lshift_cint_operand): Update comment. From-SVN: r184902 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7a198a13925f..fb6c92c84a23 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,17 @@ +2012-03-04 John David Anglin + + Backport from mainline + 2012-03-01 John David Anglin + + PR target/52408 + * config/pa/pa.md (zvdep_imm32): Change type of variable x from int to + unsigned HOST_WIDE_INT. + (zvdep_imm64): Likewise. + (vdepi_ior): Change type of variable x from int to HOST_WIDE_INT. + (vdepi_and): Likewise. + Likewise for unamed 64-bit patterns. + * config/pa/predicates.md (lhs_lshift_cint_operand): Update comment. + 2012-03-02 Peter Bergner Backport from mainline diff --git a/gcc/config/pa/pa.md b/gcc/config/pa/pa.md index d354b266198a..8736c232b0bf 100644 --- a/gcc/config/pa/pa.md +++ b/gcc/config/pa/pa.md @@ -6561,7 +6561,7 @@ "" "* { - int x = INTVAL (operands[1]); + unsigned HOST_WIDE_INT x = UINTVAL (operands[1]); operands[2] = GEN_INT (4 + exact_log2 ((x >> 4) + 1)); operands[1] = GEN_INT ((x & 0xf) - 0x10); return \"{zvdepi %1,%2,%0|depwi,z %1,%%sar,%2,%0}\"; @@ -6579,7 +6579,7 @@ "exact_log2 (INTVAL (operands[1]) + 1) > 0" "* { - int x = INTVAL (operands[1]); + HOST_WIDE_INT x = INTVAL (operands[1]); operands[2] = GEN_INT (exact_log2 (x + 1)); return \"{vdepi -1,%2,%0|depwi -1,%%sar,%2,%0}\"; }" @@ -6596,7 +6596,7 @@ "INTVAL (operands[1]) == -2" "* { - int x = INTVAL (operands[1]); + HOST_WIDE_INT x = INTVAL (operands[1]); operands[2] = GEN_INT (exact_log2 ((~x) + 1)); return \"{vdepi 0,%2,%0|depwi 0,%%sar,%2,%0}\"; }" @@ -6660,7 +6660,7 @@ "TARGET_64BIT" "* { - int x = INTVAL (operands[1]); + unsigned HOST_WIDE_INT x = UINTVAL (operands[1]); operands[2] = GEN_INT (4 + exact_log2 ((x >> 4) + 1)); operands[1] = GEN_INT ((x & 0x1f) - 0x20); return \"depdi,z %1,%%sar,%2,%0\"; @@ -6678,7 +6678,7 @@ "TARGET_64BIT && exact_log2 (INTVAL (operands[1]) + 1) > 0" "* { - int x = INTVAL (operands[1]); + HOST_WIDE_INT x = INTVAL (operands[1]); operands[2] = GEN_INT (exact_log2 (x + 1)); return \"depdi -1,%%sar,%2,%0\"; }" @@ -6695,7 +6695,7 @@ "TARGET_64BIT && INTVAL (operands[1]) == -2" "* { - int x = INTVAL (operands[1]); + HOST_WIDE_INT x = INTVAL (operands[1]); operands[2] = GEN_INT (exact_log2 ((~x) + 1)); return \"depdi 0,%%sar,%2,%0\"; }" diff --git a/gcc/config/pa/predicates.md b/gcc/config/pa/predicates.md index 902ef4f195c9..b64834f38c87 100644 --- a/gcc/config/pa/predicates.md +++ b/gcc/config/pa/predicates.md @@ -421,9 +421,9 @@ (ior (match_operand 0 "register_operand") (match_operand 0 "cint_ior_operand"))) -;; True iff OP is a CONST_INT of the forms 0...0xxxx or -;; 0...01...1xxxx. Such values can be the left hand side x in (x << -;; r), using the zvdepi instruction. +;; True iff OP is a CONST_INT of the forms 0...0xxxx, 0...01...1xxxx, +;; or 1...1xxxx. Such values can be the left hand side x in (x << r), +;; using the zvdepi instruction. (define_predicate "lhs_lshift_cint_operand" (match_code "const_int")