From 791f3ba0db02911933255d080b8ff973330b9ebf Mon Sep 17 00:00:00 2001 From: Peter Collingbourne Date: Wed, 15 May 2013 20:31:53 +0200 Subject: [PATCH] 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 * 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. --- ChangeLog | 4 ++++ sysdeps/x86_64/fpu/multiarch/s_fma.c | 2 +- sysdeps/x86_64/fpu/multiarch/s_fmaf.c | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 42b02ee..4550566 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2013-05-15 Peter Collingbourne + * 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 diff --git a/sysdeps/x86_64/fpu/multiarch/s_fma.c b/sysdeps/x86_64/fpu/multiarch/s_fma.c index ea18559..25a306f 100644 --- a/sysdeps/x86_64/fpu/multiarch/s_fma.c +++ b/sysdeps/x86_64/fpu/multiarch/s_fma.c @@ -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 diff --git a/sysdeps/x86_64/fpu/multiarch/s_fmaf.c b/sysdeps/x86_64/fpu/multiarch/s_fmaf.c index 9647d79..063be69 100644 --- a/sysdeps/x86_64/fpu/multiarch/s_fmaf.c +++ b/sysdeps/x86_64/fpu/multiarch/s_fmaf.c @@ -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 -- 2.7.4