https://gcc.gnu.org/g:a80bc4ecbd12ced93d8518de0f6068fc1a26fe4e

commit r17-3850-ga80bc4ecbd12ced93d8518de0f6068fc1a26fe4e
Author: Haochen Jiang <[email protected]>
Date:   Wed Sep 2 16:38:46 2026 +0800

    Support ACEv1 instructions reused from AMX-TILE
    
    There are several insts that will be reused from legacy AMX, coming
    from AMX-TILE and AMX-AVX512.
    
    Since legacy AMX and ACE should not be used together, we choose not
    to use the same intrin name for ACE and legacy AMX, while the builtins
    could be shared.
    
    For AMX-TILE related insts, we add "_ace_" in the middle of the intrin
    name to explicitly mention the intrin is used by ACE.
    
    For tilerelease, we keep it simple for now to use inline assembly since
    no tmm register number need to be mentioned for the intrin and using
    pattern does not help compiler knowing the dependency.
    
    gcc/ChangeLog:
    
            * config.gcc: Include acev1intrin.h.
            * config/i386/i386-builtin-types.def: Add new function type.
            * config/i386/i386-builtin.def (BDESC): Reuse AMX-TILE builtins
            and handle ACEV1 new builtins.
            * config/i386/i386-builtins.cc
            (BDESC_VERIFYS): Add BDESC_ACE.
            (def_builtin): Share builtin between AMX-TILE and ACEv1.
            (ix86_init_mmx_sse_builtins): Handle BDESC_ACE.
            * config/i386/i386-expand.cc
            (ix86_expand_ace_builtin): New.
            (ix86_check_builtin_isa_match): Share builtin between AMX-TILE
            and ACEv1.
            (ix86_expand_builtin): Handle BDESC_ACE.
            * config/i386/i386.md (ldtilecfg): Add TARGET_ACEV1.
            (sttilecfg): Ditto.
            * config/i386/immintrin.h: Include acev1intrin.h.
            * config/i386/sse.md (UNSPECV_TILEZERO): New.
            (tilezero): Ditto.
            * config/i386/acev1intrin.h: New intrin file.
    
    gcc/testsuite/ChangeLog:
    
            * g++.dg/other/i386-2.C: Add acev1 tests.
            * g++.dg/other/i386-3.C: Ditto.
            * gcc.target/i386/avx-1.c: Ditto.
            * gcc.target/i386/funcspec-56.inc: Ditto.
            * gcc.target/i386/sse-12.c: Ditto.
            * gcc.target/i386/sse-13.c: Ditto.
            * gcc.target/i386/sse-14.c: Ditto.
            * gcc.target/i386/sse-22.c: Ditto.
            * gcc.target/i386/sse-23.c: Ditto.
            * gcc.target/i386/acev1-1.c: New test.
            * gcc.target/i386/acev1-1b.c: Ditto.
    
    Co-authored-by: Dipesh Sharma <[email protected]>

Diff:
---
 gcc/config.gcc                                |  2 +-
 gcc/config/i386/acev1intrin.h                 | 73 +++++++++++++++++++++++
 gcc/config/i386/i386-builtin-types.def        |  4 +-
 gcc/config/i386/i386-builtin.def              | 10 +++-
 gcc/config/i386/i386-builtins.cc              | 30 ++++++++--
 gcc/config/i386/i386-expand.cc                | 83 +++++++++++++++++++++++++++
 gcc/config/i386/i386.md                       |  4 +-
 gcc/config/i386/immintrin.h                   |  3 +
 gcc/config/i386/sse.md                        | 12 ++++
 gcc/testsuite/g++.dg/other/i386-2.C           |  2 +-
 gcc/testsuite/g++.dg/other/i386-3.C           |  2 +-
 gcc/testsuite/gcc.target/i386/acev1-1.c       | 17 ++++++
 gcc/testsuite/gcc.target/i386/acev1-1b.c      |  8 +++
 gcc/testsuite/gcc.target/i386/avx-1.c         |  7 ++-
 gcc/testsuite/gcc.target/i386/funcspec-56.inc |  2 +
 gcc/testsuite/gcc.target/i386/sse-12.c        |  2 +-
 gcc/testsuite/gcc.target/i386/sse-13.c        |  7 ++-
 gcc/testsuite/gcc.target/i386/sse-14.c        | 29 ++++++----
 gcc/testsuite/gcc.target/i386/sse-22.c        | 31 ++++++----
 gcc/testsuite/gcc.target/i386/sse-23.c        |  7 ++-
 20 files changed, 296 insertions(+), 39 deletions(-)

diff --git a/gcc/config.gcc b/gcc/config.gcc
index 0913dd8d98b9..e600ae272dbb 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -480,7 +480,7 @@ i[34567]86-*-* | x86_64-*-*)
                       avx10_2minmaxintrin.h avx10_2copyintrin.h
                       amxavx512intrin.h amxfp8intrin.h movrsintrin.h
                       amxmovrsintrin.h avx512bmmintrin.h avx512bmmvlintrin.h
-                      avx10v2auxintrin.h"
+                      avx10v2auxintrin.h acev1intrin.h"
        ;;
 ia64-*-*)
        extra_headers=ia64intrin.h
