From 1e1f44de64d12a9539155665cd0aedee7909b00d Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Fri, 14 Apr 2017 14:30:57 +0200 Subject: [PATCH] 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 * sysdeps/alpha/fpu/math_private.h (__ieee754_sqrt): Add earlyclobber to output operand of sqrt insn. (__ieee754_sqrtf): Ditto. --- ChangeLog | 6 ++++++ sysdeps/alpha/fpu/math_private.h | 8 ++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8867578f25..042262eaa1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2017-04-25 Uros Bizjak + + * sysdeps/alpha/fpu/math_private.h (__ieee754_sqrt): Add + earlyclobber to output operand of sqrt insn. + (__ieee754_sqrtf): Ditto. + 2017-04-25 Joseph Myers [BZ #21426] diff --git a/sysdeps/alpha/fpu/math_private.h b/sysdeps/alpha/fpu/math_private.h index 9e06e25dc6..1e97c867c3 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; } -- 2.11.4.GIT