keep working on matrix. key is to remove old matrix types

Signed-off-by: Youmu Liu <105042599+Nitload-NSI@users.noreply.github.com>
This commit is contained in:
Youmu Liu
2025-08-26 22:02:38 +08:00
parent e5e4b1dd36
commit 9f6e3fe13a
15 changed files with 152 additions and 812 deletions
+4 -1
View File
@@ -83,6 +83,7 @@
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<AssemblerOutput>All</AssemblerOutput>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
@@ -97,6 +98,7 @@
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<AssemblerOutput>All</AssemblerOutput>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
@@ -139,7 +141,7 @@
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<AssemblerOutput>NoListing</AssemblerOutput>
<AssemblerOutput>All</AssemblerOutput>
<LanguageStandard>stdcpp20</LanguageStandard>
<LanguageStandard_C>stdc17</LanguageStandard_C>
<CompileAs>CompileAsC</CompileAs>
@@ -157,6 +159,7 @@
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="fma_sse.c" />
<ClCompile Include="sn-src\dllmain.c" />
<ClCompile Include="sn-src\FactorialSIMD.c" />
<ClCompile Include="sn-src\hash.c" />
+12 -4
View File
@@ -64,6 +64,7 @@ typedef void(SN_DECL *MATRIXTRANSPOSEPROC)(void *source, void *target);
typedef void(SN_DECL *MATRIXDETPROC)(void *mat, void *transpose);
typedef void(SN_DECL *MATARITHMETIC)(void *left, void *right, void *ans);
typedef void(SN_DECL *SCALERMATARITHMETIC)(void *left, void *right, void *ans);
typedef void(SN_DECL* MATFMAPROC)(mat_kernel* left, mat_kernel* right, mat_kernel* ans);
typedef uint64_t(SN_DECL *FACTORIALROC)(int n);
@@ -102,12 +103,18 @@ INTERNAL float SN_DECL det_mat4(__4_columnset *matrix, __4_columnset *transpose)
#pragma endregion
#pragma region fma
INTERNAL void SN_DECL fma_44_sse(mat_kernel* left, mat_kernel* right);
#pragma endregion
#pragma region dot
INTERNAL void FORCEINLINE SN_DECL dot_41_sse(__4_columnset *transpose, __m128 *vector, __m128 *ans);
INTERNAL void FORCEINLINE SN_DECL dot_31_sse(__3_columnset *transpose, __m128 *vector, __m128 *ans);
INTERNAL void FORCEINLINE SN_DECL dot_41_avx(__4_columnset *transpose, __m128 *vector, __m128 *ans);
INTERNAL void FORCEINLINE SN_DECL dot_31_avx(__3_columnset *transpose, __m128 *vector, __m128 *ans);
INTERNAL void SN_DECL dot_41_sse(__4_columnset *transpose, __m128 *vector, __m128 *ans);
INTERNAL void SN_DECL dot_31_sse(__3_columnset *transpose, __m128 *vector, __m128 *ans);
INTERNAL void SN_DECL dot_41_avx(__4_columnset *transpose, __m128 *vector, __m128 *ans);
INTERNAL void SN_DECL dot_31_avx(__3_columnset *transpose, __m128 *vector, __m128 *ans);
INTERNAL void SN_DECL dot_32_sse(__3_columnset *transpose, __m128 *vector, __m128 *ans);
INTERNAL void SN_DECL dot_32_avx(__3_columnset *transpose, __m128 *vector, __m128 *ans);
@@ -144,6 +151,7 @@ typedef struct ssc_intrinsic {
DOTPROC dot_42;
DOTPROC dot_43;
FACTORIALROC factorial_simd;
void (*fma_44)(void* left, void* right, void* ans);
int (*index_pair)(short const *str, uint32_t target, int length);
VECTORNORMALIZEPROC normalize_3;
MATARITHMETIC sub_m2;
+3
View File
@@ -88,6 +88,7 @@ void load_intrinsic_sse(ssc_intrinsic *context)
context->sub_m3 = submatrix3_sse;
context->sub_m4 = submatrix4_sse;
context->factorial_simd = factorial_simd_sse;
context->fma_44 = fma_44_sse;
}
void load_intrinsic_avx(ssc_intrinsic *context)
@@ -114,6 +115,7 @@ void load_intrinsic_avx(ssc_intrinsic *context)
context->city_hash_simplify = city_hash_simplify_sse;
context->index_pair = index_pair_sse;
context->factorial_simd = factorial_simd_sse;
context->fma_44 = fma_44_sse;
}
void load_intrinsic_512(ssc_intrinsic *context)
@@ -140,4 +142,5 @@ void load_intrinsic_512(ssc_intrinsic *context)
context->city_hash_simplify = city_hash_simplify_sse;
context->index_pair = index_pair_sse;
context->factorial_simd = factorial_simd_sse;
context->fma_44 = fma_44_sse;
}