diff --git a/gcc/config/i386/acev1intrin.h b/gcc/config/i386/acev1intrin.h
new file mode 100644
index 000000000000..6daa05db3425
--- /dev/null
+++ b/gcc/config/i386/acev1intrin.h
@@ -0,0 +1,73 @@
+/* Copyright (C) 2026 Free Software Foundation, Inc.
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _IMMINTRIN_H_INCLUDED
+#error "Never use <acev1intrin.h> directly; include <immintrin.h> instead."
+#endif
+
+#ifndef _ACEV1INTRIN_H_INCLUDED
+#define _ACEV1INTRIN_H_INCLUDED
+
+#if !defined(__ACEV1__)
+#pragma GCC push_options
+#pragma GCC target("acev1")
+#define __DISABLE_ACEV1__
+#endif /* __ACEV1__ */
+
+#if defined(__x86_64__)
+
+#define _tile_ace_loadconfig(A)                        \
+  __builtin_ia32_ldtilecfg (A)
+
+#define _tile_ace_storeconfig(A)               \
+  __builtin_ia32_sttilecfg (A)
+
+extern __inline void
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_tile_ace_release (void)
+{
+  __asm__ volatile ("tilerelease" ::);
+}
+
+#ifdef __OPTIMIZE__
+extern __inline void
+__attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_tile_ace_zero (const int __A)
+{
+  __builtin_ia32_tilezero (__A);
+}
+
+#else
+#define _tile_ace_zero(A)                      \
+  __builtin_ia32_tilezero (A);
+
+#endif /* __OPTIMIZE__ */
+
+#endif /* __x86_64__ */
+
+#ifdef __DISABLE_ACEV1__
+#undef __DISABLE_ACEV1__
+#pragma GCC pop_options
+#endif /* __DISABLE_ACEV1__ */
+
+#endif /* _ACEV1INTRIN_H_INCLUDED */
diff --git a/gcc/config/i386/i386-builtin-types.def 
b/gcc/config/i386/i386-builtin-types.def
index 4083453ce3ec..40db96e68e37 100644
--- a/gcc/config/i386/i386-builtin-types.def
+++ b/gcc/config/i386/i386-builtin-types.def
@@ -1491,7 +1491,6 @@ DEF_FUNCTION_TYPE (V16QI, V16QI, INT, V16QI, UHI)
 DEF_FUNCTION_TYPE (V32QI, V32QI, INT, V32QI, USI)
 DEF_FUNCTION_TYPE (V64QI, V64QI, INT, V64QI, UDI)
 
-
 # SM4 builtins
 DEF_FUNCTION_TYPE (V16SI, V16SI, V16SI)
 
@@ -1500,3 +1499,6 @@ DEF_FUNCTION_TYPE (CHAR, PCCHAR)
 DEF_FUNCTION_TYPE (SHORT, PCSHORT)
 DEF_FUNCTION_TYPE (INT, PCINT)
 DEF_FUNCTION_TYPE (INT64, PCINT64)
