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>