simd.h

来自「这是本人编写的软件接收机」· C头文件 代码 · 共 64 行

H
64
字号
#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 + =
减小字号Ctrl + -
显示快捷键?