daily update on 20241129 by nitload youmu, frameworkDialogue added

This commit is contained in:
Nitload
2024-11-29 05:47:53 +08:00
parent 6e2f93b053
commit 7c8d462ca5
2190 changed files with 49578 additions and 72052 deletions
+93
View File
@@ -0,0 +1,93 @@
#ifdef _MSC_VER
#pragma once
#endif
#ifndef SSC_INTRIN
#define SSC_INTRIN
#include "StgSharpC.h"
#include <immintrin.h>
typedef union column_2 {
__m256 stream[1];
__m128 column[2];
float m[4][2];
} __2_columnset;
typedef struct column_3 {
__m256 part;
__m128 column[3];
float m[4][3];
} __3_columnset;
typedef union column_4 {
__m512 stream;
__m256 half[2];
__m128 column[4];
float m[4][4];
} __4_columnset;
typedef void (SSCDECL *VECTORNORMALIZEPROC)(__m128 *source, __m128 *target);
typedef void (SSCDECL *MATRIXTRANSPOSEPROC)(void *source, void *target);
typedef void (SSCDECL *MATRIXDETPROC)(void *mat, void *transpose);
typedef void (SSCDECL *MATARITHMETIC)(void* left, void* right, void* ans);
typedef void (SSCDECL *SCALERMATARITHMETIC)(void* left, void* right, void* ans);
#pragma region matix function
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 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 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 float SSCDECL det_mat4(__4_columnset *matrix, __4_columnset *transpose);
#pragma endregion
#pragma region quick_hash
INTERNAL int quick_string_hash(byte *str, int length);
#pragma endregion
typedef struct ssc_intrinsic {
MATARITHMETIC add_m2;
MATARITHMETIC add_m3;
MATARITHMETIC add_m4;
MATRIXDETPROC det_matrix33;
MATRIXDETPROC det_matrix44;
VECTORNORMALIZEPROC normalize_3;
int (*string_quick_hash)(char *str, int length);
MATRIXTRANSPOSEPROC transpose_23;
MATRIXTRANSPOSEPROC transpose_24;
MATRIXTRANSPOSEPROC transpose_32;
MATRIXTRANSPOSEPROC transpose_33;
MATRIXTRANSPOSEPROC transpose_34;
MATRIXTRANSPOSEPROC transpose_42;
MATRIXTRANSPOSEPROC transpose_43;
MATRIXTRANSPOSEPROC transpose_44;
} ssc_intrinsic;
enum most_advance_instruction
{
SSE,
AVX,
AVX512,
NEON
};
#endif // !SSC_INTRIN