<div style="line-height:1.7;color:#000000;font-size:14px;font-family:arial"><DIV><BR><BR><BR><BR><BR></DIV>
<DIV></DIV>
<DIV id="divNeteaseMailCard"></DIV>
<DIV><BR></DIV>ÔÚ 2013-10-26 00:56:40£¬"Steve Borho" <steve@borho.org> дµÀ£º<BR>
<BLOCKQUOTE id="isReplyContent" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">
<DIV dir="ltr"><BR>
<DIV class="gmail_extra"><BR><BR>
<DIV class="gmail_quote">On Fri, Oct 25, 2013 at 7:25 AM, Min Chen <SPAN dir="ltr"><<A href="mailto:chenm003@163.com" target="_blank">chenm003@163.com</A>></SPAN> wrote:<BR>
<BLOCKQUOTE class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid"># HG changeset patch<BR># User Min Chen <<A href="mailto:chenm003@163.com">chenm003@163.com</A>><BR># Date 1382703678 -28800<BR># Node ID 2221e3abb479b1e9a586d80d769373d13c7f7980<BR># Parent 4ca4da7bdd36fbef00b9eefe54c0a56bf11633f3<BR>asm: interp_8tap_hv_pp_8x8() for InterpolateHV_8x8<BR></BLOCKQUOTE>
<DIV><BR></DIV>
<DIV>How does this compare, performance wise, to the combined h_ps + v_sp intrinsic functions?</DIV>
<DIV> </DIV>
<DIV>[MC] I will write some code to comare later. </DIV>
<DIV> </DIV>
<BLOCKQUOTE class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">diff -r 4ca4da7bdd36 -r 2221e3abb479 source/common/ipfilter.cpp<BR>--- a/source/common/ipfilter.cpp Fri Oct 25 12:11:31 2013 +0530<BR>+++ b/source/common/ipfilter.cpp Fri Oct 25 20:21:18 2013 +0800<BR>@@ -401,6 +401,17 @@<BR> dst += dstStride;<BR> }<BR> }<BR>+typedef void (*ipfilter_ps_t)(pixel *src, intptr_t srcStride, short *dst, intptr_t dstStride, int width, int height, const short *coeff);<BR>+typedef void (*ipfilter_sp_t)(short *src, intptr_t srcStride, pixel *dst, intptr_t dstStride, int width, int height, const short *coeff);<BR>+<BR>+template<int N, int width, int height><BR>+void interp_hv_pp_c(pixel *src, intptr_t srcStride, pixel *dst, intptr_t dstStride, int idxX, int idxY)<BR>+{<BR>+ short m_immedVals[(64 + 8) * (64 + 8)];<BR>+ filterHorizontal_ps_c<N>(src - 3 * srcStride, srcStride, m_immedVals, width, width, height + 7, g_lumaFilter[idxX]);<BR>+ filterVertical_sp_c<N>(m_immedVals + 3 * width, width, dst, dstStride, width, height, g_lumaFilter[idxY]);<BR>+}<BR></BLOCKQUOTE>
<DIV><BR></DIV>
<DIV>the intermediate buffer should be an argument</DIV>
<DIV> </DIV>
<DIV>[MC] this function output final result of interpolate HV, I think intermedia buffer in stack is threading safey.</DIV>
<DIV> </DIV></DIV></DIV></DIV></BLOCKQUOTE></div>