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

--- Comment #4 from JuzheZhong <juzhe.zhong at rivai dot ai> ---
(In reply to Andrew Pinski from comment #1)
> This is backend issue:
> //(insn 27 31 28 (set (reg/v:VNx2DI 37 v5 [orig:98 v0 ] [98])
> //        (unspec:VNx2DI [
> //                (reg:VNx2BI 68 p0 [orig:105 pg ] [105])
> //                (plus:VNx2DI (mult:VNx2DI (reg/v:VNx2DI 37 v5 [orig:98 v0
> ] [98])
> //                        (reg/v:VNx2DI 33 v1 [orig:96 v18 ] [96]))
> //                    (reg/v:VNx2DI 32 v0 [orig:97 v19 ] [97]))
> //                (const_vector:VNx2DI repeat [
> //                        (const_int 0 [0])
> //                    ])
> //            ] UNSPEC_SEL)) "/app/example.c":15:14 7415
> {*cond_fmavnx2di_any}
> //     (nil))
>         movprfx z5.d, p0/z, z5.d  // 27       [c=4 l=8] 
> *cond_fmavnx2di_any/2
>         mad     z5.d, p0/m, z1.d, z0.d


No. I am not saying the issue of "movprfx". I am saying the issue of the
redundant "mov" instructions.:
        mov     z5.d, z24.d
        mov     z4.d, z25.d
        mov     z3.d, z26.d
        mov     z2.d, z27.d


This is the issue that "subreg" didn't propagate across the basic block.

Reply via email to