public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH] i386: Add syscall to enable AMX for latest kernels
@ 2022-06-20  8:04 Haochen Jiang
  2022-06-20 14:53 ` Uros Bizjak
  0 siblings, 1 reply; 8+ messages in thread
From: Haochen Jiang @ 2022-06-20  8:04 UTC (permalink / raw)
  To: gcc-patches; +Cc: ubizjak, hongtao.liu, Jiang, Haochen

From: "Jiang, Haochen" <haochen.jiang@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.

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


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] i386: Add syscall to enable AMX for latest kernels
  2022-06-20  8:04 [PATCH] i386: Add syscall to enable AMX for latest kernels Haochen Jiang
@ 2022-06-20 14:53 ` Uros Bizjak
  2022-06-21  2:23   ` Jiang, Haochen
  0 siblings, 1 reply; 8+ messages in thread
From: Uros Bizjak @ 2022-06-20 14:53 UTC (permalink / raw)
  To: Haochen Jiang; +Cc: gcc-patches, Hongtao Liu

On Mon, Jun 20, 2022 at 10:04 AM Haochen Jiang <haochen.jiang@intel.com> wrote:
>
> From: "Jiang, Haochen" <haochen.jiang@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?

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
>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* RE: [PATCH] i386: Add syscall to enable AMX for latest kernels
  2022-06-20 14:53 ` Uros Bizjak
@ 2022-06-21  2:23   ` Jiang, Haochen
  2022-06-21  7:06     ` Uros Bizjak
  0 siblings, 1 reply; 8+ messages in thread
From: Jiang, Haochen @ 2022-06-21  2:23 UTC (permalink / raw)
  To: Uros Bizjak; +Cc: gcc-patches, Liu, Hongtao

