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.
This commit is contained in:
Uros Bizjak 2017-04-14 14:30:57 +02:00 committed by Richard Henderson
parent 9fe3c80c7c
commit 1e1f44de64
2 changed files with 10 additions and 4 deletions

View file

@ -1,3 +1,9 @@
2017-04-25 Uros Bizjak <ubizjak@gmail.com>
* sysdeps/alpha/fpu/math_private.h (__ieee754_sqrt): Add
earlyclobber to output operand of sqrt insn.
(__ieee754_sqrtf): Ditto.
2017-04-25 Joseph Myers <joseph@codesourcery.com>
[BZ #21426]

View file

@ -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;
}