cmpb $0x40, %ah // is y == 0 ?
je 11f
- cmpb $0x05, %ah // is y == ±inf ?
+ cmpb $0x05, %ah // is y == ±inf ?
je 12f
cmpb $0x01, %ah // is y == NaN ?
movb %ah, %dh
andb $0x45, %ah
cmpb $0x40, %ah
- je 20f // x is ±0
+ je 20f // x is ±0
cmpb $0x05, %ah
- je 15f // x is ±inf
+ je 15f // x is ±inf
cmpb $0x01, %ah
je 32f // x is NaN
DBL_NARROW_EVAL_UFLOW_NONNAN
ret
- /* y is ±NAN */
+ /* y is ±NAN */
30: fldl 4(%esp) // x : y
fldl MO(one) // 1.0 : x : y
fucomp %st(1) // x : y
ret
- // pow(x,±0) = 1
+ // pow(x,±0) = 1
.align ALIGNARG(4)
11: fstp %st(0) // pop y
fldl MO(one)
ret
- // y == ±inf
+ // y == ±inf
.align ALIGNARG(4)
12: fstp %st(0) // pop y
fldl MO(one) // 1
cfi_adjust_cfa_offset (8)
.align ALIGNARG(4)
- // x is ±inf
+ // x is ±inf
15: fstp %st(0) // y
testb $2, %dh
jz 16f // jump if x == +inf
cfi_adjust_cfa_offset (8)
.align ALIGNARG(4)
- // x is ±0
+ // x is ±0
20: fstp %st(0) // y
testb $2, %dl
jz 21f // y > 0
- // x is ±0 and y is < 0. We must find out whether y is an odd integer.
+ // x is ±0 and y is < 0. We must find out whether y is an odd integer.
testb $2, %dh
jz 25f
cfi_adjust_cfa_offset (8)
.align ALIGNARG(4)
- // x is ±0 and y is > 0. We must find out whether y is an odd integer.
+ // x is ±0 and y is > 0. We must find out whether y is an odd integer.
21: testb $2, %dh
jz 22f
cmpb $0x40, %ah // is y == 0 ?
je 11f
- cmpb $0x05, %ah // is y == ±inf ?
+ cmpb $0x05, %ah // is y == ±inf ?
je 12f
cmpb $0x01, %ah // is y == NaN ?
movb %ah, %dh
andb $0x45, %ah
cmpb $0x40, %ah
- je 20f // x is ±0
+ je 20f // x is ±0
cmpb $0x05, %ah
- je 15f // x is ±inf
+ je 15f // x is ±inf
cmpb $0x01, %ah
je 32f // x is NaN
LDBL_CHECK_FORCE_UFLOW_NONNAN
ret
- /* y is ±NAN */
+ /* y is ±NAN */
30: fldt 4(%esp) // x : y
fldl MO(one) // 1.0 : x : y
fucomp %st(1) // x : y
cfi_adjust_cfa_offset (-36)
ret
- // pow(x,±0) = 1, unless x is sNaN
+ // pow(x,±0) = 1, unless x is sNaN
.align ALIGNARG(4)
11: fstp %st(0) // pop y
fldt 4(%esp) // x
fadd %st(0)
ret
- // y == ±inf
+ // y == ±inf
.align ALIGNARG(4)
12: fstp %st(0) // pop y
fldl MO(one) // 1
cfi_adjust_cfa_offset (8)
.align ALIGNARG(4)
- // x is ±inf
+ // x is ±inf
15: fstp %st(0) // y
testb $2, %dh
jz 16f // jump if x == +inf
cfi_adjust_cfa_offset (8)
.align ALIGNARG(4)
- // x is ±0
+ // x is ±0
20: fstp %st(0) // y
testb $2, %dl
jz 21f // y > 0
- // x is ±0 and y is < 0. We must find out whether y is an odd integer.
+ // x is ±0 and y is < 0. We must find out whether y is an odd integer.
testb $2, %dh
jz 25f
cfi_adjust_cfa_offset (8)
.align ALIGNARG(4)
- // x is ±0 and y is > 0. We must find out whether y is an odd integer.
+ // x is ±0 and y is > 0. We must find out whether y is an odd integer.
21: testb $2, %dh
jz 22f
LOCAL_LIBM_ENTRY(cotf)
{ .mlx
- getf.exp rExp = f8 // ***** Get 2\8817 * s + E
+ getf.exp rExp = f8 // ***** Get 2^17 * s + E
movl rSigRcpPiby2= 0xA2F9836E4E44152A // significand of 2/Pi
}
{ .mlx
GLOBAL_IEEE754_ENTRY(tanf)
{ .mlx
- getf.exp rExp = f8 // ***** Get 2\8817 * s + E
+ getf.exp rExp = f8 // ***** Get 2^17 * s + E
movl rSigRcpPiby2= 0xA2F9836E4E44152A // significand of 2/Pi
}
{ .mlx
cmpb $0x40, %ah // is y == 0 ?
je 11f
- cmpb $0x05, %ah // is y == ±inf ?
+ cmpb $0x05, %ah // is y == ±inf ?
je 12f
cmpb $0x01, %ah // is y == NaN ?
movb %ah, %dh
andb $0x45, %ah
cmpb $0x40, %ah
- je 20f // x is ±0
+ je 20f // x is ±0
cmpb $0x05, %ah
- je 15f // x is ±inf
+ je 15f // x is ±inf
cmpb $0x01, %ah
je 31f // x is NaN
LDBL_CHECK_FORCE_UFLOW_NONNAN
ret
- /* y is ±NAN */
+ /* y is ±NAN */
30: fldt 8(%rsp) // x : y
fldl MO(one) // 1.0 : x : y
fucomip %st(1),%st // x : y
cfi_adjust_cfa_offset (-40)
ret
- // pow(x,±0) = 1, unless x is sNaN
+ // pow(x,±0) = 1, unless x is sNaN
.align ALIGNARG(4)
11: fstp %st(0) // pop y
fldt 8(%rsp) // x
fadd %st(0)
ret
- // y == ±inf
+ // y == ±inf
.align ALIGNARG(4)
12: fstp %st(0) // pop y
fldl MO(one) // 1
ret
.align ALIGNARG(4)
- // x is ±inf
+ // x is ±inf
15: fstp %st(0) // y
testb $2, %dh
jz 16f // jump if x == +inf
ret
.align ALIGNARG(4)
- // x is ±0
+ // x is ±0
20: fstp %st(0) // y
testb $2, %dl
jz 21f // y > 0
- // x is ±0 and y is < 0. We must find out whether y is an odd integer.
+ // x is ±0 and y is < 0. We must find out whether y is an odd integer.
testb $2, %dh
jz 25f
ret
.align ALIGNARG(4)
- // x is ±0 and y is > 0. We must find out whether y is an odd integer.
+ // x is ±0 and y is > 0. We must find out whether y is an odd integer.
21: testb $2, %dh
jz 22f