github.com/tcnksm/go@v0.0.0-20141208075154-439b32936367/src/math/frexp_386.s (about)

     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