AMD General

Hi,

> gcc/testsuite/ChangeLog:
>
>         * gcc.target/i386/acev1-1.c: Add new tests.
>         * gcc.target/i386/avx512f-helper.h: Modify include logic to
>         reuse 512 related union.
>         * lib/target-supports.exp: Check for ACEv1.
>         * gcc.target/i386/ace-check.h: Add function entry for
>         ACE execution test.
>         * gcc.target/i386/ace-helper.h: Add helper function file.
>         * gcc.target/i386/acev1-bsrinit-2.c: New test.
>         * gcc.target/i386/acev1-bsrmovf-2.c: Ditto.
>         * gcc.target/i386/acev1-bsrmovh-2.c: Ditto.
>         * gcc.target/i386/acev1-bsrmovl-2.c: Ditto.
>
[...]
> diff --git a/gcc/testsuite/gcc.target/i386/ace-check.h
> b/gcc/testsuite/gcc.target/i386/ace-check.h
> new file mode 100644
> index 00000000000..e9ea67ce3dd
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/i386/ace-check.h
> @@ -0,0 +1,84 @@
> +#ifndef ACE_CHECK_H_INCLUDED
> +#define ACE_CHECK_H_INCLUDED
> +#include "cpuid.h"
> +#include "m512-check.h"
> +
> +typedef struct __tile_config
> +{
> +  unsigned char palette_id;
> +  unsigned char reserved[63];
> +} __tilecfg;
> +
> +typedef union __tile
> +{
> +  unsigned char buf[1024];
> +  float a[256];
> +  int b[256];
> +} __tile;
> +
> +typedef struct __bsr
> +{
> +  unsigned char buf[128];
> +} __bsr;
> +
> +void init_bsr (__bsr *bsr, union512i_ub *src1, union512i_ub *src2)
> +{
> +  int i;
> +  for (i = 0; i < 64; i++)
> +    {
> +      bsr->buf[i] = 0x7f;
> +      src1->a[i] = 0x7f;
> +    }
> +  for (i = 0; i < 64; i++)
> +    {
> +      bsr->buf[i + 64] = 0x7f;
> +      src2->a[i] = 0x7f;
> +    }
> +}
> +
> +void fill_bsr (__bsr *bsr, union512i_ub* src1, union512i_ub* src2)
> +{
> +  int i;
> +  for (i = 0; i < 64; i++)
> +    {
> +      bsr->buf[i] = 127 + i;
> +      src1->a[i] = 127 + i;
> +    }
> +  for (i = 0; i < 64; i++)
> +    {
> +      bsr->buf[i + 64] = 127 - i;
> +      src2->a[i] = 127 - i;
> +    }
> +}
> +
> +#ifndef DO_TEST
> +#define DO_TEST do_test
> +static void test_ace (void);
> +__attribute__ ((noinline))
> +static void
> +do_test (void)
> +{
> +  test_ace ();
> +}
> +#endif
> +
> +int
> +main ()
> +{
> +  /* Check cpu support for ACE */
> +  if (__builtin_cpu_supports ("acev1"))

Here also, we need to check for ACE os_support right ?

Thanks,
Dipesh
> +    {
> +      DO_TEST ();
> +#ifdef DEBUG
> +      printf ("PASSED\n");
> +#endif
> +    }
> +#ifdef DEBUG
> +  else
> +    printf ("SKIPPED\n");
> +#endif
> +
> +  return 0;
> +}
> +
> +#endif
> diff --git a/gcc/testsuite/gcc.target/i386/ace-helper.h
> b/gcc/testsuite/gcc.target/i386/ace-helper.h
> new file mode 100644
> index 00000000000..8b4611e6e3f
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/i386/ace-helper.h
> @@ -0,0 +1,7 @@
> +#ifndef ACE_HELPER_H_INCLUDED
> +#define ACE_HELPER_H_INCLUDED
> +#define ACE
> +#define AVX512FP16
> +#define AVX512BF16
> +#include "avx512f-helper.h"
> +#endif
> diff --git a/gcc/testsuite/gcc.target/i386/acev1-1.c
> b/gcc/testsuite/gcc.target/i386/acev1-1.c
> index 9165f571ef9..daff9278363 100644
> --- a/gcc/testsuite/gcc.target/i386/acev1-1.c
> +++ b/gcc/testsuite/gcc.target/i386/acev1-1.c
> @@ -4,9 +4,14 @@
>  /* { dg-final { scan-assembler-times "sttilecfg\[ \t]" 1 } } */
>  /* { dg-final { scan-assembler-times "tilerelease" 1 } } */
>  /* { dg-final { scan-assembler-times "tilezero\[ \t]" 1 } } */
> +/* { dg-final { scan-assembler-times "bsrinit\[ \t]" 1 } } */
> +/* { dg-final { scan-assembler-times "bsrmovf\[ \t]" 1 } } */
> +/* { dg-final { scan-assembler-times "bsrmovl\[ \t]" 2 } } */
> +/* { dg-final { scan-assembler-times "bsrmovh\[ \t]" 2 } } */
>  #include <immintrin.h>

Reply via email to