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

--- Comment #2 from Uroš Bizjak <ubizjak at gmail dot com> ---
Comment on attachment 65752
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=65752
gcc17-pr127720.patch

>2026-10-05  Jakub Jelinek  <[email protected]>
>
>       PR target/127720
>       * config/i386/i386.md (extendhfdf2): Enable also for
>       TARGET_F16C || TARGET_AVX512VL, in those cases expand as
>       extendhfsf2 followed by extendsfdf2.
>
>       * gcc.target/i386/f16c-pr127720.c: New test.
>       * gcc.target/i386/avx512vl-pr127720.c: New test.

OK with a couple of trivial adjustments in testcases.

>
>--- a/gcc/config/i386/i386.md  2026-10-05 09:40:23.607071678 +0200
>+++ b/gcc/config/i386/i386.md  2026-10-05 09:59:20.199379797 +0200
>@@ -5577,7 +5577,16 @@ (define_expand "extendhfdf2"
>   [(set (match_operand:DF 0 "register_operand")
>       (float_extend:DF
>         (match_operand:HF 1 "nonimmediate_operand")))]
>-  "TARGET_AVX512FP16")
>+  "TARGET_AVX512FP16 || TARGET_F16C || TARGET_AVX512VL"
>+{
>+  if (!TARGET_AVX512FP16)
>+    {
>+      rtx tmp = gen_reg_rtx (SFmode);
>+      emit_insn (gen_extendhfsf2 (tmp, operands[1]));
>+      emit_insn (gen_extendsfdf2 (operands[0], tmp));
>+      DONE;
>+    }
>+})
> 
> (define_insn "*extendhf<mode>2"
>   [(set (match_operand:MODEF 0 "register_operand" "=v")
>--- a/gcc/testsuite/gcc.target/i386/f16c-pr127720.c    2026-10-05 
>10:17:14.228623830 +0200
>+++ b/gcc/testsuite/gcc.target/i386/f16c-pr127720.c    2026-10-05 
>10:16:46.764000655 +0200

Please rename the file to pr127720-f16c.c.

>@@ -0,0 +1,11 @@
>+/* PR target/127720 */
>+/* { dg-do compile } */
>+/* { dg-options "-O2 -mno-avx512f -mf16c" } */
>+/* { dg-final { scan-assembler "\tvcvtph2ps\t" } } */
>+/* { dg-final { scan-assembler "\tvcvtss2sd\t" { target { ! ia32 } } } } */

Please add -mfpmath=sse to dg-options to emit both insns for 64-bit and 32-bit
targets.

>+
>+double
>+foo (_Float16 x)
>+{
>+  return x;
>+}
>--- a/gcc/testsuite/gcc.target/i386/avx512vl-pr127720.c        2026-10-05 
>10:17:29.811410031 +0200
>+++ b/gcc/testsuite/gcc.target/i386/avx512vl-pr127720.c        2026-10-05 
>10:17:54.287074209 +0200

... and this one to pr127720-avx512vl.c.

>@@ -0,0 +1,11 @@
>+/* PR target/127720 */
>+/* { dg-do compile } */
>+/* { dg-options "-O2 -mno-f16c -mavx512vl -mno-avx512fp16" } */
>+/* { dg-final { scan-assembler "\tvcvtph2ps\t" } } */
>+/* { dg-final { scan-assembler "\tvcvtss2sd\t" { target { ! ia32 } } } } */

... also here.

>+
>+double
>+foo (_Float16 x)
>+{
>+  return x;
>+}

Reply via email to