https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89967
--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> --- So the main thing that needs to be handled is: ``` # .MEM_144 = VDEF <.MEM_143> g2b = D.23244; # VUSE <.MEM_144> _29 = g1b.val[0]; g1v_73 = VIEW_CONVERT_EXPR<int32x4_t>(_29); # VUSE <.MEM_144> _30 = g1b.val[1]; g2v_74 = VIEW_CONVERT_EXPR<int32x4_t>(_30); # VUSE <.MEM_144> _31 = g2b.val[0]; g3v_75 = VIEW_CONVERT_EXPR<int32x4_t>(_31); # VUSE <.MEM_144> _32 = g2b.val[1]; ``` _31 = D.23244.val[0]; _32 = D.23244.val[2]; I suspect after that, then there will less moves. But I am getting closer to that point. I am already down 2 mov.