feat(asm): encode the arm64 FP immediate moves
Assisted-by: GLM 5.3 Flash
This commit is contained in:
1 parent
a9b54b6868
commit
fbdad8424f
4 files changed
+181
No files matched your search
Vendored
+34
@@ -0,0 +1,34 @@
|
||||
// Copyright (c) 2026 Petr Balvín <opensource@petrbalvin.org> (https://petrbalvin.org)
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
// Differential kernel for the arm64 FP immediate moves: the FMOV (immediate)
|
||||
// instruction for the 8-bit encodable values and the FMOV-from-ZR move for
|
||||
// zero. The values outside the 8-bit field pool through the toolchain's
|
||||
// $f64 symbols with a PC-relative relocation; gasm carries no such pool and
|
||||
// rejects the spelling instead (its previous encoding was wrong code).
|
||||
// Every function is byte-compared against go tool asm.
|
||||
|
||||
#include "textflag.h"
|
||||
|
||||
// func encodable()
|
||||
TEXT ·encodable(SB), NOSPLIT, $0-0
|
||||
FMOVS $ (4.0), F0
|
||||
FMOVD $ (4.0), F0
|
||||
FMOVS $ (0.265625), F1
|
||||
FMOVD $ (0.1796875), F2
|
||||
FMOVS $ (0.96875), F3
|
||||
FMOVD $ (28.0), F4
|
||||
FMOVD $ (-4.0), F6
|
||||
FMOVD $ (1.0), F7
|
||||
FMOVD $ (0.5), F8
|
||||
RET
|
||||
|
||||
// func zeroes()
|
||||
TEXT ·zeroes(SB), NOSPLIT, $0-0
|
||||
FMOVD $0, F0
|
||||
FMOVS $0, F1
|
||||
FMOVD $ (0.0), F5
|
||||
FMOVS $ (0.0), F6
|
||||
FMOVD ZR, F2
|
||||
FMOVS ZR, F3
|
||||
RET
|
||||
Reference in new issue
Block a user