diff options
author | Andreas Jaeger <aj@suse.de> | 2002-07-23 19:36:20 +0000 |
---|---|---|
committer | Andreas Jaeger <aj@suse.de> | 2002-07-23 19:36:20 +0000 |
commit | 83a5fcc0b4ea84bf6d8f786d7c7e4949cf22e43f (patch) | |
tree | ab3d21ddf6423e5a820b4197d07637ae3998b9ff /sysdeps/x86_64/fpu/s_copysign.S | |
parent | 67ee6db0fdc36dc8760e44893db9675ea6899dbe (diff) | |
download | glibc-83a5fcc0b4ea84bf6d8f786d7c7e4949cf22e43f.tar glibc-83a5fcc0b4ea84bf6d8f786d7c7e4949cf22e43f.tar.gz glibc-83a5fcc0b4ea84bf6d8f786d7c7e4949cf22e43f.tar.bz2 glibc-83a5fcc0b4ea84bf6d8f786d7c7e4949cf22e43f.zip |
Use optimized version.
Diffstat (limited to 'sysdeps/x86_64/fpu/s_copysign.S')
-rw-r--r-- | sysdeps/x86_64/fpu/s_copysign.S | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/sysdeps/x86_64/fpu/s_copysign.S b/sysdeps/x86_64/fpu/s_copysign.S index f1ebcf8bf1..acb4c3a16e 100644 --- a/sysdeps/x86_64/fpu/s_copysign.S +++ b/sysdeps/x86_64/fpu/s_copysign.S @@ -27,14 +27,10 @@ #endif .align ALIGNARG(4) - ASM_TYPE_DIRECTIVE(signmask,@object) -signmask: + ASM_TYPE_DIRECTIVE(mask,@object) +mask: .byte 0, 0, 0, 0, 0, 0, 0, 0x80 - .byte 0, 0, 0, 0, 0, 0, 0, 0 -othermask: - .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f - .byte 0, 0, 0, 0, 0, 0, 0, 0 - ASM_SIZE_DIRECTIVE(othermask) + ASM_SIZE_DIRECTIVE(mask) #ifdef PIC #define MO(op) op##(%rip) @@ -43,10 +39,11 @@ othermask: #endif ENTRY(__copysign) - andpd MO(othermask),%xmm0 - andpd MO(signmask),%xmm1 - orpd %xmm1,%xmm0 - ret + movlpd MO(mask),%xmm3 + andps %xmm3,%xmm0 + andnpd %xmm1,%xmm3 + orpd %xmm3,%xmm0 + retq END (__copysign) weak_alias (__copysign, copysign) |