📄 fastinlinefuncs.h
字号:
#ifndef _FASTINLINEFUNCS_H_#define _FASTINLINEFUNCS_H_#include <xmmintrin.h>/* fast inline functions*/int inline FloatToInt(float *pSrc) { return _mm_cvttss_si32(_mm_load_ss(pSrc));};int inline FloatToInt(float fSrc) { return _mm_cvttss_si32(_mm_load_ss(&fSrc));};float inline IntToFloat(int iSrc) { __m128 vTemp=_mm_setzero_ps(); float fRetval; _mm_store_ss(&fRetval, _mm_cvtsi32_ss(vTemp, iSrc)); return fRetval;};float inline Sqrt(float fSrc) { float fRetval; _mm_store_ss(&fRetval, _mm_sqrt_ss(_mm_load_ss(&fSrc))); return fRetval;}#define __abs(fSrc) (((fSrc)>0) ? (fSrc) : -(fSrc))/*row0 = a3,a2,a1,a0row1 = b3,b2,b1,b0row2 = c3,c2,c1,c0row3 = d3,d2,d1,d0tmp0 = b3,a3,b2,a2tmp1 = d3,c3,d2,c2tmp2 = b1,a1,b0,a0tmp3 = d1,c1,d0,c0row0 = d0,c0,b0,a0row1 = d1,c1,b1,a1row2 = d2,c2,b2,a2row3 = d3,c3,b3,a3*/#define _mm_transpose(row0,row1,row2,row3) { \ __m64 tmp3, tmp2, tmp1, tmp0; \ \ \ tmp0 = _mm_unpackhi_pi16(row0,row1); \ tmp2 = _mm_unpacklo_pi16(row0,row1); \ tmp1 = _mm_unpackhi_pi16(row2,row3); \ tmp3 = _mm_unpacklo_pi16(row2,row3); \ \ (row0) = _mm_unpacklo_pi32(tmp2,tmp3); \ (row1) = _mm_unpackhi_pi32(tmp2,tmp3); \ (row2) = _mm_unpacklo_pi32(tmp0,tmp1); \ (row3) = _mm_unpackhi_pi32(tmp0,tmp1); \}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -