[Bug target/70799] STV pass does not convert DImode shifts and rotates

2016-11-08 Thread uros at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70799

--- Comment #4 from uros at gcc dot gnu.org ---
Author: uros
Date: Tue Nov  8 19:06:54 2016
New Revision: 241974

URL: https://gcc.gnu.org/viewcvs?rev=241974&root=gcc&view=rev
Log:
PR target/70799
* config/i386/i386.c (dimode_scalar_to_vector_candidate_p):
Handle ASHIFT and LSHIFTRT.
(dimode_scalar_chain::compute_convert_gain): Ditto.
(dimode_scalar_chain::convert_insn): Ditto.

testsuite/ChangeLog:

PR target/70799
* gcc.target/i386/pr70799-2.c: New test.


Added:
trunk/gcc/testsuite/gcc.target/i386/pr70799-2.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/i386.c
trunk/gcc/testsuite/ChangeLog

[Bug target/70799] STV pass does not convert DImode shifts and rotates

2016-05-10 Thread ienkovich at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70799

--- Comment #3 from Ilya Enkovich  ---
Author: ienkovich
Date: Tue May 10 16:08:42 2016
New Revision: 236090

URL: https://gcc.gnu.org/viewcvs?rev=236090&root=gcc&view=rev
Log:
gcc/

PR target/70799
* config/i386/i386.c (dimode_scalar_to_vector_candidate_p): Allow
integer constants.
(dimode_scalar_chain::vector_const_cost): New.
(dimode_scalar_chain::compute_convert_gain): Handle constants.
(dimode_scalar_chain::convert_op): Likewise.
(dimode_scalar_chain::convert_insn): Likewise.

gcc/testsuite/

PR target/70799
* gcc.target/i386/pr70799-1.c: New test.

Added:
trunk/gcc/testsuite/gcc.target/i386/pr70799-1.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/i386.c
trunk/gcc/testsuite/ChangeLog

[Bug target/70799] STV pass does not convert DImode shifts and rotates

2016-04-27 Thread ubizjak at gmail dot com
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70799

--- Comment #2 from Uroš Bizjak  ---
(In reply to Jakub Jelinek from comment #1)
> I've been also surprised that the STV pass punts on moves of constants into
> DImode registers, if it is not 0, sure, it has higher cost, because it needs
> to be loaded from memory, but in the end together with enough other DImode
> operations it can be still beneficial.

This is tracked in PR 70763.

[Bug target/70799] STV pass does not convert DImode shifts and rotates

2016-04-26 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70799

Jakub Jelinek  changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #1 from Jakub Jelinek  ---
I've been also surprised that the STV pass punts on moves of constants into
DImode registers, if it is not 0, sure, it has higher cost, because it needs to
be loaded from memory, but in the end together with enough other DImode
operations it can be still beneficial.