2026-08-02 11:45:00 +02:00
|
|
|
// 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:
|
2026-09-17 20:33:18 +02:00
|
|
|
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
|
|
|
|
|
|
2026-08-02 11:45:00 +02:00
|
|
|
cas_fail:
|
2026-09-17 20:33:18 +02:00
|
|
|
MOV X0, ret+24(FP)
|
|
|
|
|
RET
|
2026-08-02 11:45:00 +02:00
|
|
|
|
|
|
|
|
// func intToFloat(x int64) float64
|
|
|
|
|
TEXT ·intToFloat(SB), NOSPLIT, $0-16
|
2026-09-17 20:33:18 +02:00
|
|
|
MOV a+0(FP), X10
|
|
|
|
|
FCVTDL X10, F10
|
|
|
|
|
FSD F10, ret+8(FP)
|
|
|
|
|
RET
|
2026-08-02 11:45:00 +02:00
|
|
|
|
|
|
|
|
// func compare(a, b float64) bool
|
|
|
|
|
TEXT ·compare(SB), NOSPLIT, $0-24
|
2026-09-17 20:33:18 +02:00
|
|
|
FLD a+0(FP), F10
|
|
|
|
|
FLD b+8(FP), F11
|
|
|
|
|
FLTD F10, F11, X10
|
|
|
|
|
MOV X10, ret+16(FP)
|
|
|
|
|
RET
|