feat: gasm-devkit 0.1.0 — GAsm lexer, parser, linter, formatter, LSP and amd64 assembler
Assisted-by: Qwen 3.8 Max Preview
This commit is contained in:
Vendored
+56
@@ -0,0 +1,56 @@
|
||||
// Copyright (c) 2026 Petr Balvín <opensource@petrbalvin.org> (https://petrbalvin.org)
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#include "textflag.h"
|
||||
|
||||
// Index vector for the order-2 ramp.
|
||||
GLOBL ·idx16(SB), RODATA, $64
|
||||
DATA ·idx16+0(SB)/4, $1
|
||||
DATA ·idx16+4(SB)/4, $2
|
||||
|
||||
// A file-local (static) constant table.
|
||||
GLOBL mask24<>(SB), RODATA, $16
|
||||
DATA mask24<>+0(SB)/4, $0x80020100
|
||||
DATA mask24<>+4(SB)/4, $0x80050403
|
||||
|
||||
// func analyzeO1RangeAVX2(swin []int32, dstP []uint32, hist *[32]uint16) (partSum uint64, overflow bool)
|
||||
TEXT ·analyzeO1RangeAVX2(SB), NOSPLIT, $0-65
|
||||
MOVQ swin_base+0(FP), SI
|
||||
MOVQ dstP_base+24(FP), DI
|
||||
MOVQ dstP_len+32(FP), BX
|
||||
MOVQ hist+48(FP), R13
|
||||
|
||||
VPCMPEQD Y0, Y0, Y0
|
||||
VPSLLD $31, Y0, Y0
|
||||
|
||||
LEAQ (SI)(BX*4), R9
|
||||
MOVQ BX, R10
|
||||
ANDQ $-8, R10
|
||||
|
||||
vec1:
|
||||
CMPQ SI, R10
|
||||
JGE vec1done
|
||||
VMOVDQU (SI), Y1
|
||||
VMOVDQU 4(SI), Y2
|
||||
VPSUBD Y1, Y2, Y3
|
||||
ADDQ $32, SI
|
||||
JMP vec1
|
||||
vec1done:
|
||||
|
||||
MOVQ AX, partSum+56(FP)
|
||||
MOVB AL, overflow+64(FP)
|
||||
VZEROUPPER
|
||||
RET
|
||||
|
||||
// func decodeFixedO1AVX512(samples []int32, residual []int32)
|
||||
TEXT ·decodeFixedO1AVX512(SB), NOSPLIT, $0-48
|
||||
MOVQ samples_base+0(FP), SI
|
||||
VPBROADCASTD AX, Z15
|
||||
VMOVDQU32 (DI)(AX*1), Z0
|
||||
VALIGND $15, Z9, Z0, Z1
|
||||
VFMADD231PD Z14, Z12, Z10
|
||||
VPCMPEQD Z0, Z3, K1
|
||||
KTESTW K1, K1
|
||||
VPSRAQ X31, Z8, Z8
|
||||
VMOVDQU32 Z0, 4(SI)(AX*1)
|
||||
RET
|
||||
Reference in New Issue
Block a user