2 #ifndef vil_math_sse_h_ 3 #define vil_math_sse_h_ 6 #error "This header cannot be included directly, only through vil_math.h" 34 template<
class aT,
class bT,
class dT>
36 const aT* pxA, std::ptrdiff_t isA,
37 const bT* pxB, std::ptrdiff_t isB,
38 dT* pxD, std::ptrdiff_t isD,
41 template<
class aT,
class bT,
class dT>
43 const aT* pxA,
const bT* pxB, dT* pxD,
46 template<
class aT,
class bT,
class dT>
48 const aT* pxA, std::ptrdiff_t isA,
49 const bT* pxB, std::ptrdiff_t isB,
50 dT* pxD, std::ptrdiff_t isD,
53 #define VIL_MATH_IMAGE_ABS_DIFF_1D_SSE_SPECIALIZE_DECL(aT,bT,dT) \ 55 void vil_math_image_abs_difference_1d_sse<aT,bT,dT>( \ 56 const aT* pxA, const bT* pxB, dT* pxD, \ 59 void vil_math_image_abs_difference_1d<aT,bT,dT>( \ 60 const aT* pxA, std::ptrdiff_t isA, \ 61 const bT* pxB, std::ptrdiff_t isB, \ 62 dT* pxD, std::ptrdiff_t isD, \ 68 #undef VIL_MATH_IMAGE_ABS_DIFF_1D_SSE_SPECIALIZE_DECL 70 #define VIL_MATH_IMAGE_ABS_DIFF_1D_SSE_SPECIALIZE_IMPL(aT,bT,dT) \ 72 inline void vil_math_image_abs_difference_1d<aT,bT,dT>( \ 73 const aT* pxA, std::ptrdiff_t isA, \ 74 const bT* pxB, std::ptrdiff_t isB, \ 75 dT* pxD, std::ptrdiff_t isD, \ 78 if (isA == 1 && isB == 1 && isD == 1) \ 80 vil_math_image_abs_difference_1d_sse<aT,bT,dT>(pxA, pxB, pxD, len); \ 84 vil_math_image_abs_difference_1d_generic<aT,bT,dT>( \ 85 pxA, isA, pxB, isB, pxD, isD, len); \ 92 #undef VIL_MATH_IMAGE_ABS_DIFF_1D_SSE_SPECIALIZE_IMPL #define VIL_MATH_IMAGE_ABS_DIFF_1D_SSE_SPECIALIZE_IMPL(aT, bT, dT)
#define VIL_MATH_IMAGE_ABS_DIFF_1D_SSE_SPECIALIZE_DECL(aT, bT, dT)
void vil_math_image_abs_difference_1d(const aT *pxA, std::ptrdiff_t isA, const bT *pxB, std::ptrdiff_t isB, dT *pxD, std::ptrdiff_t isD, unsigned len)
Compute absolute difference of two 1D images (im_sum = |imA-imB|).
void vil_math_image_abs_difference_1d_generic(const aT *pxA, std::ptrdiff_t isA, const bT *pxB, std::ptrdiff_t isB, dT *pxD, std::ptrdiff_t isD, unsigned len)
Compute absolute difference of two 1D images (im_sum = |imA-imB|).
void vil_math_image_abs_difference_1d_sse(const aT *pxA, const bT *pxB, dT *pxD, unsigned len)