...
Text file
src/math/dim_arm64.s
Documentation: math
1// Copyright 2016 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#define PosInf 0x7FF0000000000000
8#define NaN 0x7FF8000000000001
9#define NegInf 0xFFF0000000000000
10
11// func ·archMax(x, y float64) float64
12TEXT ·archMax(SB),NOSPLIT,$0
13 // +Inf special cases
14 MOVD $PosInf, R0
15 MOVD x+0(FP), R1
16 CMP R0, R1
17 BEQ isPosInf
18 MOVD y+8(FP), R2
19 CMP R0, R2
20 BEQ isPosInf
21 // normal case
22 FMOVD R1, F0
23 FMOVD R2, F1
24 FMAXD F0, F1, F0
25 FMOVD F0, ret+16(FP)
26 RET
27isPosInf: // return +Inf
28 MOVD R0, ret+16(FP)
29 RET
30
31// func archMin(x, y float64) float64
32TEXT ·archMin(SB),NOSPLIT,$0
33 // -Inf special cases
34 MOVD $NegInf, R0
35 MOVD x+0(FP), R1
36 CMP R0, R1
37 BEQ isNegInf
38 MOVD y+8(FP), R2
39 CMP R0, R2
40 BEQ isNegInf
41 // normal case
42 FMOVD R1, F0
43 FMOVD R2, F1
44 FMIND F0, F1, F0
45 FMOVD F0, ret+16(FP)
46 RET
47isNegInf: // return -Inf
48 MOVD R0, ret+16(FP)
49 RET
View as plain text