This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/40073] Vector short/char shifts generate sub-optimal code
- From: "alalaw01 at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Fri, 12 Jun 2015 09:56:48 +0000
- Subject: [Bug tree-optimization/40073] Vector short/char shifts generate sub-optimal code
- Auto-submitted: auto-generated
- References: <bug-40073-4 at http dot gcc dot gnu dot org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=40073
alalaw01 at gcc dot gnu.org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |alalaw01 at gcc dot gnu.org
Version|4.5.0 |6.0
--- Comment #6 from alalaw01 at gcc dot gnu.org ---
Same problem on AArch64 (at -O3). We've decided the shift is to be done on
integers, widening the arguments and then truncating, before we hit the
vectorizer:
int i;
short unsigned int _4;
int _5;
int _8;
short unsigned int _9;
int pretmp_18;
unsigned int ivtmp_21;
unsigned int ivtmp_22;
<bb 2>:
pretmp_18 = (int) j_6(D);
<bb 3>:
# i_14 = PHI <i_11(4), 0(2)>
# ivtmp_22 = PHI <ivtmp_21(4), 1024(2)>
_4 = b[i_14];
_5 = (int) _4;
_8 = _5 << pretmp_18;
_9 = (short unsigned int) _8;
a[i_14] = _9;
i_11 = i_14 + 1;
ivtmp_21 = ivtmp_22 - 1;
if (ivtmp_21 == 0)