daily update on 20241226 by nitload youmu

This commit is contained in:
Nitload
2024-12-26 03:09:46 +08:00
parent 7c8d462ca5
commit 592ad55d57
94 changed files with 3767 additions and 1484 deletions
+26 -11
View File
@@ -8,6 +8,11 @@
#include "StgSharpC.h"
#include <immintrin.h>
#ifdef _MSC_VER
#include <intrin.h>
#include <isa_availability.h>
#endif
typedef union column_2 {
__m256 stream[1];
__m128 column[2];
@@ -39,21 +44,24 @@ INTERNAL void normalize(__m128 *source, __m128 *target);
INTERNAL void SSCDECL addmatrix2_sse(__2_columnset* left, __2_columnset* right, __2_columnset* ans);
INTERNAL void SSCDECL addmatrix2_avx(__2_columnset* left, __2_columnset* right, __2_columnset* ans);
INTERNAL void SSCDECL transpose23(__2_columnset *source, __3_columnset *target);
INTERNAL void SSCDECL transpose24(__2_columnset *source, __4_columnset *target);
INTERNAL void SSCDECL transpose23(__2_columnset const *source, __3_columnset *target);
INTERNAL void SSCDECL transpose24(__2_columnset const *source, __4_columnset *target);
INTERNAL void SSCDECL addmatrix3_sse(__3_columnset* left, __3_columnset* right, __3_columnset* ans);
INTERNAL void SSCDECL addmatrix3_avx(__3_columnset* left, __3_columnset* right, __3_columnset* ans);
INTERNAL void SSCDECL addmatrix3_512(__3_columnset* left, __3_columnset* right, __3_columnset* ans);
INTERNAL void SSCDECL transpose32(__3_columnset *source, __2_columnset *target);
INTERNAL void SSCDECL transpose33(__3_columnset *source, __3_columnset *target);
INTERNAL void SSCDECL transpose34(__3_columnset *source, __4_columnset *target);
INTERNAL void SSCDECL transpose32(__3_columnset const *source, __2_columnset *target);
INTERNAL void SSCDECL transpose33(__3_columnset const *source, __3_columnset *target);
INTERNAL void SSCDECL transpose34(__3_columnset const *source, __4_columnset *target);
INTERNAL float SSCDECL det_mat3(__3_columnset *matrix, __3_columnset *tranpose);
INTERNAL void SSCDECL transpose42(__4_columnset *source, __2_columnset *target);
INTERNAL void SSCDECL transpose43(__4_columnset *source, __3_columnset *target);
INTERNAL void SSCDECL transpose44(__4_columnset *matrix, __4_columnset *target);
INTERNAL void SSCDECL addmatrix4_sse(__4_columnset *left, __4_columnset *right, __4_columnset *ans);
INTERNAL void SSCDECL addmatrix4_avx(__4_columnset *left, __4_columnset *right, __4_columnset *ans);
INTERNAL void SSCDECL addmatrix4_512(__4_columnset *left, __4_columnset *right, __4_columnset *ans);
INTERNAL void SSCDECL transpose42(__4_columnset const *source, __2_columnset *target);
INTERNAL void SSCDECL transpose43(__4_columnset const *source, __3_columnset *target);
INTERNAL void SSCDECL transpose44(__4_columnset const *source, __4_columnset *target);
INTERNAL float SSCDECL det_mat4(__4_columnset *matrix, __4_columnset *transpose);
#pragma endregion
@@ -82,12 +90,19 @@ typedef struct ssc_intrinsic {
MATRIXTRANSPOSEPROC transpose_44;
} ssc_intrinsic;
enum most_advance_instruction
typedef enum most_advanced_instruction
{
#ifdef _MSC_VER
SSE = __IA_SUPPORT_SSE42,
AVX256 = __IA_SUPPORT_VECTOR256,
AVX512 = __IA_SUPPORT_VECTOR512,
NEON
#else
SSE,
AVX,
AVX256,
AVX512,
NEON
};
#endif
}most_advanced_instruction;
#endif // !SSC_INTRIN