On Tue, Dec 20, 2016 at 09:30:17PM +0100, Marc Glisse wrote:
> would it make sense to extend it to rotates later?
I wasn't 100% sure if rotates also require 0..prec-1 rotate counts, or
if they accept arbitrary ones.
> Note that you can write (shift @0 SSA_NAME@1) in the pattern instead of a
> separate test.
That is what I tried first, but there is some bug in genmatch.c that
prevents it. The:
(for vec (VECTOR_CST CONSTRUCTOR)
(simplify
(shiftrotate @0 vec@1)
results in case SSA_NAME: being added to a switch:
case SSA_NAME:
if (do_valueize (valueize, op1) != NULL_TREE)
{
gimple *def_stmt = SSA_NAME_DEF_STMT (op1);
if (gassign *def = dyn_cast <gassign *> (def_stmt))
switch (gimple_assign_rhs_code (def))
{
case CONSTRUCTOR:
and the SSA_NAME@1 in another simplification resulted in another
case SSA_NAME:
into the same switch (rather than appending to the case SSA_NAME).
Jakub