Print this page




 120         __asm__ __volatile__(
 121             "movl    %1, %0\n\t"
 122             "negl    %1\n\t"
 123             "cmovnsl %1, %0\n\t"
 124             : "=r" (ret), "+r" (i)
 125             :
 126             : "cc");
 127         return (ret);
 128 }
 129 
 130 extern __inline__ double
 131 copysign(double d1, double d2)
 132 {
 133         double tmpd;
 134 
 135         __asm__ __volatile__(
 136             "movd %3, %1\n\t"
 137             "andpd %1, %0\n\t"
 138             "andnpd %2, %1\n\t"
 139             "orpd %1, %0\n\t"
 140             : "+x" (d1), "+x" (tmpd)
 141             : "x" (d2), "r" (0x7fffffffffffffff));
 142 
 143         return (d1);
 144 }
 145 
 146 extern __inline__ double
 147 fabs(double d)
 148 {
 149         double tmp;
 150 
 151         __asm__ __volatile__(
 152             "movd  %2, %1\n\t"
 153             "andpd %1, %0"
 154             : "+x" (d), "=x" (tmp)
 155             : "r" (0x7fffffffffffffff));
 156 
 157         return (d);
 158 }
 159 
 160 extern __inline__ float




 120         __asm__ __volatile__(
 121             "movl    %1, %0\n\t"
 122             "negl    %1\n\t"
 123             "cmovnsl %1, %0\n\t"
 124             : "=r" (ret), "+r" (i)
 125             :
 126             : "cc");
 127         return (ret);
 128 }
 129 
 130 extern __inline__ double
 131 copysign(double d1, double d2)
 132 {
 133         double tmpd;
 134 
 135         __asm__ __volatile__(
 136             "movd %3, %1\n\t"
 137             "andpd %1, %0\n\t"
 138             "andnpd %2, %1\n\t"
 139             "orpd %1, %0\n\t"
 140             : "+x" (d1), "=x" (tmpd)
 141             : "x" (d2), "r" (0x7fffffffffffffff));
 142 
 143         return (d1);
 144 }
 145 
 146 extern __inline__ double
 147 fabs(double d)
 148 {
 149         double tmp;
 150 
 151         __asm__ __volatile__(
 152             "movd  %2, %1\n\t"
 153             "andpd %1, %0"
 154             : "+x" (d), "=x" (tmp)
 155             : "r" (0x7fffffffffffffff));
 156 
 157         return (d);
 158 }
 159 
 160 extern __inline__ float