+
+# ACEv1 builtins
+DEF_FUNCTION_TYPE (VOID, UQI)
diff --git a/gcc/config/i386/i386-builtin.def b/gcc/config/i386/i386-builtin.def
index 7bc76a42abf7..62e175d01eff 100644
--- a/gcc/config/i386/i386-builtin.def
+++ b/gcc/config/i386/i386-builtin.def
@@ -127,8 +127,8 @@ BDESC (OPTION_MASK_ISA_XSAVES | OPTION_MASK_ISA_64BIT, 0, 
CODE_FOR_nothing, "__b
 BDESC (OPTION_MASK_ISA_XSAVEC | OPTION_MASK_ISA_64BIT, 0, CODE_FOR_nothing, 
"__builtin_ia32_xsavec64", IX86_BUILTIN_XSAVEC64, UNKNOWN, (int) 
VOID_FTYPE_PVOID_INT64)
 
 /* LDFILECFG and STFILECFG.  */
-BDESC (OPTION_MASK_ISA_64BIT, OPTION_MASK_ISA2_AMX_TILE, CODE_FOR_nothing, 
"__builtin_ia32_ldtilecfg", IX86_BUILTIN_LDTILECFG, UNKNOWN, (int) 
VOID_FTYPE_PCVOID)
-BDESC (OPTION_MASK_ISA_64BIT, OPTION_MASK_ISA2_AMX_TILE, CODE_FOR_nothing, 
"__builtin_ia32_sttilecfg", IX86_BUILTIN_STTILECFG, UNKNOWN, (int) 
VOID_FTYPE_PVOID)
+BDESC (OPTION_MASK_ISA_64BIT, OPTION_MASK_ISA2_AMX_TILE | 
OPTION_MASK_ISA2_ACEV1, CODE_FOR_nothing, "__builtin_ia32_ldtilecfg", 
IX86_BUILTIN_LDTILECFG, UNKNOWN, (int) VOID_FTYPE_PCVOID)
+BDESC (OPTION_MASK_ISA_64BIT, OPTION_MASK_ISA2_AMX_TILE | 
OPTION_MASK_ISA2_ACEV1, CODE_FOR_nothing, "__builtin_ia32_sttilecfg", 
IX86_BUILTIN_STTILECFG, UNKNOWN, (int) VOID_FTYPE_PVOID)
 
 /* SSE */
 BDESC (OPTION_MASK_ISA_SSE, 0, CODE_FOR_movv4sf_internal, 
"__builtin_ia32_storeups", IX86_BUILTIN_STOREUPS, UNKNOWN, (int) 
VOID_FTYPE_PFLOAT_V4SF)
@@ -3973,5 +3973,9 @@ BDESC (OPTION_MASK_ISA_SHSTK, 0, CODE_FOR_nothing, 
"__builtin_ia32_wrussd", IX86
 BDESC (OPTION_MASK_ISA_SHSTK | OPTION_MASK_ISA_64BIT, 0, CODE_FOR_nothing, 
"__builtin_ia32_wrussq", IX86_BUILTIN_WRUSSQ, UNKNOWN, (int) 
VOID_FTYPE_UINT64_PVOID)
 BDESC (OPTION_MASK_ISA_SHSTK, 0, CODE_FOR_setssbsy, "__builtin_ia32_setssbsy", 
IX86_BUILTIN_SETSSBSY, UNKNOWN, (int) VOID_FTYPE_VOID)
 BDESC (OPTION_MASK_ISA_SHSTK, 0, CODE_FOR_clrssbsy, "__builtin_ia32_clrssbsy", 
IX86_BUILTIN_CLRSSBSY, UNKNOWN, (int) VOID_FTYPE_PVOID)
+BDESC_END (CET, ACE)
 
-BDESC_END (CET, MAX)
+/* ACEv1.  */
+BDESC_FIRST (ace, ACE,
+       OPTION_MASK_ISA_64BIT, OPTION_MASK_ISA2_ACEV1, CODE_FOR_tilezero, 
"__builtin_ia32_tilezero", IX86_BUILTIN_TILEZERO, UNKNOWN, (int) VOID_FTYPE_UQI)
+BDESC_END (ACE, MAX)
diff --git a/gcc/config/i386/i386-builtins.cc b/gcc/config/i386/i386-builtins.cc
index 6837efd8da5e..d0c7cd47a6b9 100644
--- a/gcc/config/i386/i386-builtins.cc
+++ b/gcc/config/i386/i386-builtins.cc
@@ -119,8 +119,10 @@ BDESC_VERIFYS (IX86_BUILTIN__BDESC_MULTI_ARG_FIRST,
               IX86_BUILTIN__BDESC_ROUND_ARGS_LAST, 1);
 BDESC_VERIFYS (IX86_BUILTIN__BDESC_CET_FIRST,
               IX86_BUILTIN__BDESC_MULTI_ARG_LAST, 1);
-BDESC_VERIFYS (IX86_BUILTIN_MAX,
+BDESC_VERIFYS (IX86_BUILTIN__BDESC_ACE_FIRST,
               IX86_BUILTIN__BDESC_CET_LAST, 1);
+BDESC_VERIFYS (IX86_BUILTIN_MAX,
+              IX86_BUILTIN__BDESC_ACE_LAST, 1);
 
 
 /* Table for the ix86 builtin non-function types.  */
@@ -281,10 +283,11 @@ def_builtin (HOST_WIDE_INT mask, HOST_WIDE_INT mask2,
           && (mask == 0 || (mask & ix86_isa_flags) != 0))
          || ((mask & OPTION_MASK_ISA_MMX) != 0 && TARGET_MMX_WITH_SSE)
          /* "Unified" builtin used by either AVXVNNI/AVXIFMA/AES/
-            AVXVNNIINT{8,16} intrinsics or AVX512VNNIVL/AVX512IFMAVL/VAESVL/
-            AVX10.2 non-mask intrinsics should be defined whenever avxvnni/
-            avxifma/aes/avxvnniint{8,16} or avx512vnni && avx512vl/avx512ifma
-            && avx512vl/vaes && avx512vl/avx10.2 exist.  */
+            AVXVNNIINT{8,16}/AMX-TILE intrinsics or AVX512VNNIVL/AVX512IFMAVL/
+            VAESVL/AVX10.2/ACEv1 non-mask intrinsics should be defined
+            whenever avxvnni/avxifma/aes/avxvnniint{8,16}/amx-tile or
+            avx512vnni && avx512vl/avx512ifma && avx512vl/vaes && avx512vl/
+            avx10.2/acev1 exist.  */
          || (mask2 == OPTION_MASK_ISA2_AVXVNNI)
          || (mask2 == OPTION_MASK_ISA2_AVXIFMA)
          || (mask2 == (OPTION_MASK_ISA2_AVXNECONVERT
@@ -292,6 +295,7 @@ def_builtin (HOST_WIDE_INT mask, HOST_WIDE_INT mask2,
          || ((mask2 & OPTION_MASK_ISA2_VAES) != 0)
          || ((mask2 & OPTION_MASK_ISA2_AVXVNNIINT8) != 0)
          || ((mask2 & OPTION_MASK_ISA2_AVXVNNIINT16) != 0)
+         || ((mask2 & OPTION_MASK_ISA2_AMX_TILE) != 0)
          || (lang_hooks.builtin_function
              == lang_hooks.builtin_function_ext_scope))
        {
@@ -1292,6 +1296,22 @@ ix86_init_mmx_sse_builtins (void)
   BDESC_VERIFYS (IX86_BUILTIN__BDESC_CET_LAST,
                 IX86_BUILTIN__BDESC_CET_FIRST,
                 ARRAY_SIZE (bdesc_cet) - 1);
+
+
+  /* Add ACE inrinsics.  */
+  for (i = 0, d = bdesc_ace; i < ARRAY_SIZE (bdesc_ace);
+       i++, d++)
+    {
+      BDESC_VERIFY (d->code, IX86_BUILTIN__BDESC_ACE_FIRST, i);
+      if (d->name == 0)
+       continue;
+
+      ftype = (enum ix86_builtin_func_type) d->flag;
+      def_builtin (d->mask, d->mask2, d->name, ftype, d->code);
+    }
+  BDESC_VERIFYS (IX86_BUILTIN__BDESC_ACE_LAST,
+                IX86_BUILTIN__BDESC_ACE_FIRST,
+                ARRAY_SIZE (bdesc_ace) - 1);
 }
 
 #undef BDESC_VERIFY
diff --git a/gcc/config/i386/i386-expand.cc b/gcc/config/i386/i386-expand.cc
index 19bc596983d5..b660ddcbeb84 100644
--- a/gcc/config/i386/i386-expand.cc
+++ b/gcc/config/i386/i386-expand.cc
@@ -14707,6 +14707,80 @@ ix86_expand_special_args_builtin (const struct 
builtin_description *d,
   return klass == store ? 0 : target;
 }
 
+/* Subroutine of ix86_expand_builtin to take care of amx insns
+   with variable number of operands.  */
+
+static rtx
+ix86_expand_ace_builtin (const struct builtin_description *d, tree exp)
+{
+  tree arg;
+  rtx pat, op;
+  unsigned int i, nargs;
+  rtx xops[4];
+  enum insn_code icode = d->icode;
+  const struct insn_data_d *insn_p = &insn_data[icode];
+
+  switch ((enum ix86_builtin_func_type) d->flag)
+    {
+    case VOID_FTYPE_UQI:
+      nargs = 1;
+      break;
+
+    default:
+      gcc_unreachable ();
+    }
+
+  gcc_assert (nargs <= ARRAY_SIZE (xops));
+
+  for (i = 0; i < nargs; i++)
+    {
+      machine_mode mode = insn_p->operand[i].mode;
+
+      arg = CALL_EXPR_ARG (exp, i);
+      op = ix86_expand_unsigned_small_int_cst_argument (arg);
+
+      if (i == 0 && !IN_RANGE (INTVAL (op), 0, 7))
+       {
+         /* This must be the tmm reg number constant.  */
+         error ("the tmm register number argument must be between 0 to 7");
+         return const0_rtx;
+       }
+      else
+       {
+         /* This must be register.  */
+         if (VECTOR_MODE_P (mode))
+           op = safe_vector_operand (op, mode);
+
+         op = fixup_modeless_constant (op, mode);
+
+         if (GET_MODE (op) == mode || GET_MODE (op) == VOIDmode)
+           op = copy_to_mode_reg (mode, op);
+         else
+           {
+             op = copy_to_reg (op);
+             op = lowpart_subreg (mode, op, GET_MODE (op));
+           }
+       }
+
+      xops[i] = op;
+    }
+
+  switch (nargs)
+    {
+    case 1:
+      pat = GEN_FCN (icode) (xops[0]);
+      break;
+    default:
+      gcc_unreachable ();
+    }
+
+  if (!pat)
+    return 0;
+
+  emit_insn (pat);
+  return 0;
+}
+
 /* Return the integer constant in ARG.  Constrain it to be in the range
    of the subparts of VEC_TYPE; issue an error if not.  */
 
@@ -14859,6 +14933,7 @@ ix86_check_builtin_isa_match (unsigned int fcode,
      OPTION_MASK_ISA_AES or (OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA2_VAES)
      OPTION_MASK_ISA2_AVX10_2 or OPTION_MASK_ISA2_AVXVNNIINT8
      OPTION_MASK_ISA2_AVX10_2 or OPTION_MASK_ISA2_AVXVNNIINT16
+     OPTION_MASK_ISA2_AMX_TILE or OPTION_MASK_ISA2_ACEV1
      where for each such pair it is sufficient if either of the ISAs is
      enabled, plus if it is ored with other options also those others.
      OPTION_MASK_ISA_MMX in bisa is satisfied also if TARGET_MMX_WITH_SSE.  */
@@ -14888,6 +14963,7 @@ ix86_check_builtin_isa_match (unsigned int fcode,
                 OPTION_MASK_ISA2_AVX10_2);
   SHARE_BUILTIN (0, OPTION_MASK_ISA2_AVXVNNIINT16, 0,
                 OPTION_MASK_ISA2_AVX10_2);
+  SHARE_BUILTIN (0, OPTION_MASK_ISA2_AMX_TILE, 0, OPTION_MASK_ISA2_ACEV1);
   isa = tmp_isa;
   isa2 = tmp_isa2;
 
@@ -17279,6 +17355,13 @@ rdseed_step:
                                               target);
     }
 
+  if (fcode >= IX86_BUILTIN__BDESC_ACE_FIRST
+      && fcode <= IX86_BUILTIN__BDESC_ACE_LAST)
+    {
+      i = fcode - IX86_BUILTIN__BDESC_ACE_FIRST;
+      return ix86_expand_ace_builtin (bdesc_ace + i, exp);
+    }
+
   gcc_unreachable ();
 }
 
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 69be89a749ac..9888644ed91c 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -31495,7 +31495,7 @@
 (define_insn "ldtilecfg"
   [(unspec_volatile [(match_operand:BLK 0 "memory_operand" "m")]
             UNSPECV_LDTILECFG)]
-  "TARGET_AMX_TILE"
+  "TARGET_AMX_TILE || TARGET_ACEV1"
   "ldtilecfg\t%0"
   [(set_attr "type" "other")
    (set_attr "prefix" "maybe_evex")
@@ -31504,7 +31504,7 @@
 (define_insn "sttilecfg"
   [(set (match_operand:BLK 0 "memory_operand" "=m")
         (unspec_volatile:BLK [(const_int 0)] UNSPECV_STTILECFG))]
-  "TARGET_AMX_TILE"
+  "TARGET_AMX_TILE || TARGET_ACEV1"
   "sttilecfg\t%0"
   [(set_attr "type" "other")
    (set_attr "prefix" "maybe_evex")
diff --git a/gcc/config/i386/immintrin.h b/gcc/config/i386/immintrin.h
index 2c55e1e02a37..63db4fddca65 100644
--- a/gcc/config/i386/immintrin.h
+++ b/gcc/config/i386/immintrin.h
@@ -163,4 +163,7 @@
 #include <avx512bmmintrin.h>
 
 #include <avx512bmmvlintrin.h>
+
+#include <acev1intrin.h>
+
 #endif /* _IMMINTRIN_H_INCLUDED */
diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
index 3525b4908e87..6b60eae228a0 100644
--- a/gcc/config/i386/sse.md
+++ b/gcc/config/i386/sse.md
@@ -303,6 +303,9 @@
   UNSPECV_AESENCWIDE256KLU8
   UNSPECV_ENCODEKEY128U32
   UNSPECV_ENCODEKEY256U32
+
+  ;; For ACEv1
+  UNSPECV_TILEZERO
 ])
 
 ;; All vector modes including V?TImode, used in move patterns.
@@ -34980,3 +34983,12 @@
            (operands[0], operands[1], operands[2]));
   DONE;
 })
+
+(define_insn "tilezero"
+  [(set (reg:V32SI TMM_REGNUM)
+        (unspec_volatile:V32SI
+         [(match_operand:QI 0 "const_0_to_7_operand")]
+         UNSPECV_TILEZERO))]
+  "TARGET_ACEV1"
+  "tilezero\t{%%tmm%c0|tmm%c0}"
+  [(set_attr "prefix" "vex")])
diff --git a/gcc/testsuite/g++.dg/other/i386-2.C 
b/gcc/testsuite/g++.dg/other/i386-2.C
index 7cb1ab565928..d0c6f9990db8 100644
--- a/gcc/testsuite/g++.dg/other/i386-2.C
+++ b/gcc/testsuite/g++.dg/other/i386-2.C
@@ -1,5 +1,5 @@
 /* { dg-do compile { target i?86-*-* x86_64-*-* } } */
-/* { dg-options "-O -pedantic-errors -march=k8 -msse4a -m3dnow -mavx -mavx2 
-mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp 
-mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt 
-msha -mxsavec -mxsaves -mclflushopt -mclwb -mmwaitx -mclzero -mpku -msgx 
-mrdpid -mgfni -mpconfig -mwbnoinvd -menqcmd -mavx512vp2intersect -mserialize 
-mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavxifma 
-mavxvnniint8 -mavxneconvert -mcmpccxadd -mamx-fp16 -mprefetchi -mraoint 
-mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 -mavx10.2 -mamx-avx512 
-mamx-fp8 -mmovrs -mamx-movrs -mavx10v2aux" } */
+/* { dg-options "-O -pedantic-errors -march=k8 -msse4a -m3dnow -mavx -mavx2 
-mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp 
-mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt 
-msha -mxsavec -mxsaves -mclflushopt -mclwb -mmwaitx -mclzero -mpku -msgx 
-mrdpid -mgfni -mpconfig -mwbnoinvd -menqcmd -mavx512vp2intersect -mserialize 
-mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavxifma 
-mavxvnniint8 -mavxneconvert -mcmpccxadd -mamx-fp16 -mprefetchi -mraoint 
-mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 -mavx10.2 -mamx-avx512 
-mamx-fp8 -mmovrs -mamx-movrs -mavx10v2aux -macev1" } */
 /* { dg-skip-if "requires hosted libstdc++ for cstdlib malloc" { ! hostedlib } 
} */
 
 /* Test that {,x,e,p,t,s,w,a,b,i}mmintrin.h, mm3dnow.h, fma4intrin.h,
diff --git a/gcc/testsuite/g++.dg/other/i386-3.C 
b/gcc/testsuite/g++.dg/other/i386-3.C
index efe7f24cfdf0..f879c489ac89 100644
--- a/gcc/testsuite/g++.dg/other/i386-3.C
+++ b/gcc/testsuite/g++.dg/other/i386-3.C
@@ -1,5 +1,5 @@
 /* { dg-do compile { target i?86-*-* x86_64-*-* } } */
-/* { dg-options "-O -fkeep-inline-functions -march=k8 -msse4a -m3dnow -mavx 
-mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm 
-mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr 
-mxsaveopt -msha -mxsavec -mxsaves -mclflushopt -mclwb -mmwaitx -mclzero -mpku 
-msgx -mrdpid -mgfni -mpconfig -mwbnoinvd -menqcmd -mavx512vp2intersect 
-mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni 
-mavxifma -mavxvnniint8 -mavxneconvert -mcmpccxadd -mamx-fp16 -mprefetchi 
-mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 -mavx10.2 
-mamx-avx512 -mamx-fp8 -mmovrs -mamx-movrs -mavx10v2aux" } */
+/* { dg-options "-O -fkeep-inline-functions -march=k8 -msse4a -m3dnow -mavx 
-mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm 
-mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr 
-mxsaveopt -msha -mxsavec -mxsaves -mclflushopt -mclwb -mmwaitx -mclzero -mpku 
-msgx -mrdpid -mgfni -mpconfig -mwbnoinvd -menqcmd -mavx512vp2intersect 
-mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni 
-mavxifma -mavxvnniint8 -mavxneconvert -mcmpccxadd -mamx-fp16 -mprefetchi 
-mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 -mavx10.2 
-mamx-avx512 -mamx-fp8 -mmovrs -mamx-movrs -mavx10v2aux -macev1" } */
 /* { dg-skip-if "requires hosted libstdc++ for cstdlib malloc" { ! hostedlib } 
} */
 
 /* Test that {,x,e,p,t,s,w,a,b,i}mmintrin.h, mm3dnow.h, fma4intrin.h,
diff --git a/gcc/testsuite/gcc.target/i386/acev1-1.c 
b/gcc/testsuite/gcc.target/i386/acev1-1.c
new file mode 100644
index 000000000000..9165f571ef92
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/acev1-1.c
@@ -0,0 +1,17 @@
+/* { dg-do compile { target { ! ia32 } } } */
+/* { dg-options "-O2 -macev1" } */
+/* { dg-final { scan-assembler-times "ldtilecfg\[ \t]" 1 } } */
+/* { dg-final { scan-assembler-times "sttilecfg\[ \t]" 1 } } */
+/* { dg-final { scan-assembler-times "tilerelease" 1 } } */
+/* { dg-final { scan-assembler-times "tilezero\[ \t]" 1 } } */
+#include <immintrin.h>
+
+extern int t[];
+
+void amxtile ()
+{
+  _tile_ace_loadconfig (t);
+  _tile_ace_storeconfig (t);
+  _tile_ace_release ();
+  _tile_ace_zero (0);
+}
diff --git a/gcc/testsuite/gcc.target/i386/acev1-1b.c 
b/gcc/testsuite/gcc.target/i386/acev1-1b.c
new file mode 100644
index 000000000000..89fb12b83ae2
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/acev1-1b.c
@@ -0,0 +1,8 @@
+/* { dg-do compile { target { ! ia32 } } } */
+/* { dg-options "-O2 -macev1" } */
+#include <immintrin.h>
+
+void ace ()
+{
+  _tile_ace_zero (8); /* { dg-error "the tmm register number argument must be 
between 0 to 7" "" { target { ! ia32 } } 0 } */
+}
diff --git a/gcc/testsuite/gcc.target/i386/avx-1.c 
b/gcc/testsuite/gcc.target/i386/avx-1.c
index eb0007590302..3f4bbb34a405 100644
--- a/gcc/testsuite/gcc.target/i386/avx-1.c
+++ b/gcc/testsuite/gcc.target/i386/avx-1.c
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -Werror-implicit-function-declaration -march=k8 -m3dnow 
-mavx -mavx2 -maes -mpclmul -mgfni -mprefetchi -mavx10.2 -mmovrs -mavx10v2aux" 
} */
+/* { dg-options "-O2 -Werror-implicit-function-declaration -march=k8 -m3dnow 
-mavx -mavx2 -maes -mpclmul -mgfni -mprefetchi -mavx10.2 -mmovrs -mavx10v2aux 
-macev1" } */
 /* { dg-add-options bind_pic_locally } */
 
 #include <mm_malloc.h>
@@ -918,6 +918,11 @@
 #define __builtin_ia32_vunpackb256_mask(A, B, C, D) 
__builtin_ia32_vunpackb256_mask(A, 8, C, D)
 #define __builtin_ia32_vunpackb512_mask(A, B, C, D) 
__builtin_ia32_vunpackb512_mask(A, 8, C, D)
 
+/* acev1intrin.h */
+#ifdef __x86_64__
+#define __builtin_ia32_tilezero(A) __builtin_ia32_tilezero (1)
+#endif
+
 #include <wmmintrin.h>
 #include <immintrin.h>
 #include <mm3dnow.h>
diff --git a/gcc/testsuite/gcc.target/i386/funcspec-56.inc 
b/gcc/testsuite/gcc.target/i386/funcspec-56.inc
index 241c36e8cfda..f18778025753 100644
--- a/gcc/testsuite/gcc.target/i386/funcspec-56.inc
+++ b/gcc/testsuite/gcc.target/i386/funcspec-56.inc
@@ -93,6 +93,7 @@ extern void test_amx_fp8 (void)                 
__attribute__((__target__("amx-f
 extern void test_movrs (void)                  
__attribute__((__target__("movrs")));
 extern void test_amx_movrs (void)              
__attribute__((__target__("amx-movrs")));
 extern void test_avx10v2aux (void)             
__attribute__((__target__("avx10v2aux")));
+extern void test_acev1 (void)                  
__attribute__((__target__("acev1")));
 
 extern void test_no_sgx (void)                 
__attribute__((__target__("no-sgx")));
 extern void test_no_avx512vpopcntdq(void)      
__attribute__((__target__("no-avx512vpopcntdq")));
@@ -187,6 +188,7 @@ extern void test_no_amx_fp8 (void)              
__attribute__((__target__("no-am
 extern void test_no_movrs (void)               
__attribute__((__target__("no-movrs")));
 extern void test_no_amx_movrs (void)           
__attribute__((__target__("no-amx-movrs")));
 extern void test_no_avx10v2aux (void)          
__attribute__((__target__("no-avx10v2aux")));
+extern void test_no_acev1 (void)               
__attribute__((__target__("no-acev1")));
 
 extern void test_arch_nocona (void)            
__attribute__((__target__("arch=nocona")));
 extern void test_arch_core2 (void)             
__attribute__((__target__("arch=core2")));
diff --git a/gcc/testsuite/gcc.target/i386/sse-12.c 
b/gcc/testsuite/gcc.target/i386/sse-12.c
index 6b05962b3c29..7d8cb38b561c 100644
--- a/gcc/testsuite/gcc.target/i386/sse-12.c
+++ b/gcc/testsuite/gcc.target/i386/sse-12.c
@@ -3,7 +3,7 @@
    popcntintrin.h gfniintrin.h and mm_malloc.h are usable
    with -O -std=c89 -pedantic-errors.  */
 /* { dg-do compile } */
-/* { dg-options "-O -std=c89 -pedantic-errors -march=k8 -msse4a -m3dnow -mavx 
-mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm 
-mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr 
-mxsaveopt -msha -mxsavec -mxsaves -mclflushopt -mclwb -mmwaitx -mclzero -mpku 
-msgx -mrdpid -mgfni -mpconfig -mwbnoinvd -menqcmd -mavx512vp2intersect 
-mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni 
-mavxifma -mavxvnniint8 -mavxneconvert -mamx-fp16 -mraoint -mamx-complex 
-mavxvnniint16 -msm3 -msha512 -msm4 -mavx10.2 -mamx-avx512 -mamx-fp8 -mmovrs 
-mamx-movrs -mavx10v2aux" } */
+/* { dg-options "-O -std=c89 -pedantic-errors -march=k8 -msse4a -m3dnow -mavx 
-mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm 
-mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr 
-mxsaveopt -msha -mxsavec -mxsaves -mclflushopt -mclwb -mmwaitx -mclzero -mpku 
-msgx -mrdpid -mgfni -mpconfig -mwbnoinvd -menqcmd -mavx512vp2intersect 
-mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni 
-mavxifma -mavxvnniint8 -mavxneconvert -mamx-fp16 -mraoint -mamx-complex 
-mavxvnniint16 -msm3 -msha512 -msm4 -mavx10.2 -mamx-avx512 -mamx-fp8 -mmovrs 
-mamx-movrs -mavx10v2aux -macev1" } */
 
 #include <x86intrin.h>
 
diff --git a/gcc/testsuite/gcc.target/i386/sse-13.c 
b/gcc/testsuite/gcc.target/i386/sse-13.c
index a062aa903553..d55d4635876f 100644
--- a/gcc/testsuite/gcc.target/i386/sse-13.c
+++ b/gcc/testsuite/gcc.target/i386/sse-13.c
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O2 -Werror-implicit-function-declaration -march=k8 -msse4a 
-m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi 
-mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw 
-madx -mfxsr -mxsaveopt -msha -mxsavec -mxsaves -mclflushopt 
-mavx512vp2intersect -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni 
-mpconfig -mwbnoinvd -menqcmd -mserialize -mtsxldtrk -mamx-tile -mamx-int8 
-mamx-bf16 -mkl -mwidekl -mavxvnni -mavxifma -mavxvnniint8 -mavxneconvert 
-mcmpccxadd -mamx-fp16 -mprefetchi -mraoint -mamx-complex -mavxvnniint16 -msm3 
-msha512 -msm4 -mavx10.2 -mamx-avx512 -mamx-fp8 -mmovrs -mamx-movrs 
-mavx10v2aux" } */
+/* { dg-options "-O2 -Werror-implicit-function-declaration -march=k8 -msse4a 
-m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi 
-mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw 
-madx -mfxsr -mxsaveopt -msha -mxsavec -mxsaves -mclflushopt 
-mavx512vp2intersect -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni 
-mpconfig -mwbnoinvd -menqcmd -mserialize -mtsxldtrk -mamx-tile -mamx-int8 
-mamx-bf16 -mkl -mwidekl -mavxvnni -mavxifma -mavxvnniint8 -mavxneconvert 
-mcmpccxadd -mamx-fp16 -mprefetchi -mraoint -mamx-complex -mavxvnniint16 -msm3 
-msha512 -msm4 -mavx10.2 -mamx-avx512 -mamx-fp8 -mmovrs -mamx-movrs 
-mavx10v2aux -macev1" } */
 /* { dg-add-options bind_pic_locally } */
 
 #include <mm_malloc.h>
@@ -925,4 +925,9 @@
 #define __builtin_ia32_vunpackb256_mask(A, B, C, D) 
__builtin_ia32_vunpackb256_mask(A, 8, C, D)
 #define __builtin_ia32_vunpackb512_mask(A, B, C, D) 
__builtin_ia32_vunpackb512_mask(A, 8, C, D)
 
+/* acev1intrin.h */
+#ifdef __x86_64__
+#define __builtin_ia32_tilezero(A) __builtin_ia32_tilezero (1)
+#endif
+
 #include <x86intrin.h>
diff --git a/gcc/testsuite/gcc.target/i386/sse-14.c 
b/gcc/testsuite/gcc.target/i386/sse-14.c
index 67a02604da94..0a67ede60112 100644
--- a/gcc/testsuite/gcc.target/i386/sse-14.c
+++ b/gcc/testsuite/gcc.target/i386/sse-14.c
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
-/* { dg-options "-O0 -Werror-implicit-function-declaration -march=k8 -msse4a 
-m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi 
-mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw 
-madx -mfxsr -mxsaveopt -msha -mxsavec -mxsaves -mclflushopt -mclwb -mmwaitx 
-mclzero -mpku -msgx -mrdpid -mgfni -mpconfig -mwbnoinvd -menqcmd 
-mavx512vp2intersect -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 
-mkl -mwidekl -mavxvnni -mavxifma -mavxvnniint8 -mavxneconvert -mamx-fp16 
-mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 -mavx10.2 
-mamx-avx512 -mamx-fp8 -mmovrs -mamx-movrs -mavx10v2aux" } */
+/* { dg-options "-O0 -Werror-implicit-function-declaration -march=k8 -msse4a 
-m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi 
-mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw 
-madx -mfxsr -mxsaveopt -msha -mxsavec -mxsaves -mclflushopt -mclwb -mmwaitx 
-mclzero -mpku -msgx -mrdpid -mgfni -mpconfig -mwbnoinvd -menqcmd 
-mavx512vp2intersect -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 
-mkl -mwidekl -mavxvnni -mavxifma -mavxvnniint8 -mavxneconvert -mamx-fp16 
-mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 -mavx10.2 
-mamx-avx512 -mamx-fp8 -mmovrs -mamx-movrs -mavx10v2aux -macev1" } */
 /* { dg-add-options bind_pic_locally } */
 
 #include <mm_malloc.h>
@@ -24,6 +24,10 @@
   type _CONCAT(_,func) (int const I)                                   \
   { return func (imm); }
 
+#define test_0v(func, imm)                                             \
+  void _CONCAT(_,func) (int const I)                                   \
+  { func (imm); }
+
 #define test_1(func, type, op1_type, imm)                              \
   type _CONCAT(_,func) (op1_type A, int const I)                       \
   { return func (A, imm); }
@@ -1194,12 +1198,17 @@ test_3x (_mm_maskz_minmax_round_sh, __m128h, __mmask8, 
__m128h, __m128h, 100, 4)
 test_4x (_mm_mask_minmax_round_sh, __m128h, __m128h, __mmask8, __m128h, 
__m128h, 100, 4)
 
 /* avx10v2auxintrin.h */
-test_1(_mm_unpack_epi8, __m128i, __m128i, 10)
-test_3(_mm_mask_unpack_epi8, __m128i, __m128i, __mmask16, __m128i, 10)
-test_2(_mm_maskz_unpack_epi8, __m128i, __mmask16, __m128i, 10)
-test_1(_mm256_unpack_epi8, __m256i, __m256i, 10)
-test_3(_mm256_mask_unpack_epi8, __m256i, __m256i, __mmask32, __m256i, 10)
-test_2(_mm256_maskz_unpack_epi8, __m256i, __mmask32, __m256i, 10)
-test_1(_mm512_unpack_epi8, __m512i, __m512i, 10)
-test_3(_mm512_mask_unpack_epi8, __m512i, __m512i, __mmask64, __m512i, 10)
-test_2(_mm512_maskz_unpack_epi8, __m512i, __mmask64, __m512i, 10)
+test_1 (_mm_unpack_epi8, __m128i, __m128i, 10)
+test_3 (_mm_mask_unpack_epi8, __m128i, __m128i, __mmask16, __m128i, 10)
+test_2 (_mm_maskz_unpack_epi8, __m128i, __mmask16, __m128i, 10)
+test_1 (_mm256_unpack_epi8, __m256i, __m256i, 10)
+test_3 (_mm256_mask_unpack_epi8, __m256i, __m256i, __mmask32, __m256i, 10)
+test_2 (_mm256_maskz_unpack_epi8, __m256i, __mmask32, __m256i, 10)
+test_1 (_mm512_unpack_epi8, __m512i, __m512i, 10)
+test_3 (_mm512_mask_unpack_epi8, __m512i, __m512i, __mmask64, __m512i, 10)
+test_2 (_mm512_maskz_unpack_epi8, __m512i, __mmask64, __m512i, 10)
+
+/* acev1intrin.h */
+#ifdef __x86_64__
+test_0v (_tile_ace_zero, 1)
+#endif
diff --git a/gcc/testsuite/gcc.target/i386/sse-22.c 
b/gcc/testsuite/gcc.target/i386/sse-22.c
index 211599c4e0b4..e615b2b135e6 100644
--- a/gcc/testsuite/gcc.target/i386/sse-22.c
+++ b/gcc/testsuite/gcc.target/i386/sse-22.c
@@ -26,6 +26,10 @@
   type _CONCAT(_,func) (int const I)                                   \
   { return func (imm); }
 
+#define test_0v(func, imm)                                             \
+  void _CONCAT(_,func) (int const I)                                   \
+  { func (imm); }
+
 #define test_1(func, type, op1_type, imm)                              \
   type _CONCAT(_,func) (op1_type A, int const I)                       \
   { return func (A, imm); }
@@ -103,7 +107,7 @@
 
 
 #ifndef DIFFERENT_PRAGMAS
-#pragma GCC target 
("sse4a,3dnow,avx,avx2,fma4,xop,aes,pclmul,popcnt,abm,lzcnt,bmi,bmi2,tbm,lwp,fsgsbase,rdrnd,f16c,rtm,rdseed,prfchw,adx,fxsr,xsaveopt,sha,gfni,avx512vp2intersect,serialize,tsxldtrk,amx-tile,amx-int8,amx-bf16,kl,widekl,avxvnni,avxifma,avxvnniint8,avxneconvert,amx-fp16,raoint,amx-complex,avxvnniint16,sm3,sha512,sm4,avx10.2,amx-avx512,amx-fp8,movrs,amx-movrs,avx10v2aux")
+#pragma GCC target 
("sse4a,3dnow,avx,avx2,fma4,xop,aes,pclmul,popcnt,abm,lzcnt,bmi,bmi2,tbm,lwp,fsgsbase,rdrnd,f16c,rtm,rdseed,prfchw,adx,fxsr,xsaveopt,sha,gfni,avx512vp2intersect,serialize,tsxldtrk,amx-tile,amx-int8,amx-bf16,kl,widekl,avxvnni,avxifma,avxvnniint8,avxneconvert,amx-fp16,raoint,amx-complex,avxvnniint16,sm3,sha512,sm4,avx10.2,amx-avx512,amx-fp8,movrs,amx-movrs,avx10v2aux,acev1")
 #endif
 
 /* Following intrinsics require immediate arguments.  They
@@ -220,7 +224,7 @@ test_4 (_mm_cmpestrz, int, __m128i, int, __m128i, int, 1)
 
 /* immintrin.h (AVX/AVX2/RDRND/FSGSBASE/F16C/RTM/AVX512F/SHA) */
 #ifdef DIFFERENT_PRAGMAS
-#pragma GCC target 
("avx,avx2,rdrnd,fsgsbase,f16c,rtm,sha,gfni,avx512vp2intersect,serialize,tsxldtrk,amx-tile,amx-int8,amx-bf16,kl,widekl,avxvnni,avxifma,avxvnniint8,avxneconvert,amx-fp16,raoint,amx-complex,avxvnniint16,sm3,sha512,sm4,avx10.2,amx-avx512,amx-fp8,movrs,amx-movrs,avx10v2aux")
+#pragma GCC target 
("avx,avx2,rdrnd,fsgsbase,f16c,rtm,sha,gfni,avx512vp2intersect,serialize,tsxldtrk,amx-tile,amx-int8,amx-bf16,kl,widekl,avxvnni,avxifma,avxvnniint8,avxneconvert,amx-fp16,raoint,amx-complex,avxvnniint16,sm3,sha512,sm4,avx10.2,amx-avx512,amx-fp8,movrs,amx-movrs,avx10v2aux,acev1")
 #endif
 #include <immintrin.h>
 test_1 (_cvtss_sh, unsigned short, float, 1)
@@ -1235,12 +1239,17 @@ test_3x (_mm_maskz_minmax_round_sh, __m128h, __mmask8, 
__m128h, __m128h, 100, 4)
 test_4x (_mm_mask_minmax_round_sh, __m128h, __m128h, __mmask8, __m128h, 
__m128h, 100, 4)
 
 /* avx10v2auxintrin.h */
-test_1(_mm_unpack_epi8, __m128i, __m128i, 10)
-test_3(_mm_mask_unpack_epi8, __m128i, __m128i, __mmask16, __m128i, 10)
-test_2(_mm_maskz_unpack_epi8, __m128i, __mmask16, __m128i, 10)
-test_1(_mm256_unpack_epi8, __m256i, __m256i, 10)
-test_3(_mm256_mask_unpack_epi8, __m256i, __m256i, __mmask32, __m256i, 10)
-test_2(_mm256_maskz_unpack_epi8, __m256i, __mmask32, __m256i, 10)
-test_1(_mm512_unpack_epi8, __m512i, __m512i, 10)
-test_3(_mm512_mask_unpack_epi8, __m512i, __m512i, __mmask64, __m512i, 10)
-test_2(_mm512_maskz_unpack_epi8, __m512i, __mmask64, __m512i, 10)
+test_1 (_mm_unpack_epi8, __m128i, __m128i, 10)
+test_3 (_mm_mask_unpack_epi8, __m128i, __m128i, __mmask16, __m128i, 10)
+test_2 (_mm_maskz_unpack_epi8, __m128i, __mmask16, __m128i, 10)
+test_1 (_mm256_unpack_epi8, __m256i, __m256i, 10)
+test_3 (_mm256_mask_unpack_epi8, __m256i, __m256i, __mmask32, __m256i, 10)
+test_2 (_mm256_maskz_unpack_epi8, __m256i, __mmask32, __m256i, 10)
+test_1 (_mm512_unpack_epi8, __m512i, __m512i, 10)
+test_3 (_mm512_mask_unpack_epi8, __m512i, __m512i, __mmask64, __m512i, 10)
+test_2 (_mm512_maskz_unpack_epi8, __m512i, __mmask64, __m512i, 10)
+
+/* acev1intrin.h */
+#ifdef __x86_64__
+test_0v (_tile_ace_zero, 1)
+#endif
diff --git a/gcc/testsuite/gcc.target/i386/sse-23.c 
b/gcc/testsuite/gcc.target/i386/sse-23.c
index 867dc05bf358..9d5ef61e9ee2 100644
--- a/gcc/testsuite/gcc.target/i386/sse-23.c
+++ b/gcc/testsuite/gcc.target/i386/sse-23.c
@@ -900,6 +900,11 @@
 #define __builtin_ia32_vunpackb256_mask(A, B, C, D) 
__builtin_ia32_vunpackb256_mask(A, 8, C, D)
 #define __builtin_ia32_vunpackb512_mask(A, B, C, D) 
__builtin_ia32_vunpackb512_mask(A, 8, C, D)
 
-#pragma GCC target 
("sse4a,3dnow,avx,avx2,fma4,xop,aes,pclmul,popcnt,abm,lzcnt,bmi,bmi2,tbm,lwp,fsgsbase,rdrnd,f16c,fma,rtm,rdseed,prfchw,adx,fxsr,xsaveopt,sha,xsavec,xsaves,clflushopt,clwb,mwaitx,clzero,pku,sgx,rdpid,gfni,vpclmulqdq,pconfig,wbnoinvd,enqcmd,avx512vp2intersect,serialize,tsxldtrk,amx-tile,amx-int8,amx-bf16,kl,widekl,avxvnni,avxifma,avxvnniint8,avxneconvert,cmpccxadd,amx-fp16,prefetchi,raoint,amx-complex,avxvnniint16,sm3,sha512,sm4,avx10.2,amx-avx512,amx-fp8,movrs,amx-movrs,avx10v2aux")
+/* acev1intrin.h */
+#ifdef __x86_64__
+#define __builtin_ia32_tilezero(A) __builtin_ia32_tilezero (1)
+#endif
+
+#pragma GCC target 
("sse4a,3dnow,avx,avx2,fma4,xop,aes,pclmul,popcnt,abm,lzcnt,bmi,bmi2,tbm,lwp,fsgsbase,rdrnd,f16c,fma,rtm,rdseed,prfchw,adx,fxsr,xsaveopt,sha,xsavec,xsaves,clflushopt,clwb,mwaitx,clzero,pku,sgx,rdpid,gfni,vpclmulqdq,pconfig,wbnoinvd,enqcmd,avx512vp2intersect,serialize,tsxldtrk,amx-tile,amx-int8,amx-bf16,kl,widekl,avxvnni,avxifma,avxvnniint8,avxneconvert,cmpccxadd,amx-fp16,prefetchi,raoint,amx-complex,avxvnniint16,sm3,sha512,sm4,avx10.2,amx-avx512,amx-fp8,movrs,amx-movrs,avx10v2aux,acev1")
 
 #include <x86intrin.h>

Reply via email to