vector and matrix optimization

This commit is contained in:
Youmu Liu
2025-10-14 18:13:18 +08:00
parent 47d2bfe558
commit c5eaf250ab
16 changed files with 482 additions and 381 deletions
+2 -6
View File
@@ -1,7 +1,3 @@
#ifdef _MSC_VER
#pragma once
#endif
#ifndef SSC_INTRIN
#define SSC_INTRIN
@@ -128,7 +124,7 @@ typedef struct sn_intrinsic {
SCALARMATARITHMETIC f32_scalar_mul;
MATARITHMETIC f32_sub;
MATTRANSPOSEPROC f32_transpose;
VECTORNORMALIZEPROC normalize_3;
VECTORNORMALIZEPROC f32_normalize_3;
} sn_intrinsic;
typedef enum most_advanced_instruction {
@@ -145,4 +141,4 @@ typedef enum most_advanced_instruction {
#endif
} most_advanced_instruction;
#endif // !SSC_INTRIN
#endif
+4 -11
View File
@@ -1,15 +1,15 @@
#ifndef SN_MATKERNEL
#define SN_MATKERNEL
#include <immintrin.h>
#define ELEMENTSIZE(T) sizeof(T)
#define XMMCOUNT(T) sizeof(T)
#define YMMCOUNT(T) sizeof(T) / 2
#define ZMMCOUNT(T) sizeof(T) / 4
#include <immintrin.h>
#define MAT_KERNEL(T) \
union mat_kernel_##T##{ \
union { \
__m128 xmm[XMMCOUNT(T)]; \
__m256 ymm[YMMCOUNT(T)]; \
__m512 zmm[ZMMCOUNT(T)]; \
@@ -17,18 +17,11 @@
}
#define VEC(T) \
union vec_##T##{ \
union { \
__m128 xmm[XMMCOUNT(T) / 4]; \
__m256 ymm[YMMCOUNT(T) / 4]; \
__m512 zmm[ZMMCOUNT(T) / 4]; \
T v[4]; \
}
/*
#undef ELEMENTSIZE
#undef XMMCOUNT
#undef YMMCOUNT
#undef ZMMCOUNT
/**/
#endif