...
Text file
src/math/dim_riscv64.s
Documentation: math
1// Copyright 2020 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// Values returned from an FCLASS instruction.
8#define NegInf 0x001
9#define PosInf 0x080
10#define NaN 0x200
11
12// func archMax(x, y float64) float64
13TEXT ·archMax(SB),NOSPLIT,$0
14 MOVD x+0(FP), F0
15 MOVD y+8(FP), F1
16 FCLASSD F0, X5
17 FCLASSD F1, X6
18
19 // +Inf special cases
20 MOV $PosInf, X7
21 BEQ X7, X5, isMaxX
22 BEQ X7, X6, isMaxY
23
24 // NaN special cases
25 MOV $NaN, X7
26 BEQ X7, X5, isMaxX
27 BEQ X7, X6, isMaxY
28
29 // normal case
30 FMAXD F0, F1, F0
31 MOVD F0, ret+16(FP)
32 RET
33
34isMaxX: // return x
35 MOVD F0, ret+16(FP)
36 RET
37
38isMaxY: // return y
39 MOVD F1, ret+16(FP)
40 RET
41
42// func archMin(x, y float64) float64
43TEXT ·archMin(SB),NOSPLIT,$0
44 MOVD x+0(FP), F0
45 MOVD y+8(FP), F1
46 FCLASSD F0, X5
47 FCLASSD F1, X6
48
49 // -Inf special cases
50 MOV $NegInf, X7
51 BEQ X7, X5, isMinX
52 BEQ X7, X6, isMinY
53
54 // NaN special cases
55 MOV $NaN, X7
56 BEQ X7, X5, isMinX
57 BEQ X7, X6, isMinY
58
59 // normal case
60 FMIND F0, F1, F0
61 MOVD F0, ret+16(FP)
62 RET
63
64isMinX: // return x
65 MOVD F0, ret+16(FP)
66 RET
67
68isMinY: // return y
69 MOVD F1, ret+16(FP)
70 RET
View as plain text