Files
gasm-sdk/testdata/lrsc_cvt_riscv64.s
2026-09-17 20:33:18 +02:00

38 lines
774 B
ArmAsm

// Copyright (c) 2026 Petr Balvín <opensource@petrbalvin.org> (https://petrbalvin.org)
// SPDX-License-Identifier: BSD-3-Clause
#include "textflag.h"
// func casLoop(ptr *int64, old, new int64) bool
TEXT ·casLoop(SB), NOSPLIT, $0-32
cas_retry:
MOV a+0(FP), X10
LRD (X10), X11
MOV b+8(FP), X12
BNE X11, X12, cas_fail
MOV c+16(FP), X13
SCD X13, (X10), X14
BNE X14, X0, cas_retry
ADDI X0, $1, X15
MOV X15, ret+24(FP)
RET
cas_fail:
MOV X0, ret+24(FP)
RET
// func intToFloat(x int64) float64
TEXT ·intToFloat(SB), NOSPLIT, $0-16
MOV a+0(FP), X10
FCVTDL X10, F10
FSD F10, ret+8(FP)
RET
// func compare(a, b float64) bool
TEXT ·compare(SB), NOSPLIT, $0-24
FLD a+0(FP), F10
FLD b+8(FP), F11
FLTD F10, F11, X10
MOV X10, ret+16(FP)
RET