From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1383) id EC6D73870902; Thu, 17 Sep 2020 21:52:48 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org EC6D73870902 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1600379568; bh=oVWi+zrBwFrk00DMGevLFNNRMKkQ5Fv9m7uCclwX/38=; h=From:To:Subject:Date:From; b=Qlihy2O93S1JxksecBtMwlN8SqbLDpEzXuZWwIsneHhX6XJpoUXyJA/VP0zN2TxNc U056+huLVRfzwktd+qNloPqsSz6iYxhsEk7ALeqixhB9ZnshjExHcOPj+jO4h1M9OV dFr1pPYWB+f1Nzl3NR76+DbuvtlRLvrXx3nHak2g= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Segher Boessenkool To: gcc-cvs@gcc.gnu.org Subject: [gcc r8-10515] rs6000: Properly handle LE index munging in vec_shr (PR94710) X-Act-Checkin: gcc X-Git-Author: Segher Boessenkool X-Git-Refname: refs/heads/releases/gcc-8 X-Git-Oldrev: 36290fcee3b6f1bb71dad0aaba7a68e71d825b74 X-Git-Newrev: 550a13d7163a480aa6158bae54dfd080995884d9 Message-Id: <20200917215248.EC6D73870902@sourceware.org> Date: Thu, 17 Sep 2020 21:52:48 +0000 (GMT) X-BeenThere: gcc-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Sep 2020 21:52:49 -0000 https://gcc.gnu.org/g:550a13d7163a480aa6158bae54dfd080995884d9 commit r8-10515-g550a13d7163a480aa6158bae54dfd080995884d9 Author: Segher Boessenkool Date: Fri Apr 24 13:33:14 2020 +0000 rs6000: Properly handle LE index munging in vec_shr (PR94710) The PR shows the compiler crashing with -mvsx -mlittle -O0. This turns out to be caused by a failure to make of the higher bits in an index endian conversion. 2020-04-24 Segher Boessenkool PR target/94710 * config/rs6000/vector.md (vec_shr_ for VEC_L): Correct little endian byteshift_val calculation. (cherry picked from commit 9c725245beed2f056b67f5dc218fef6cb869c5f2) Diff: --- gcc/config/rs6000/vector.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gcc/config/rs6000/vector.md b/gcc/config/rs6000/vector.md index 21743c6be26..fa9c1616634 100644 --- a/gcc/config/rs6000/vector.md +++ b/gcc/config/rs6000/vector.md @@ -1227,7 +1227,8 @@ emit_move_insn (zero_reg, CONST0_RTX (mode)); if (!BYTES_BIG_ENDIAN) { - byteshift_val = 16 - byteshift_val; + /* Note, byteshift_val can be 0! */ + byteshift_val = -byteshift_val & 15; op1 = zero_reg; op2 = operands[1]; }