...

Text file src/reflect/float32reg_riscv64.s

Documentation: reflect

     1// Copyright 2022 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// riscv64 allows 32-bit floats to live in the bottom
     8// part of the register, it expects them to be NaN-boxed.
     9// These functions are needed to ensure correct conversions
    10// on riscv64.
    11
    12// Convert float32->uint64
    13TEXT ·archFloat32ToReg(SB),NOSPLIT,$0-16
    14	MOVF	val+0(FP), F1
    15	MOVD	F1, ret+8(FP)
    16	RET
    17
    18// Convert uint64->float32
    19TEXT ·archFloat32FromReg(SB),NOSPLIT,$0-12
    20	// Normally a float64->float32 conversion
    21	// would need rounding, but riscv64 store valid
    22	// float32 in the lower 32 bits, thus we only need to
    23	// unboxed the NaN-box by store a float32.
    24	MOVD	reg+0(FP), F1
    25	MOVF	F1, ret+8(FP)
    26	RET
    27

View as plain text