...

Text file src/pkg/math/dim_arm64.s

     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 ·Max(x, y float64) float64
    12	TEXT ·Max(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
    27	isPosInf: // return +Inf
    28		MOVD	R0, ret+16(FP)
    29		RET
    30	
    31	// func Min(x, y float64) float64
    32	TEXT ·Min(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
    47	isNegInf: // return -Inf
    48		MOVD	R0, ret+16(FP)
    49		RET

View as plain text