feat(asm): extend arm64 encoder with atomics, bitfield, SIMD and more test kernels

Assisted-by: MiMo V2.5 Pro
This commit is contained in:
2026-08-20 14:31:15 +02:00
parent 6e73f59e78
commit 97951cbeb6
9 changed files with 429 additions and 40 deletions
+3 -2
View File
@@ -48,7 +48,8 @@ func TestArm64EpilogueSmallEncoding(t *testing.T) {
if len(ret) != 12 {
t.Fatalf("epilogue length: got %d, want 12", len(ret))
}
expected := []uint32{0x9100a3fd, 0x9100c3ff, 0xd65f03c0}
// Non-leaf small frame: LDR FP, [SP, #-8]; LDR.P LR, [SP], #48; RET
expected := []uint32{0xf85f83fd, 0xf84307fe, 0xd65f03c0}
for i, w := range leWords(ret) {
if w != expected[i] {
t.Errorf("epilogue word %d: got %08x, want %08x", i, w, expected[i])
@@ -161,7 +162,7 @@ func TestArm64Bitmask(t *testing.T) {
ok bool
}{
{1, 1, 1, 0, 0, true}, // single bit at pos 0
{2, 1, 1, 1, 0, true}, // single bit at pos 1 (rotated right by1)
{2, 1, 1, 63, 0, true}, // single bit at pos 1 (immr = esize-1)
{0, 1, 0, 0, 0, false}, // zero is not a bitmask
{0xFFFFFFFFFFFFFFFF, 1, 0, 0, 0, false}, // all ones is not a bitmask
{0x5555555555555555, 1, 0, 0, 0x3E, true}, // alternating bits (esize=2, ones=1)