ㅅㅂ 머가리 아프다 ㅇㅅㅇ

대략 함수 67개 짠듯...

내일 빌드하고 유닛테스트 해야겠다 




template<int B1 = 0int B0 = 0int C0 = 0int A0 = 0int A1 = 0int A2 = 0>
inline void xDownFilterVer(uint8_t *pDstconst uint8_t *pSrcint nDstPitchint nSrcPitchint nWidthint nHeight);

template<int B1 = 0int B0 = 0int C0 = 0int A0 = 0int A1 = 0int A2 = 0>
inline void xDownFilterHor(uint8_t *pDstconst uint8_t *pSrcint nDstPitchint nSrcPitchint nWidthint nHeight);

template<int B1 = 0int B0 = 0int C0 = 0int A0 = 0int A1 = 0int A2 = 0>
inline void xFilterVer(uint8_t *pDstconst uint8_t *pSrcint nPitchint nWidthint nHeight);

template<int B1 = 0int B0 = 0int C0 = 0int A0 = 0int A1 = 0int A2 = 0>
inline void xFilterHor(uint8_t *pDstconst uint8_t *pSrcint nPitchint nWidthint nHeight);

void RB2Filtered(uint8_t *pDstconst uint8_t *pSrcint nDstPitchint nSrcPitchint nWidthint nHeight);
void RB2Bilinear(uint8_t *pDstconst uint8_t *pSrcint nDstPitchint nSrcPitchint nWidthint nHeight);
void RB2Quadratic(uint8_t *pDstconst uint8_t *pSrcint nDstPitchint nSrcPitchint nWidthint nHeight);
void RB2Cubic(uint8_t *pDstconst uint8_t *pSrcint nDstPitchint nSrcPitchint nWidthint nHeight);

void VerticalWiener(uint8_t *pDstconst uint8_t *pSrcint nPitchint nWidthint nHeight);
void HorizontalWiener(uint8_t *pDstconst uint8_t *pSrcint nPitchint nWidthint nHeight);
void VerticalBicubic(uint8_t *pDstconst uint8_t *pSrcint nPitchint nWidthint nHeight);
void HorizontalBicubic(uint8_t *pDstconst uint8_t *pSrcint nPitchint nWidthint nHeight);
void VerticalBilin(uint8_t *pDstconst uint8_t *pSrcint nPitchint nWidthint nHeight);
void HorizontalBilin(uint8_t *pDstconst uint8_t *pSrcint nPitchint nWidthint nHeight);
void Average2(uint8_t *pDstconst uint8_t *pSrc1const uint8_t* pSrc2int nPitchint nWidthint nHeight);


////////////////////////////////////////// SSE FUNCTIONS /////////////////////////////////////////////////////
SIMD_INLINE __m128i xFilter_11_8B(__m128i a0__m128i a1);
template<int partSIMD_INLINE __m128i xFilter_121_8B(__m128i a0__m128i a1__m128i a2);
template<int partSIMD_INLINE __m128i xFilter_1331_8B(__m128i a0__m128i a1__m128i a2__m128i a3);
template<int partSIMD_INLINE __m128i xFilter_Quadratic_8B(__m128i a0__m128i a1__m128i a2__m128i a3__m128i a4__m128i a5);
template<int partSIMD_INLINE __m128i xFilter_Cubic_8B(__m128i a0__m128i a1__m128i a2__m128i a3__m128i a4__m128i a5);
template<int partSIMD_INLINE __m128i xFilter_Wiener_8B(__m128i a0__m128i a1__m128i a2__m128i a3__m128i a4__m128i a5);
template<int partSIMD_INLINE __m128i xFilter_BiCubic_8B(__m128i a0__m128i a1__m128i a2__m128i a3);

void RB2_SSE(uint8_t *pDstconst uint8_t *pSrcint nDstPitchint nSrcPitchint nWidthint nHeight);
void RB2Bilinear_SSE(uint8_t *pDstconst uint8_t *pSrcint nDstPitchint nSrcPitchint nWidthint nHeight);
void RB2Quadratic_SSE(uint8_t *pDstconst uint8_t *pSrcint nDstPitchint nSrcPitchint nWidthint nHeight);
void RB2Cubic_SSE(uint8_t *pDstconst uint8_t *pSrcint nDstPitchint nSrcPitchint nWidthint nHeight);

void RB2Ver_SSE(uint8_t *pDstconst uint8_t *pSrcint nDstPitchint nSrcPitchint nWidthint nHeight);
void RB2Hor_SSE(uint8_t *pDstconst uint8_t *pSrcint nDstPitchint nSrcPitchint nWidthint nHeight);
void RB2BilinearVer_SSE(uint8_t *pDstconst uint8_t *pSrcint nDstPitchint nSrcPitchint nWidthint nHeight);
void RB2BilinearHor_SSE(uint8_t *pDstconst uint8_t *pSrcint nDstPitchint nSrcPitchint nWidthint nHeight);
void RB2QuadraticVer_SSE(uint8_t *pDstconst uint8_t *pSrcint nDstPitchint nSrcPitchint nWidthint nHeight);
void RB2QuadraticHor_SSE(uint8_t *pDstconst uint8_t *pSrcint nDstPitchint nSrcPitchint nWidthint nHeight);
void RB2CubicVer_SSE(uint8_t *pDstconst uint8_t *pSrcint nDstPitchint nSrcPitchint nWidthint nHeight);
void RB2CubicHor_SSE(uint8_t *pDstconst uint8_t *pSrcint nDstPitchint nSrcPitchint nWidthint nHeight);

