2015-12-08 Bernd Edlinger <bernd.edlinger@hotmail.de>
* gcc.target/i386/sse4_1-round.h: Fix inline asm statements.
* gcc.target/i386/sse4_1-roundsd-4.c: Fix inline asm statements.
* gcc.target/i386/sse4_1-roundss-4.c: Fix inline asm statements.
===================================================================
@@ -42,16 +42,16 @@ do_round (FP_T f, int type)
clr_mask = ~0x0C3F;
}
- __asm__ ("fld" ASM_SUFFIX " %0" : : "m" (*&f));
-
__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__ ("fld" ASM_SUFFIX " %1\n"
+ "fldcw %2\n"
+ "frndint\n"
+ "fstp" ASM_SUFFIX " %0\n"
+ "fldcw %3" : "=m" (*&ret)
+ : "m" (*&f), "m" (*&new_cw), "m" (*&saved_cw)
+ : "st");
return ret;
}
===================================================================
@@ -50,16 +50,16 @@ do_round (double f, int type)
clr_mask = ~0x0C3F;
}
- __asm__ ("fldl %0" : : "m" (*&f));
-
__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__ ("fldl %1\n"
+ "fldcw %2\n"
+ "frndint\n"
+ "fstpl %0\n"
+ "fldcw %3" : "=m" (*&ret)
+ : "m" (*&f), "m" (*&new_cw), "m" (*&saved_cw)
+ : "st");
return ret;
}
===================================================================
@@ -50,16 +50,16 @@ do_round (float f, int type)
clr_mask = ~0x0C3F;
}
- __asm__ ("flds %0" : : "m" (*&f));
-
__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__ ("flds %1\n"
+ "fldcw %2\n"
+ "frndint\n"
+ "fstps %0\n"
+ "fldcw %3" : "=m" (*&ret)
+ : "m" (*&f), "m" (*&new_cw), "m" (*&saved_cw)
+ : "st");
return ret;
}