From 5b7ab2a098b4cb5958b2e0749adf7d997bd79e93 Mon Sep 17 00:00:00 2001 From: munroesj Date: Mon, 30 Oct 2017 18:32:07 +0000 Subject: Part 2/2 for contributing PPC64LE support for X86 SSE2 instrisics. This patch includes testsuite/gcc.target tests for the intrinsics in emmintrin.h. For these tests I added -Wno-psabi to dg-options to suppress warnings associated with the vector ABI change in GCC5. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@254235 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/gcc.target/powerpc/sse2-check.h | 52 +++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 gcc/testsuite/gcc.target/powerpc/sse2-check.h (limited to 'gcc/testsuite/gcc.target/powerpc/sse2-check.h') diff --git a/gcc/testsuite/gcc.target/powerpc/sse2-check.h b/gcc/testsuite/gcc.target/powerpc/sse2-check.h new file mode 100644 index 00000000000..beb1b7d24f4 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/sse2-check.h @@ -0,0 +1,52 @@ +#include + +/* Define this to enable the combination of VSX vector double and + SSE2 data types. */ +#define __VSX_SSE2__ 1 + +#include "m128-check.h" + +/* define DEBUG replace abort with printf on error. */ +//#define DEBUG 1 + +#if 1 + +#define TEST sse2_test + +static void sse2_test (void); + +static void +__attribute__ ((noinline)) +do_test (void) +{ + sse2_test (); +} + +int +main () + { +#ifdef __BUILTIN_CPU_SUPPORTS__ + /* Most SSE2 (vector double) intrinsic operations require VSX + instructions, but some operations may need only VMX + instructions. This also true for SSE2 scalar doubles as they + imply that "other half" of the vector remains unchanged or set + to zeros. The VSX scalar operations leave ther "other half" + undefined, and require additional merge operations. + Some conversions (to/from integer) need the direct register + transfer instructions from POWER8 for best performance. + So we test for arch_2_07. */ + if ( __builtin_cpu_supports ("arch_2_07") ) + { + do_test (); +#ifdef DEBUG + printf ("PASSED\n"); +#endif + } +#ifdef DEBUG + else + printf ("SKIPPED\n"); +#endif +#endif /* __BUILTIN_CPU_SUPPORTS__ */ + return 0; + } +#endif -- cgit v1.2.1