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
|