Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1906 | serge | 1 | /* |
2 | * Written by J.T. Conklin |
||
3 | * Public domain. |
||
4 | * |
||
5 | * Changes for long double by Ulrich Drepper |
||
6 | * |
||
7 | * Removed header file dependency for use in libmingwex.a by |
||
8 | * Danny Smith |
||
9 | */ |
||
10 | .file "floorf.S" |
||
11 | .text |
||
12 | .align 4 |
||
13 | .globl _floorf |
||
14 | .def _floorf; .scl 2; .type 32; .endef |
||
15 | _floorf: |
||
16 | flds 4(%esp) |
||
17 | subl $8,%esp |
||
18 | |||
19 | fstcw 4(%esp) /* store fpu control word */ |
||
20 | |||
21 | /* We use here %edx although only the low 1 bits are defined. |
||
22 | But none of the operations should care and they are faster |
||
23 | than the 16 bit operations. */ |
||
24 | movl $0x400,%edx /* round towards -oo */ |
||
25 | orl 4(%esp),%edx |
||
26 | andl $0xf7ff,%edx |
||
27 | movl %edx,(%esp) |
||
28 | fldcw (%esp) /* load modified control word */ |
||
29 | |||
30 | frndint /* round */ |
||
31 | |||
32 | fldcw 4(%esp) /* restore original control word */ |
||
33 | |||
34 | addl $8,%esp |
||
35 | ret |