📄 simd.h
字号:
#ifndef SIMD_H
#define SIMD_H
//Use MMX registers (64 bits wide)
/********************************************************************************/
//Generic 16 bit integer routines
int mmx_dot(void *A, void *B, int cnt); //Dop Product
void mmx_mul(void *A, void *B, int cnt); //Multiply
void mmx_add(void *A, void *B, int cnt); //Add
void mmx_sub(void *A, void *B, int cnt); //Subtract
void mmx_qnt(void *A, int cnt); //Quantize to +-1
void mmx_mul(void *A, void *B, void *C, int cnt); //Multiply
void mmx_add(void *A, void *B, void *C, int cnt); //Add
void mmx_sub(void *A, void *B, void *C, int cnt); //Subtract
void mmx_qnt(void *A, void *C, int cnt); //Quantize to +-1
//16 bit Complex Interlieved Routines
__int64 mmx_cacc(void *A, void *B, int cnt); //Complex Accumulate
void mmx_cmul(void *A, void *B, int cnt, int shift); //Complex multiply
void mmx_crot(void *A, void *B, int cnt, int shift); //Complex Rotate
void mmx_conj(void *A, int cnt); //Complex Conjugate
void mmx_cmul(void *A, void *B, void *C, int cnt, int shift); //Complex Multiply
void mmx_crot(void *A, void *B, void *C, int cnt, int shift); //Complex Rotate
void mmx_conj(void *A, void *C, int cnt); //Complex Conjugate
/********************************************************************************/
//Use SSE registers (128 bits wide)
/********************************************************************************/
//Generic 16 bit integer routines
int sse_dot(void *A, void *B, int cnt); //Dop Product
void sse_mul(void *A, void *B, int cnt); //Multiply
void sse_add(void *A, void *B, int cnt); //Add
void sse_sub(void *A, void *B, int cnt); //Subtract
void sse_qnt(void *A, int cnt); //Quantize to +-1
void sse_mul(void *A, void *B, void *C, int cnt); //Multiply
void sse_add(void *A, void *B, void *C, int cnt); //Add
void sse_sub(void *A, void *B, void *C, int cnt); //Subtract
void sse_qnt(void *A, void *C, int cnt); //Quantize to +-1
//16 bit Complex Interlieved Routines
__int64 sse_cacc(void *A, void *B, int cnt); //Complex Accumulate
void sse_cmul(void *A, void *B, int cnt, int shift); //Complex multiply
void sse_crot(void *A, void *B, int cnt, int shift); //Complex Rotate
void sse_conj(void *A, int cnt); //Complex Conjugate
void sse_cmul(void *A, void *B, void *C, int cnt, int shift); //Complex Multiply
void sse_crot(void *A, void *B, void *C, int cnt, int shift); //Complex Rotate
void sse_conj(void *A, void *C, int cnt); //Complex Conjugate
/********************************************************************************/
//MMX Detection
/********************************************************************************/
bool CPU_MMX(); //Check for MMX
bool CPU_SSE(); //Check for SSE
bool CPU_SSE2(); //Check for SSE2
bool CPU_SSE3(); //Check for SSE3
/********************************************************************************/
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -