...
Text file src/pkg/math/frexp_386.s
1 // Copyright 2010 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 #include "textflag.h"
6
7 // func Frexp(f float64) (frac float64, exp int)
8 TEXT ·Frexp(SB),NOSPLIT,$0
9 FMOVD f+0(FP), F0 // F0=f
10 FXAM
11 FSTSW AX
12 SAHF
13 JNP nan_zero_inf
14 JCS nan_zero_inf
15 FXTRACT // F0=f (0<=f<1), F1=e
16 FMULD $(0.5), F0 // F0=f (0.5<=f<1), F1=e
17 FMOVDP F0, frac+8(FP) // F0=e
18 FLD1 // F0=1, F1=e
19 FADDDP F0, F1 // F0=e+1
20 FMOVLP F0, exp+16(FP) // (int=int32)
21 RET
22 nan_zero_inf:
23 FMOVDP F0, frac+8(FP) // F0=e
24 MOVL $0, exp+16(FP) // exp=0
25 RET
View as plain text