From 183db4fb73a64bc4641604c30cdbbd9d9e8a6ed6 Mon Sep 17 00:00:00 2001
From: liuhongt <hongtao.liu@intel.com>
Date: Thu, 17 Nov 2022 16:19:31 +0800
Subject: [PATCH] define builtins for "shared" avxneconvert-avx512bf16vl
 builtins.

This should fix incorrect error when call those builtin with
-mavxneconvert and w/o -mavx512bf16 -mavx512vl.

gcc/ChangeLog:

	* config/i386/i386-builtins.cc (def_builtin): Handle "shared"
	avx512bf16vl-avxneconvert builtins.

gcc/testsuite/ChangeLog:

	* gcc.target/i386/avxneconvert-1.c: New test.
---
 gcc/config/i386/i386-builtins.cc               |  2 ++
 gcc/testsuite/gcc.target/i386/avxneconvert-1.c | 11 +++++++++++
 2 files changed, 13 insertions(+)
 create mode 100644 gcc/testsuite/gcc.target/i386/avxneconvert-1.c

diff --git a/gcc/config/i386/i386-builtins.cc b/gcc/config/i386/i386-builtins.cc
index 9412cf1acc86..eacdf072244e 100644
--- a/gcc/config/i386/i386-builtins.cc
+++ b/gcc/config/i386/i386-builtins.cc
@@ -285,6 +285,8 @@ def_builtin (HOST_WIDE_INT mask, HOST_WIDE_INT mask2,
 	     avx512vl exist.  */
 	  || (mask2 == OPTION_MASK_ISA2_AVXVNNI)
 	  || (mask2 == OPTION_MASK_ISA2_AVXIFMA)
+	  || (mask2 == (OPTION_MASK_ISA2_AVXNECONVERT
+			| OPTION_MASK_ISA2_AVX512BF16))
 	  || (lang_hooks.builtin_function
 	      == lang_hooks.builtin_function_ext_scope))
 	{
diff --git a/gcc/testsuite/gcc.target/i386/avxneconvert-1.c b/gcc/testsuite/gcc.target/i386/avxneconvert-1.c
new file mode 100644
index 000000000000..2bb129c3f724
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avxneconvert-1.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-options "-mavxneconvert -O2" } */
+
+typedef float v8sf __attribute__((vector_size(32)));
+typedef __bf16 v8bf __attribute__((vector_size(16)));
+
+v8bf
+foo (v8sf a)
+{
+  return __builtin_ia32_cvtneps2bf16_v8sf (a);
+}
-- 
GitLab