Hi all, I would like to backport this patch to GCC 12 release branch as machines with the version of default GCC is 12.x (which is always using newer kernels), if the patch is not backported, the amx tests will always fail.
Ok for backport? BRs, Haochen > -----Original Message----- > From: Uros Bizjak <ubiz...@gmail.com> > Sent: Tuesday, June 21, 2022 10:53 PM > To: Jiang, Haochen <haochen.ji...@intel.com> > Cc: gcc-patches@gcc.gnu.org; Liu, Hongtao <hongtao....@intel.com> > Subject: Re: [PATCH] i386: Add syscall to enable AMX for latest kernels > > On Tue, Jun 21, 2022 at 9:41 AM Jiang, Haochen <haochen.ji...@intel.com> > wrote: > > > > > -----Original Message----- > > > From: Uros Bizjak <ubiz...@gmail.com> > > > Sent: Tuesday, June 21, 2022 3:06 PM > > > To: Jiang, Haochen <haochen.ji...@intel.com> > > > Cc: gcc-patches@gcc.gnu.org; Liu, Hongtao <hongtao....@intel.com> > > > Subject: Re: [PATCH] i386: Add syscall to enable AMX for latest > > > kernels > > > > > > On Tue, Jun 21, 2022 at 4:23 AM Jiang, Haochen > > > <haochen.ji...@intel.com> > > > wrote: > > > > > > > > > -----Original Message----- > > > > > From: Uros Bizjak <ubiz...@gmail.com> > > > > > Sent: Monday, June 20, 2022 10:54 PM > > > > > To: Jiang, Haochen <haochen.ji...@intel.com> > > > > > Cc: gcc-patches@gcc.gnu.org; Liu, Hongtao > > > > > <hongtao....@intel.com> > > > > > Subject: Re: [PATCH] i386: Add syscall to enable AMX for latest > > > > > kernels > > > > > > > > > > On Mon, Jun 20, 2022 at 10:04 AM Haochen Jiang > > > > > <haochen.ji...@intel.com> > > > > > wrote: > > > > > > > > > > > > From: "Jiang, Haochen" <haochen.ji...@intel.com> > > > > > > > > > > > > Hi all, > > > > > > > > > > > > We need syscall to enable AMX for kernels>=5.4. It is missing > > > > > > in current amx tests, which will cause test fail. > > > > > > > > > > So this new code is only valid for linux & co? > > > > > > > > Thanks for reminding me for that, I only test on linux since the > > > > header file is > > > only in linux. > > > > > > > > Just updated a patch wrapping with a macro not to change the > > > > behavior on > > > windows. > > > > > > I think you want __linux__ there, not __unix__. > > > > Fixed with __linux__. > > OK. > > Thanks, > Uros. > > > > > Thx, > > Haochen > > > > > > > > Uros. > > > > > > > > > > > Regtested on x86_64-pc-linux-gnu. > > > > > > > > Thx, > > > > Haochen > > > > > > > > > > Uros. > > > > > > > > > > > > > > > > > This patch aims to add them to fix this bug. > > > > > > > > > > > > BRs, > > > > > > Haochen > > > > > > > > > > > > gcc/testsuite/ChangeLog: > > > > > > > > > > > > * gcc.target/i386/amx-check.h (request_perm_xtile_data): > > > > > > New function to check if AMX is usable and enable AMX. > > > > > > (main): Run test if AMX is usable. > > > > > > --- > > > > > > gcc/testsuite/gcc.target/i386/amx-check.h | 24 > > > > > > +++++++++++++++++++++++ > > > > > > 1 file changed, 24 insertions(+) > > > > > > > > > > > > diff --git a/gcc/testsuite/gcc.target/i386/amx-check.h > > > > > > b/gcc/testsuite/gcc.target/i386/amx-check.h > > > > > > index 434b0e59703..92ed8669304 100644 > > > > > > --- a/gcc/testsuite/gcc.target/i386/amx-check.h > > > > > > +++ b/gcc/testsuite/gcc.target/i386/amx-check.h > > > > > > @@ -4,11 +4,22 @@ > > > > > > #include <stdlib.h> > > > > > > #include <string.h> > > > > > > #include <stdint.h> > > > > > > +#include <unistd.h> > > > > > > +#include <sys/syscall.h> > > > > > > #ifdef DEBUG > > > > > > #include <stdio.h> > > > > > > #endif > > > > > > #include "cpuid.h" > > > > > > > > > > > > +#define XFEATURE_XTILECFG 17 > > > > > > +#define XFEATURE_XTILEDATA 18 > > > > > > +#define XFEATURE_MASK_XTILECFG (1 << XFEATURE_XTILECFG) > > > > > > +#define XFEATURE_MASK_XTILEDATA (1 << XFEATURE_XTILEDATA) > > > > > > +#define XFEATURE_MASK_XTILE (XFEATURE_MASK_XTILECFG | > > > > > XFEATURE_MASK_XTILEDATA) > > > > > > + > > > > > > +#define ARCH_GET_XCOMP_PERM 0x1022 > > > > > > +#define ARCH_REQ_XCOMP_PERM 0x1023 > > > > > > + > > > > > > /* TODO: The tmm emulation is temporary for current > > > > > > AMX implementation with no tmm regclass, should > > > > > > be changed in the future. */ @@ -44,6 +55,18 @@ typedef > > > > > > struct __tile > > > > > > /* Stride (colum width in byte) used for tileload/store */ > > > > > > #define _STRIDE 64 > > > > > > > > > > > > +/* We need syscall to use amx functions */ int > > > > > > +request_perm_xtile_data() { > > > > > > + unsigned long bitmask; > > > > > > + > > > > > > + if (syscall (SYS_arch_prctl, ARCH_REQ_XCOMP_PERM, > > > > > XFEATURE_XTILEDATA) || > > > > > > + syscall (SYS_arch_prctl, ARCH_GET_XCOMP_PERM, &bitmask)) > > > > > > + return 0; > > > > > > + > > > > > > + return (bitmask & XFEATURE_MASK_XTILE) != 0; } > > > > > > + > > > > > > /* Initialize tile config by setting all tmm size to 16x64 */ > > > > > > void init_tile_config (__tilecfg_u *dst) { @@ -186,6 +209,7 > > > > > > @@ main () #ifdef AMX_BF16 > > > > > > && __builtin_cpu_supports ("amx-bf16") #endif > > > > > > + && request_perm_xtile_data () > > > > > > ) > > > > > > { > > > > > > DO_TEST (); > > > > > > -- > > > > > > 2.18.2 > > > > > >