mat proc kernel std tamplate is ok, merging old decl

This commit is contained in:
Nitload
2026-03-02 00:24:15 +08:00
parent e198f22712
commit 67fbbde449
8 changed files with 279 additions and 290 deletions
+26 -25
View File
@@ -6,8 +6,9 @@
#include "sn_intrinsic.std.h"
#include "sn_intrinsic.context.x86.h"
STD_MK_RPOC_DECL(float, sse, , fill)
SN_MK_PROC_DECL_STD(float, sse, , fill)
{
__mk_param_std(BUFFER, ANS_SCALAR, float);
register __m128 vec = _mm_set_ps1(((float *)(scalar->data))[0]);
for (size_t i = 0; i < count; i++) {
ans[i].f32_x[0] = vec;
@@ -17,7 +18,7 @@ STD_MK_RPOC_DECL(float, sse, , fill)
}
}
DECLARE_BUF_PROC_ANS_SCALAR(float, avx, , fill)
SN_MK_PROC_DECL_STD(float, avx, , fill)
{
register __m256 vec = _mm256_broadcast_ss(((float *)(scalar->data)));
for (size_t i = 0; i < count; i++) {
@@ -26,7 +27,7 @@ DECLARE_BUF_PROC_ANS_SCALAR(float, avx, , fill)
}
}
DECLARE_BUF_PROC_ANS_SCALAR(float, 512, , fill)
SN_MK_PROC_DECL_STD(float, 512, , fill)
{
register __m512 vec = _mm512_broadcastss_ps(((__m128 *)(scalar->data))[0]);
for (size_t i = 0; i < count; i++) {
@@ -34,7 +35,7 @@ DECLARE_BUF_PROC_ANS_SCALAR(float, 512, , fill)
}
}
DECLARE_BUF_PROC_ANS_SCALAR(double, sse, , fill)
SN_MK_PROC_DECL_STD(double, sse, , fill)
{
register __m128d vec = _mm_set1_pd(((double *)(scalar->data))[0]);
for (size_t i = 0; i < count; i++) {
@@ -49,7 +50,7 @@ DECLARE_BUF_PROC_ANS_SCALAR(double, sse, , fill)
}
}
DECLARE_BUF_PROC_ANS_SCALAR(double, avx, , fill)
SN_MK_PROC_DECL_STD(double, avx, , fill)
{
register __m256d vec = _mm256_broadcast_sd(((double *)(scalar->data)));
for (size_t i = 0; i < count; i++) {
@@ -60,7 +61,7 @@ DECLARE_BUF_PROC_ANS_SCALAR(double, avx, , fill)
}
}
DECLARE_BUF_PROC_ANS_SCALAR(double, 512, , fill)
SN_MK_PROC_DECL_STD(double, 512, , fill)
{
register __m512d vec = _mm512_broadcastsd_pd(_mm_loadu_pd(scalar));
for (size_t i = 0; i < count; i++) {
@@ -69,9 +70,9 @@ DECLARE_BUF_PROC_ANS_SCALAR(double, 512, , fill)
}
}
STD_MK_PROC_DECL(float, sse, , add)
SN_MK_PROC_DECL_STD(float, sse, , add)
{
__mk_param(BUFFER, LEFT_RIGHT_ANS, float);
__mk_param_std(BUFFER, LEFT_RIGHT_ANS, float);
for (size_t i = 0; i < count; i++) {
register __m128 c0 = _mm_add_ps(left[i].f32_x[0], right[i].f32_x[0]);
@@ -86,7 +87,7 @@ STD_MK_PROC_DECL(float, sse, , add)
}
}
DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, avx, , add)
SN_MK_PROC_DECL_STD(float, avx, , add)
{
for (size_t i = 0; i < count; i++) {
size_t s = sizeof(MAT_KERNEL(float));
@@ -97,14 +98,14 @@ DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, avx, , add)
}
}
DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, 512, , add)
SN_MK_PROC_DECL_STD(float, 512, , add)
{
for (size_t i = 0; i < count; i++) {
register __m512 c0 = _mm512_add_ps(left[i].f32_z[0], right[i].f32_z[0]);
ans[i].f32_z[0] = c0;
}
}
DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, sse, , add)
SN_MK_PROC_DECL_STD(double, sse, , add)
{
for (size_t i = 0; i < count; i++) {
register __m128d c0 = _mm_add_pd(_mm_castps_pd(left[i].f32_x[0]),
@@ -135,7 +136,7 @@ DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, sse, , add)
}
}
DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, avx, , add)
SN_MK_PROC_DECL_STD(double, avx, , add)
{
for (size_t i = 0; i < count; i++) {
size_t s = sizeof(MAT_KERNEL(float));
@@ -150,7 +151,7 @@ DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, avx, , add)
}
}
DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, 512, , add)
SN_MK_PROC_DECL_STD(double, 512, , add)
{
for (size_t i = 0; i < count; i++) {
register __m512d c0 = _mm512_add_pd(left[i].f64_z[0], right[i].f64_z[0]);
@@ -160,7 +161,7 @@ DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, 512, , add)
}
}
DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, sse, , sub)
SN_MK_PROC_DECL_STD(float, sse, , sub)
{
for (size_t i = 0; i < count; i++) {
register __m128 c0 = _mm_sub_ps(left[i].f32_x[0], right[i].f32_x[0]);
@@ -175,7 +176,7 @@ DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, sse, , sub)
}
}
DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, avx, , sub)
SN_MK_PROC_DECL_STD(float, avx, , sub)
{
for (size_t i = 0; i < count; i++) {
register __m256 c0 = _mm256_sub_ps(left[i].f32_y[0], right[i].f32_y[0]);
@@ -185,7 +186,7 @@ DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, avx, , sub)
}
}
DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, 512, , sub)
SN_MK_PROC_DECL_STD(float, 512, , sub)
{
for (size_t i = 0; i < count; i++) {
register __m512 c0 = _mm512_sub_ps(left[i].f32_z[0], right[i].f32_z[0]);
@@ -193,7 +194,7 @@ DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, 512, , sub)
}
}
DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, sse, , sub)
SN_MK_PROC_DECL_STD(double, sse, , sub)
{
for (size_t i = 0; i < count; i++) {
register __m128d c0 = _mm_sub_pd(left[i].f64_x[0], right[i].f64_x[0]);
@@ -216,7 +217,7 @@ DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, sse, , sub)
}
}
DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, avx, , sub)
SN_MK_PROC_DECL_STD(double, avx, , sub)
{
for (size_t i = 0; i < count; i++) {
register __m256 c0 = _mm256_sub_ps(left[i].f32_y[0], right[i].f32_y[0]);
@@ -226,7 +227,7 @@ DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, avx, , sub)
}
}
DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, 512, , sub)
SN_MK_PROC_DECL_STD(double, 512, , sub)
{
for (size_t i = 0; i < count; i++) {
register __m512 c0 = _mm512_sub_ps(left[i].f32_z[0], right[i].f32_z[0]);
@@ -234,7 +235,7 @@ DECLARE_BUF_PROC_LEFT_RIGHT_ANS(double, 512, , sub)
}
}
DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(float, sse, , scalar_mul)
SN_MK_PROC_DECL_STD(float, sse, , scalar_mul)
{
register __m128 vec = _mm_set_ps1(((float *)(scalar->data))[0]);
for (size_t i = 0; i < count; i++) {
@@ -250,7 +251,7 @@ DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(float, sse, , scalar_mul)
}
}
DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(float, avx, , scalar_mul)
SN_MK_PROC_DECL_STD(float, avx, , scalar_mul)
{
register __m256 vec = _mm256_broadcast_ss(((float *)(scalar->data)));
for (size_t i = 0; i < count; i++) {
@@ -262,7 +263,7 @@ DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(float, avx, , scalar_mul)
}
}
DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(float, 512, , scalar_mul)
SN_MK_PROC_DECL_STD(float, 512, , scalar_mul)
{
register __m512 vec = _mm512_broadcastss_ps(((__m128 *)(scalar->data))[0]);
for (size_t i = 0; i < count; i++) {
@@ -272,7 +273,7 @@ DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(float, 512, , scalar_mul)
}
}
DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(double, sse, , scalar_mul)
SN_MK_PROC_DECL_STD(double, sse, , scalar_mul)
{
register __m128d vec = _mm_set1_pd(((double *)(scalar->data))[0]);
for (size_t i = 0; i < count; i++) {
@@ -296,7 +297,7 @@ DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(double, sse, , scalar_mul)
}
}
DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(double, avx, , scalar_mul)
SN_MK_PROC_DECL_STD(double, avx, , scalar_mul)
{
register __m256d vec = _mm256_broadcast_sd(((double *)(scalar->data)));
for (size_t i = 0; i < count; i++) {
@@ -312,7 +313,7 @@ DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(double, avx, , scalar_mul)
}
}
DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(double, 512, , scalar_mul)
SN_MK_PROC_DECL_STD(double, 512, , scalar_mul)
{
register __m512d vec = _mm512_broadcastsd_pd(_mm_load_pd(scalar));
for (size_t i = 0; i < count; i++) {