blob: 318fa2c46572da938774d5ece1fff37c8e6771c6 [file] [log] [blame]
Charles L. Dorian6b80a5f2010-03-03 18:17:13 -08001// 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
Rob Pike8bca1482014-08-12 17:04:45 -07005#include "textflag.h"
Keith Randall1f796632013-08-12 10:25:18 -07006
Charles L. Dorian6b80a5f2010-03-03 18:17:13 -08007// func Remainder(x, y float64) float64
Keith Randall1f796632013-08-12 10:25:18 -07008TEXT ·Remainder(SB),NOSPLIT,$0
Charles L. Dorian6b80a5f2010-03-03 18:17:13 -08009 FMOVD y+8(FP), F0 // F0=y
10 FMOVD x+0(FP), F0 // F0=x, F1=y
11 FPREM1 // F0=reduced_x, F1=y
12 FSTSW AX // AX=status word
13 ANDW $0x0400, AX
14 JNE -3(PC) // jump if reduction incomplete
15 FMOVDP F0, F1 // F0=x-q*y
Russ Cox07720b62013-03-22 12:57:55 -040016 FMOVDP F0, ret+16(FP)
Charles L. Dorian6b80a5f2010-03-03 18:17:13 -080017 RET