<div style="line-height:1.7;color:#000000;font-size:14px;font-family:Arial"><div style="margin: 0px;">Hello,</div><div style="margin: 0px;"><br></div><div style="margin: 0px;">Thank your patch.</div><p style="margin: 0px;"><br></p><p style="margin: 0px;">The copy_s* looks good, my only comment is the instruction TBL faster than XTN/XTN2</p><p style="margin: 0px;"><br></p><div style="margin: 0px;">The copy_cnt_* may improve more, for example,</div><div style="margin: 0px;"><br></div><div style="position: relative; zoom: 1;"></div><div id="divNeteaseMailCard"></div><p style="margin: 0px;">+function x265_copy_cnt_4_neon</p><p style="margin: 0px;">+ lsl x2, x2, #1</p><p style="margin: 0px;">+ movi v4.8b, #0</p><p style="margin: 0px;">+.rept 2</p><p style="margin: 0px;">+ ld1 {v0.8b}, [x1], x2</p><p style="margin: 0px;">+ ld1 {v1.8b}, [x1], x2</p><p style="margin: 0px;">+ clz v2.4h, v0.4h</p><p style="margin: 0px;">+ clz v3.4h, v1.4h</p><p style="margin: 0px;">+ ushr v2.4h, v2.4h, #4</p><p style="margin: 0px;">+ ushr v3.4h, v3.4h, #4</p><div style="margin: 0px;">+ add v2.4h, v2.4h, v3.4h</div><div style="margin: 0px;">clz+ushr+add is slower than cmeq+add in either exection throughput or cycles.</div><div style="margin: 0px;"><br></div><p style="margin: 0px;">+ add v4.4h, v4.4h, v2.4h</p><p style="margin: 0px;">+ st1 {v0.8b}, [x0], #8</p><p style="margin: 0px;">+ st1 {v1.8b}, [x0], #8</p><p style="margin: 0px;">+.endr</p><p style="margin: 0px;">+ uaddlv s4, v4.4h</p><p style="margin: 0px;">+ fmov w12, s4</p><p style="margin: 0px;">+ neg w12, w12</p><div style="margin: 0px;">+ add w0, w12, #16</div><div style="margin: 0px;">(-w12) + 16 equal to 16-w12, load #16 into w0 may execution parallelism with FMOV.</div><div style="margin: 0px;"><br></div><p style="margin: 0px;">+ ret</p><p style="margin: 0px;">+endfunc</p><div><br></div><div>Regards,</div><div>Min Chen</div><p> 2021-07-23 04:14:30£¬"Pop, Sebastian" <spop@amazon.com> </p><blockquote id="isReplyContent" style="padding-left: 1ex; margin: 0px 0px 0px 0.8ex; border-left: 1px solid rgb(204, 204, 204);"><div class="WordSection1"><p class="MsoNormal"><span style="font-size: 11pt;">With the patch attached.<o:p></o:p></span></p><p class="MsoNormal"><span style="font-size: 11pt;"><o:p> </o:p></span></p><p class="MsoNormal"><span style="font-size: 11pt;"><o:p> </o:p></span></p><div style="border-right: none; border-bottom: none; border-left: none; border-image: initial; border-top: 1pt solid rgb(181, 196, 223); padding: 3pt 0in 0in;"><p class="MsoNormal"><b>From: </b>"Pop, Sebastian" <spop@amazon.com><br><b>Date: </b>Thursday, July 22, 2021 at 3:13 PM<br><b>To: </b>"x265-devel@videolan.org" <x265-devel@videolan.org><br><b>Subject: </b>[arm64] port count_nonzero, blkfill, and copy_{ss,sp,ps}<o:p></o:p></p></div><div><p class="MsoNormal"><span style="font-size: 11pt;"><o:p> </o:p></span></p></div><p class="MsoNormal"><span style="font-size: 11pt;">Hi,</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;"> </span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;">the attached patch ports to arm64 the following kernels:</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;"> </span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;">count_nonzero[4x4] 19.23x 2.95 56.77</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;">count_nonzero[8x8] 32.07x 7.11 228.15</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;">count_nonzero[16x16] 35.16x 26.09 917.23</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;">count_nonzero[32x32] 37.31x 98.07 3658.49</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;"> </span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;"> blkfill[4x4] 31.39x 3.72 116.84</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;"> blkfill[8x8] 85.97x 5.78 497.26</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;"> blkfill[16x16] 102.63x 16.28 1670.56</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;"> blkfill[32x32] 100.07x 62.89 6293.62</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;"> </span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;"> copy_ss[ 4x4] 16.87x 6.21 104.78</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;"> copy_sp[ 4x4] 16.21x 6.34 102.69</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;"> copy_ps[ 4x4] 18.06x 5.91 106.69</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;"> copy_ss[ 8x8] 51.50x 8.30 427.52</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;"> copy_sp[ 8x8] 43.34x 9.32 403.79</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;"> copy_ps[ 8x8] 49.00x 8.50 416.36</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;">[i420] copy_ss[ 4x4] 15.40x 6.62 101.98</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;">[i420] copy_ps[ 4x4] 16.50x 6.26 103.28</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;">[i420] copy_sp[ 4x4] 14.14x 6.82 96.48</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;">[i422] copy_ss[ 4x8] 25.79x 8.28 213.57</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;">[i422] copy_ps[ 4x8] 24.74x 8.62 213.35</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;">[i422] copy_sp[ 4x8] 22.01x 9.27 204.03</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;"> copy_ss[16x16] 82.20x 19.79 1626.69</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;"> copy_sp[16x16] 85.13x 18.78 1599.19</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;"> copy_ps[16x16] 72.51x 22.28 1615.58</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;">[i420] copy_ss[ 8x8] 49.16x 8.49 417.24</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;">[i420] copy_ps[ 8x8] 46.52x 8.71 405.34</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;">[i420] copy_sp[ 8x8] 42.68x 9.47 404.13</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;">[i422] copy_ss[ 8x16] 56.55x 14.98 847.42</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;">[i422] copy_ps[ 8x16] 57.71x 15.12 872.39</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;">[i422] copy_sp[ 8x16] 49.76x 16.83 837.44</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;"> copy_ss[32x32] 98.60x 67.47 6652.77</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;"> copy_sp[32x32] 96.31x 65.07 6266.88</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;"> copy_ps[32x32] 77.71x 81.02 6295.59</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;">[i420] copy_ss[16x16] 83.93x 20.52 1722.55</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;">[i420] copy_ps[16x16] 72.66x 22.13 1608.30</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;">[i420] copy_sp[16x16] 85.67x 18.73 1604.77</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;">[i422] copy_ss[16x32] 91.45x 36.56 3343.09</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;">[i422] copy_ps[16x32] 75.73x 42.40 3211.16</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;">[i422] copy_sp[16x32] 91.93x 34.32 3154.89</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;"> copy_ss[64x64] 104.11x 254.52 26498.82</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;"> copy_sp[64x64] 98.81x 252.38 24937.40</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;"> copy_ps[64x64] 80.97x 308.55 24983.04</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;">[i420] copy_ss[32x32] 99.49x 67.40 6706.31</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;">[i420] copy_ps[32x32] 76.50x 81.51 6235.63</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;">[i420] copy_sp[32x32] 97.43x 65.84 6414.64</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;">[i422] copy_ss[32x64] 102.57x 129.82 13315.36</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;">[i422] copy_ps[32x64] 78.95x 159.47 12590.31</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;">[i422] copy_sp[32x64] 99.54x 128.29 12769.10</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;"> copy_cnt[4x4] 13.91x 7.48 104.10</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;"> copy_cnt[8x8] 31.01x 12.69 393.40</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;"> copy_cnt[16x16] 42.88x 36.23 1553.66</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;"> copy_cnt[32x32] 47.43x 129.19 6127.58</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;"> </span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;">Ok to commit?</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;"> </span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;">Thanks,</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;">Sebastian</span><o:p></o:p></p><p class="MsoNormal"><span style="font-size: 11pt;"> </span></p></div></blockquote><blockquote id="isReplyContent" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid"><div class="WordSection1">
</div>
</blockquote><style><!--
_font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
_font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
font-size:12.0pt;
font-family:"Calibri",sans-serif;}
span.EmailStyle19
{mso-style-type:personal-reply;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
_page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style></div>