95d1e1376d
versions of fmodf() amd fmodl() on i387. fmod is similar to remainder, and the C versions are 3 to 9 times slower than the asm versions on x86 for both, but we had the strange mixture of all 6 variants of remainder in asm and only 1 of 6 variants of fmod in asm.
25 lines
382 B
ArmAsm
25 lines
382 B
ArmAsm
/*
|
|
* Based on the i387 version written by J.T. Conklin <jtc@netbsd.org>.
|
|
* Public domain.
|
|
*/
|
|
|
|
#include <machine/asm.h>
|
|
__FBSDID("$FreeBSD$")
|
|
|
|
ENTRY(fmodf)
|
|
movss %xmm0,-4(%rsp)
|
|
movss %xmm1,-8(%rsp)
|
|
flds -8(%rsp)
|
|
flds -4(%rsp)
|
|
1: fprem
|
|
fstsw %ax
|
|
testw $0x400,%ax
|
|
jne 1b
|
|
fstps -4(%rsp)
|
|
movss -4(%rsp),%xmm0
|
|
fstp %st
|
|
ret
|
|
END(fmodf)
|
|
|
|
.section .note.GNU-stack,"",%progbits
|