aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.8/gcc/testsuite/gcc.target/i386/mmx-4.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.8/gcc/testsuite/gcc.target/i386/mmx-4.c')
-rw-r--r--gcc-4.8/gcc/testsuite/gcc.target/i386/mmx-4.c236
1 files changed, 0 insertions, 236 deletions
diff --git a/gcc-4.8/gcc/testsuite/gcc.target/i386/mmx-4.c b/gcc-4.8/gcc/testsuite/gcc.target/i386/mmx-4.c
deleted file mode 100644
index 05d2b553b..000000000
--- a/gcc-4.8/gcc/testsuite/gcc.target/i386/mmx-4.c
+++ /dev/null
@@ -1,236 +0,0 @@
-/* { dg-do run } */
-/* { dg-options "-O2 -mmmx" } */
-
-#include "mmx-check.h"
-
-#include <mmintrin.h>
-#include <string.h>
-
-#define SHIFT (4)
-
-typedef union {
- __m64 v;
- unsigned char c[8];
- unsigned short int s[4];
- unsigned long long t;
- unsigned int u[2];
-}vecInWord;
-
-void mmx_tests (void) __attribute__((noinline));
-void dump64_16 (char *, char *, vecInWord);
-void dump64_32 (char *, char *, vecInWord);
-void dump64_64 (char *, char *, vecInWord);
-int check (const char *, const char *[]);
-
-char buf[8000];
-char comparison[8000];
-static int errors = 0;
-
-vecInWord a64, b64, c64, d64, e64;
-__m64 m64_16, s64, m64_32, m64_64;
-
-const char *reference_mmx[] = {
- "_mm_srai_pi16 0012 0012 0012 0012 \n",
- "_mm_sra_pi16 0012 0012 0012 0012 \n",
- "_mm_srai_pi32 00123456 00123456 \n",
- "_mm_sra_pi32 00123456 00123456 \n",
- "_mm_srli_pi16 0012 0012 0012 0012 \n",
- "_mm_srl_pi16 0012 0012 0012 0012 \n",
- "_mm_srli_pi32 00123456 00123456 \n",
- "_mm_srl_pi32 00123456 00123456 \n",
- "_mm_srli_si64 00123456789abcde\n",
- "_mm_srl_si64 00123456789abcde\n",
- "_mm_slli_pi16 1230 1230 1230 1230 \n",
- "_mm_sll_pi16 1230 1230 1230 1230 \n",
- "_mm_slli_pi32 12345670 12345670 \n",
- "_mm_sll_pi32 12345670 12345670 \n",
- "_mm_slli_si64 123456789abcdef0\n",
- "_mm_sll_si64 123456789abcdef0\n",
- ""
-};
-
-
-static void
-mmx_test (void)
-{
- d64.u[0] = 0x01234567;
- d64.u[1] = 0x01234567;
-
- m64_32 = d64.v;
-
- e64.t = 0x0123456789abcdefULL;
-
- m64_64 = e64.v;
-
- a64.s[0] = 0x0123;
- a64.s[1] = 0x0123;
- a64.s[2] = 0x0123;
- a64.s[3] = 0x0123;
-
- m64_16 = a64.v;
-
- b64.s[0] = SHIFT;
- b64.s[1] = 0;
- b64.s[2] = 0;
- b64.s[3] = 0;
-
- s64 = b64.v;
-
- mmx_tests();
- check (buf, reference_mmx);
-#ifdef DEBUG
- printf ("mmx testing:\n");
- printf (buf);
- printf ("\ncomparison:\n");
- printf (comparison);
-#endif
- buf[0] = '\0';
-
- if (errors != 0)
- abort ();
-}
-
-void __attribute__((noinline))
-mmx_tests (void)
-{
- /* psraw */
- c64.v = _mm_srai_pi16 (m64_16, SHIFT);
- dump64_16 (buf, "_mm_srai_pi16", c64);
- c64.v = _mm_sra_pi16 (m64_16, s64);
- dump64_16 (buf, "_mm_sra_pi16", c64);
-
- /* psrad */
- c64.v = _mm_srai_pi32 (m64_32, SHIFT);
- dump64_32 (buf, "_mm_srai_pi32", c64);
- c64.v = _mm_sra_pi32 (m64_32, s64);
- dump64_32 (buf, "_mm_sra_pi32", c64);
-
- /* psrlw */
- c64.v = _mm_srli_pi16 (m64_16, SHIFT);
- dump64_16 (buf, "_mm_srli_pi16", c64);
- c64.v = _mm_srl_pi16 (m64_16, s64);
- dump64_16 (buf, "_mm_srl_pi16", c64);
-
- /* psrld */
- c64.v = _mm_srli_pi32 (m64_32, SHIFT);
- dump64_32 (buf, "_mm_srli_pi32", c64);
- c64.v = _mm_srl_pi32 (m64_32, s64);
- dump64_32 (buf, "_mm_srl_pi32", c64);
-
- /* psrlq */
- c64.v = _mm_srli_si64 (m64_64, SHIFT);
- dump64_64 (buf, "_mm_srli_si64", c64);
- c64.v = _mm_srl_si64 (m64_64, s64);
- dump64_64 (buf, "_mm_srl_si64", c64);
-
- /* psllw */
- c64.v = _mm_slli_pi16 (m64_16, SHIFT);
- dump64_16 (buf, "_mm_slli_pi16", c64);
- c64.v = _mm_sll_pi16 (m64_16, s64);
- dump64_16 (buf, "_mm_sll_pi16", c64);
-
- /* pslld */
- c64.v = _mm_slli_pi32 (m64_32, SHIFT);
- dump64_32 (buf, "_mm_slli_pi32", c64);
- c64.v = _mm_sll_pi32 (m64_32, s64);
- dump64_32 (buf, "_mm_sll_pi32", c64);
-
- /* psllq */
- c64.v = _mm_slli_si64 (m64_64, SHIFT);
- dump64_64 (buf, "_mm_slli_si64", c64);
- c64.v = _mm_sll_si64 (m64_64, s64);
- dump64_64 (buf, "_mm_sll_si64", c64);
-}
-
-void
-dump64_16 (char *buf, char *name, vecInWord x)
-{
- int i;
- char *p = buf + strlen (buf);
-
- sprintf (p, "%s ", name);
- p += strlen (p);
-
- for (i=0; i<4; i++)
- {
- sprintf (p, "%4.4x ", x.s[i]);
- p += strlen (p);
- }
- strcat (p, "\n");
-}
-
-void
-dump64_32 (char *buf, char *name, vecInWord x)
-{
- int i;
- char *p = buf + strlen (buf);
-
- sprintf (p, "%s ", name);
- p += strlen (p);
-
- for (i=0; i<2; i++)
- {
- sprintf (p, "%8.8x ", x.u[i]);
- p += strlen (p);
- }
- strcat (p, "\n");
-}
-
-void
-dump64_64 (char *buf, char *name, vecInWord x)
-{
- char *p = buf + strlen (buf);
-
- sprintf (p, "%s ", name);
- p += strlen (p);
-
-#if defined(_WIN32) && !defined(__CYGWIN__)
- sprintf (p, "%16.16I64x\n", x.t);
-#else
- sprintf (p, "%16.16llx\n", x.t);
-#endif
-}
-
-int
-check (const char *input, const char *reference[])
-{
- int broken, i, j, len;
- const char *p_input;
- char *p_comparison;
- int new_errors = 0;
-
- p_comparison = &comparison[0];
- p_input = input;
-
- for (i = 0; *reference[i] != '\0'; i++)
- {
- broken = 0;
- len = strlen (reference[i]);
- for (j = 0; j < len; j++)
- {
- /* Ignore the terminating NUL characters at the end of every string in 'reference[]'. */
- if (!broken && *p_input != reference[i][j])
- {
- *p_comparison = '\0';
- strcat (p_comparison, " >>> ");
- p_comparison += strlen (p_comparison);
- new_errors++;
- broken = 1;
- }
- *p_comparison = *p_input;
- p_comparison++;
- p_input++;
- }
- if (broken)
- {
- *p_comparison = '\0';
- strcat (p_comparison, "expected:\n");
- strcat (p_comparison, reference[i]);
- p_comparison += strlen (p_comparison);
- }
- }
- *p_comparison = '\0';
- strcat (p_comparison, new_errors ? "failure\n\n" : "O.K.\n\n") ;
- errors += new_errors;
- return 0;
-}