| /** | |
| * This file has no copyright assigned and is placed in the Public Domain. | |
| * This file is part of the w64 mingw-runtime package. | |
| * No warranty is given; refer to the file DISCLAIMER within this package. | |
| */ | |
| .file "floorl.S" | |
| .text | |
| .align 4 | |
| .globl _floorl | |
| .def _floorl; .scl 2; .type 32; .endef | |
| _floorl: | |
| fldt (%rdx) | |
| subq $16,%rsp | |
| fstcw 8(%rsp) /* store fpu control word */ | |
| /* We use here %edx although only the low 1 bits are defined. | |
| But none of the operations should care and they are faster | |
| than the 16 bit operations. */ | |
| movl $0x400,%edx /* round towards -oo */ | |
| orl 8(%rsp),%edx | |
| andl $0xf7ff,%edx | |
| movl %edx,(%rsp) | |
| fldcw (%rsp) /* load modified control word */ | |
| frndint /* round */ | |
| fldcw 8(%rsp) /* restore original control word */ | |
| addq $16,%rsp | |
| movq %rcx,%rax | |
| fstpt (%rcx) | |
| ret |