[PATCH, alpha]: Add earlyclobber to sqrtt/sqrtf insns.
Uros Bizjak
ubizjak@gmail.com
Fri Apr 14 12:30:00 GMT 2017
Add earlyclobber to sqrtt/sqrtf insns.
When using software completions, we have to prevent assembler to match
input and output operands of sqrtt/sqrtf insn. Add earlyclobber to
output operand to avoid unwanted operand matching.
2017-04-14 Uros Bizjak <ubizjak@gmail.com>
* sysdeps/alpha/fpu/math_private.h (__ieee754_sqrt): Add
earlyclobber to output operand of sqrt insn.
(__ieee754_sqrtf): Ditto.
diff --git a/sysdeps/alpha/fpu/math_private.h b/sysdeps/alpha/fpu/math_private.h
index 9e06e25..1e97c86 100644
--- a/sysdeps/alpha/fpu/math_private.h
+++ b/sysdeps/alpha/fpu/math_private.h
@@ -27,9 +27,9 @@ __ieee754_sqrt (double d)
{
double ret;
# ifdef _IEEE_FP_INEXACT
- asm ("sqrtt/suid %1,%0" : "=f"(ret) : "f"(d));
+ asm ("sqrtt/suid %1,%0" : "=&f"(ret) : "f"(d));
# else
- asm ("sqrtt/sud %1,%0" : "=f"(ret) : "f"(d));
+ asm ("sqrtt/sud %1,%0" : "=&f"(ret) : "f"(d));
# endif
return ret;
}
@@ -39,9 +39,9 @@ __ieee754_sqrtf (float d)
{
float ret;
# ifdef _IEEE_FP_INEXACT
- asm ("sqrts/suid %1,%0" : "=f"(ret) : "f"(d));
+ asm ("sqrts/suid %1,%0" : "=&f"(ret) : "f"(d));
# else
- asm ("sqrts/sud %1,%0" : "=f"(ret) : "f"(d));
+ asm ("sqrts/sud %1,%0" : "=&f"(ret) : "f"(d));
# endif
return ret;
}
More information about the Libc-alpha
mailing list