{"id":32,"date":"2009-01-15T23:57:00","date_gmt":"2009-01-15T13:57:00","guid":{"rendered":"http:\/\/brnz.org\/hbr\/?p=32"},"modified":"2010-11-09T14:14:30","modified_gmt":"2010-11-09T04:14:30","slug":"unrolled-2","status":"publish","type":"post","link":"https:\/\/brnz.org\/hbr\/?p=32","title":{"rendered":"Unrolled 2"},"content":{"rendered":"<p>Longer than the other one, but with better odd\/even balance and only one shuffle constant.  Probably faster.<\/p>\n<pre>for (j = 0; j &lt; num_indexes; j += 24) {\r\n\u00a0qword* lower_qword = (qword*)&amp;indexes[j];\r\n\u00a0qword indices0 = lower_qword[0];\r\n\u00a0qword indices1 = lower_qword[1];\r\n\u00a0qword indices2 = lower_qword[2];\r\n\r\n qword vs0 = indices0;\r\n\u00a0qword vs1 = si_shlqbyi(indices0, 6);\r\n\u00a0qword vs3 = si_shlqbyi(indices1, 2);\r\n\u00a0qword vs4 = si_shlqbyi(indices1, 8);\r\n\u00a0qword vs6 = si_shlqbyi(indices2, 4);\r\n\u00a0qword vs7 = si_shlqbyi(indices2, 10);\r\n\r\n qword tmp2a, tmp2b, tmp5a, tmp5b;\r\n\u00a0qword tmp2a = si_shlqbyi(indices0, 12);\r\n\u00a0qword tmp2b = si_rotqmbyi(indices1, 12|16);\r\n\u00a0qword vs2 = si_selb(tmp2a, tmp2b, si_fsmh(0x20));\r\n\r\n qword tmp5a = si_shlqbyi(indices1, 14);\r\n\u00a0qword tmp5b = si_rotqmbyi(indices2, 14|16);\r\n\u00a0qword vs5 = si_selb(tmp5a, tmp5b, si_fsmh(0x60));\r\n\r\n vs0 = si_shufb(vs0, vs0, SHUFB8(0,A,0,B,0,C,0,0));\r\n\u00a0vs1 = si_shufb(vs1, vs1, SHUFB8(0,A,0,B,0,C,0,0));\r\n\u00a0vs2 = si_shufb(vs2, vs2, SHUFB8(0,A,0,B,0,C,0,0));\r\n\u00a0vs3 = si_shufb(vs3, vs3, SHUFB8(0,A,0,B,0,C,0,0));\r\n\u00a0vs4 = si_shufb(vs4, vs4, SHUFB8(0,A,0,B,0,C,0,0));\r\n\u00a0vs5 = si_shufb(vs5, vs5, SHUFB8(0,A,0,B,0,C,0,0));\r\n\u00a0vs6 = si_shufb(vs6, vs6, SHUFB8(0,A,0,B,0,C,0,0));\r\n\u00a0vs7 = si_shufb(vs7, vs7, SHUFB8(0,A,0,B,0,C,0,0));\r\n\r\n vs0 = si_mpya(vs0, vertex_sizes, verticess);\r\n\u00a0vs1 = si_mpya(vs1, vertex_sizes, verticess);\r\n\u00a0vs2 = si_mpya(vs2, vertex_sizes, verticess);\r\n\u00a0vs3 = si_mpya(vs3, vertex_sizes, verticess);\r\n\u00a0vs4 = si_mpya(vs4, vertex_sizes, verticess);\r\n\u00a0vs5 = si_mpya(vs5, vertex_sizes, verticess);\r\n\u00a0vs6 = si_mpya(vs6, vertex_sizes, verticess);\r\n\u00a0vs7 = si_mpya(vs7, vertex_sizes, verticess);\r\n\r\n switch(num_indexes - j) {\r\n \u00a0default: func(vs7);\r\n \u00a0case 21: func(vs6);\r\n \u00a0case 18: func(vs5);\r\n \u00a0case 15: func(vs4);\r\n \u00a0case 12: func(vs3);\r\n \u00a0case 9:  func(vs2);\r\n \u00a0case 6:  func(vs1);\r\n \u00a0case 3:  func(vs0);   \r\n }\r\n}<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Longer than the other one, but with better odd\/even balance and only one shuffle constant. Probably faster. for (j = 0; j &lt; num_indexes; j += 24) { \u00a0qword* lower_qword = (qword*)&amp;indexes[j]; \u00a0qword indices0 = lower_qword[0]; \u00a0qword indices1 = lower_qword[1]; \u00a0qword indices2 = lower_qword[2]; qword vs0 = indices0; \u00a0qword vs1 = si_shlqbyi(indices0, 6); \u00a0qword vs3 &hellip; <a href=\"https:\/\/brnz.org\/hbr\/?p=32\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Unrolled 2&#8221;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[4],"tags":[37],"_links":{"self":[{"href":"https:\/\/brnz.org\/hbr\/index.php?rest_route=\/wp\/v2\/posts\/32"}],"collection":[{"href":"https:\/\/brnz.org\/hbr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/brnz.org\/hbr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/brnz.org\/hbr\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/brnz.org\/hbr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=32"}],"version-history":[{"count":3,"href":"https:\/\/brnz.org\/hbr\/index.php?rest_route=\/wp\/v2\/posts\/32\/revisions"}],"predecessor-version":[{"id":624,"href":"https:\/\/brnz.org\/hbr\/index.php?rest_route=\/wp\/v2\/posts\/32\/revisions\/624"}],"wp:attachment":[{"href":"https:\/\/brnz.org\/hbr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=32"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/brnz.org\/hbr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=32"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/brnz.org\/hbr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=32"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}