initial check-in, version 0.5.0
[musl] / src / math / i386 / s_trunc.s
1 .global ceilf
2 ceilf:  flds 4(%esp)
3         jmp 1f
4         
5 .global ceil
6 ceil:   fldl 4(%esp)
7 1:      mov $0x08fb,%edx
8         jmp 0f
9
10 .global floorf
11 floorf: flds 4(%esp)
12         jmp 1f
13
14 .global floor
15 floor:  fldl 4(%esp)
16 1:      mov $0x04f7,%edx
17         jmp 0f
18
19 .global truncf
20 truncf: flds 4(%esp)
21         jmp 1f
22
23 .global trunc
24 trunc:  fldl 4(%esp)
25 1:      mov $0x0cff,%edx
26
27 0:      fstcw 4(%esp)
28         mov 5(%esp),%ah
29         or %dh,%ah
30         and %dl,%ah
31         xchg %ah,5(%esp)
32         fldcw 4(%esp)
33         frndint
34         mov %ah,5(%esp)
35         fldcw 4(%esp)
36         ret