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

--- Comment #8 from Tamar Christina <tnfchris at gcc dot gnu.org> ---
(In reply to Andrew Pinski from comment #7)
> Hmm,
> ;; _43 = .REDUC_PLUS (vect__7.11_47);
> 
> (insn 23 22 24 (set (reg:V4SI 112)
>         (unspec:V4SI [
>                 (reg:V4SI 103 [ vect__7.11 ])
>             ] UNSPEC_ADDV)) -1
>      (nil))
> 
> (insn 24 23 0 (set (reg:SI 102 [ _43 ])
>         (vec_select:SI (reg:V4SI 112)
>             (parallel [
>                     (const_int 0 [0])
>                 ]))) -1
>      (nil))
> 
> Could we just represent REDUC_PLUS as:
> 
> (insn 23 22 24 (set (reg:SI 112)
>         (unspec:SI [
>                 (reg:V4SI 103 [ vect__7.11 ])
>             ] UNSPEC_ADDV_1)) -1
>      (nil))
> 
> And then I don't think we will have the issue with the vec_select and subreg
> really.

Hmm that does look like the RTL in the optab is wrong, The V2F optab is right
but the one with the mode iterator looks wrong.. I'll give it a shot.

Reply via email to