[-- Attachment #1: Type: text/plain, Size: 3262 bytes --]

> -----Original Message-----
> From: Uros Bizjak <ubizjak@gmail.com>
> Sent: Monday, June 20, 2022 10:54 PM
> To: Jiang, Haochen <haochen.jiang@intel.com>
> Cc: gcc-patches@gcc.gnu.org; Liu, Hongtao <hongtao.liu@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.jiang@intel.com>
> wrote:
> >
> > From: "Jiang, Haochen" <haochen.jiang@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.

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
> >

[-- Attachment #2: 0001-i386-Add-syscall-to-enable-AMX-for-latest-kernels.patch --]
[-- Type: application/octet-stream, Size: 2201 bytes --]

From 7b2ad89821e8c318f9c592a339389aa60325ad6b Mon Sep 17 00:00:00 2001
From: Haochen Jiang <haochen.jiang@intel.com>
Date: Thu, 16 Jun 2022 00:15:53 -0700
Subject: [PATCH] i386: Add syscall to enable AMX for latest kernels

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 | 30 +++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/gcc/testsuite/gcc.target/i386/amx-check.h b/gcc/testsuite/gcc.target/i386/amx-check.h
index 434b0e59703..694b25ed2eb 100644
--- a/gcc/testsuite/gcc.target/i386/amx-check.h
+++ b/gcc/testsuite/gcc.target/i386/amx-check.h
@@ -4,11 +4,24 @@
 #include <stdlib.h>
 #include <string.h>
 #include <stdint.h>
+#include <unistd.h>
+#ifdef __unix__
+#include <sys/syscall.h>
+#endif
 #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 +57,20 @@ typedef struct __tile
 /* Stride (colum width in byte) used for tileload/store */
 #define _STRIDE 64
 
+#ifdef __unix__
+/* 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;
+}
+#endif
+
 /* Initialize tile config by setting all tmm size to 16x64 */
 void init_tile_config (__tilecfg_u *dst)
 {
@@ -185,6 +212,9 @@ main ()
 #endif
 #ifdef AMX_BF16
       && __builtin_cpu_supports ("amx-bf16")
+#endif
+#ifdef __unix__
+      && request_perm_xtile_data ()
 #endif
       )
     {
-- 
2.18.2


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] i386: Add syscall to enable AMX for latest kernels
  2022-06-21  2:23   ` Jiang, Haochen
@ 2022-06-21  7:06     ` Uros Bizjak
  2022-06-21  7:41       ` Jiang, Haochen
  0 siblings, 1 reply; 8+ messages in thread
From: Uros Bizjak @ 2022-06-21  7:06 UTC (permalink / raw)
  To: Jiang, Haochen; +Cc: gcc-patches, Liu, Hongtao

On Tue, Jun 21, 2022 at 4:23 AM Jiang, Haochen <haochen.jiang@intel.com> wrote:
>
> > -----Original Message-----
> > From: Uros Bizjak <ubizjak@gmail.com>
> > Sent: Monday, June 20, 2022 10:54 PM
> > To: Jiang, Haochen <haochen.jiang@intel.com>
> > Cc: gcc-patches@gcc.gnu.org; Liu, Hongtao <hongtao.liu@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.jiang@intel.com>
> > wrote:
> > >
> > > From: "Jiang, Haochen" <haochen.jiang@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__.

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
> > >

^ permalink raw reply	[flat|nested] 8+ messages in thread

* RE: [PATCH] i386: Add syscall to enable AMX for latest kernels
  2022-06-21  7:06     ` Uros Bizjak
@ 2022-06-21  7:41       ` Jiang, Haochen
  2022-06-21 14:52         ` Uros Bizjak
  0 siblings, 1 reply; 8+ messages in thread
From: Jiang, Haochen @ 2022-06-21  7:41 UTC (permalink / raw)
  To: Uros Bizjak; +Cc: gcc-patches, Liu, Hongtao

[-- Attachment #1: Type: text/plain, Size: 4190 bytes --]

> -----Original Message-----
> From: Uros Bizjak <ubizjak@gmail.com>
> Sent: Tuesday, June 21, 2022 3:06 PM
> To: Jiang, Haochen <haochen.jiang@intel.com>
> Cc: gcc-patches@gcc.gnu.org; Liu, Hongtao <hongtao.liu@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.jiang@intel.com>
> wrote:
> >
> > > -----Original Message-----
> > > From: Uros Bizjak <ubizjak@gmail.com>
> > > Sent: Monday, June 20, 2022 10:54 PM
> > > To: Jiang, Haochen <haochen.jiang@intel.com>
> > > Cc: gcc-patches@gcc.gnu.org; Liu, Hongtao <hongtao.liu@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.jiang@intel.com>
> > > wrote:
> > > >
> > > > From: "Jiang, Haochen" <haochen.jiang@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__.

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
> > > >

[-- Attachment #2: 0001-i386-Add-syscall-to-enable-AMX-for-latest-kernels.patch --]
[-- Type: application/octet-stream, Size: 2204 bytes --]

From cad7056f60bc0db2ec1d5c06bbe8b9493e02a3a4 Mon Sep 17 00:00:00 2001
From: Haochen Jiang <haochen.jiang@intel.com>
Date: Thu, 16 Jun 2022 00:15:53 -0700
Subject: [PATCH] i386: Add syscall to enable AMX for latest kernels

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 | 30 +++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/gcc/testsuite/gcc.target/i386/amx-check.h b/gcc/testsuite/gcc.target/i386/amx-check.h
index 434b0e59703..6fff5ff4631 100644
--- a/gcc/testsuite/gcc.target/i386/amx-check.h
+++ b/gcc/testsuite/gcc.target/i386/amx-check.h
@@ -4,11 +4,24 @@
 #include <stdlib.h>
 #include <string.h>
 #include <stdint.h>
+#include <unistd.h>
+#ifdef __linux__
+#include <sys/syscall.h>
+#endif
 #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 +57,20 @@ typedef struct __tile
 /* Stride (colum width in byte) used for tileload/store */
 #define _STRIDE 64
 
+#ifdef __linux__
+/* 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;
+}
+#endif
+
 /* Initialize tile config by setting all tmm size to 16x64 */
 void init_tile_config (__tilecfg_u *dst)
 {
@@ -185,6 +212,9 @@ main ()
 #endif
 #ifdef AMX_BF16
       && __builtin_cpu_supports ("amx-bf16")
+#endif
+#ifdef __linux__
+      && request_perm_xtile_data ()
 #endif
       )
     {
-- 
2.18.2


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] i386: Add syscall to enable AMX for latest kernels
  2022-06-21  7:41       ` Jiang, Haochen
@ 2022-06-21 14:52         ` Uros Bizjak
  2022-09-22  6:23           ` Jiang, Haochen
  0 siblings, 1 reply; 8+ messages in thread
From: Uros Bizjak @ 2022-06-21 14:52 UTC (permalink / raw)
  To: Jiang, Haochen; +Cc: gcc-patches, Liu, Hongtao

On Tue, Jun 21, 2022 at 9:41 AM Jiang, Haochen <haochen.jiang@intel.com> wrote:
>
> > -----Original Message-----
> > From: Uros Bizjak <ubizjak@gmail.com>
> > Sent: Tuesday, June 21, 2022 3:06 PM
> > To: Jiang, Haochen <haochen.jiang@intel.com>
> > Cc: gcc-patches@gcc.gnu.org; Liu, Hongtao <hongtao.liu@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.jiang@intel.com>
> > wrote:
> > >
> > > > -----Original Message-----
> > > > From: Uros Bizjak <ubizjak@gmail.com>
> > > > Sent: Monday, June 20, 2022 10:54 PM
> > > > To: Jiang, Haochen <haochen.jiang@intel.com>
> > > > Cc: gcc-patches@gcc.gnu.org; Liu, Hongtao <hongtao.liu@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.jiang@intel.com>
> > > > wrote:
> > > > >
> > > > > From: "Jiang, Haochen" <haochen.jiang@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
> > > > >

^ permalink raw reply	[flat|nested] 8+ messages in thread

* RE: [PATCH] i386: Add syscall to enable AMX for latest kernels
  2022-06-21 14:52         ` Uros Bizjak
@ 2022-09-22  6:23           ` Jiang, Haochen
  2022-09-22  6:23             ` Liu, Hongtao
  0 siblings, 1 reply; 8+ messages in thread
From: Jiang, Haochen @ 2022-09-22  6:23 UTC (permalink / raw)
  To: Uros Bizjak; +Cc: gcc-patches, Liu, Hongtao

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 <ubizjak@gmail.com>
> Sent: Tuesday, June 21, 2022 10:53 PM
> To: Jiang, Haochen <haochen.jiang@intel.com>
> Cc: gcc-patches@gcc.gnu.org; Liu, Hongtao <hongtao.liu@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.jiang@intel.com>
> wrote:
> >
> > > -----Original Message-----
> > > From: Uros Bizjak <ubizjak@gmail.com>
> > > Sent: Tuesday, June 21, 2022 3:06 PM
> > > To: Jiang, Haochen <haochen.jiang@intel.com>
> > > Cc: gcc-patches@gcc.gnu.org; Liu, Hongtao <hongtao.liu@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.jiang@intel.com>
> > > wrote:
> > > >
> > > > > -----Original Message-----
> > > > > From: Uros Bizjak <ubizjak@gmail.com>
> > > > > Sent: Monday, June 20, 2022 10:54 PM
> > > > > To: Jiang, Haochen <haochen.jiang@intel.com>
> > > > > Cc: gcc-patches@gcc.gnu.org; Liu, Hongtao
> > > > > <hongtao.liu@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.jiang@intel.com>
> > > > > wrote:
> > > > > >
> > > > > > From: "Jiang, Haochen" <haochen.jiang@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
> > > > > >

^ permalink raw reply	[flat|nested] 8+ messages in thread

* RE: [PATCH] i386: Add syscall to enable AMX for latest kernels
  2022-09-22  6:23           ` Jiang, Haochen
@ 2022-09-22  6:23             ` Liu, Hongtao
  0 siblings, 0 replies; 8+ messages in thread
From: Liu, Hongtao @ 2022-09-22  6:23 UTC (permalink / raw)
  To: Jiang, Haochen, Uros Bizjak; +Cc: gcc-patches



> -----Original Message-----
> From: Jiang, Haochen <haochen.jiang@intel.com>
> Sent: Thursday, September 22, 2022 2:23 PM
> To: Uros Bizjak <ubizjak@gmail.com>
> Cc: gcc-patches@gcc.gnu.org; Liu, Hongtao <hongtao.liu@intel.com>
> Subject: RE: [PATCH] i386: Add syscall to enable AMX for latest kernels
> 
> 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?
Ok.
> 
> BRs,
> Haochen
> 
> > -----Original Message-----
> > From: Uros Bizjak <ubizjak@gmail.com>
> > Sent: Tuesday, June 21, 2022 10:53 PM
> > To: Jiang, Haochen <haochen.jiang@intel.com>
> > Cc: gcc-patches@gcc.gnu.org; Liu, Hongtao <hongtao.liu@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.jiang@intel.com>
> > wrote:
> > >
> > > > -----Original Message-----
> > > > From: Uros Bizjak <ubizjak@gmail.com>
> > > > Sent: Tuesday, June 21, 2022 3:06 PM
> > > > To: Jiang, Haochen <haochen.jiang@intel.com>
> > > > Cc: gcc-patches@gcc.gnu.org; Liu, Hongtao <hongtao.liu@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.jiang@intel.com>
> > > > wrote:
> > > > >
> > > > > > -----Original Message-----
> > > > > > From: Uros Bizjak <ubizjak@gmail.com>
> > > > > > Sent: Monday, June 20, 2022 10:54 PM
> > > > > > To: Jiang, Haochen <haochen.jiang@intel.com>
> > > > > > Cc: gcc-patches@gcc.gnu.org; Liu, Hongtao
> > > > > > <hongtao.liu@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.jiang@intel.com>
> > > > > > wrote:
> > > > > > >
> > > > > > > From: "Jiang, Haochen" <haochen.jiang@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
> > > > > > >

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2022-09-22  6:23 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-20  8:04 [PATCH] i386: Add syscall to enable AMX for latest kernels Haochen Jiang
2022-06-20 14:53 ` Uros Bizjak
2022-06-21  2:23   ` Jiang, Haochen
2022-06-21  7:06     ` Uros Bizjak
2022-06-21  7:41       ` Jiang, Haochen
2022-06-21 14:52         ` Uros Bizjak
2022-09-22  6:23           ` Jiang, Haochen
2022-09-22  6:23             ` Liu, Hongtao

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).