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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|                            |2021-12-02
             Status|UNCONFIRMED                 |NEW
          Component|target                      |tree-optimization
     Ever confirmed|0                           |1
   Target Milestone|---                         |11.3

--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Tamar Christina from comment #1)
> An additional ICE seen on a month old tree is
> unsure if this was fixed or just hidden...

It is extra checking (that is --enable-checking vs --enable-checking=release):
504       gcc_checking_assert (is_constant ());


#7  0x000000000189d858 in nunits_for_known_piecewise_op (type=0xfffff5bc91b0)
at /home/ubuntu/src/upstream-gcc-aarch64/gcc/gcc/tree-vect-generic.c:101
101       return TYPE_VECTOR_SUBPARTS (type).to_constant ();
(gdb) p type
$1 = (const_tree) 0xfffff5bc91b0
(gdb) p debug_generic_expr(type)
vector([2,2]) float

#10 0x00000000018a97a8 in expand_vector_operations_1 (gsi=0xfffffffff570,
dce_ssa_names=0xfffffffff588) at
/home/ubuntu/src/upstream-gcc-aarch64/gcc/gcc/tree-vect-generic.c:2331
(gdb) p code
$9 = MULT_EXPR
(gdb) p type
$10 = (tree) 0xfffff5bc91b0
(gdb) p debug_generic_expr(type)
vector([2,2]) float //E_VNx2SFmode
(gdb) p op
$12 = smul_optab
(gdb) p debug_generic_expr(compute_type)
float
(gdb) p debug_generic_expr(get_compute_type(code, op, type))
float

(gdb) p optab_handler(op, E_VNx2SFmode)
$23 = CODE_FOR_nothing
(gdb) p op
$24 = smul_optab


I don't know enough of the SVE backend to understand VNx2SF vs VNx4SF really
and why the vectorizer is chosing VNx2SF mode here which does not support half
of the instructions (according to the backend).

Reply via email to