mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-27 03:41:23 +08:00
Use x constraints for operands to vfmaddss and vfmaddsd
While these instructions accept memory operands, only one operand may be a memory operand. Giving two operands xm constraints gives the compiler the option of using memory for both operands, which would result in invalid assembly code. Using x for all operands is more appropriate, as most x86_64 calling conventions will pass the arguments in registers anyway. 2013-05-15 Peter Collingbourne <pcc@google.com> * sysdeps/x86_64/fpu/multiarch/s_fma.c (__fma_fma4): Replace xm constraints with x constraints. * sysdeps/x86_64/fpu/multiarch/s_fmaf.c (__fmaf_fma4): Likewise.
This commit is contained in:
parent
39b1f6172a
commit
791f3ba0db
@ -1,5 +1,9 @@
|
||||
2013-05-15 Peter Collingbourne <pcc@google.com>
|
||||
|
||||
* sysdeps/x86_64/fpu/multiarch/s_fma.c (__fma_fma4): Replace xm
|
||||
constraints with x constraints.
|
||||
* sysdeps/x86_64/fpu/multiarch/s_fmaf.c (__fmaf_fma4): Likewise.
|
||||
|
||||
* malloc/obstack.c (_obstack_compat): Add initializer.
|
||||
|
||||
2013-05-15 Edjunior Machado <emachado@linux.vnet.ibm.com>
|
||||
|
@ -38,7 +38,7 @@ __fma_fma3 (double x, double y, double z)
|
||||
static double
|
||||
__fma_fma4 (double x, double y, double z)
|
||||
{
|
||||
asm ("vfmaddsd %3, %2, %1, %0" : "=x" (x) : "x" (x), "xm" (y), "xm" (z));
|
||||
asm ("vfmaddsd %3, %2, %1, %0" : "=x" (x) : "x" (x), "x" (y), "x" (z));
|
||||
return x;
|
||||
}
|
||||
# else
|
||||
|
@ -37,7 +37,7 @@ __fmaf_fma3 (float x, float y, float z)
|
||||
static float
|
||||
__fmaf_fma4 (float x, float y, float z)
|
||||
{
|
||||
asm ("vfmaddss %3, %2, %1, %0" : "=x" (x) : "x" (x), "xm" (y), "xm" (z));
|
||||
asm ("vfmaddss %3, %2, %1, %0" : "=x" (x) : "x" (x), "x" (y), "x" (z));
|
||||
return x;
|
||||
}
|
||||
# else
|
||||
|
Loading…
Reference in New Issue
Block a user