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

--- Comment #10 from Richard Biener <rguenth at gcc dot gnu.org> ---
Still reproduces on trunk with -fdisable-tree-fre4.

So the issue is that for the case of 'long int' and 'float'
get_vectype_for_scalar_type when passed 8 as group_size returns
V8DI and V4SF - where eventually V16SF does not exist.

The vinfos vector mode is E_VNx4SFmode.

We're rejecting that because it's

11122         && maybe_ge (TYPE_VECTOR_SUBPARTS (vectype), group_size))

and iterating with get_related_vectype_for_scalar_type arriving at v4sf.

OTOH for long int we start with vector([2,2]) long int and iterate to v8di.

I guess the assert is really misplaced and it should instead try to find
a proper related type based on the nunits vectype?

Or give up when we arrive at such incompatible choices for input/output
vector types.

Reply via email to