On Thu, Oct 15, 2026 at 9:40 AM Jakub Jelinek <[email protected]> wrote:
>
> On Sun, Oct 11, 2026 at 08:24:59PM -0700, Hongtao Liu wrote:
> > With this condidtion extendv16hfv16sf is valid even w/o TARGET_AVX512F.
> > I suggest to change iterator VF48H_AVX512VL to (or add a new iterator)
> >
> >  (define_mode_iterator VF48H_F16C
> >   [(V8DF "TARGET_AVX512FP16")
> >    (V16SF "TARGET_AVX512F")
> >    (V8SF "TARGET_F16C || TARGET_AVX512VL")])
>
> Sorry, I've missed the last line of your proposed change, changed the
> conditions as you've suggested but not this one.
>
> Here is a patch to change that, which improves code generation for
> -mf16c -mavx512fp16 -mno-avx512vl.
>
> Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?
>
> 2026-10-15  Jakub Jelinek  <[email protected]>
>
>         PR target/121688
>         * config/i386/sse.md (VF48H_AVX512VL): Change V8SF condition
>         to TARGET_F16C || TARGET_AVX512VL.
>
>         * gcc.target/i386/pr121688-avx512fp16novl.c: New test.

This patch can be considered as an obvious fixup, please go ahead.

Thanks,
Uros.

>
> --- a/gcc/config/i386/sse.md    2026-10-13 22:47:56.367575793 +0200
> +++ b/gcc/config/i386/sse.md    2026-10-14 13:14:18.084973077 +0200
> @@ -1031,7 +1031,7 @@ (define_mode_iterator VI48F_256_512
>     (V4DI "TARGET_AVX512VL") (V4DF  "TARGET_AVX512VL")])
>  (define_mode_iterator VF48H_AVX512VL
>    [(V8DF "TARGET_AVX512FP16") (V16SF "TARGET_AVX512F")
> -   (V8SF "TARGET_AVX512VL || (TARGET_F16C && !TARGET_AVX512FP16)")])
> +   (V8SF "TARGET_F16C || TARGET_AVX512VL")])
>
>  (define_mode_iterator VF48_128
>    [V2DF V4SF])
> --- a/gcc/testsuite/gcc.target/i386/pr121688-avx512fp16novl.c   2026-10-14 
> 13:29:18.438824257 +0200
> +++ b/gcc/testsuite/gcc.target/i386/pr121688-avx512fp16novl.c   2026-10-14 
> 13:30:18.536013358 +0200
> @@ -0,0 +1,14 @@
> +/* PR target/121688 */
> +/* { dg-do compile } */
> +/* { dg-options "-O2 -mf16c -mavx512fp16 -mno-avx512vl -masm=att" } */
> +/* { dg-final { scan-assembler-times "\tvcvtps2ph\t\\\$4, %xmm\[0-9]\+, 
> %xmm\[0-9]\+" 2 } } */
> +/* { dg-final { scan-assembler-times "\tvcvtps2ph\t\\\$4, %ymm\[0-9]\+, 
> %xmm\[0-9]\+" 2 } } */
> +/* { dg-final { scan-assembler-not "\tvcvtps2ph\t\\\$4, %zmm\[0-9]\+, 
> %ymm\[0-9]\+" } } */
> +/* { dg-final { scan-assembler "\tvcvtph2ps\t%xmm\[0-9]\+, %xmm\[0-9]\+" } } 
> */
> +/* { dg-final { scan-assembler "\tvcvtph2ps\t%xmm\[0-9]\+, %ymm\[0-9]\+" } } 
> */
> +/* { dg-final { scan-assembler-not "\tvcvtph2ps\t%ymm\[0-9]\+, %zmm\[0-9]\+" 
> } } */
> +/* { dg-final { scan-assembler "\tvcvtph2ps\t\\\(%\[re]\[a-z0-9]\+\\\), 
> %xmm\[0-9]\+" } } */
> +/* { dg-final { scan-assembler "\tvcvtph2ps\t\\\(%\[re]\[a-z0-9]\+\\\), 
> %ymm\[0-9]\+" } } */
> +/* { dg-final { scan-assembler-not "\tvcvtph2ps\t\\\(%\[re]\[a-z0-9]\+\\\), 
> %zmm\[0-9]\+" } } */
> +
> +#include "pr121688-f16c.c"
>
>
>         Jakub
>

Reply via email to