void VerticalWiener_SSE(uint8_t *pDstconst uint8_t *pSrcint nPitchint nWidthint nHeight);
void HorizontalWiener_SSE(uint8_t *pDstconst uint8_t *pSrcint nPitchint nWidthint nHeight);
void VerticalBicubic_SSE(uint8_t *pDstconst uint8_t *pSrcint nPitchint nWidthint nHeight);
void HorizontalBicubic_SSE(uint8_t *pDstconst uint8_t *pSrcint nPitchint nWidthint nHeight);
void VerticalBilin_SSE(uint8_t *pDstconst uint8_t *pSrcint nPitchint nWidthint nHeight);
void HorizontalBilin_SSE(uint8_t *pDstconst uint8_t *pSrcint nPitchint nWidthint nHeight);
void Average2_SSE(uint8_t *pDstconst uint8_t *pSrc1const uint8_t* pSrc2int nPitchint nWidthint nHeight);


////////////////////////////////////////// AVX2 FUNCTIONS ////////////////////////////////////////////////////
SIMD_INLINE __m256i xFilter_11_8B(__m256i a0__m256i a1);
template<int partSIMD_INLINE __m256i xFilter_121_8B(__m256i a0__m256i a1__m256i a2);
template<int partSIMD_INLINE __m256i xFilter_1331_8B(__m256i a0__m256i a1__m256i a2__m256i a3);
template<int partSIMD_INLINE __m256i xFilter_Quadratic_8B(__m256i a0__m256i a1__m256i a2__m256i a3__m256i a4__m256i a5);
template<int partSIMD_INLINE __m256i xFilter_Cubic_8B(__m256i a0__m256i a1__m256i a2__m256i a3__m256i a4__m256i a5);
template<int partSIMD_INLINE __m256i xFilter_Wiener_8B(__m256i a0__m256i a1__m256i a2__m256i a3__m256i a4__m256i a5);
template<int partSIMD_INLINE __m256i xFilter_BiCubic_8B(__m256i a0__m256i a1__m256i a2__m256i a3);

void RB2_AVX2(uint8_t *pDstconst uint8_t *pSrcint nDstPitchint nSrcPitchint nWidthint nHeight);
void RB2Bilinear_AVX2(uint8_t *pDstconst uint8_t *pSrcint nDstPitchint nSrcPitchint nWidthint nHeight);
void RB2Quadratic_AVX2(uint8_t *pDstconst uint8_t *pSrcint nDstPitchint nSrcPitchint nWidthint nHeight);
void RB2Cubic_AVX2(uint8_t *pDstconst uint8_t *pSrcint nDstPitchint nSrcPitchint nWidthint nHeight);

void RB2Ver_AVX2(uint8_t *pDstconst uint8_t *pSrcint nDstPitchint nSrcPitchint nWidthint nHeight);
void RB2Hor_AVX2(uint8_t *pDstconst uint8_t *pSrcint nDstPitchint nSrcPitchint nWidthint nHeight);
void RB2BilinearVer_AVX2(uint8_t *pDstconst uint8_t *pSrcint nDstPitchint nSrcPitchint nWidthint nHeight);
void RB2BilinearHor_AVX2(uint8_t *pDstconst uint8_t *pSrcint nDstPitchint nSrcPitchint nWidthint nHeight);
void RB2QuadraticVer_AVX2(uint8_t *pDstconst uint8_t *pSrcint nDstPitchint nSrcPitchint nWidthint nHeight);
void RB2QuadraticHor_AVX2(uint8_t *pDstconst uint8_t *pSrcint nDstPitchint nSrcPitchint nWidthint nHeight);
void RB2CubicVer_AVX2(uint8_t *pDstconst uint8_t *pSrcint nDstPitchint nSrcPitchint nWidthint nHeight);
void RB2CubicHor_AVX2(uint8_t *pDstconst uint8_t *pSrcint nDstPitchint nSrcPitchint nWidthint nHeight);

void VerticalWiener_AVX2(uint8_t *pDstconst uint8_t *pSrcint nPitchint nWidthint nHeight);
void HorizontalWiener_AVX2(uint8_t *pDstconst uint8_t *pSrcint nPitchint nWidthint nHeight);
void VerticalBicubic_AVX2(uint8_t *pDstconst uint8_t *pSrcint nPitchint nWidthint nHeight);
void HorizontalBicubic_AVX2(uint8_t *pDstconst uint8_t *pSrcint nPitchint nWidthint nHeight);
void VerticalBilin_AVX2(uint8_t *pDstconst uint8_t *pSrcint nPitchint nWidthint nHeight);
void HorizontalBilin_AVX2(uint8_t *pDstconst uint8_t *pSrcint nPitchint nWidthint nHeight);
void Average2_AVX2(uint8_t *pDstconst uint8_t *pSrc1const uint8_t* pSrc2int nPitchint nWidthint nHeight);