OLD | NEW |
1 // Copyright 2010 The Go Authors. All rights reserved. | 1 // Copyright 2010 The Go Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style | 2 // Use of this source code is governed by a BSD-style |
3 // license that can be found in the LICENSE file. | 3 // license that can be found in the LICENSE file. |
4 | 4 |
5 #include "../../cmd/ld/textflag.h" | 5 #include "textflag.h" |
6 | 6 |
7 // func Hypot(p, q float64) float64 | 7 // func Hypot(p, q float64) float64 |
8 TEXT ·Hypot(SB),NOSPLIT,$0 | 8 TEXT ·Hypot(SB),NOSPLIT,$0 |
9 // test bits for not-finite | 9 // test bits for not-finite |
10 MOVL p_hi+4(FP), AX // high word p | 10 MOVL p_hi+4(FP), AX // high word p |
11 ANDL $0x7ff00000, AX | 11 ANDL $0x7ff00000, AX |
12 CMPL AX, $0x7ff00000 | 12 CMPL AX, $0x7ff00000 |
13 JEQ not_finite | 13 JEQ not_finite |
14 MOVL q_hi+12(FP), AX // high word q | 14 MOVL q_hi+12(FP), AX // high word q |
15 ANDL $0x7ff00000, AX | 15 ANDL $0x7ff00000, AX |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
50 ANDL $0x7fffffff, AX | 50 ANDL $0x7fffffff, AX |
51 CMPL AX, $0x7ff00000 | 51 CMPL AX, $0x7ff00000 |
52 JEQ is_inf | 52 JEQ is_inf |
53 MOVL $0x7ff80000, ret_hi+20(FP) // return NaN = 0x7FF8000000000001 | 53 MOVL $0x7ff80000, ret_hi+20(FP) // return NaN = 0x7FF8000000000001 |
54 MOVL $0x00000001, ret_lo+16(FP) | 54 MOVL $0x00000001, ret_lo+16(FP) |
55 RET | 55 RET |
56 is_inf: | 56 is_inf: |
57 MOVL AX, ret_hi+20(FP) // return +Inf = 0x7FF0000000000000 | 57 MOVL AX, ret_hi+20(FP) // return +Inf = 0x7FF0000000000000 |
58 MOVL $0x00000000, ret_lo+16(FP) | 58 MOVL $0x00000000, ret_lo+16(FP) |
59 RET | 59 RET |
OLD | NEW |