From: Jakub Jelinek Date: Thu, 23 Apr 2020 19:57:50 +0000 (+0200) Subject: Shortcut identity VEC_PERM expansion [PR94710] X-Git-Tag: releases/gcc-9.4.0~679 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=15e2cca37186c848d12f4a0bb9ebcb8be32ed9de;p=thirdparty%2Fgcc.git Shortcut identity VEC_PERM expansion [PR94710] This PR is about the rs6000 backend emitting wrong assembly for whole vector shift by 0, and while I think it is desirable to fix the backend, I don't see a point why the expander should try to emit that, whole vector shift by 0 is identity, we can just return the operand. 2020-04-23 Jakub Jelinek PR target/94710 * optabs.c (expand_vec_perm_const): For shift_amt const0_rtx just return v2. (cherry picked from commit f51be2fb8653f81092f8158a0f0527275f86603b) --- diff --git a/gcc/optabs.c b/gcc/optabs.c index 7d7efe0a4a27..f469e8099392 100644 --- a/gcc/optabs.c +++ b/gcc/optabs.c @@ -5559,6 +5559,8 @@ expand_vec_perm_const (machine_mode mode, rtx v0, rtx v1, if (shift_amt) { struct expand_operand ops[3]; + if (shift_amt == const0_rtx) + return v0; if (shift_code != CODE_FOR_nothing) { create_output_operand (&ops[0], target, mode);