i386: Fix movv2qi_internal xmm reg to xmm reg move for AVX512FP16 [PR105139]

Message ID CAFULd4bQE7FH9vTj=fyEFOPhagci0QdE1H8UnKRcsPQzU3a61Q@mail.gmail.com
State Committed
Commit cbc9dd66484a51d450f78ab748a872b939c90c3f
Headers
Series i386: Fix movv2qi_internal xmm reg to xmm reg move for AVX512FP16 [PR105139] |

Commit Message

Uros Bizjak April 5, 2022, 7:05 p.m. UTC
  2022-04-05  Uroš Bizjak  <ubizjak@gmail.com>

gcc/ChangeLog:

    PR target/105139
    * config/i386/mmx.md (*movv2qi_internal):
    Change insn mode of alternative 5 to HF for TARGET_AVX512FP16.

gcc/testsuite/ChangeLog:

    PR target/105139
    * gcc.target/i386/pr105139.c: New test.

Bootstrapped and regression tested on x86_64-linux-gnu {,-m32}.

Pushed to master.

Uros.
  

Patch

diff --git a/gcc/config/i386/mmx.md b/gcc/config/i386/mmx.md
index 29d470bdef2..197f19e4b1a 100644
--- a/gcc/config/i386/mmx.md
+++ b/gcc/config/i386/mmx.md
@@ -462,7 +462,7 @@  (define_insn "*movv2qi_internal"
 		    (const_string "TI"))
 	    (eq_attr "alternative" "5")
 	      (cond [(match_test "TARGET_AVX512FP16")
-		       (const_string "HI")
+		       (const_string "HF")
 		     (match_test "TARGET_AVX")
 		       (const_string "TI")
 		     (ior (not (match_test "TARGET_SSE2"))
diff --git a/gcc/testsuite/gcc.target/i386/pr105139.c b/gcc/testsuite/gcc.target/i386/pr105139.c
new file mode 100644
index 00000000000..06e4797dfca
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr105139.c
@@ -0,0 +1,17 @@ 
+/* { dg-do assemble { target avx512fp16 } } */
+/* { dg-options "-O3 -march=sapphirerapids" } */
+
+extern long c[];
+extern int d[];
+long a;
+
+long e (long f)
+{
+  return f < a ? f : a;
+}
+
+void g (void)
+{
+  for (signed b = 0; b < 4028643; b++)
+    d[b] = e ((char) (~c[b]));
+}