// Copyright 2016 The Go Authors. All rights reserved. | |
// Use of this source code is governed by a BSD-style | |
// license that can be found in the LICENSE file. | |
#include "textflag.h" | |
// func Modf(f float64) (int float64, frac float64) | |
TEXT ·Modf(SB),NOSPLIT,$0 | |
MOVD f+0(FP), R0 | |
FMOVD R0, F0 | |
FRINTZD F0, F1 | |
FMOVD F1, int+8(FP) | |
FSUBD F1, F0 | |
FMOVD F0, R1 | |
AND $(1<<63), R0 | |
ORR R0, R1 // must have same sign | |
MOVD R1, frac+16(FP) | |
RET |