https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122873

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Assignee|unassigned at gcc dot gnu.org      |rguenth at gcc dot 
gnu.org
             Status|NEW                         |ASSIGNED

--- Comment #11 from Richard Biener <rguenth at gcc dot gnu.org> ---
305           gcc_assert (known_eq (GET_MODE_BITSIZE (from_mode),
306                                 GET_MODE_BITSIZE (to_mode)));
(gdb) p debug_rtx (to)
(reg:VNx8BI 149 [ _87 ])
$1 = void
(gdb) p debug_rtx (from)
(reg:V8QI 193 [ _84 ])

(gdb) p debug_gimple_stmt (g)
_86 = (vector(8) <signed-boolean:8>) _85;

this is a conversion from vector(8) <signed-boolean:8> to
vector(8) <signed-boolean:8> but with different mode.  GIMPLE verification
is happy because TYPE_VECTOR_SUBPARTS of both are known_eq, so I wonder
why the mode sizes are not known_eq with -msve-vector-bits=128?!

The conversion is created by

0x00000000023144cc in vect_transform_cycle_phi (loop_vinfo=0x5187470, 
    stmt_info=0x533c3d0, slp_node=0x52ac630, slp_node_instance=0x533d290)
    at /space/rguenther/src/gcc-autopar_devel/gcc/tree-vect-loop.cc:8368
8366              /* The epilogue loop might use a different vector mode, like
8367                 VNx2DI vs. V2DI.  */
8368              if (TYPE_MODE (vectype_out) != TYPE_MODE (TREE_TYPE (def)))
8369                {
8370                  tree reduc_type = build_vector_type_for_mode
8371                    (TREE_TYPE (TREE_TYPE (def)), TYPE_MODE (vectype_out));
8372                  def = gimple_convert (&stmts, reduc_type, def);


This is when we try to re-use an accumulator from
vector(16) <signed-boolean:8> [V16QI] to an epilog with
vector(8) <signed-boolean:2> [VNx8BI].  We're using an intermediate
vector type vector(8) signed char [V8QI] for this.

I belive re-usable accumulators with bool vectors are not ready yet.  It
will work for classical cases where the punning to data vectors "works",
but the types are not really correct.

Reply via email to