LEFT | RIGHT |
(Both sides are equal) |
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 "textflag.h" | 5 #include "textflag.h" |
6 | 6 |
7 // func Mod(x, y float64) float64 | 7 // func Mod(x, y float64) float64 |
8 TEXT ·Mod(SB),NOSPLIT,$0 | 8 TEXT ·Mod(SB),NOSPLIT,$0 |
9 FMOVD y+8(FP), F0 // F0=y | 9 FMOVD y+8(FP), F0 // F0=y |
10 FMOVD x+0(FP), F0 // F0=x, F1=y | 10 FMOVD x+0(FP), F0 // F0=x, F1=y |
11 FPREM // F0=reduced_x, F1=y | 11 FPREM // F0=reduced_x, F1=y |
12 FSTSW AX // AX=status word | 12 FSTSW AX // AX=status word |
13 ANDW $0x0400, AX | 13 ANDW $0x0400, AX |
14 JNE -3(PC) // jump if reduction incomplete | 14 JNE -3(PC) // jump if reduction incomplete |
15 FMOVDP F0, F1 // F0=x-q*y | 15 FMOVDP F0, F1 // F0=x-q*y |
16 FMOVDP F0, ret+16(FP) | 16 FMOVDP F0, ret+16(FP) |
17 RET | 17 RET |
LEFT | RIGHT |