avx-os-support.h: New.
* gcc.target/i386/avx-os-support.h: New. * gcc.target/i386/avx-check.h: Include avx-os-support.h (main): Check avx_os_support before the test is run. * gcc.target/i386/aes-avx-check.h: Ditto. * gcc.target/i386/pclmul-avx-check.h: Ditto. From-SVN: r176829
This commit is contained in:
parent
2fe83a0c9f
commit
5019a14eee
|
@ -1,3 +1,11 @@
|
|||
2011-07-27 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
* gcc.target/i386/avx-os-support.h: New.
|
||||
* gcc.target/i386/avx-check.h: Include avx-os-support.h
|
||||
(main): Check avx_os_support before the test is run.
|
||||
* gcc.target/i386/aes-avx-check.h: Ditto.
|
||||
* gcc.target/i386/pclmul-avx-check.h: Ditto.
|
||||
|
||||
2011-07-27 Kai Tietz <ktietz@redhat.com>
|
||||
|
||||
* gcc.target/i386/aggregate-ret3.c: New test.
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#endif
|
||||
#include <stdlib.h>
|
||||
#include "cpuid.h"
|
||||
#include "avx-os-support.h"
|
||||
|
||||
static void aes_avx_test (void);
|
||||
|
||||
|
@ -22,8 +23,9 @@ main ()
|
|||
return 0;
|
||||
|
||||
/* Run AES + AVX test only if host has AES + AVX support. */
|
||||
if ((ecx & (bit_AVX | bit_OSXSAVE | bit_AES))
|
||||
== (bit_AVX | bit_OSXSAVE | bit_AES))
|
||||
if (((ecx & (bit_AVX | bit_OSXSAVE | bit_AES))
|
||||
== (bit_AVX | bit_OSXSAVE | bit_AES))
|
||||
&& avx_os_support ())
|
||||
{
|
||||
do_test ();
|
||||
#ifdef DEBUG
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#include <stdlib.h>
|
||||
#include "cpuid.h"
|
||||
#include "m256-check.h"
|
||||
#include "avx-os-support.h"
|
||||
|
||||
static void avx_test (void);
|
||||
|
||||
|
@ -20,7 +21,8 @@ main ()
|
|||
return 0;
|
||||
|
||||
/* Run AVX test only if host has AVX support. */
|
||||
if ((ecx & (bit_AVX | bit_OSXSAVE)) == (bit_AVX | bit_OSXSAVE))
|
||||
if (((ecx & (bit_AVX | bit_OSXSAVE)) == (bit_AVX | bit_OSXSAVE))
|
||||
&& avx_os_support ())
|
||||
{
|
||||
do_test ();
|
||||
#ifdef DEBUG
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
/* Check if the OS supports executing AVX instructions. */
|
||||
|
||||
static int
|
||||
avx_os_support (void)
|
||||
{
|
||||
unsigned int eax, edx;
|
||||
|
||||
__asm__ ("xgetbv" : "=a" (eax), "=d" (edx) : "c" (0));
|
||||
return (eax & 6) == 6;
|
||||
}
|
|
@ -3,6 +3,7 @@
|
|||
#endif
|
||||
#include <stdlib.h>
|
||||
#include "cpuid.h"
|
||||
#include "avx-os-support.h"
|
||||
|
||||
static void pclmul_avx_test (void);
|
||||
|
||||
|
@ -22,8 +23,9 @@ main ()
|
|||
return 0;
|
||||
|
||||
/* Run PCLMUL + AVX test only if host has PCLMUL + AVX support. */
|
||||
if ((ecx & (bit_AVX | bit_OSXSAVE | bit_PCLMUL))
|
||||
== (bit_AVX | bit_OSXSAVE | bit_PCLMUL))
|
||||
if (((ecx & (bit_AVX | bit_OSXSAVE | bit_PCLMUL))
|
||||
== (bit_AVX | bit_OSXSAVE | bit_PCLMUL))
|
||||
&& avx_os_support ())
|
||||
{
|
||||
do_test ();
|
||||
#ifdef DEBUG
|
||||
|
|
Loading…
Reference in New Issue