From: Uros Bizjak Date: Wed, 9 Dec 2015 20:28:37 +0000 (+0100) Subject: sse4_1-roundps-1.c: Remove ASM_SUFFIX define. X-Git-Tag: releases/gcc-4.9.4~459 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f2cf41e890a11833429a77477417735912a70ed7;p=thirdparty%2Fgcc.git sse4_1-roundps-1.c: Remove ASM_SUFFIX define. * gcc.target/i386/sse4_1-roundps-1.c: Remove ASM_SUFFIX define. * gcc.target/i386/sse4_1-roundps-2.c: Ditto. * gcc.target/i386/sse4_1-roundps-3.c: Ditto. * gcc.target/i386/sse4_1-roundsd-1.c: Ditto. * gcc.target/i386/sse4_1-roundsd-2.c: Ditto. * gcc.target/i386/sse4_1-roundsd-3.c: Ditto. * gcc.target/i386/sse4_1-roundss-1.c: Ditto. * gcc.target/i386/sse4_1-roundss-2.c: Ditto. * gcc.target/i386/sse4_1-roundss-3.c: Ditto. * gcc.target/i386/sse4_1-round.h (do_round): Fix inline asm statements. * gcc.target/i386/sse4_1-roundsd-4.c (do_round): Ditto. * gcc.target/i386/sse4_1-roundss-4.c (do_round): Ditto. From-SVN: r231475 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 92dca2ebaf91..6663cb16e58a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,21 @@ +2015-12-09 Uros Bizjak + + * gcc.target/i386/sse4_1-roundps-1.c: Remove ASM_SUFFIX define. + * gcc.target/i386/sse4_1-roundps-2.c: Ditto. + * gcc.target/i386/sse4_1-roundps-3.c: Ditto. + * gcc.target/i386/sse4_1-roundsd-1.c: Ditto. + * gcc.target/i386/sse4_1-roundsd-2.c: Ditto. + * gcc.target/i386/sse4_1-roundsd-3.c: Ditto. + * gcc.target/i386/sse4_1-roundss-1.c: Ditto. + * gcc.target/i386/sse4_1-roundss-2.c: Ditto. + * gcc.target/i386/sse4_1-roundss-3.c: Ditto. + +2015-12-09 Uros Bizjak + + * gcc.target/i386/sse4_1-round.h (do_round): Fix inline asm statements. + * gcc.target/i386/sse4_1-roundsd-4.c (do_round): Ditto. + * gcc.target/i386/sse4_1-roundss-4.c (do_round): Ditto. + 2015-12-08 Maxim Ostapenko Backport from mainline. diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-round.h b/gcc/testsuite/gcc.target/i386/sse4_1-round.h index 0210ac130b6e..dfb0b778cdcf 100644 --- a/gcc/testsuite/gcc.target/i386/sse4_1-round.h +++ b/gcc/testsuite/gcc.target/i386/sse4_1-round.h @@ -28,7 +28,7 @@ init_round (FP_T *src) static FP_T do_round (FP_T f, int type) { - short saved_cw, new_cw, clr_mask; + unsigned short saved_cw, new_cw, clr_mask; FP_T ret; if ((type & 4)) @@ -42,16 +42,15 @@ do_round (FP_T f, int type) clr_mask = ~0x0C3F; } - __asm__ ("fld" ASM_SUFFIX " %0" : : "m" (*&f)); + __asm__ ("fnstcw %0" : "=m" (saved_cw)); - __asm__ ("fstcw %0" : "=m" (*&saved_cw)); new_cw = saved_cw & clr_mask; new_cw |= type; - __asm__ ("fldcw %0" : : "m" (*&new_cw)); - __asm__ ("frndint\n" - "fstp" ASM_SUFFIX " %0\n" : "=m" (*&ret)); - __asm__ ("fldcw %0" : : "m" (*&saved_cw)); + __asm__ ("fldcw %2\n\t" + "frndint\n\t" + "fldcw %3" : "=t" (ret) + : "0" (f), "m" (new_cw), "m" (saved_cw)); return ret; } diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-roundps-1.c b/gcc/testsuite/gcc.target/i386/sse4_1-roundps-1.c index 71bc51be2326..fab227869fc4 100644 --- a/gcc/testsuite/gcc.target/i386/sse4_1-roundps-1.c +++ b/gcc/testsuite/gcc.target/i386/sse4_1-roundps-1.c @@ -7,7 +7,6 @@ #define VEC_T __m128 #define FP_T float -#define ASM_SUFFIX "s" #define ROUND_INTRIN(x, mode) _mm_ceil_ps(x) #define ROUND_MODE _MM_FROUND_CEIL diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-roundps-2.c b/gcc/testsuite/gcc.target/i386/sse4_1-roundps-2.c index 672e92067c81..405c55d45a4d 100644 --- a/gcc/testsuite/gcc.target/i386/sse4_1-roundps-2.c +++ b/gcc/testsuite/gcc.target/i386/sse4_1-roundps-2.c @@ -7,7 +7,6 @@ #define VEC_T __m128 #define FP_T float -#define ASM_SUFFIX "s" #define ROUND_INTRIN _mm_round_ps #define ROUND_MODE _MM_FROUND_NINT diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-roundps-3.c b/gcc/testsuite/gcc.target/i386/sse4_1-roundps-3.c index 4bfc1cacc915..97485b958676 100644 --- a/gcc/testsuite/gcc.target/i386/sse4_1-roundps-3.c +++ b/gcc/testsuite/gcc.target/i386/sse4_1-roundps-3.c @@ -7,7 +7,6 @@ #define VEC_T __m128 #define FP_T float -#define ASM_SUFFIX "s" #define ROUND_INTRIN(x, mode) _mm_floor_ps(x) #define ROUND_MODE _MM_FROUND_FLOOR diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-roundsd-1.c b/gcc/testsuite/gcc.target/i386/sse4_1-roundsd-1.c index ae8881cf0f8b..e6cec0b9478a 100644 --- a/gcc/testsuite/gcc.target/i386/sse4_1-roundsd-1.c +++ b/gcc/testsuite/gcc.target/i386/sse4_1-roundsd-1.c @@ -7,7 +7,6 @@ #define VEC_T __m128d #define FP_T double -#define ASM_SUFFIX "l" #define ROUND_INTRIN(x, mode) _mm_ceil_sd(x, x) #define ROUND_MODE _MM_FROUND_CEIL diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-roundsd-2.c b/gcc/testsuite/gcc.target/i386/sse4_1-roundsd-2.c index 70679bb07a06..54ca21f8f2cd 100644 --- a/gcc/testsuite/gcc.target/i386/sse4_1-roundsd-2.c +++ b/gcc/testsuite/gcc.target/i386/sse4_1-roundsd-2.c @@ -7,7 +7,6 @@ #define VEC_T __m128d #define FP_T double -#define ASM_SUFFIX "l" #define ROUND_INTRIN(x, mode) _mm_round_sd(x, x, mode) #define ROUND_MODE _MM_FROUND_NINT diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-roundsd-3.c b/gcc/testsuite/gcc.target/i386/sse4_1-roundsd-3.c index 81a3f760638c..a59d6f86e5fa 100644 --- a/gcc/testsuite/gcc.target/i386/sse4_1-roundsd-3.c +++ b/gcc/testsuite/gcc.target/i386/sse4_1-roundsd-3.c @@ -7,7 +7,6 @@ #define VEC_T __m128d #define FP_T double -#define ASM_SUFFIX "l" #define ROUND_INTRIN(x, mode) _mm_floor_sd(x, x) #define ROUND_MODE _MM_FROUND_FLOOR diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-roundsd-4.c b/gcc/testsuite/gcc.target/i386/sse4_1-roundsd-4.c index 124f825021d6..ff8b09eeba62 100644 --- a/gcc/testsuite/gcc.target/i386/sse4_1-roundsd-4.c +++ b/gcc/testsuite/gcc.target/i386/sse4_1-roundsd-4.c @@ -36,7 +36,7 @@ init_round (double *src) static double do_round (double f, int type) { - short saved_cw, new_cw, clr_mask; + unsigned short saved_cw, new_cw, clr_mask; double ret; if ((type & 4)) @@ -50,16 +50,15 @@ do_round (double f, int type) clr_mask = ~0x0C3F; } - __asm__ ("fldl %0" : : "m" (*&f)); + __asm__ ("fnstcw %0" : "=m" (saved_cw)); - __asm__ ("fstcw %0" : "=m" (*&saved_cw)); new_cw = saved_cw & clr_mask; new_cw |= type; - __asm__ ("fldcw %0" : : "m" (*&new_cw)); - __asm__ ("frndint\n" - "fstpl %0\n" : "=m" (*&ret)); - __asm__ ("fldcw %0" : : "m" (*&saved_cw)); + __asm__ ("fldcw %2\n\t" + "frndint\n\t" + "fldcw %3" : "=t" (ret) + : "0" (f), "m" (new_cw), "m" (saved_cw)); return ret; } diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-roundss-1.c b/gcc/testsuite/gcc.target/i386/sse4_1-roundss-1.c index 96dd8a6a76f6..9c20b90ad05e 100644 --- a/gcc/testsuite/gcc.target/i386/sse4_1-roundss-1.c +++ b/gcc/testsuite/gcc.target/i386/sse4_1-roundss-1.c @@ -7,7 +7,6 @@ #define VEC_T __m128 #define FP_T float -#define ASM_SUFFIX "s" #define ROUND_INTRIN(x, mode) _mm_ceil_ss(x, x) #define ROUND_MODE _MM_FROUND_CEIL diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-roundss-2.c b/gcc/testsuite/gcc.target/i386/sse4_1-roundss-2.c index f052c029f7ad..072664e1573e 100644 --- a/gcc/testsuite/gcc.target/i386/sse4_1-roundss-2.c +++ b/gcc/testsuite/gcc.target/i386/sse4_1-roundss-2.c @@ -7,7 +7,6 @@ #define VEC_T __m128 #define FP_T float -#define ASM_SUFFIX "s" #define ROUND_INTRIN(x, mode) _mm_round_ss(x, x, mode) #define ROUND_MODE _MM_FROUND_NINT diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-roundss-3.c b/gcc/testsuite/gcc.target/i386/sse4_1-roundss-3.c index 0a696b1cfb76..97c69fdbcb25 100644 --- a/gcc/testsuite/gcc.target/i386/sse4_1-roundss-3.c +++ b/gcc/testsuite/gcc.target/i386/sse4_1-roundss-3.c @@ -7,7 +7,6 @@ #define VEC_T __m128 #define FP_T float -#define ASM_SUFFIX "s" #define ROUND_INTRIN(x, mode) _mm_floor_ss(x, x) #define ROUND_MODE _MM_FROUND_FLOOR diff --git a/gcc/testsuite/gcc.target/i386/sse4_1-roundss-4.c b/gcc/testsuite/gcc.target/i386/sse4_1-roundss-4.c index 71042d1b7776..954889086301 100644 --- a/gcc/testsuite/gcc.target/i386/sse4_1-roundss-4.c +++ b/gcc/testsuite/gcc.target/i386/sse4_1-roundss-4.c @@ -36,7 +36,7 @@ init_round (float *src) static float do_round (float f, int type) { - short saved_cw, new_cw, clr_mask; + unsigned short saved_cw, new_cw, clr_mask; float ret; if ((type & 4)) @@ -50,16 +50,15 @@ do_round (float f, int type) clr_mask = ~0x0C3F; } - __asm__ ("flds %0" : : "m" (*&f)); + __asm__ ("fnstcw %0" : "=m" (saved_cw)); - __asm__ ("fstcw %0" : "=m" (*&saved_cw)); new_cw = saved_cw & clr_mask; new_cw |= type; - __asm__ ("fldcw %0" : : "m" (*&new_cw)); - __asm__ ("frndint\n" - "fstps %0\n" : "=m" (*&ret)); - __asm__ ("fldcw %0" : : "m" (*&saved_cw)); + __asm__ ("fldcw %2\n\t" + "frndint\n\t" + "fldcw %3" : "=t" (ret) + : "0" (f), "m" (new_cw), "m" (saved_cw)); return ret; }