<div dir="ltr"><br><br><div class="gmail_quote">---------- Forwarded message ----------<br>From: <b class="gmail_sendername"></b> <span dir="ltr"><<a href="mailto:dnyaneshwar@multicorewareinc.com">dnyaneshwar@multicorewareinc.com</a>></span><br>
Date: Fri, Oct 4, 2013 at 4:27 PM<br>Subject: [x265] [PATCH] replace block_copy_p_p vector class function with intrinsic code<br>To: <a href="mailto:x265-devel@videolan.org">x265-devel@videolan.org</a><br><br><br>         {<br>
             for (int x = 0; x < bx; x += 16)<br>
             {<br>
-                Vec16c word;<br>
-                word.load_a(src + x);<br>
-                word.store_a(dst + x);<br>
+                __m128i word0 = _mm_load_si128((__m128i const*)(src + x)); // load block of 16 byte from src<br>
+                _mm_store_si128((__m128i*)&dst[x], word0); // store block into dst<br>
             }</div><div class="gmail_quote">Here also, I will suggest to do unroll for multiple of 8. use load function for 64 bit. Suppose our x come some ting like 24, 25 we can store 16 elements from above loop  but for rest (for 25 it's 25-16 = 9) we have to copy 9 elements as individuals. If we will add an unroll for 8. we have to just copy (25 - 16 - 8 = 1) 1 element as individual. please add an unroll loop for 8 and test it. </div>
<div class="gmail_quote"><br></div><div class="gmail_quote"><br>
<br>
             src += sstride;<br><br>
</div><div class="gmail_quote">Regards,</div><div class="gmail_quote">Praveen</div><br></div>