avx_sig: Adapt avx_sig test for Aarch64

Reviewed by:		kib
Differential Revision:	https://reviews.freebsd.org/D40309
This commit is contained in:
Dmitry Chagin 2023-05-30 11:19:40 +03:00
parent 68348f41c9
commit 4f2c2a122c
3 changed files with 65 additions and 1 deletions

View File

@ -10,5 +10,8 @@ LIBADD= pthread
.if ${MACHINE_CPUARCH} == "amd64"
SRCS+= c2x2c_amd64.S
.endif
.if ${MACHINE_CPUARCH} == "aarch64"
SRCS+= c2x2c_aarch64.S
.endif
.include <bsd.prog.mk>

View File

@ -48,14 +48,20 @@
#define nitems(x) (sizeof((x)) / sizeof((x)[0]))
#endif
#if defined(__amd64__)
#define SIMDRNAM "xmm"
#define NREGS 16
#elif defined(__aarch64__)
#define SIMDRNAM "q"
#define NREGS 32
#endif
struct simdreg {
uint8_t simd_bytes[16];
};
struct simd {
struct simdreg simdreg[16];
struct simdreg simdreg[NREGS];
};
void cpu_to_simd(struct simd *simd);

View File

@ -0,0 +1,55 @@
/*
* This file is in public domain.
* Written by Dmitry Chagin <dchagin@FreeBSD.org>
*
* $FreeBSD$
*/
.global cpu_to_simd
.type cpu_to_simd, @function
cpu_to_simd:
stp q0, q1, [x0, #( 0 * 16)]
stp q2, q3, [x0, #( 2 * 16)]
stp q4, q5, [x0, #( 4 * 16)]
stp q6, q7, [x0, #( 6 * 16)]
stp q8, q9, [x0, #( 8 * 16)]
stp q10, q11, [x0, #(10 * 16)]
stp q12, q13, [x0, #(12 * 16)]
stp q14, q15, [x0, #(14 * 16)]
stp q16, q17, [x0, #(16 * 16)]
stp q18, q19, [x0, #(18 * 16)]
stp q20, q21, [x0, #(20 * 16)]
stp q22, q23, [x0, #(22 * 16)]
stp q24, q25, [x0, #(24 * 16)]
stp q26, q27, [x0, #(26 * 16)]
stp q28, q29, [x0, #(28 * 16)]
stp q30, q31, [x0, #(30 * 16)]
ret
.size cpu_to_simd, . - cpu_to_simd
.global simd_to_cpu
.type simd_to_cpu, @function
simd_to_cpu:
ldp q0, q1, [x0, #( 0 * 16)]
ldp q2, q3, [x0, #( 2 * 16)]
ldp q4, q5, [x0, #( 4 * 16)]
ldp q6, q7, [x0, #( 6 * 16)]
ldp q8, q9, [x0, #( 8 * 16)]
ldp q10, q11, [x0, #(10 * 16)]
ldp q12, q13, [x0, #(12 * 16)]
ldp q14, q15, [x0, #(14 * 16)]
ldp q16, q17, [x0, #(16 * 16)]
ldp q18, q19, [x0, #(18 * 16)]
ldp q20, q21, [x0, #(20 * 16)]
ldp q22, q23, [x0, #(22 * 16)]
ldp q24, q25, [x0, #(24 * 16)]
ldp q26, q27, [x0, #(26 * 16)]
ldp q28, q29, [x0, #(28 * 16)]
ldp q30, q31, [x0, #(30 * 16)]
ret
.size simd_to_cpu, . - simd_to_cpu
.section .note.GNU-stack,"",@progbits