<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>