Black Lives Matter. Support the Equal Justice Initiative.

# Text file src/math/dim_s390x.s

## Documentation: math

```     1  // Copyright 2016 The Go Authors. All rights reserved.
2  // Use of this source code is governed by a BSD-style
4
5  // Based on dim_amd64.s
6
7  #include "textflag.h"
8
9  #define PosInf 0x7FF0000000000000
10  #define NaN    0x7FF8000000000001
11  #define NegInf 0xFFF0000000000000
12
13  // func ·Max(x, y float64) float64
14  TEXT ·archMax(SB),NOSPLIT,\$0
15  	// +Inf special cases
16  	MOVD    \$PosInf, R4
17  	MOVD    x+0(FP), R8
18  	CMPUBEQ R4, R8, isPosInf
19  	MOVD    y+8(FP), R9
20  	CMPUBEQ R4, R9, isPosInf
21  	// NaN special cases
22  	MOVD    \$~(1<<63), R5 // bit mask
23  	MOVD    \$PosInf, R4
24  	MOVD    R8, R2
25  	AND     R5, R2 // x = |x|
26  	CMPUBLT R4, R2, isMaxNaN
27  	MOVD    R9, R3
28  	AND     R5, R3 // y = |y|
29  	CMPUBLT R4, R3, isMaxNaN
30  	// ±0 special cases
31  	OR      R3, R2
32  	BEQ     isMaxZero
33
34  	FMOVD   x+0(FP), F1
35  	FMOVD   y+8(FP), F2
36  	FCMPU   F2, F1
37  	BGT     +3(PC)
38  	FMOVD   F1, ret+16(FP)
39  	RET
40  	FMOVD   F2, ret+16(FP)
41  	RET
42  isMaxNaN: // return NaN
43  	MOVD	\$NaN, R4
44  isPosInf: // return +Inf
45  	MOVD    R4, ret+16(FP)
46  	RET
47  isMaxZero:
48  	MOVD    \$(1<<63), R4 // -0.0
49  	CMPUBEQ R4, R8, +3(PC)
50  	MOVD    R8, ret+16(FP) // return 0
51  	RET
52  	MOVD    R9, ret+16(FP) // return other 0
53  	RET
54
55  // func archMin(x, y float64) float64
56  TEXT ·archMin(SB),NOSPLIT,\$0
57  	// -Inf special cases
58  	MOVD    \$NegInf, R4
59  	MOVD    x+0(FP), R8
60  	CMPUBEQ R4, R8, isNegInf
61  	MOVD    y+8(FP), R9
62  	CMPUBEQ R4, R9, isNegInf
63  	// NaN special cases
64  	MOVD    \$~(1<<63), R5
65  	MOVD    \$PosInf, R4
66  	MOVD    R8, R2
67  	AND     R5, R2 // x = |x|
68  	CMPUBLT R4, R2, isMinNaN
69  	MOVD    R9, R3
70  	AND     R5, R3 // y = |y|
71  	CMPUBLT R4, R3, isMinNaN
72  	// ±0 special cases
73  	OR      R3, R2
74  	BEQ     isMinZero
75
76  	FMOVD   x+0(FP), F1
77  	FMOVD   y+8(FP), F2
78  	FCMPU   F2, F1
79  	BLT     +3(PC)
80  	FMOVD   F1, ret+16(FP)
81  	RET
82  	FMOVD   F2, ret+16(FP)
83  	RET
84  isMinNaN: // return NaN
85  	MOVD	\$NaN, R4
86  isNegInf: // return -Inf
87  	MOVD    R4, ret+16(FP)
88  	RET
89  isMinZero:
90  	MOVD    \$(1<<63), R4 // -0.0
91  	CMPUBEQ R4, R8, +3(PC)
92  	MOVD    R9, ret+16(FP) // return other 0
93  	RET
94  	MOVD    R8, ret+16(FP) // return -0
95  	RET
96
97
```

View as plain text