Jakub Jelinek via Gcc-patches <gcc-patches@gcc.gnu.org> 于2023年8月31日周四 17:44写道:
>
> On Thu, Aug 31, 2023 at 04:20:19PM +0800, Hongyu Wang via Gcc-patches wrote:
> > For vector move insns like vmovdqa/vmovdqu, their evex counterparts
> > requrire explicit suffix 64/32/16/8. The usage of these instruction
> > are prohibited under AVX10_1 or AVX512F, so for AVX2+APX_F we select
> > vmovaps/vmovups for vector load/store insns that contains EGPR.
>
> Why not make it dependent on AVX512VL?
> I.e. if egpr_p && TARGET_AVX512VL, still use vmovdqu16 or vmovdqa16
> and the like, and only if !evex_reg_p && egpr_p && !TARGET_AVX512VL
> fall back to what you're doing?

I'm not sure if it is necessary, as on hardware there is no difference between
vmovdqu16/vmovups. If vmovups already has the capability to represent
EGPR why do we need to distinguish them under VL?

> >
> > gcc/ChangeLog:
> >
> >       * config/i386/i386.cc (ix86_get_ssemov): Check if egpr is used,
> >       adjust mnemonic for vmovduq/vmovdqa.
> >       * config/i386/sse.md 
> > (*<extract_type>_vinsert<shuffletype><extract_suf>_0):
> >       Check if egpr is used, adjust mnemonic for vmovdqu/vmovdqa.
> >       (avx_vec_concat<mode>): Likewise, and separate alternative 0 to
> >       avx_noavx512f.
>
>         Jakub
>

Reply via email to