diff options
author | Uros Bizjak <ubizjak@gmail.com> | 2017-04-23 09:25:30 +0200 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2017-04-23 09:25:30 +0200 |
commit | 2eb8a34363025d04482a798dec1c885e1e3a3803 (patch) | |
tree | b5da08f631dab69d29e95297a4be8d4f01c857d2 /gcc/fortran/trans-expr.c | |
parent | a1687c59a105c3131f0f33be8cae4f0a7ea660cc (diff) | |
download | gcc-2eb8a34363025d04482a798dec1c885e1e3a3803.zip gcc-2eb8a34363025d04482a798dec1c885e1e3a3803.tar.gz gcc-2eb8a34363025d04482a798dec1c885e1e3a3803.tar.bz2 |
re PR target/70799 (STV pass does not convert DImode shifts)
PR target/70799
* config/i386/i386.c (dimode_scalar_to_vector_candidate_p)
<case ASHIFT, case LSHIFTRT>: Also consider variable shifts.
Check "XEXP (src, 1)" operand here.
<case PLUS, case MINUS, case IOR, case XOR, case AND>:
Check "XEXP (src, 1)" operand here.
(dimode_scalar_chain::make_vector_copies): Detect count register
of a shift instruction. Zero extend count register from QImode
to DImode to satisfy vector shift pattern count operand predicate.
Substitute vector shift count operand with a DImode copy.
(dimode_scalar_chain::convert_reg): Ditto, zero-extend from
vector register.
testsuite/ChangeLog:
PR target/70799
* gcc.target/i186/pr70799-4.c: New test.
From-SVN: r247082
Diffstat (limited to 'gcc/fortran/trans-expr.c')
0 files changed, 0 insertions, 0 deletions