blob: 456f0eb91213b48be707651c10c7c0449ec0f013 [file] [log] [blame]
.file "ceill.S"
.code64
.text
.align 4
.globl _ceill
.def _ceill; .scl 2; .type 32; .endef
_ceill:
fldt 8(%rsp)
subq $16,%rsp
fstcw 8(%rsp) /* store fpu control word */
/* We use here %rdx although only the low 1 bits are defined.
But none of the operations should care and they are faster
than the 16 bit operations. */
movq $0x0800,%rdx /* round towards +oo */
orq 8(%rsp),%rdx
andq $0xfbff,%rdx
movq %rdx,(%rsp)
fldcw (%rsp) /* load modified control word */
frndint /* round */
fldcw 8(%rsp) /* restore original control word */
addq $16,%rsp
ret