Message ID | 20220410004250.1448020-1-goldstein.w.n@gmail.com |
---|---|
State | New |
Headers | show |
Series | [v3,1/6] x86: Remove str{p}{n}cpy-ssse3 | expand |
Disregard this patch. It's from the wrong patchset. On Sat, Apr 9, 2022 at 7:45 PM Noah Goldstein <goldstein.w.n@gmail.com> wrote: > > With SSE2, SSE4.1, AVX2, and EVEX versions very few targets prefer > SSSE3. As a result it is no longer worth it to keep the SSSE3 > versions given the code size cost. > --- > Full memcpy ssse3 results. Number are comparison of > geometric mean of N=50 runs on Zhaoxin KX-6840@2000MHz > > bench-memcpy: > > length, align1, align2, dst > src, New Time / Old Time > 1, 0, 0, 0, 2.099 > 1, 0, 0, 1, 2.099 > 1, 32, 0, 0, 2.103 > 1, 32, 0, 1, 2.103 > 1, 0, 32, 0, 2.099 > 1, 0, 32, 1, 2.098 > 1, 32, 32, 0, 2.098 > 1, 32, 32, 1, 2.098 > 1, 2048, 0, 0, 2.098 > 1, 2048, 0, 1, 2.098 > 2, 0, 0, 0, 1.135 > 2, 0, 0, 1, 1.136 > 2, 1, 0, 0, 1.139 > 2, 1, 0, 1, 1.139 > 2, 33, 0, 0, 1.165 > 2, 33, 0, 1, 1.139 > 2, 0, 1, 0, 1.136 > 2, 0, 1, 1, 1.136 > 2, 0, 33, 0, 1.136 > 2, 0, 33, 1, 1.136 > 2, 1, 1, 0, 1.136 > 2, 1, 1, 1, 1.136 > 2, 33, 33, 0, 1.136 > 2, 33, 33, 1, 1.136 > 2, 2048, 0, 0, 1.136 > 2, 2048, 0, 1, 1.136 > 2, 2049, 0, 0, 1.191 > 2, 2049, 0, 1, 1.139 > 2, 2048, 1, 0, 1.136 > 2, 2048, 1, 1, 1.136 > 2, 2049, 1, 0, 1.136 > 2, 2049, 1, 1, 1.136 > 4, 0, 0, 0, 1.074 > 4, 0, 0, 1, 0.962 > 4, 2, 0, 0, 0.973 > 4, 2, 0, 1, 0.989 > 4, 34, 0, 0, 0.991 > 4, 34, 0, 1, 0.991 > 4, 0, 2, 0, 0.962 > 4, 0, 2, 1, 0.962 > 4, 0, 34, 0, 0.962 > 4, 0, 34, 1, 0.962 > 4, 2, 2, 0, 0.962 > 4, 2, 2, 1, 0.962 > 4, 34, 34, 0, 0.962 > 4, 34, 34, 1, 0.962 > 4, 2048, 0, 0, 0.962 > 4, 2048, 0, 1, 0.962 > 4, 2050, 0, 0, 0.977 > 4, 2050, 0, 1, 0.979 > 4, 2048, 2, 0, 0.962 > 4, 2048, 2, 1, 0.962 > 4, 2050, 2, 0, 0.962 > 4, 2050, 2, 1, 0.962 > 8, 0, 0, 0, 0.961 > 8, 0, 0, 1, 0.962 > 8, 3, 0, 0, 1.0 > 8, 3, 0, 1, 1.0 > 8, 35, 0, 0, 1.0 > 8, 35, 0, 1, 1.0 > 8, 0, 3, 0, 0.962 > 8, 0, 3, 1, 0.962 > 8, 0, 35, 0, 0.962 > 8, 0, 35, 1, 0.962 > 8, 3, 3, 0, 0.962 > 8, 3, 3, 1, 0.962 > 8, 35, 35, 0, 0.962 > 8, 35, 35, 1, 0.962 > 8, 2048, 0, 0, 0.962 > 8, 2048, 0, 1, 0.962 > 8, 2051, 0, 0, 1.0 > 8, 2051, 0, 1, 1.0 > 8, 2048, 3, 0, 0.962 > 8, 2048, 3, 1, 0.962 > 8, 2051, 3, 0, 0.962 > 8, 2051, 3, 1, 0.962 > 16, 0, 0, 0, 0.798 > 16, 0, 0, 1, 0.799 > 16, 4, 0, 0, 0.8 > 16, 4, 0, 1, 0.801 > 16, 36, 0, 0, 0.801 > 16, 36, 0, 1, 0.8 > 16, 0, 4, 0, 0.798 > 16, 0, 4, 1, 0.798 > 16, 0, 36, 0, 0.798 > 16, 0, 36, 1, 0.798 > 16, 4, 4, 0, 0.798 > 16, 4, 4, 1, 0.798 > 16, 36, 36, 0, 0.798 > 16, 36, 36, 1, 0.798 > 16, 2048, 0, 0, 0.798 > 16, 2048, 0, 1, 0.799 > 16, 2052, 0, 0, 0.8 > 16, 2052, 0, 1, 0.8 > 16, 2048, 4, 0, 0.798 > 16, 2048, 4, 1, 0.798 > 16, 2052, 4, 0, 0.798 > 16, 2052, 4, 1, 0.798 > 32, 0, 0, 0, 0.471 > 32, 0, 0, 1, 0.471 > 32, 5, 0, 0, 0.471 > 32, 5, 0, 1, 0.471 > 32, 37, 0, 0, 0.961 > 32, 37, 0, 1, 0.961 > 32, 0, 5, 0, 0.471 > 32, 0, 5, 1, 0.471 > 32, 0, 37, 0, 1.021 > 32, 0, 37, 1, 1.021 > 32, 5, 5, 0, 0.471 > 32, 5, 5, 1, 0.471 > 32, 37, 37, 0, 1.011 > 32, 37, 37, 1, 1.011 > 32, 2048, 0, 0, 0.471 > 32, 2048, 0, 1, 0.471 > 32, 2053, 0, 0, 0.471 > 32, 2053, 0, 1, 0.471 > 32, 2048, 5, 0, 0.471 > 32, 2048, 5, 1, 0.471 > 32, 2053, 5, 0, 0.471 > 32, 2053, 5, 1, 0.471 > 64, 0, 0, 0, 1.0 > 64, 0, 0, 1, 1.0 > 64, 6, 0, 0, 0.862 > 64, 6, 0, 1, 0.862 > 64, 38, 0, 0, 0.912 > 64, 38, 0, 1, 0.912 > 64, 0, 6, 0, 0.896 > 64, 0, 6, 1, 0.896 > 64, 0, 38, 0, 0.906 > 64, 0, 38, 1, 0.906 > 64, 6, 6, 0, 0.91 > 64, 6, 6, 1, 0.91 > 64, 38, 38, 0, 0.883 > 64, 38, 38, 1, 0.883 > 64, 2048, 0, 0, 1.0 > 64, 2048, 0, 1, 1.0 > 64, 2054, 0, 0, 0.862 > 64, 2054, 0, 1, 0.862 > 64, 2048, 6, 0, 0.887 > 64, 2048, 6, 1, 0.887 > 64, 2054, 6, 0, 0.887 > 64, 2054, 6, 1, 0.887 > 128, 0, 0, 0, 0.857 > 128, 0, 0, 1, 0.857 > 128, 7, 0, 0, 0.875 > 128, 7, 0, 1, 0.875 > 128, 39, 0, 0, 0.892 > 128, 39, 0, 1, 0.892 > 128, 0, 7, 0, 1.183 > 128, 0, 7, 1, 1.183 > 128, 0, 39, 0, 1.113 > 128, 0, 39, 1, 1.113 > 128, 7, 7, 0, 0.692 > 128, 7, 7, 1, 0.692 > 128, 39, 39, 0, 1.104 > 128, 39, 39, 1, 1.104 > 128, 2048, 0, 0, 0.857 > 128, 2048, 0, 1, 0.857 > 128, 2055, 0, 0, 0.875 > 128, 2055, 0, 1, 0.875 > 128, 2048, 7, 0, 0.959 > 128, 2048, 7, 1, 0.959 > 128, 2055, 7, 0, 1.036 > 128, 2055, 7, 1, 1.036 > 256, 0, 0, 0, 0.889 > 256, 0, 0, 1, 0.889 > 256, 8, 0, 0, 0.966 > 256, 8, 0, 1, 0.966 > 256, 40, 0, 0, 0.983 > 256, 40, 0, 1, 0.983 > 256, 0, 8, 0, 1.29 > 256, 0, 8, 1, 1.29 > 256, 0, 40, 0, 1.274 > 256, 0, 40, 1, 1.274 > 256, 8, 8, 0, 0.865 > 256, 8, 8, 1, 0.865 > 256, 40, 40, 0, 1.477 > 256, 40, 40, 1, 1.477 > 256, 2048, 0, 0, 0.889 > 256, 2048, 0, 1, 0.889 > 256, 2056, 0, 0, 0.966 > 256, 2056, 0, 1, 0.966 > 256, 2048, 8, 0, 0.952 > 256, 2048, 8, 1, 0.952 > 256, 2056, 8, 0, 0.878 > 256, 2056, 8, 1, 0.878 > 512, 0, 0, 0, 1.077 > 512, 0, 0, 1, 1.077 > 512, 9, 0, 0, 1.001 > 512, 9, 0, 1, 1.0 > 512, 41, 0, 0, 0.954 > 512, 41, 0, 1, 0.954 > 512, 0, 9, 0, 1.191 > 512, 0, 9, 1, 1.191 > 512, 0, 41, 0, 1.181 > 512, 0, 41, 1, 1.181 > 512, 9, 9, 0, 0.765 > 512, 9, 9, 1, 0.765 > 512, 41, 41, 0, 0.905 > 512, 41, 41, 1, 0.905 > 512, 2048, 0, 0, 1.077 > 512, 2048, 0, 1, 1.077 > 512, 2057, 0, 0, 1.0 > 512, 2057, 0, 1, 1.0 > 512, 2048, 9, 0, 1.0 > 512, 2048, 9, 1, 1.0 > 512, 2057, 9, 0, 0.733 > 512, 2057, 9, 1, 0.733 > 1024, 0, 0, 0, 1.143 > 1024, 0, 0, 1, 1.143 > 1024, 10, 0, 0, 1.015 > 1024, 10, 0, 1, 1.015 > 1024, 42, 0, 0, 1.045 > 1024, 42, 0, 1, 1.045 > 1024, 0, 10, 0, 1.126 > 1024, 0, 10, 1, 1.126 > 1024, 0, 42, 0, 1.114 > 1024, 0, 42, 1, 1.114 > 1024, 10, 10, 0, 0.89 > 1024, 10, 10, 1, 0.89 > 1024, 42, 42, 0, 0.986 > 1024, 42, 42, 1, 0.986 > 1024, 2048, 0, 0, 1.143 > 1024, 2048, 0, 1, 1.143 > 1024, 2058, 0, 0, 1.015 > 1024, 2058, 0, 1, 1.015 > 1024, 2048, 10, 0, 1.03 > 1024, 2048, 10, 1, 1.03 > 1024, 2058, 10, 0, 0.854 > 1024, 2058, 10, 1, 0.854 > 2048, 0, 0, 0, 1.005 > 2048, 0, 0, 1, 1.005 > 2048, 11, 0, 0, 1.013 > 2048, 11, 0, 1, 1.014 > 2048, 43, 0, 0, 1.044 > 2048, 43, 0, 1, 1.044 > 2048, 0, 11, 0, 1.003 > 2048, 0, 11, 1, 1.003 > 2048, 0, 43, 0, 1.003 > 2048, 0, 43, 1, 1.003 > 2048, 11, 11, 0, 0.92 > 2048, 11, 11, 1, 0.92 > 2048, 43, 43, 0, 1.0 > 2048, 43, 43, 1, 1.0 > 2048, 2048, 0, 0, 1.005 > 2048, 2048, 0, 1, 1.005 > 2048, 2059, 0, 0, 0.904 > 2048, 2059, 0, 1, 0.904 > 2048, 2048, 11, 0, 1.0 > 2048, 2048, 11, 1, 1.0 > 2048, 2059, 11, 0, 0.979 > 2048, 2059, 11, 1, 0.979 > 4096, 0, 0, 0, 1.014 > 4096, 0, 0, 1, 1.014 > 4096, 12, 0, 0, 0.855 > 4096, 12, 0, 1, 0.855 > 4096, 44, 0, 0, 0.857 > 4096, 44, 0, 1, 0.857 > 4096, 0, 12, 0, 0.932 > 4096, 0, 12, 1, 0.932 > 4096, 0, 44, 0, 0.932 > 4096, 0, 44, 1, 0.932 > 4096, 12, 12, 0, 0.999 > 4096, 12, 12, 1, 0.999 > 4096, 44, 44, 0, 1.051 > 4096, 44, 44, 1, 1.051 > 4096, 2048, 0, 0, 1.014 > 4096, 2048, 0, 1, 1.014 > 4096, 2060, 0, 0, 0.98 > 4096, 2060, 0, 1, 0.98 > 4096, 2048, 12, 0, 0.77 > 4096, 2048, 12, 1, 0.77 > 4096, 2060, 12, 0, 0.943 > 4096, 2060, 12, 1, 0.943 > 8192, 0, 0, 0, 1.046 > 8192, 0, 0, 1, 1.046 > 8192, 13, 0, 0, 0.885 > 8192, 13, 0, 1, 0.885 > 8192, 45, 0, 0, 0.887 > 8192, 45, 0, 1, 0.886 > 8192, 0, 13, 0, 0.942 > 8192, 0, 13, 1, 0.942 > 8192, 0, 45, 0, 0.942 > 8192, 0, 45, 1, 0.942 > 8192, 13, 13, 0, 1.03 > 8192, 13, 13, 1, 1.03 > 8192, 45, 45, 0, 1.048 > 8192, 45, 45, 1, 1.048 > 8192, 2048, 0, 0, 1.048 > 8192, 2048, 0, 1, 1.048 > 8192, 2061, 0, 0, 1.011 > 8192, 2061, 0, 1, 1.011 > 8192, 2048, 13, 0, 0.789 > 8192, 2048, 13, 1, 0.789 > 8192, 2061, 13, 0, 0.991 > 8192, 2061, 13, 1, 0.991 > 16384, 0, 0, 0, 1.014 > 16384, 0, 0, 1, 1.008 > 16384, 14, 0, 0, 0.951 > 16384, 14, 0, 1, 0.95 > 16384, 46, 0, 0, 0.874 > 16384, 46, 0, 1, 0.871 > 16384, 0, 14, 0, 0.813 > 16384, 0, 14, 1, 0.81 > 16384, 0, 46, 0, 0.85 > 16384, 0, 46, 1, 0.86 > 16384, 14, 14, 0, 0.985 > 16384, 14, 14, 1, 0.975 > 16384, 46, 46, 0, 1.025 > 16384, 46, 46, 1, 1.027 > 16384, 2048, 0, 0, 1.058 > 16384, 2048, 0, 1, 1.058 > 16384, 2062, 0, 0, 0.849 > 16384, 2062, 0, 1, 0.848 > 16384, 2048, 14, 0, 0.907 > 16384, 2048, 14, 1, 0.907 > 16384, 2062, 14, 0, 0.988 > 16384, 2062, 14, 1, 0.995 > 32768, 0, 0, 0, 0.979 > 32768, 0, 0, 1, 0.979 > 32768, 15, 0, 0, 1.006 > 32768, 15, 0, 1, 1.006 > 32768, 47, 0, 0, 1.004 > 32768, 47, 0, 1, 1.004 > 32768, 0, 15, 0, 1.045 > 32768, 0, 15, 1, 1.045 > 32768, 0, 47, 0, 1.011 > 32768, 0, 47, 1, 1.012 > 32768, 15, 15, 0, 0.977 > 32768, 15, 15, 1, 0.977 > 32768, 47, 47, 0, 0.96 > 32768, 47, 47, 1, 0.96 > 32768, 2048, 0, 0, 0.978 > 32768, 2048, 0, 1, 0.978 > 32768, 2063, 0, 0, 1.004 > 32768, 2063, 0, 1, 1.004 > 32768, 2048, 15, 0, 1.036 > 32768, 2048, 15, 1, 1.036 > 32768, 2063, 15, 0, 0.978 > 32768, 2063, 15, 1, 0.978 > 65536, 0, 0, 0, 0.981 > 65536, 0, 0, 1, 0.981 > 65536, 16, 0, 0, 0.987 > 65536, 16, 0, 1, 0.987 > 65536, 48, 0, 0, 0.968 > 65536, 48, 0, 1, 0.968 > 65536, 0, 16, 0, 1.014 > 65536, 0, 16, 1, 1.014 > 65536, 0, 48, 0, 0.984 > 65536, 0, 48, 1, 0.984 > 65536, 16, 16, 0, 1.01 > 65536, 16, 16, 1, 1.01 > 65536, 48, 48, 0, 0.968 > 65536, 48, 48, 1, 0.968 > 65536, 2048, 0, 0, 0.982 > 65536, 2048, 0, 1, 0.982 > 65536, 2064, 0, 0, 0.987 > 65536, 2064, 0, 1, 0.987 > 65536, 2048, 16, 0, 1.012 > 65536, 2048, 16, 1, 1.012 > 65536, 2064, 16, 0, 1.007 > 65536, 2064, 16, 1, 1.007 > 0, 0, 0, 0, 2.104 > 0, 2048, 0, 0, 2.104 > 0, 4095, 0, 0, 2.109 > 0, 0, 4095, 0, 2.103 > 1, 1, 0, 0, 2.104 > 1, 0, 1, 0, 2.098 > 1, 1, 1, 0, 2.098 > 1, 2049, 0, 0, 2.102 > 1, 2048, 1, 0, 2.098 > 1, 2049, 1, 0, 2.098 > 1, 4095, 0, 0, 2.103 > 1, 0, 4095, 0, 2.098 > 2, 2, 0, 0, 1.139 > 2, 0, 2, 0, 1.136 > 2, 2, 2, 0, 1.136 > 2, 2050, 0, 0, 1.139 > 2, 2048, 2, 0, 1.136 > 2, 2050, 2, 0, 1.136 > 2, 4095, 0, 0, 1.0 > 2, 0, 4095, 0, 1.022 > 3, 0, 0, 0, 0.981 > 3, 3, 0, 0, 0.984 > 3, 0, 3, 0, 0.982 > 3, 3, 3, 0, 0.982 > 3, 2048, 0, 0, 0.982 > 3, 2051, 0, 0, 0.983 > 3, 2048, 3, 0, 0.982 > 3, 2051, 3, 0, 0.982 > 3, 4095, 0, 0, 0.285 > 3, 0, 4095, 0, 0.231 > 4, 4, 0, 0, 1.373 > 4, 0, 4, 0, 1.31 > 4, 4, 4, 0, 1.282 > 4, 2052, 0, 0, 1.264 > 4, 2048, 4, 0, 1.254 > 4, 2052, 4, 0, 1.254 > 4, 4095, 0, 0, 1.971 > 4, 0, 4095, 0, 1.994 > 5, 0, 0, 0, 1.145 > 5, 5, 0, 0, 1.155 > 5, 0, 5, 0, 1.171 > 5, 5, 5, 0, 1.171 > 5, 2048, 0, 0, 1.197 > 5, 2053, 0, 0, 1.173 > 5, 2048, 5, 0, 1.171 > 5, 2053, 5, 0, 1.171 > 5, 4095, 0, 0, 0.935 > 5, 0, 4095, 0, 1.017 > 6, 0, 0, 0, 1.145 > 6, 6, 0, 0, 1.098 > 6, 0, 6, 0, 1.096 > 6, 6, 6, 0, 1.096 > 6, 2048, 0, 0, 1.12 > 6, 2054, 0, 0, 1.122 > 6, 2048, 6, 0, 1.12 > 6, 2054, 6, 0, 1.096 > 6, 4095, 0, 0, 0.935 > 6, 0, 4095, 0, 1.018 > 7, 0, 0, 0, 1.071 > 7, 7, 0, 0, 1.074 > 7, 0, 7, 0, 1.072 > 7, 7, 7, 0, 1.072 > 7, 2048, 0, 0, 1.096 > 7, 2055, 0, 0, 1.098 > 7, 2048, 7, 0, 1.096 > 7, 2055, 7, 0, 1.096 > 7, 4095, 0, 0, 0.935 > 7, 0, 4095, 0, 1.016 > 8, 8, 0, 0, 1.167 > 8, 0, 8, 0, 1.028 > 8, 8, 8, 0, 1.028 > 8, 2056, 0, 0, 1.069 > 8, 2048, 8, 0, 1.028 > 8, 2056, 8, 0, 1.028 > 8, 4095, 0, 0, 1.029 > 8, 0, 4095, 0, 1.043 > 9, 0, 0, 0, 0.799 > 9, 9, 0, 0, 0.801 > 9, 0, 9, 0, 0.799 > 9, 9, 9, 0, 0.799 > 9, 2048, 0, 0, 0.8 > 9, 2057, 0, 0, 0.801 > 9, 2048, 9, 0, 0.8 > 9, 2057, 9, 0, 0.799 > 9, 4095, 0, 0, 0.909 > 9, 0, 4095, 0, 1.0 > 10, 0, 0, 0, 0.799 > 10, 10, 0, 0, 0.801 > 10, 0, 10, 0, 0.8 > 10, 10, 10, 0, 0.8 > 10, 2048, 0, 0, 0.8 > 10, 2058, 0, 0, 0.801 > 10, 2048, 10, 0, 0.8 > 10, 2058, 10, 0, 0.8 > 10, 4095, 0, 0, 0.909 > 10, 0, 4095, 0, 1.0 > 11, 0, 0, 0, 0.799 > 11, 11, 0, 0, 0.801 > 11, 0, 11, 0, 0.8 > 11, 11, 11, 0, 0.8 > 11, 2048, 0, 0, 0.8 > 11, 2059, 0, 0, 0.802 > 11, 2048, 11, 0, 0.8 > 11, 2059, 11, 0, 0.8 > 11, 4095, 0, 0, 0.909 > 11, 0, 4095, 0, 1.0 > 12, 0, 0, 0, 0.799 > 12, 12, 0, 0, 0.801 > 12, 0, 12, 0, 0.8 > 12, 12, 12, 0, 0.8 > 12, 2048, 0, 0, 0.8 > 12, 2060, 0, 0, 0.802 > 12, 2048, 12, 0, 0.8 > 12, 2060, 12, 0, 0.8 > 12, 4095, 0, 0, 0.909 > 12, 0, 4095, 0, 1.0 > 13, 0, 0, 0, 0.798 > 13, 13, 0, 0, 0.801 > 13, 0, 13, 0, 0.799 > 13, 13, 13, 0, 0.799 > 13, 2048, 0, 0, 0.8 > 13, 2061, 0, 0, 0.801 > 13, 2048, 13, 0, 0.8 > 13, 2061, 13, 0, 0.8 > 13, 4095, 0, 0, 0.909 > 13, 0, 4095, 0, 1.0 > 14, 0, 0, 0, 0.799 > 14, 14, 0, 0, 0.801 > 14, 0, 14, 0, 0.8 > 14, 14, 14, 0, 0.8 > 14, 2048, 0, 0, 0.8 > 14, 2062, 0, 0, 0.801 > 14, 2048, 14, 0, 0.8 > 14, 2062, 14, 0, 0.8 > 14, 4095, 0, 0, 0.909 > 14, 0, 4095, 0, 1.0 > 15, 0, 0, 0, 0.799 > 15, 15, 0, 0, 0.801 > 15, 0, 15, 0, 0.8 > 15, 15, 15, 0, 0.8 > 15, 2048, 0, 0, 0.8 > 15, 2063, 0, 0, 0.802 > 15, 2048, 15, 0, 0.8 > 15, 2063, 15, 0, 0.8 > 15, 4095, 0, 0, 0.909 > 15, 0, 4095, 0, 1.0 > 16, 16, 0, 0, 0.801 > 16, 0, 16, 0, 0.799 > 16, 16, 16, 0, 0.799 > 16, 2064, 0, 0, 0.801 > 16, 2048, 16, 0, 0.798 > 16, 2064, 16, 0, 0.798 > 16, 4095, 0, 0, 1.818 > 16, 0, 4095, 0, 1.957 > 17, 0, 0, 0, 0.798 > 17, 17, 0, 0, 0.8 > 17, 0, 17, 0, 0.799 > 17, 17, 17, 0, 0.798 > 17, 2048, 0, 0, 0.798 > 17, 2065, 0, 0, 0.8 > 17, 2048, 17, 0, 0.798 > 17, 2065, 17, 0, 0.799 > 17, 4095, 0, 0, 0.937 > 17, 0, 4095, 0, 1.021 > 18, 0, 0, 0, 0.798 > 18, 18, 0, 0, 0.801 > 18, 0, 18, 0, 0.798 > 18, 18, 18, 0, 0.798 > 18, 2048, 0, 0, 0.799 > 18, 2066, 0, 0, 0.8 > 18, 2048, 18, 0, 0.798 > 18, 2066, 18, 0, 0.798 > 18, 4095, 0, 0, 0.937 > 18, 0, 4095, 0, 1.021 > 19, 0, 0, 0, 0.798 > 19, 19, 0, 0, 0.8 > 19, 0, 19, 0, 0.798 > 19, 19, 19, 0, 0.798 > 19, 2048, 0, 0, 0.798 > 19, 2067, 0, 0, 0.8 > 19, 2048, 19, 0, 0.798 > 19, 2067, 19, 0, 0.798 > 19, 4095, 0, 0, 0.937 > 19, 0, 4095, 0, 1.021 > 20, 0, 0, 0, 0.798 > 20, 20, 0, 0, 0.8 > 20, 0, 20, 0, 0.798 > 20, 20, 20, 0, 0.798 > 20, 2048, 0, 0, 0.798 > 20, 2068, 0, 0, 0.8 > 20, 2048, 20, 0, 0.798 > 20, 2068, 20, 0, 0.798 > 20, 4095, 0, 0, 0.937 > 20, 0, 4095, 0, 1.021 > 21, 0, 0, 0, 0.798 > 21, 21, 0, 0, 0.801 > 21, 0, 21, 0, 0.798 > 21, 21, 21, 0, 0.798 > 21, 2048, 0, 0, 0.798 > 21, 2069, 0, 0, 0.801 > 21, 2048, 21, 0, 0.799 > 21, 2069, 21, 0, 0.798 > 21, 4095, 0, 0, 0.937 > 21, 0, 4095, 0, 1.021 > 22, 0, 0, 0, 0.798 > 22, 22, 0, 0, 0.801 > 22, 0, 22, 0, 0.798 > 22, 22, 22, 0, 0.798 > 22, 2048, 0, 0, 0.798 > 22, 2070, 0, 0, 0.801 > 22, 2048, 22, 0, 0.798 > 22, 2070, 22, 0, 0.798 > 22, 4095, 0, 0, 0.937 > 22, 0, 4095, 0, 1.021 > 23, 0, 0, 0, 0.798 > 23, 23, 0, 0, 0.8 > 23, 0, 23, 0, 0.798 > 23, 23, 23, 0, 0.798 > 23, 2048, 0, 0, 0.798 > 23, 2071, 0, 0, 0.8 > 23, 2048, 23, 0, 0.798 > 23, 2071, 23, 0, 0.798 > 23, 4095, 0, 0, 0.937 > 23, 0, 4095, 0, 1.021 > 24, 0, 0, 0, 0.798 > 24, 24, 0, 0, 0.8 > 24, 0, 24, 0, 0.799 > 24, 24, 24, 0, 0.798 > 24, 2048, 0, 0, 0.798 > 24, 2072, 0, 0, 0.801 > 24, 2048, 24, 0, 0.798 > 24, 2072, 24, 0, 0.798 > 24, 4095, 0, 0, 0.937 > 24, 0, 4095, 0, 1.021 > 25, 0, 0, 0, 0.5 > 25, 25, 0, 0, 0.5 > 25, 0, 25, 0, 0.5 > 25, 25, 25, 0, 0.5 > 25, 2048, 0, 0, 0.5 > 25, 2073, 0, 0, 0.501 > 25, 2048, 25, 0, 0.5 > 25, 2073, 25, 0, 0.5 > 25, 4095, 0, 0, 0.974 > 25, 0, 4095, 0, 0.98 > 26, 0, 0, 0, 0.5 > 26, 26, 0, 0, 0.501 > 26, 0, 26, 0, 0.5 > 26, 26, 26, 0, 0.501 > 26, 2048, 0, 0, 0.5 > 26, 2074, 0, 0, 0.5 > 26, 2048, 26, 0, 0.5 > 26, 2074, 26, 0, 0.5 > 26, 4095, 0, 0, 0.974 > 26, 0, 4095, 0, 1.0 > 27, 0, 0, 0, 0.5 > 27, 27, 0, 0, 0.501 > 27, 0, 27, 0, 0.5 > 27, 27, 27, 0, 0.5 > 27, 2048, 0, 0, 0.5 > 27, 2075, 0, 0, 0.5 > 27, 2048, 27, 0, 0.5 > 27, 2075, 27, 0, 0.5 > 27, 4095, 0, 0, 0.974 > 27, 0, 4095, 0, 1.0 > 28, 0, 0, 0, 0.5 > 28, 28, 0, 0, 0.501 > 28, 0, 28, 0, 0.5 > 28, 28, 28, 0, 0.5 > 28, 2048, 0, 0, 0.5 > 28, 2076, 0, 0, 0.5 > 28, 2048, 28, 0, 0.5 > 28, 2076, 28, 0, 0.5 > 28, 4095, 0, 0, 0.974 > 28, 0, 4095, 0, 1.0 > 29, 0, 0, 0, 0.471 > 29, 29, 0, 0, 0.471 > 29, 0, 29, 0, 0.471 > 29, 29, 29, 0, 0.471 > 29, 2048, 0, 0, 0.471 > 29, 2077, 0, 0, 0.471 > 29, 2048, 29, 0, 0.471 > 29, 2077, 29, 0, 0.471 > 29, 4095, 0, 0, 0.974 > 29, 0, 4095, 0, 1.0 > 30, 0, 0, 0, 0.471 > 30, 30, 0, 0, 0.471 > 30, 0, 30, 0, 0.471 > 30, 30, 30, 0, 0.471 > 30, 2048, 0, 0, 0.471 > 30, 2078, 0, 0, 0.471 > 30, 2048, 30, 0, 0.471 > 30, 2078, 30, 0, 0.471 > 30, 4095, 0, 0, 0.974 > 30, 0, 4095, 0, 1.0 > 31, 0, 0, 0, 0.471 > 31, 31, 0, 0, 0.471 > 31, 0, 31, 0, 0.471 > 31, 31, 31, 0, 0.471 > 31, 2048, 0, 0, 0.471 > 31, 2079, 0, 0, 0.471 > 31, 2048, 31, 0, 0.471 > 31, 2079, 31, 0, 0.471 > 31, 4095, 0, 0, 0.974 > 31, 0, 4095, 0, 1.0 > 48, 0, 0, 0, 1.0 > 48, 0, 0, 1, 1.0 > 48, 3, 0, 0, 1.0 > 48, 3, 0, 1, 1.0 > 48, 0, 3, 0, 1.0 > 48, 0, 3, 1, 1.0 > 48, 3, 3, 0, 1.0 > 48, 3, 3, 1, 1.0 > 48, 2048, 0, 0, 1.0 > 48, 2048, 0, 1, 1.0 > 48, 2051, 0, 0, 1.0 > 48, 2051, 0, 1, 1.0 > 48, 2048, 3, 0, 1.0 > 48, 2048, 3, 1, 1.0 > 48, 2051, 3, 0, 1.0 > 48, 2051, 3, 1, 1.0 > 80, 0, 0, 0, 0.781 > 80, 0, 0, 1, 0.782 > 80, 5, 0, 0, 0.976 > 80, 5, 0, 1, 0.976 > 80, 0, 5, 0, 1.232 > 80, 0, 5, 1, 1.232 > 80, 5, 5, 0, 1.542 > 80, 5, 5, 1, 1.543 > 80, 2048, 0, 0, 0.781 > 80, 2048, 0, 1, 0.782 > 80, 2053, 0, 0, 0.976 > 80, 2053, 0, 1, 0.976 > 80, 2048, 5, 0, 1.093 > 80, 2048, 5, 1, 1.093 > 80, 2053, 5, 0, 1.371 > 80, 2053, 5, 1, 1.371 > 96, 0, 0, 0, 0.758 > 96, 0, 0, 1, 0.758 > 96, 6, 0, 0, 0.929 > 96, 6, 0, 1, 0.929 > 96, 0, 6, 0, 1.204 > 96, 0, 6, 1, 1.204 > 96, 6, 6, 0, 1.562 > 96, 6, 6, 1, 1.562 > 96, 2048, 0, 0, 0.758 > 96, 2048, 0, 1, 0.758 > 96, 2054, 0, 0, 0.929 > 96, 2054, 0, 1, 0.929 > 96, 2048, 6, 0, 1.068 > 96, 2048, 6, 1, 1.068 > 96, 2054, 6, 0, 1.562 > 96, 2054, 6, 1, 1.562 > 112, 0, 0, 0, 0.736 > 112, 0, 0, 1, 0.736 > 112, 7, 0, 0, 0.675 > 112, 7, 0, 1, 0.675 > 112, 0, 7, 0, 0.778 > 112, 0, 7, 1, 0.778 > 112, 7, 7, 0, 0.909 > 112, 7, 7, 1, 0.909 > 112, 2048, 0, 0, 0.736 > 112, 2048, 0, 1, 0.736 > 112, 2055, 0, 0, 0.675 > 112, 2055, 0, 1, 0.675 > 112, 2048, 7, 0, 0.778 > 112, 2048, 7, 1, 0.778 > 112, 2055, 7, 0, 0.909 > 112, 2055, 7, 1, 0.909 > 144, 0, 0, 0, 0.857 > 144, 0, 0, 1, 0.857 > 144, 9, 0, 0, 0.941 > 144, 9, 0, 1, 0.943 > 144, 0, 9, 0, 1.137 > 144, 0, 9, 1, 1.137 > 144, 9, 9, 0, 1.514 > 144, 9, 9, 1, 1.514 > 144, 2048, 0, 0, 0.857 > 144, 2048, 0, 1, 0.857 > 144, 2057, 0, 0, 0.939 > 144, 2057, 0, 1, 0.945 > 144, 2048, 9, 0, 0.922 > 144, 2048, 9, 1, 0.922 > 144, 2057, 9, 0, 1.514 > 144, 2057, 9, 1, 1.514 > 160, 0, 0, 0, 0.698 > 160, 0, 0, 1, 0.698 > 160, 10, 0, 0, 0.91 > 160, 10, 0, 1, 0.91 > 160, 0, 10, 0, 1.211 > 160, 0, 10, 1, 1.212 > 160, 10, 10, 0, 1.357 > 160, 10, 10, 1, 1.357 > 160, 2048, 0, 0, 0.698 > 160, 2048, 0, 1, 0.698 > 160, 2058, 0, 0, 0.91 > 160, 2058, 0, 1, 0.91 > 160, 2048, 10, 0, 0.923 > 160, 2048, 10, 1, 0.923 > 160, 2058, 10, 0, 1.357 > 160, 2058, 10, 1, 1.357 > 176, 0, 0, 0, 0.796 > 176, 0, 0, 1, 0.796 > 176, 11, 0, 0, 0.804 > 176, 11, 0, 1, 0.804 > 176, 0, 11, 0, 0.774 > 176, 0, 11, 1, 0.774 > 176, 11, 11, 0, 0.814 > 176, 11, 11, 1, 0.814 > 176, 2048, 0, 0, 0.796 > 176, 2048, 0, 1, 0.796 > 176, 2059, 0, 0, 0.804 > 176, 2059, 0, 1, 0.804 > 176, 2048, 11, 0, 0.774 > 176, 2048, 11, 1, 0.774 > 176, 2059, 11, 0, 0.814 > 176, 2059, 11, 1, 0.814 > 192, 0, 0, 0, 0.778 > 192, 0, 0, 1, 0.778 > 192, 12, 0, 0, 0.881 > 192, 12, 0, 1, 0.881 > 192, 0, 12, 0, 1.167 > 192, 0, 12, 1, 1.167 > 192, 12, 12, 0, 0.841 > 192, 12, 12, 1, 0.841 > 192, 2048, 0, 0, 0.778 > 192, 2048, 0, 1, 0.778 > 192, 2060, 0, 0, 0.881 > 192, 2060, 0, 1, 0.881 > 192, 2048, 12, 0, 0.889 > 192, 2048, 12, 1, 0.889 > 192, 2060, 12, 0, 0.906 > 192, 2060, 12, 1, 0.906 > 208, 0, 0, 0, 0.833 > 208, 0, 0, 1, 0.833 > 208, 13, 0, 0, 0.921 > 208, 13, 0, 1, 0.921 > 208, 0, 13, 0, 0.835 > 208, 0, 13, 1, 0.833 > 208, 13, 13, 0, 1.333 > 208, 13, 13, 1, 1.333 > 208, 2048, 0, 0, 0.833 > 208, 2048, 0, 1, 0.833 > 208, 2061, 0, 0, 0.921 > 208, 2061, 0, 1, 0.921 > 208, 2048, 13, 0, 0.833 > 208, 2048, 13, 1, 0.833 > 208, 2061, 13, 0, 1.333 > 208, 2061, 13, 1, 1.333 > 224, 0, 0, 0, 0.93 > 224, 0, 0, 1, 0.93 > 224, 14, 0, 0, 1.0 > 224, 14, 0, 1, 1.0 > 224, 0, 14, 0, 1.15 > 224, 0, 14, 1, 1.15 > 224, 14, 14, 0, 1.452 > 224, 14, 14, 1, 1.452 > 224, 2048, 0, 0, 0.93 > 224, 2048, 0, 1, 0.93 > 224, 2062, 0, 0, 1.0 > 224, 2062, 0, 1, 1.0 > 224, 2048, 14, 0, 0.833 > 224, 2048, 14, 1, 0.833 > 224, 2062, 14, 0, 1.452 > 224, 2062, 14, 1, 1.452 > 240, 0, 0, 0, 0.909 > 240, 0, 0, 1, 0.909 > 240, 15, 0, 0, 0.797 > 240, 15, 0, 1, 0.797 > 240, 0, 15, 0, 0.771 > 240, 0, 15, 1, 0.771 > 240, 15, 15, 0, 0.93 > 240, 15, 15, 1, 0.93 > 240, 2048, 0, 0, 0.909 > 240, 2048, 0, 1, 0.909 > 240, 2063, 0, 0, 0.797 > 240, 2063, 0, 1, 0.797 > 240, 2048, 15, 0, 0.771 > 240, 2048, 15, 1, 0.771 > 240, 2063, 15, 0, 0.93 > 240, 2063, 15, 1, 0.93 > 272, 0, 0, 0, 0.9 > 272, 0, 0, 1, 0.9 > 272, 17, 0, 0, 1.015 > 272, 17, 0, 1, 1.015 > 272, 0, 17, 0, 0.926 > 272, 0, 17, 1, 0.927 > 272, 17, 17, 0, 0.892 > 272, 17, 17, 1, 0.892 > 272, 2048, 0, 0, 0.9 > 272, 2048, 0, 1, 0.9 > 272, 2065, 0, 0, 1.015 > 272, 2065, 0, 1, 1.015 > 272, 2048, 17, 0, 0.927 > 272, 2048, 17, 1, 0.927 > 272, 2065, 17, 0, 0.878 > 272, 2065, 17, 1, 0.878 > 288, 0, 0, 0, 0.882 > 288, 0, 0, 1, 0.882 > 288, 18, 0, 0, 0.803 > 288, 18, 0, 1, 0.803 > 288, 0, 18, 0, 0.768 > 288, 0, 18, 1, 0.768 > 288, 18, 18, 0, 0.882 > 288, 18, 18, 1, 0.882 > 288, 2048, 0, 0, 0.882 > 288, 2048, 0, 1, 0.882 > 288, 2066, 0, 0, 0.803 > 288, 2066, 0, 1, 0.803 > 288, 2048, 18, 0, 0.768 > 288, 2048, 18, 1, 0.768 > 288, 2066, 18, 0, 0.882 > 288, 2066, 18, 1, 0.882 > 304, 0, 0, 0, 0.865 > 304, 0, 0, 1, 0.865 > 304, 19, 0, 0, 0.944 > 304, 19, 0, 1, 0.944 > 304, 0, 19, 0, 0.943 > 304, 0, 19, 1, 0.943 > 304, 19, 19, 0, 0.956 > 304, 19, 19, 1, 0.956 > 304, 2048, 0, 0, 0.866 > 304, 2048, 0, 1, 0.865 > 304, 2067, 0, 0, 0.944 > 304, 2067, 0, 1, 0.944 > 304, 2048, 19, 0, 0.943 > 304, 2048, 19, 1, 0.943 > 304, 2067, 19, 0, 0.947 > 304, 2067, 19, 1, 0.947 > 320, 0, 0, 0, 0.944 > 320, 0, 0, 1, 0.944 > 320, 20, 0, 0, 0.962 > 320, 20, 0, 1, 0.962 > 320, 0, 20, 0, 1.214 > 320, 0, 20, 1, 1.214 > 320, 20, 20, 0, 1.365 > 320, 20, 20, 1, 1.365 > 320, 2048, 0, 0, 0.943 > 320, 2048, 0, 1, 0.943 > 320, 2068, 0, 0, 0.962 > 320, 2068, 0, 1, 0.962 > 320, 2048, 20, 0, 0.914 > 320, 2048, 20, 1, 0.914 > 320, 2068, 20, 0, 1.365 > 320, 2068, 20, 1, 1.365 > 336, 0, 0, 0, 1.0 > 336, 0, 0, 1, 1.0 > 336, 21, 0, 0, 0.986 > 336, 21, 0, 1, 0.986 > 336, 0, 21, 0, 0.853 > 336, 0, 21, 1, 0.853 > 336, 21, 21, 0, 0.843 > 336, 21, 21, 1, 0.843 > 336, 2048, 0, 0, 1.0 > 336, 2048, 0, 1, 1.0 > 336, 2069, 0, 0, 0.986 > 336, 2069, 0, 1, 0.986 > 336, 2048, 21, 0, 0.853 > 336, 2048, 21, 1, 0.853 > 336, 2069, 21, 0, 0.831 > 336, 2069, 21, 1, 0.831 > 352, 0, 0, 0, 0.98 > 352, 0, 0, 1, 0.98 > 352, 22, 0, 0, 0.811 > 352, 22, 0, 1, 0.811 > 352, 0, 22, 0, 0.882 > 352, 0, 22, 1, 0.882 > 352, 22, 22, 0, 1.1 > 352, 22, 22, 1, 1.1 > 352, 2048, 0, 0, 0.98 > 352, 2048, 0, 1, 0.98 > 352, 2070, 0, 0, 0.811 > 352, 2070, 0, 1, 0.811 > 352, 2048, 22, 0, 0.882 > 352, 2048, 22, 1, 0.882 > 352, 2070, 22, 0, 1.1 > 352, 2070, 22, 1, 1.1 > 368, 0, 0, 0, 1.058 > 368, 0, 0, 1, 1.058 > 368, 23, 0, 0, 1.0 > 368, 23, 0, 1, 1.0 > 368, 0, 23, 0, 0.948 > 368, 0, 23, 1, 0.948 > 368, 23, 23, 0, 0.723 > 368, 23, 23, 1, 0.723 > 368, 2048, 0, 0, 1.058 > 368, 2048, 0, 1, 1.058 > 368, 2071, 0, 0, 1.0 > 368, 2071, 0, 1, 1.0 > 368, 2048, 23, 0, 0.948 > 368, 2048, 23, 1, 0.948 > 368, 2071, 23, 0, 0.701 > 368, 2071, 23, 1, 0.701 > 384, 0, 0, 0, 1.012 > 384, 0, 0, 1, 1.012 > 384, 24, 0, 0, 1.04 > 384, 24, 0, 1, 1.04 > 384, 0, 24, 0, 1.154 > 384, 0, 24, 1, 1.154 > 384, 24, 24, 0, 1.423 > 384, 24, 24, 1, 1.423 > 384, 2048, 0, 0, 1.012 > 384, 2048, 0, 1, 1.012 > 384, 2072, 0, 0, 1.04 > 384, 2072, 0, 1, 1.04 > 384, 2048, 24, 0, 0.91 > 384, 2048, 24, 1, 0.91 > 384, 2072, 24, 0, 1.423 > 384, 2072, 24, 1, 1.423 > 400, 0, 0, 0, 0.948 > 400, 0, 0, 1, 0.948 > 400, 25, 0, 0, 0.957 > 400, 25, 0, 1, 0.957 > 400, 0, 25, 0, 1.099 > 400, 0, 25, 1, 1.069 > 400, 25, 25, 0, 0.885 > 400, 25, 25, 1, 0.885 > 400, 2048, 0, 0, 0.948 > 400, 2048, 0, 1, 0.948 > 400, 2073, 0, 0, 0.957 > 400, 2073, 0, 1, 0.957 > 400, 2048, 25, 0, 0.94 > 400, 2048, 25, 1, 0.94 > 400, 2073, 25, 0, 0.908 > 400, 2073, 25, 1, 0.908 > 416, 0, 0, 0, 1.017 > 416, 0, 0, 1, 1.017 > 416, 26, 0, 0, 0.903 > 416, 26, 0, 1, 0.903 > 416, 0, 26, 0, 0.881 > 416, 0, 26, 1, 0.881 > 416, 26, 26, 0, 1.035 > 416, 26, 26, 1, 1.035 > 416, 2048, 0, 0, 1.017 > 416, 2048, 0, 1, 1.017 > 416, 2074, 0, 0, 0.903 > 416, 2074, 0, 1, 0.903 > 416, 2048, 26, 0, 0.881 > 416, 2048, 26, 1, 0.881 > 416, 2074, 26, 0, 1.034 > 416, 2074, 26, 1, 1.035 > 432, 0, 0, 0, 1.0 > 432, 0, 0, 1, 1.0 > 432, 27, 0, 0, 0.933 > 432, 27, 0, 1, 0.933 > 432, 0, 27, 0, 0.941 > 432, 0, 27, 1, 0.941 > 432, 27, 27, 0, 0.953 > 432, 27, 27, 1, 0.954 > 432, 2048, 0, 0, 1.0 > 432, 2048, 0, 1, 1.0 > 432, 2075, 0, 0, 0.933 > 432, 2075, 0, 1, 0.933 > 432, 2048, 27, 0, 0.941 > 432, 2048, 27, 1, 0.941 > 432, 2075, 27, 0, 0.93 > 432, 2075, 27, 1, 0.93 > 448, 0, 0, 0, 0.984 > 448, 0, 0, 1, 0.984 > 448, 28, 0, 0, 0.896 > 448, 28, 0, 1, 0.896 > 448, 0, 28, 0, 1.244 > 448, 0, 28, 1, 1.244 > 448, 28, 28, 0, 1.333 > 448, 28, 28, 1, 1.333 > 448, 2048, 0, 0, 0.984 > 448, 2048, 0, 1, 0.984 > 448, 2076, 0, 0, 0.896 > 448, 2076, 0, 1, 0.896 > 448, 2048, 28, 0, 0.988 > 448, 2048, 28, 1, 0.988 > 448, 2076, 28, 0, 1.333 > 448, 2076, 28, 1, 1.333 > 464, 0, 0, 0, 1.083 > 464, 0, 0, 1, 1.083 > 464, 29, 0, 0, 0.978 > 464, 29, 0, 1, 0.978 > 464, 0, 29, 0, 0.924 > 464, 0, 29, 1, 0.924 > 464, 29, 29, 0, 0.901 > 464, 29, 29, 1, 0.901 > 464, 2048, 0, 0, 1.083 > 464, 2048, 0, 1, 1.083 > 464, 2077, 0, 0, 0.978 > 464, 2077, 0, 1, 0.978 > 464, 2048, 29, 0, 0.924 > 464, 2048, 29, 1, 0.924 > 464, 2077, 29, 0, 0.89 > 464, 2077, 29, 1, 0.89 > 480, 0, 0, 0, 1.066 > 480, 0, 0, 1, 1.066 > 480, 30, 0, 0, 0.9 > 480, 30, 0, 1, 0.9 > 480, 0, 30, 0, 0.88 > 480, 0, 30, 1, 0.88 > 480, 30, 30, 0, 1.083 > 480, 30, 30, 1, 1.083 > 480, 2048, 0, 0, 1.066 > 480, 2048, 0, 1, 1.066 > 480, 2078, 0, 0, 0.9 > 480, 2078, 0, 1, 0.9 > 480, 2048, 30, 0, 0.88 > 480, 2048, 30, 1, 0.88 > 480, 2078, 30, 0, 1.083 > 480, 2078, 30, 1, 1.083 > 496, 0, 0, 0, 1.032 > 496, 0, 0, 1, 1.032 > 496, 31, 0, 0, 0.95 > 496, 31, 0, 1, 0.95 > 496, 0, 31, 0, 1.011 > 496, 0, 31, 1, 1.011 > 496, 31, 31, 0, 0.973 > 496, 31, 31, 1, 0.973 > 496, 2048, 0, 0, 1.032 > 496, 2048, 0, 1, 1.032 > 496, 2079, 0, 0, 0.95 > 496, 2079, 0, 1, 0.95 > 496, 2048, 31, 0, 1.011 > 496, 2048, 31, 1, 1.011 > 496, 2079, 31, 0, 0.941 > 496, 2079, 31, 1, 0.941 > 1024, 32, 0, 0, 1.143 > 1024, 32, 0, 1, 1.143 > 1024, 0, 32, 0, 1.143 > 1024, 0, 32, 1, 1.143 > 1024, 32, 32, 0, 1.143 > 1024, 32, 32, 1, 1.143 > 1024, 2080, 0, 0, 1.143 > 1024, 2080, 0, 1, 1.143 > 1024, 2048, 32, 0, 1.143 > 1024, 2048, 32, 1, 1.143 > 1024, 2080, 32, 0, 1.143 > 1024, 2080, 32, 1, 1.143 > 1056, 0, 0, 0, 1.168 > 1056, 0, 0, 1, 1.168 > 1056, 33, 0, 0, 1.067 > 1056, 33, 0, 1, 1.067 > 1056, 0, 33, 0, 0.977 > 1056, 0, 33, 1, 0.977 > 1056, 33, 33, 0, 1.043 > 1056, 33, 33, 1, 1.043 > 1056, 2048, 0, 0, 1.168 > 1056, 2048, 0, 1, 1.168 > 1056, 2081, 0, 0, 1.067 > 1056, 2081, 0, 1, 1.067 > 1056, 2048, 33, 0, 0.977 > 1056, 2048, 33, 1, 0.977 > 1056, 2081, 33, 0, 1.0 > 1056, 2081, 33, 1, 1.0 > 1088, 0, 0, 0, 1.171 > 1088, 0, 0, 1, 1.171 > 1088, 34, 0, 0, 1.041 > 1088, 34, 0, 1, 1.041 > 1088, 0, 34, 0, 1.079 > 1088, 0, 34, 1, 1.079 > 1088, 34, 34, 0, 0.966 > 1088, 34, 34, 1, 0.966 > 1088, 2048, 0, 0, 1.171 > 1088, 2048, 0, 1, 1.171 > 1088, 2082, 0, 0, 1.041 > 1088, 2082, 0, 1, 1.041 > 1088, 2048, 34, 0, 0.994 > 1088, 2048, 34, 1, 0.994 > 1088, 2082, 34, 0, 0.966 > 1088, 2082, 34, 1, 0.966 > 1120, 0, 0, 0, 1.152 > 1120, 0, 0, 1, 1.153 > 1120, 35, 0, 0, 1.051 > 1120, 35, 0, 1, 1.051 > 1120, 0, 35, 0, 1.0 > 1120, 0, 35, 1, 1.0 > 1120, 35, 35, 0, 1.068 > 1120, 35, 35, 1, 1.068 > 1120, 2048, 0, 0, 1.151 > 1120, 2048, 0, 1, 1.151 > 1120, 2083, 0, 0, 1.051 > 1120, 2083, 0, 1, 1.051 > 1120, 2048, 35, 0, 1.0 > 1120, 2048, 35, 1, 1.0 > 1120, 2083, 35, 0, 1.027 > 1120, 2083, 35, 1, 1.027 > 1152, 0, 0, 0, 1.159 > 1152, 0, 0, 1, 1.159 > 1152, 36, 0, 0, 1.034 > 1152, 36, 0, 1, 1.034 > 1152, 0, 36, 0, 1.07 > 1152, 0, 36, 1, 1.07 > 1152, 36, 36, 0, 0.967 > 1152, 36, 36, 1, 0.967 > 1152, 2048, 0, 0, 1.159 > 1152, 2048, 0, 1, 1.159 > 1152, 2084, 0, 0, 1.034 > 1152, 2084, 0, 1, 1.034 > 1152, 2048, 36, 0, 0.984 > 1152, 2048, 36, 1, 0.984 > 1152, 2084, 36, 0, 0.967 > 1152, 2084, 36, 1, 0.967 > 1184, 0, 0, 0, 1.157 > 1184, 0, 0, 1, 1.157 > 1184, 37, 0, 0, 1.067 > 1184, 37, 0, 1, 1.066 > 1184, 0, 37, 0, 0.993 > 1184, 0, 37, 1, 0.993 > 1184, 37, 37, 0, 1.08 > 1184, 37, 37, 1, 1.081 > 1184, 2048, 0, 0, 1.157 > 1184, 2048, 0, 1, 1.157 > 1184, 2085, 0, 0, 1.066 > 1184, 2085, 0, 1, 1.066 > 1184, 2048, 37, 0, 0.993 > 1184, 2048, 37, 1, 0.993 > 1184, 2085, 37, 0, 1.04 > 1184, 2085, 37, 1, 1.04 > 1216, 0, 0, 0, 1.139 > 1216, 0, 0, 1, 1.139 > 1216, 38, 0, 0, 1.024 > 1216, 38, 0, 1, 1.024 > 1216, 0, 38, 0, 1.087 > 1216, 0, 38, 1, 1.087 > 1216, 38, 38, 0, 1.0 > 1216, 38, 38, 1, 1.0 > 1216, 2048, 0, 0, 1.138 > 1216, 2048, 0, 1, 1.138 > 1216, 2086, 0, 0, 1.024 > 1216, 2086, 0, 1, 1.024 > 1216, 2048, 38, 0, 1.01 > 1216, 2048, 38, 1, 1.01 > 1216, 2086, 38, 0, 1.0 > 1216, 2086, 38, 1, 1.0 > 1248, 0, 0, 0, 1.176 > 1248, 0, 0, 1, 1.174 > 1248, 39, 0, 0, 1.074 > 1248, 39, 0, 1, 1.074 > 1248, 0, 39, 0, 0.966 > 1248, 0, 39, 1, 0.985 > 1248, 39, 39, 0, 1.064 > 1248, 39, 39, 1, 1.064 > 1248, 2048, 0, 0, 1.179 > 1248, 2048, 0, 1, 1.179 > 1248, 2087, 0, 0, 1.074 > 1248, 2087, 0, 1, 1.074 > 1248, 2048, 39, 0, 0.985 > 1248, 2048, 39, 1, 0.985 > 1248, 2087, 39, 0, 1.026 > 1248, 2087, 39, 1, 1.026 > 1280, 0, 0, 0, 0.993 > 1280, 0, 0, 1, 0.993 > 1280, 40, 0, 0, 1.051 > 1280, 40, 0, 1, 1.051 > 1280, 0, 40, 0, 1.044 > 1280, 0, 40, 1, 1.045 > 1280, 40, 40, 0, 1.25 > 1280, 40, 40, 1, 1.25 > 1280, 2048, 0, 0, 0.992 > 1280, 2048, 0, 1, 0.992 > 1280, 2088, 0, 0, 1.051 > 1280, 2088, 0, 1, 1.051 > 1280, 2048, 40, 0, 0.946 > 1280, 2048, 40, 1, 0.946 > 1280, 2088, 40, 0, 1.252 > 1280, 2088, 40, 1, 1.252 > 1312, 0, 0, 0, 0.969 > 1312, 0, 0, 1, 0.969 > 1312, 41, 0, 0, 0.991 > 1312, 41, 0, 1, 0.991 > 1312, 0, 41, 0, 0.837 > 1312, 0, 41, 1, 0.837 > 1312, 41, 41, 0, 1.025 > 1312, 41, 41, 1, 1.025 > 1312, 2048, 0, 0, 0.969 > 1312, 2048, 0, 1, 0.969 > 1312, 2089, 0, 0, 0.991 > 1312, 2089, 0, 1, 0.99 > 1312, 2048, 41, 0, 0.837 > 1312, 2048, 41, 1, 0.837 > 1312, 2089, 41, 0, 0.975 > 1312, 2089, 41, 1, 0.975 > 1344, 0, 0, 0, 0.988 > 1344, 0, 0, 1, 0.988 > 1344, 42, 0, 0, 1.031 > 1344, 42, 0, 1, 1.031 > 1344, 0, 42, 0, 1.033 > 1344, 0, 42, 1, 1.033 > 1344, 42, 42, 0, 0.982 > 1344, 42, 42, 1, 0.982 > 1344, 2048, 0, 0, 0.992 > 1344, 2048, 0, 1, 0.992 > 1344, 2090, 0, 0, 1.031 > 1344, 2090, 0, 1, 1.031 > 1344, 2048, 42, 0, 0.943 > 1344, 2048, 42, 1, 0.942 > 1344, 2090, 42, 0, 0.982 > 1344, 2090, 42, 1, 0.982 > 1376, 0, 0, 0, 1.016 > 1376, 0, 0, 1, 1.016 > 1376, 43, 0, 0, 1.01 > 1376, 43, 0, 1, 1.01 > 1376, 0, 43, 0, 0.829 > 1376, 0, 43, 1, 0.829 > 1376, 43, 43, 0, 1.024 > 1376, 43, 43, 1, 1.024 > 1376, 2048, 0, 0, 1.006 > 1376, 2048, 0, 1, 1.015 > 1376, 2091, 0, 0, 1.01 > 1376, 2091, 0, 1, 1.01 > 1376, 2048, 43, 0, 0.829 > 1376, 2048, 43, 1, 0.829 > 1376, 2091, 43, 0, 0.98 > 1376, 2091, 43, 1, 0.98 > 1408, 0, 0, 0, 0.987 > 1408, 0, 0, 1, 0.987 > 1408, 44, 0, 0, 1.015 > 1408, 44, 0, 1, 1.015 > 1408, 0, 44, 0, 1.018 > 1408, 0, 44, 1, 1.014 > 1408, 44, 44, 0, 1.004 > 1408, 44, 44, 1, 0.994 > 1408, 2048, 0, 0, 0.988 > 1408, 2048, 0, 1, 0.988 > 1408, 2092, 0, 0, 1.015 > 1408, 2092, 0, 1, 1.015 > 1408, 2048, 44, 0, 0.955 > 1408, 2048, 44, 1, 0.955 > 1408, 2092, 44, 0, 1.0 > 1408, 2092, 44, 1, 0.994 > 1440, 0, 0, 0, 0.986 > 1440, 0, 0, 1, 0.986 > 1440, 45, 0, 0, 1.013 > 1440, 45, 0, 1, 1.013 > 1440, 0, 45, 0, 0.814 > 1440, 0, 45, 1, 0.814 > 1440, 45, 45, 0, 1.006 > 1440, 45, 45, 1, 1.006 > 1440, 2048, 0, 0, 0.986 > 1440, 2048, 0, 1, 0.986 > 1440, 2093, 0, 0, 1.013 > 1440, 2093, 0, 1, 1.013 > 1440, 2048, 45, 0, 0.814 > 1440, 2048, 45, 1, 0.814 > 1440, 2093, 45, 0, 0.966 > 1440, 2093, 45, 1, 0.966 > 1472, 0, 0, 0, 0.997 > 1472, 0, 0, 1, 0.994 > 1472, 46, 0, 0, 1.045 > 1472, 46, 0, 1, 1.045 > 1472, 0, 46, 0, 1.026 > 1472, 0, 46, 1, 1.026 > 1472, 46, 46, 0, 0.966 > 1472, 46, 46, 1, 0.966 > 1472, 2048, 0, 0, 1.0 > 1472, 2048, 0, 1, 0.996 > 1472, 2094, 0, 0, 1.045 > 1472, 2094, 0, 1, 1.045 > 1472, 2048, 46, 0, 0.939 > 1472, 2048, 46, 1, 0.939 > 1472, 2094, 46, 0, 0.966 > 1472, 2094, 46, 1, 0.966 > 1504, 0, 0, 0, 0.993 > 1504, 0, 0, 1, 0.993 > 1504, 47, 0, 0, 0.999 > 1504, 47, 0, 1, 0.999 > 1504, 0, 47, 0, 0.826 > 1504, 0, 47, 1, 0.826 > 1504, 47, 47, 0, 1.023 > 1504, 47, 47, 1, 1.023 > 1504, 2048, 0, 0, 0.993 > 1504, 2048, 0, 1, 0.993 > 1504, 2095, 0, 0, 0.999 > 1504, 2095, 0, 1, 0.999 > 1504, 2048, 47, 0, 0.826 > 1504, 2048, 47, 1, 0.826 > 1504, 2095, 47, 0, 0.993 > 1504, 2095, 47, 1, 0.993 > 1536, 0, 0, 0, 0.992 > 1536, 0, 0, 1, 0.991 > 1536, 48, 0, 0, 1.019 > 1536, 48, 0, 1, 1.019 > 1536, 0, 48, 0, 1.025 > 1536, 0, 48, 1, 1.024 > 1536, 48, 48, 0, 0.994 > 1536, 48, 48, 1, 0.994 > 1536, 2048, 0, 0, 0.994 > 1536, 2048, 0, 1, 0.994 > 1536, 2096, 0, 0, 1.019 > 1536, 2096, 0, 1, 1.019 > 1536, 2048, 48, 0, 1.025 > 1536, 2048, 48, 1, 1.025 > 1536, 2096, 48, 0, 0.994 > 1536, 2096, 48, 1, 0.994 > 1568, 0, 0, 0, 0.994 > 1568, 0, 0, 1, 0.994 > 1568, 49, 0, 0, 0.903 > 1568, 49, 0, 1, 0.903 > 1568, 0, 49, 0, 1.144 > 1568, 0, 49, 1, 1.144 > 1568, 49, 49, 0, 1.461 > 1568, 49, 49, 1, 1.461 > 1568, 2048, 0, 0, 0.993 > 1568, 2048, 0, 1, 0.993 > 1568, 2097, 0, 0, 0.903 > 1568, 2097, 0, 1, 0.903 > 1568, 2048, 49, 0, 1.09 > 1568, 2048, 49, 1, 1.09 > 1568, 2097, 49, 0, 1.46 > 1568, 2097, 49, 1, 1.46 > 1600, 0, 0, 0, 0.981 > 1600, 0, 0, 1, 0.981 > 1600, 50, 0, 0, 1.022 > 1600, 50, 0, 1, 1.022 > 1600, 0, 50, 0, 1.017 > 1600, 0, 50, 1, 1.017 > 1600, 50, 50, 0, 0.973 > 1600, 50, 50, 1, 0.973 > 1600, 2048, 0, 0, 0.981 > 1600, 2048, 0, 1, 0.981 > 1600, 2098, 0, 0, 1.022 > 1600, 2098, 0, 1, 1.022 > 1600, 2048, 50, 0, 0.961 > 1600, 2048, 50, 1, 0.961 > 1600, 2098, 50, 0, 0.973 > 1600, 2098, 50, 1, 0.973 > 1632, 0, 0, 0, 1.019 > 1632, 0, 0, 1, 1.019 > 1632, 51, 0, 0, 0.893 > 1632, 51, 0, 1, 0.893 > 1632, 0, 51, 0, 1.131 > 1632, 0, 51, 1, 1.131 > 1632, 51, 51, 0, 1.444 > 1632, 51, 51, 1, 1.444 > 1632, 2048, 0, 0, 1.019 > 1632, 2048, 0, 1, 1.019 > 1632, 2099, 0, 0, 0.893 > 1632, 2099, 0, 1, 0.893 > 1632, 2048, 51, 0, 1.079 > 1632, 2048, 51, 1, 1.079 > 1632, 2099, 51, 0, 1.449 > 1632, 2099, 51, 1, 1.449 > 1664, 0, 0, 0, 1.005 > 1664, 0, 0, 1, 1.004 > 1664, 52, 0, 0, 0.986 > 1664, 52, 0, 1, 0.986 > 1664, 0, 52, 0, 1.004 > 1664, 0, 52, 1, 1.004 > 1664, 52, 52, 0, 0.976 > 1664, 52, 52, 1, 0.976 > 1664, 2048, 0, 0, 1.006 > 1664, 2048, 0, 1, 1.006 > 1664, 2100, 0, 0, 0.993 > 1664, 2100, 0, 1, 0.993 > 1664, 2048, 52, 0, 0.946 > 1664, 2048, 52, 1, 0.946 > 1664, 2100, 52, 0, 0.976 > 1664, 2100, 52, 1, 0.976 > 1696, 0, 0, 0, 0.994 > 1696, 0, 0, 1, 0.992 > 1696, 53, 0, 0, 0.884 > 1696, 53, 0, 1, 0.884 > 1696, 0, 53, 0, 1.141 > 1696, 0, 53, 1, 1.141 > 1696, 53, 53, 0, 1.43 > 1696, 53, 53, 1, 1.43 > 1696, 2048, 0, 0, 0.994 > 1696, 2048, 0, 1, 0.994 > 1696, 2101, 0, 0, 0.884 > 1696, 2101, 0, 1, 0.884 > 1696, 2048, 53, 0, 1.088 > 1696, 2048, 53, 1, 1.088 > 1696, 2101, 53, 0, 1.429 > 1696, 2101, 53, 1, 1.429 > 1728, 0, 0, 0, 0.978 > 1728, 0, 0, 1, 0.978 > 1728, 54, 0, 0, 1.031 > 1728, 54, 0, 1, 1.033 > 1728, 0, 54, 0, 1.0 > 1728, 0, 54, 1, 1.0 > 1728, 54, 54, 0, 0.96 > 1728, 54, 54, 1, 0.96 > 1728, 2048, 0, 0, 0.976 > 1728, 2048, 0, 1, 0.976 > 1728, 2102, 0, 0, 1.033 > 1728, 2102, 0, 1, 1.033 > 1728, 2048, 54, 0, 0.947 > 1728, 2048, 54, 1, 0.947 > 1728, 2102, 54, 0, 0.96 > 1728, 2102, 54, 1, 0.96 > 1760, 0, 0, 0, 1.019 > 1760, 0, 0, 1, 1.021 > 1760, 55, 0, 0, 0.9 > 1760, 55, 0, 1, 0.9 > 1760, 0, 55, 0, 1.125 > 1760, 0, 55, 1, 1.125 > 1760, 55, 55, 0, 1.437 > 1760, 55, 55, 1, 1.436 > 1760, 2048, 0, 0, 1.016 > 1760, 2048, 0, 1, 1.015 > 1760, 2103, 0, 0, 0.9 > 1760, 2103, 0, 1, 0.9 > 1760, 2048, 55, 0, 1.073 > 1760, 2048, 55, 1, 1.074 > 1760, 2103, 55, 0, 1.44 > 1760, 2103, 55, 1, 1.44 > 1792, 0, 0, 0, 1.002 > 1792, 0, 0, 1, 1.002 > 1792, 56, 0, 0, 1.028 > 1792, 56, 0, 1, 1.028 > 1792, 0, 56, 0, 1.014 > 1792, 0, 56, 1, 1.015 > 1792, 56, 56, 0, 1.191 > 1792, 56, 56, 1, 1.191 > 1792, 2048, 0, 0, 1.003 > 1792, 2048, 0, 1, 1.003 > 1792, 2104, 0, 0, 1.028 > 1792, 2104, 0, 1, 1.028 > 1792, 2048, 56, 0, 0.963 > 1792, 2048, 56, 1, 0.963 > 1792, 2104, 56, 0, 1.191 > 1792, 2104, 56, 1, 1.191 > 1824, 0, 0, 0, 0.999 > 1824, 0, 0, 1, 1.0 > 1824, 57, 0, 0, 0.891 > 1824, 57, 0, 1, 0.891 > 1824, 0, 57, 0, 1.114 > 1824, 0, 57, 1, 1.114 > 1824, 57, 57, 0, 1.407 > 1824, 57, 57, 1, 1.407 > 1824, 2048, 0, 0, 1.001 > 1824, 2048, 0, 1, 1.001 > 1824, 2105, 0, 0, 0.891 > 1824, 2105, 0, 1, 0.891 > 1824, 2048, 57, 0, 1.064 > 1824, 2048, 57, 1, 1.064 > 1824, 2105, 57, 0, 1.407 > 1824, 2105, 57, 1, 1.407 > 1856, 0, 0, 0, 0.989 > 1856, 0, 0, 1, 0.987 > 1856, 58, 0, 0, 1.042 > 1856, 58, 0, 1, 1.042 > 1856, 0, 58, 0, 1.007 > 1856, 0, 58, 1, 1.007 > 1856, 58, 58, 0, 0.978 > 1856, 58, 58, 1, 0.972 > 1856, 2048, 0, 0, 0.992 > 1856, 2048, 0, 1, 0.992 > 1856, 2106, 0, 0, 1.042 > 1856, 2106, 0, 1, 1.042 > 1856, 2048, 58, 0, 0.954 > 1856, 2048, 58, 1, 0.954 > 1856, 2106, 58, 0, 0.979 > 1856, 2106, 58, 1, 0.972 > 1888, 0, 0, 0, 0.994 > 1888, 0, 0, 1, 0.994 > 1888, 59, 0, 0, 0.883 > 1888, 59, 0, 1, 0.883 > 1888, 0, 59, 0, 1.121 > 1888, 0, 59, 1, 1.123 > 1888, 59, 59, 0, 1.413 > 1888, 59, 59, 1, 1.413 > 1888, 2048, 0, 0, 0.985 > 1888, 2048, 0, 1, 0.994 > 1888, 2107, 0, 0, 0.883 > 1888, 2107, 0, 1, 0.883 > 1888, 2048, 59, 0, 1.076 > 1888, 2048, 59, 1, 1.076 > 1888, 2107, 59, 0, 1.413 > 1888, 2107, 59, 1, 1.413 > 1920, 0, 0, 0, 1.0 > 1920, 0, 0, 1, 0.999 > 1920, 60, 0, 0, 1.033 > 1920, 60, 0, 1, 1.033 > 1920, 0, 60, 0, 0.996 > 1920, 0, 60, 1, 0.997 > 1920, 60, 60, 0, 0.968 > 1920, 60, 60, 1, 0.968 > 1920, 2048, 0, 0, 1.0 > 1920, 2048, 0, 1, 1.0 > 1920, 2108, 0, 0, 1.034 > 1920, 2108, 0, 1, 1.034 > 1920, 2048, 60, 0, 0.949 > 1920, 2048, 60, 1, 0.949 > 1920, 2108, 60, 0, 0.968 > 1920, 2108, 60, 1, 0.968 > 1952, 0, 0, 0, 1.004 > 1952, 0, 0, 1, 1.004 > 1952, 61, 0, 0, 0.898 > 1952, 61, 0, 1, 0.898 > 1952, 0, 61, 0, 1.118 > 1952, 0, 61, 1, 1.118 > 1952, 61, 61, 0, 1.387 > 1952, 61, 61, 1, 1.387 > 1952, 2048, 0, 0, 1.004 > 1952, 2048, 0, 1, 1.004 > 1952, 2109, 0, 0, 0.898 > 1952, 2109, 0, 1, 0.898 > 1952, 2048, 61, 0, 1.071 > 1952, 2048, 61, 1, 1.071 > 1952, 2109, 61, 0, 1.387 > 1952, 2109, 61, 1, 1.387 > 1984, 0, 0, 0, 0.993 > 1984, 0, 0, 1, 0.993 > 1984, 62, 0, 0, 1.025 > 1984, 62, 0, 1, 1.025 > 1984, 0, 62, 0, 1.005 > 1984, 0, 62, 1, 1.007 > 1984, 62, 62, 0, 0.982 > 1984, 62, 62, 1, 0.982 > 1984, 2048, 0, 0, 0.993 > 1984, 2048, 0, 1, 0.993 > 1984, 2110, 0, 0, 1.025 > 1984, 2110, 0, 1, 1.025 > 1984, 2048, 62, 0, 0.96 > 1984, 2048, 62, 1, 0.96 > 1984, 2110, 62, 0, 0.982 > 1984, 2110, 62, 1, 0.982 > 2016, 0, 0, 0, 1.0 > 2016, 0, 0, 1, 0.999 > 2016, 63, 0, 0, 0.889 > 2016, 63, 0, 1, 0.89 > 2016, 0, 63, 0, 1.091 > 2016, 0, 63, 1, 1.092 > 2016, 63, 63, 0, 1.362 > 2016, 63, 63, 1, 1.363 > 2016, 2048, 0, 0, 1.0 > 2016, 2048, 0, 1, 1.0 > 2016, 2111, 0, 0, 0.965 > 2016, 2111, 0, 1, 0.965 > 2016, 2048, 63, 0, 1.049 > 2016, 2048, 63, 1, 1.049 > 2016, 2111, 63, 0, 1.405 > 2016, 2111, 63, 1, 1.405 > 2048, 32, 0, 0, 1.01 > 2048, 32, 0, 1, 1.01 > 2048, 0, 32, 0, 1.005 > 2048, 0, 32, 1, 1.005 > 2048, 32, 32, 0, 1.005 > 2048, 32, 32, 1, 1.005 > 2048, 0, 1, 0, 0.983 > 2048, 0, 1, 1, 0.984 > 2048, 1, 0, 0, 1.039 > 2048, 1, 0, 1, 1.039 > 2048, 32, 1, 0, 1.063 > 2048, 32, 1, 1, 1.063 > 2048, 1, 32, 0, 0.94 > 2048, 1, 32, 1, 0.94 > 2048, 2048, 1, 0, 0.981 > 2048, 2048, 1, 1, 0.981 > 2048, 2049, 0, 0, 0.904 > 2048, 2049, 0, 1, 0.904 > 2112, 0, 0, 0, 0.996 > 2112, 0, 0, 1, 0.995 > 2112, 1, 0, 0, 1.031 > 2112, 1, 0, 1, 1.031 > 2112, 33, 0, 0, 1.01 > 2112, 33, 0, 1, 1.01 > 2112, 0, 1, 0, 0.972 > 2112, 0, 1, 1, 0.972 > 2112, 0, 33, 0, 0.987 > 2112, 0, 33, 1, 0.987 > 2112, 1, 1, 0, 0.914 > 2112, 1, 1, 1, 0.914 > 2112, 33, 33, 0, 0.983 > 2112, 33, 33, 1, 0.983 > 2112, 2048, 0, 0, 0.994 > 2112, 2048, 0, 1, 0.99 > 2112, 2049, 0, 0, 1.031 > 2112, 2049, 0, 1, 1.031 > 2112, 2048, 1, 0, 0.955 > 2112, 2048, 1, 1, 0.955 > 2112, 2049, 1, 0, 0.906 > 2112, 2049, 1, 1, 0.906 > 2112, 33, 1, 0, 1.163 > 2112, 33, 1, 1, 1.164 > 2112, 1, 33, 0, 1.046 > 2112, 1, 33, 1, 1.046 > 2176, 0, 0, 0, 0.984 > 2176, 0, 0, 1, 0.985 > 2176, 2, 0, 0, 1.023 > 2176, 2, 0, 1, 1.023 > 2176, 34, 0, 0, 1.0 > 2176, 34, 0, 1, 1.0 > 2176, 0, 2, 0, 0.985 > 2176, 0, 2, 1, 0.985 > 2176, 0, 34, 0, 0.995 > 2176, 0, 34, 1, 0.982 > 2176, 2, 2, 0, 0.928 > 2176, 2, 2, 1, 0.928 > 2176, 34, 34, 0, 1.004 > 2176, 34, 34, 1, 1.004 > 2176, 2048, 0, 0, 0.985 > 2176, 2048, 0, 1, 0.986 > 2176, 2050, 0, 0, 1.023 > 2176, 2050, 0, 1, 1.023 > 2176, 2048, 2, 0, 0.802 > 2176, 2048, 2, 1, 0.802 > 2176, 2050, 2, 0, 0.894 > 2176, 2050, 2, 1, 0.894 > 2176, 2, 1, 0, 1.068 > 2176, 2, 1, 1, 1.068 > 2176, 1, 2, 0, 0.976 > 2176, 1, 2, 1, 0.976 > 2176, 34, 1, 0, 1.077 > 2176, 34, 1, 1, 1.077 > 2176, 1, 34, 0, 0.978 > 2176, 1, 34, 1, 0.978 > 2176, 2050, 1, 0, 1.061 > 2176, 2050, 1, 1, 1.061 > 2176, 2049, 2, 0, 0.971 > 2176, 2049, 2, 1, 0.971 > 2240, 0, 0, 0, 0.994 > 2240, 0, 0, 1, 0.994 > 2240, 3, 0, 0, 1.038 > 2240, 3, 0, 1, 1.039 > 2240, 35, 0, 0, 1.019 > 2240, 35, 0, 1, 1.019 > 2240, 0, 3, 0, 0.979 > 2240, 0, 3, 1, 0.98 > 2240, 0, 35, 0, 0.991 > 2240, 0, 35, 1, 0.991 > 2240, 3, 3, 0, 0.931 > 2240, 3, 3, 1, 0.931 > 2240, 35, 35, 0, 0.999 > 2240, 35, 35, 1, 0.999 > 2240, 2048, 0, 0, 0.995 > 2240, 2048, 0, 1, 0.995 > 2240, 2051, 0, 0, 1.039 > 2240, 2051, 0, 1, 1.039 > 2240, 2048, 3, 0, 0.799 > 2240, 2048, 3, 1, 0.799 > 2240, 2051, 3, 0, 0.889 > 2240, 2051, 3, 1, 0.889 > 2240, 3, 1, 0, 1.06 > 2240, 3, 1, 1, 1.06 > 2240, 1, 3, 0, 0.968 > 2240, 1, 3, 1, 0.968 > 2240, 35, 1, 0, 1.071 > 2240, 35, 1, 1, 1.071 > 2240, 1, 35, 0, 0.971 > 2240, 1, 35, 1, 0.971 > 2240, 2051, 1, 0, 1.057 > 2240, 2051, 1, 1, 1.057 > 2240, 2049, 3, 0, 0.966 > 2240, 2049, 3, 1, 0.966 > 2304, 0, 0, 0, 0.986 > 2304, 0, 0, 1, 0.986 > 2304, 4, 0, 0, 1.031 > 2304, 4, 0, 1, 1.032 > 2304, 36, 0, 0, 1.011 > 2304, 36, 0, 1, 1.011 > 2304, 0, 4, 0, 0.968 > 2304, 0, 4, 1, 0.969 > 2304, 0, 36, 0, 0.988 > 2304, 0, 36, 1, 0.988 > 2304, 4, 4, 0, 0.93 > 2304, 4, 4, 1, 0.931 > 2304, 36, 36, 0, 0.992 > 2304, 36, 36, 1, 0.992 > 2304, 2048, 0, 0, 0.988 > 2304, 2048, 0, 1, 0.988 > 2304, 2052, 0, 0, 1.032 > 2304, 2052, 0, 1, 1.032 > 2304, 2048, 4, 0, 0.793 > 2304, 2048, 4, 1, 0.793 > 2304, 2052, 4, 0, 0.884 > 2304, 2052, 4, 1, 0.884 > 2304, 4, 1, 0, 0.989 > 2304, 4, 1, 1, 0.989 > 2304, 1, 4, 0, 0.897 > 2304, 1, 4, 1, 0.898 > 2304, 36, 1, 0, 1.057 > 2304, 36, 1, 1, 1.057 > 2304, 1, 36, 0, 0.966 > 2304, 1, 36, 1, 0.966 > 2304, 2052, 1, 0, 1.052 > 2304, 2052, 1, 1, 1.052 > 2304, 2049, 4, 0, 0.955 > 2304, 2049, 4, 1, 0.955 > 2368, 0, 0, 0, 1.0 > 2368, 0, 0, 1, 1.001 > 2368, 5, 0, 0, 1.024 > 2368, 5, 0, 1, 1.025 > 2368, 37, 0, 0, 1.0 > 2368, 37, 0, 1, 1.0 > 2368, 0, 5, 0, 0.98 > 2368, 0, 5, 1, 0.981 > 2368, 0, 37, 0, 0.983 > 2368, 0, 37, 1, 0.98 > 2368, 5, 5, 0, 0.944 > 2368, 5, 5, 1, 0.944 > 2368, 37, 37, 0, 1.003 > 2368, 37, 37, 1, 1.003 > 2368, 2048, 0, 0, 1.002 > 2368, 2048, 0, 1, 1.002 > 2368, 2053, 0, 0, 1.025 > 2368, 2053, 0, 1, 1.025 > 2368, 2048, 5, 0, 0.801 > 2368, 2048, 5, 1, 0.801 > 2368, 2053, 5, 0, 0.907 > 2368, 2053, 5, 1, 0.907 > 2368, 5, 1, 0, 1.071 > 2368, 5, 1, 1, 1.071 > 2368, 1, 5, 0, 0.973 > 2368, 1, 5, 1, 0.973 > 2368, 37, 1, 0, 1.07 > 2368, 37, 1, 1, 1.07 > 2368, 1, 37, 0, 0.974 > 2368, 1, 37, 1, 0.974 > 2368, 2053, 1, 0, 1.065 > 2368, 2053, 1, 1, 1.065 > 2368, 2049, 5, 0, 0.967 > 2368, 2049, 5, 1, 0.967 > 2432, 0, 0, 0, 0.965 > 2432, 0, 0, 1, 1.0 > 2432, 6, 0, 0, 1.038 > 2432, 6, 0, 1, 1.039 > 2432, 38, 0, 0, 1.021 > 2432, 38, 0, 1, 1.021 > 2432, 0, 6, 0, 0.974 > 2432, 0, 6, 1, 0.976 > 2432, 0, 38, 0, 0.986 > 2432, 0, 38, 1, 0.986 > 2432, 6, 6, 0, 0.926 > 2432, 6, 6, 1, 0.926 > 2432, 38, 38, 0, 1.0 > 2432, 38, 38, 1, 1.0 > 2432, 2048, 0, 0, 1.004 > 2432, 2048, 0, 1, 1.004 > 2432, 2054, 0, 0, 1.039 > 2432, 2054, 0, 1, 1.039 > 2432, 2048, 6, 0, 0.797 > 2432, 2048, 6, 1, 0.797 > 2432, 2054, 6, 0, 0.898 > 2432, 2054, 6, 1, 0.898 > 2432, 6, 1, 0, 1.063 > 2432, 6, 1, 1, 1.063 > 2432, 1, 6, 0, 0.965 > 2432, 1, 6, 1, 0.965 > 2432, 38, 1, 0, 1.068 > 2432, 38, 1, 1, 1.068 > 2432, 1, 38, 0, 0.968 > 2432, 1, 38, 1, 0.968 > 2432, 2054, 1, 0, 1.06 > 2432, 2054, 1, 1, 1.06 > 2432, 2049, 6, 0, 0.963 > 2432, 2049, 6, 1, 0.963 > 2496, 0, 0, 0, 1.013 > 2496, 0, 0, 1, 1.013 > 2496, 7, 0, 0, 1.032 > 2496, 7, 0, 1, 1.032 > 2496, 39, 0, 0, 1.013 > 2496, 39, 0, 1, 1.013 > 2496, 0, 7, 0, 0.965 > 2496, 0, 7, 1, 0.965 > 2496, 0, 39, 0, 0.979 > 2496, 0, 39, 1, 0.979 > 2496, 7, 7, 0, 0.925 > 2496, 7, 7, 1, 0.925 > 2496, 39, 39, 0, 0.989 > 2496, 39, 39, 1, 0.989 > 2496, 2048, 0, 0, 1.013 > 2496, 2048, 0, 1, 1.013 > 2496, 2055, 0, 0, 1.032 > 2496, 2055, 0, 1, 1.032 > 2496, 2048, 7, 0, 0.792 > 2496, 2048, 7, 1, 0.792 > 2496, 2055, 7, 0, 0.93 > 2496, 2055, 7, 1, 0.93 > 2496, 7, 1, 0, 0.984 > 2496, 7, 1, 1, 0.984 > 2496, 1, 7, 0, 0.894 > 2496, 1, 7, 1, 0.895 > 2496, 39, 1, 0, 1.054 > 2496, 39, 1, 1, 1.054 > 2496, 1, 39, 0, 0.963 > 2496, 1, 39, 1, 0.963 > 2496, 2055, 1, 0, 1.049 > 2496, 2055, 1, 1, 1.049 > 2496, 2049, 7, 0, 0.953 > 2496, 2049, 7, 1, 0.953 > 2560, 0, 0, 0, 0.991 > 2560, 0, 0, 1, 0.991 > 2560, 8, 0, 0, 1.031 > 2560, 8, 0, 1, 1.032 > 2560, 40, 0, 0, 1.029 > 2560, 40, 0, 1, 1.029 > 2560, 0, 8, 0, 0.992 > 2560, 0, 8, 1, 0.992 > 2560, 0, 40, 0, 0.975 > 2560, 0, 40, 1, 0.984 > 2560, 8, 8, 0, 0.942 > 2560, 8, 8, 1, 0.943 > 2560, 40, 40, 0, 1.139 > 2560, 40, 40, 1, 1.139 > 2560, 2048, 0, 0, 0.993 > 2560, 2048, 0, 1, 0.993 > 2560, 2056, 0, 0, 1.032 > 2560, 2056, 0, 1, 1.032 > 2560, 2048, 8, 0, 0.812 > 2560, 2048, 8, 1, 0.812 > 2560, 2056, 8, 0, 0.912 > 2560, 2056, 8, 1, 0.912 > 2560, 8, 1, 0, 1.068 > 2560, 8, 1, 1, 1.069 > 2560, 1, 8, 0, 0.974 > 2560, 1, 8, 1, 0.974 > 2560, 40, 1, 0, 1.068 > 2560, 40, 1, 1, 1.068 > 2560, 1, 40, 0, 0.996 > 2560, 1, 40, 1, 0.996 > 2560, 2056, 1, 0, 1.063 > 2560, 2056, 1, 1, 1.063 > 2560, 2049, 8, 0, 0.969 > 2560, 2049, 8, 1, 0.969 > 2624, 0, 0, 0, 0.995 > 2624, 0, 0, 1, 0.994 > 2624, 9, 0, 0, 1.015 > 2624, 9, 0, 1, 1.018 > 2624, 41, 0, 0, 1.044 > 2624, 41, 0, 1, 1.044 > 2624, 0, 9, 0, 0.988 > 2624, 0, 9, 1, 0.99 > 2624, 0, 41, 0, 0.989 > 2624, 0, 41, 1, 0.99 > 2624, 9, 9, 0, 0.943 > 2624, 9, 9, 1, 0.943 > 2624, 41, 41, 0, 0.993 > 2624, 41, 41, 1, 0.993 > 2624, 2048, 0, 0, 0.998 > 2624, 2048, 0, 1, 0.998 > 2624, 2057, 0, 0, 1.018 > 2624, 2057, 0, 1, 1.018 > 2624, 2048, 9, 0, 0.81 > 2624, 2048, 9, 1, 0.81 > 2624, 2057, 9, 0, 0.907 > 2624, 2057, 9, 1, 0.907 > 2624, 9, 1, 0, 1.09 > 2624, 9, 1, 1, 1.09 > 2624, 1, 9, 0, 0.967 > 2624, 1, 9, 1, 0.967 > 2624, 41, 1, 0, 1.084 > 2624, 41, 1, 1, 1.085 > 2624, 1, 41, 0, 0.958 > 2624, 1, 41, 1, 0.957 > 2624, 2057, 1, 0, 1.087 > 2624, 2057, 1, 1, 1.087 > 2624, 2049, 9, 0, 0.965 > 2624, 2049, 9, 1, 0.965 > 2688, 0, 0, 0, 0.995 > 2688, 0, 0, 1, 0.995 > 2688, 10, 0, 0, 1.01 > 2688, 10, 0, 1, 1.012 > 2688, 42, 0, 0, 1.036 > 2688, 42, 0, 1, 1.036 > 2688, 0, 10, 0, 0.978 > 2688, 0, 10, 1, 0.979 > 2688, 0, 42, 0, 0.977 > 2688, 0, 42, 1, 0.978 > 2688, 10, 10, 0, 0.942 > 2688, 10, 10, 1, 0.942 > 2688, 42, 42, 0, 0.989 > 2688, 42, 42, 1, 0.989 > 2688, 2048, 0, 0, 0.995 > 2688, 2048, 0, 1, 0.995 > 2688, 2058, 0, 0, 1.012 > 2688, 2058, 0, 1, 1.012 > 2688, 2048, 10, 0, 0.804 > 2688, 2048, 10, 1, 0.804 > 2688, 2058, 10, 0, 0.905 > 2688, 2058, 10, 1, 0.905 > 2688, 10, 1, 0, 0.986 > 2688, 10, 1, 1, 0.987 > 2688, 1, 10, 0, 0.893 > 2688, 1, 10, 1, 0.894 > 2688, 42, 1, 0, 1.054 > 2688, 42, 1, 1, 1.054 > 2688, 1, 42, 0, 0.958 > 2688, 1, 42, 1, 0.958 > 2688, 2058, 1, 0, 1.052 > 2688, 2058, 1, 1, 1.052 > 2688, 2049, 10, 0, 0.954 > 2688, 2049, 10, 1, 0.954 > 2752, 0, 0, 0, 1.0 > 2752, 0, 0, 1, 0.992 > 2752, 11, 0, 0, 0.954 > 2752, 11, 0, 1, 0.954 > 2752, 43, 0, 0, 0.979 > 2752, 43, 0, 1, 0.979 > 2752, 0, 11, 0, 0.939 > 2752, 0, 11, 1, 0.939 > 2752, 0, 43, 0, 0.931 > 2752, 0, 43, 1, 0.932 > 2752, 11, 11, 0, 0.949 > 2752, 11, 11, 1, 0.949 > 2752, 43, 43, 0, 1.007 > 2752, 43, 43, 1, 1.007 > 2752, 2048, 0, 0, 0.993 > 2752, 2048, 0, 1, 0.993 > 2752, 2059, 0, 0, 0.954 > 2752, 2059, 0, 1, 0.954 > 2752, 2048, 11, 0, 0.77 > 2752, 2048, 11, 1, 0.77 > 2752, 2059, 11, 0, 0.916 > 2752, 2059, 11, 1, 0.916 > 2752, 11, 1, 0, 0.994 > 2752, 11, 1, 1, 0.994 > 2752, 1, 11, 0, 0.928 > 2752, 1, 11, 1, 0.928 > 2752, 43, 1, 0, 1.022 > 2752, 43, 1, 1, 1.022 > 2752, 1, 43, 0, 0.92 > 2752, 1, 43, 1, 0.92 > 2752, 2059, 1, 0, 0.989 > 2752, 2059, 1, 1, 0.989 > 2752, 2049, 11, 0, 0.923 > 2752, 2049, 11, 1, 0.923 > 2816, 0, 0, 0, 1.003 > 2816, 0, 0, 1, 1.003 > 2816, 12, 0, 0, 0.897 > 2816, 12, 0, 1, 0.894 > 2816, 44, 0, 0, 0.914 > 2816, 44, 0, 1, 0.914 > 2816, 0, 12, 0, 0.876 > 2816, 0, 12, 1, 0.874 > 2816, 0, 44, 0, 0.871 > 2816, 0, 44, 1, 0.87 > 2816, 12, 12, 0, 0.948 > 2816, 12, 12, 1, 0.948 > 2816, 44, 44, 0, 1.009 > 2816, 44, 44, 1, 1.009 > 2816, 2048, 0, 0, 1.005 > 2816, 2048, 0, 1, 1.005 > 2816, 2060, 0, 0, 0.894 > 2816, 2060, 0, 1, 0.894 > 2816, 2048, 12, 0, 0.714 > 2816, 2048, 12, 1, 0.713 > 2816, 2060, 12, 0, 0.915 > 2816, 2060, 12, 1, 0.915 > 2816, 12, 1, 0, 0.917 > 2816, 12, 1, 1, 0.917 > 2816, 1, 12, 0, 0.858 > 2816, 1, 12, 1, 0.857 > 2816, 44, 1, 0, 0.944 > 2816, 44, 1, 1, 0.943 > 2816, 1, 44, 0, 0.856 > 2816, 1, 44, 1, 0.856 > 2816, 2060, 1, 0, 0.914 > 2816, 2060, 1, 1, 0.914 > 2816, 2049, 12, 0, 0.855 > 2816, 2049, 12, 1, 0.855 > 2880, 0, 0, 0, 0.989 > 2880, 0, 0, 1, 0.989 > 2880, 13, 0, 0, 0.967 > 2880, 13, 0, 1, 0.967 > 2880, 45, 0, 0, 0.987 > 2880, 45, 0, 1, 0.987 > 2880, 0, 13, 0, 0.925 > 2880, 0, 13, 1, 0.925 > 2880, 0, 45, 0, 0.927 > 2880, 0, 45, 1, 0.927 > 2880, 13, 13, 0, 0.944 > 2880, 13, 13, 1, 0.944 > 2880, 45, 45, 0, 1.003 > 2880, 45, 45, 1, 1.003 > 2880, 2048, 0, 0, 0.989 > 2880, 2048, 0, 1, 0.989 > 2880, 2061, 0, 0, 0.967 > 2880, 2061, 0, 1, 0.967 > 2880, 2048, 13, 0, 0.76 > 2880, 2048, 13, 1, 0.76 > 2880, 2061, 13, 0, 0.91 > 2880, 2061, 13, 1, 0.91 > 2880, 13, 1, 0, 0.922 > 2880, 13, 1, 1, 0.922 > 2880, 1, 13, 0, 0.859 > 2880, 1, 13, 1, 0.859 > 2880, 45, 1, 0, 1.013 > 2880, 45, 1, 1, 1.013 > 2880, 1, 45, 0, 0.92 > 2880, 1, 45, 1, 0.92 > 2880, 2061, 1, 0, 0.984 > 2880, 2061, 1, 1, 0.984 > 2880, 2049, 13, 0, 0.918 > 2880, 2049, 13, 1, 0.918 > 2944, 0, 0, 0, 1.014 > 2944, 0, 0, 1, 1.014 > 2944, 14, 0, 0, 0.956 > 2944, 14, 0, 1, 0.955 > 2944, 46, 0, 0, 0.979 > 2944, 46, 0, 1, 0.979 > 2944, 0, 14, 0, 0.937 > 2944, 0, 14, 1, 0.937 > 2944, 0, 46, 0, 0.93 > 2944, 0, 46, 1, 0.93 > 2944, 14, 14, 0, 0.953 > 2944, 14, 14, 1, 0.953 > 2944, 46, 46, 0, 1.009 > 2944, 46, 46, 1, 1.009 > 2944, 2048, 0, 0, 1.015 > 2944, 2048, 0, 1, 1.015 > 2944, 2062, 0, 0, 0.955 > 2944, 2062, 0, 1, 0.955 > 2944, 2048, 14, 0, 0.769 > 2944, 2048, 14, 1, 0.769 > 2944, 2062, 14, 0, 0.923 > 2944, 2062, 14, 1, 0.923 > 2944, 14, 1, 0, 0.994 > 2944, 14, 1, 1, 0.994 > 2944, 1, 14, 0, 0.927 > 2944, 1, 14, 1, 0.927 > 2944, 46, 1, 0, 1.021 > 2944, 46, 1, 1, 1.021 > 2944, 1, 46, 0, 0.923 > 2944, 1, 46, 1, 0.923 > 2944, 2062, 1, 0, 0.988 > 2944, 2062, 1, 1, 0.988 > 2944, 2049, 14, 0, 0.922 > 2944, 2049, 14, 1, 0.922 > 3008, 0, 0, 0, 0.994 > 3008, 0, 0, 1, 0.994 > 3008, 15, 0, 0, 0.941 > 3008, 15, 0, 1, 0.941 > 3008, 47, 0, 0, 0.996 > 3008, 47, 0, 1, 0.996 > 3008, 0, 15, 0, 0.929 > 3008, 0, 15, 1, 0.933 > 3008, 0, 47, 0, 0.933 > 3008, 0, 47, 1, 0.933 > 3008, 15, 15, 0, 0.952 > 3008, 15, 15, 1, 0.949 > 3008, 47, 47, 0, 1.003 > 3008, 47, 47, 1, 1.003 > 3008, 2048, 0, 0, 0.998 > 3008, 2048, 0, 1, 0.998 > 3008, 2063, 0, 0, 0.941 > 3008, 2063, 0, 1, 0.941 > 3008, 2048, 15, 0, 0.766 > 3008, 2048, 15, 1, 0.766 > 3008, 2063, 15, 0, 0.916 > 3008, 2063, 15, 1, 0.916 > 3008, 15, 1, 0, 0.985 > 3008, 15, 1, 1, 0.985 > 3008, 1, 15, 0, 0.916 > 3008, 1, 15, 1, 0.916 > 3008, 47, 1, 0, 1.014 > 3008, 47, 1, 1, 1.014 > 3008, 1, 47, 0, 0.902 > 3008, 1, 47, 1, 0.902 > 3008, 2063, 1, 0, 0.981 > 3008, 2063, 1, 1, 0.981 > 3008, 2049, 15, 0, 0.912 > 3008, 2049, 15, 1, 0.913 > 3072, 0, 0, 0, 1.016 > 3072, 0, 0, 1, 1.015 > 3072, 16, 0, 0, 1.045 > 3072, 16, 0, 1, 1.045 > 3072, 48, 0, 0, 1.045 > 3072, 48, 0, 1, 1.045 > 3072, 0, 16, 0, 1.049 > 3072, 0, 16, 1, 1.049 > 3072, 0, 48, 0, 1.049 > 3072, 0, 48, 1, 1.049 > 3072, 16, 16, 0, 1.016 > 3072, 16, 16, 1, 1.016 > 3072, 48, 48, 0, 1.016 > 3072, 48, 48, 1, 1.016 > 3072, 2048, 0, 0, 1.016 > 3072, 2048, 0, 1, 1.016 > 3072, 2064, 0, 0, 1.045 > 3072, 2064, 0, 1, 1.045 > 3072, 2048, 16, 0, 1.049 > 3072, 2048, 16, 1, 1.049 > 3072, 2064, 16, 0, 1.016 > 3072, 2064, 16, 1, 1.016 > 3072, 16, 1, 0, 0.815 > 3072, 16, 1, 1, 0.815 > 3072, 1, 16, 0, 0.872 > 3072, 1, 16, 1, 0.872 > 3072, 48, 1, 0, 1.017 > 3072, 48, 1, 1, 1.017 > 3072, 1, 48, 0, 0.872 > 3072, 1, 48, 1, 0.872 > 3072, 2064, 1, 0, 0.815 > 3072, 2064, 1, 1, 0.815 > 3072, 2049, 16, 0, 0.872 > 3072, 2049, 16, 1, 0.872 > 3136, 0, 0, 0, 0.995 > 3136, 0, 0, 1, 0.995 > 3136, 17, 0, 0, 0.949 > 3136, 17, 0, 1, 0.949 > 3136, 49, 0, 0, 0.987 > 3136, 49, 0, 1, 0.987 > 3136, 0, 17, 0, 0.919 > 3136, 0, 17, 1, 0.917 > 3136, 0, 49, 0, 0.931 > 3136, 0, 49, 1, 0.931 > 3136, 17, 17, 0, 1.122 > 3136, 17, 17, 1, 1.119 > 3136, 49, 49, 0, 0.987 > 3136, 49, 49, 1, 0.987 > 3136, 2048, 0, 0, 0.997 > 3136, 2048, 0, 1, 0.997 > 3136, 2065, 0, 0, 0.949 > 3136, 2065, 0, 1, 0.949 > 3136, 2048, 17, 0, 0.896 > 3136, 2048, 17, 1, 0.896 > 3136, 2065, 17, 0, 1.122 > 3136, 2065, 17, 1, 1.119 > 3136, 17, 1, 0, 1.184 > 3136, 17, 1, 1, 1.184 > 3136, 1, 17, 0, 1.124 > 3136, 1, 17, 1, 1.125 > 3136, 49, 1, 0, 1.11 > 3136, 49, 1, 1, 1.108 > 3136, 1, 49, 0, 1.044 > 3136, 1, 49, 1, 1.044 > 3136, 2065, 1, 0, 1.147 > 3136, 2065, 1, 1, 1.147 > 3136, 2049, 17, 0, 1.102 > 3136, 2049, 17, 1, 1.1 > 3200, 0, 0, 0, 1.006 > 3200, 0, 0, 1, 1.006 > 3200, 18, 0, 0, 0.978 > 3200, 18, 0, 1, 0.978 > 3200, 50, 0, 0, 0.998 > 3200, 50, 0, 1, 0.998 > 3200, 0, 18, 0, 0.932 > 3200, 0, 18, 1, 0.932 > 3200, 0, 50, 0, 0.93 > 3200, 0, 50, 1, 0.93 > 3200, 18, 18, 0, 1.11 > 3200, 18, 18, 1, 1.11 > 3200, 50, 50, 0, 0.994 > 3200, 50, 50, 1, 0.994 > 3200, 2048, 0, 0, 1.007 > 3200, 2048, 0, 1, 1.007 > 3200, 2066, 0, 0, 0.978 > 3200, 2066, 0, 1, 0.978 > 3200, 2048, 18, 0, 0.894 > 3200, 2048, 18, 1, 0.894 > 3200, 2066, 18, 0, 1.11 > 3200, 2066, 18, 1, 1.11 > 3200, 18, 1, 0, 1.002 > 3200, 18, 1, 1, 1.002 > 3200, 1, 18, 0, 0.917 > 3200, 1, 18, 1, 0.917 > 3200, 50, 1, 0, 0.963 > 3200, 50, 1, 1, 0.964 > 3200, 1, 50, 0, 0.888 > 3200, 1, 50, 1, 0.888 > 3200, 2066, 1, 0, 1.002 > 3200, 2066, 1, 1, 1.002 > 3200, 2049, 18, 0, 0.914 > 3200, 2049, 18, 1, 0.914 > 3264, 0, 0, 0, 0.994 > 3264, 0, 0, 1, 0.994 > 3264, 19, 0, 0, 0.959 > 3264, 19, 0, 1, 0.959 > 3264, 51, 0, 0, 0.994 > 3264, 51, 0, 1, 0.994 > 3264, 0, 19, 0, 0.927 > 3264, 0, 19, 1, 0.927 > 3264, 0, 51, 0, 0.927 > 3264, 0, 51, 1, 0.927 > 3264, 19, 19, 0, 1.1 > 3264, 19, 19, 1, 1.1 > 3264, 51, 51, 0, 0.982 > 3264, 51, 51, 1, 0.982 > 3264, 2048, 0, 0, 0.994 > 3264, 2048, 0, 1, 0.994 > 3264, 2067, 0, 0, 0.959 > 3264, 2067, 0, 1, 0.959 > 3264, 2048, 19, 0, 0.891 > 3264, 2048, 19, 1, 0.891 > 3264, 2067, 19, 0, 1.099 > 3264, 2067, 19, 1, 1.099 > 3264, 19, 1, 0, 0.977 > 3264, 19, 1, 1, 0.976 > 3264, 1, 19, 0, 0.921 > 3264, 1, 19, 1, 0.921 > 3264, 51, 1, 0, 0.959 > 3264, 51, 1, 1, 0.959 > 3264, 1, 51, 0, 0.886 > 3264, 1, 51, 1, 0.886 > 3264, 2067, 1, 0, 0.976 > 3264, 2067, 1, 1, 0.976 > 3264, 2049, 19, 0, 0.917 > 3264, 2049, 19, 1, 0.917 > 3328, 0, 0, 0, 0.996 > 3328, 0, 0, 1, 0.992 > 3328, 20, 0, 0, 0.955 > 3328, 20, 0, 1, 0.955 > 3328, 52, 0, 0, 0.99 > 3328, 52, 0, 1, 0.99 > 3328, 0, 20, 0, 0.926 > 3328, 0, 20, 1, 0.923 > 3328, 0, 52, 0, 0.933 > 3328, 0, 52, 1, 0.933 > 3328, 20, 20, 0, 1.11 > 3328, 20, 20, 1, 1.11 > 3328, 52, 52, 0, 0.988 > 3328, 52, 52, 1, 0.988 > 3328, 2048, 0, 0, 0.993 > 3328, 2048, 0, 1, 0.993 > 3328, 2068, 0, 0, 0.955 > 3328, 2068, 0, 1, 0.955 > 3328, 2048, 20, 0, 0.9 > 3328, 2048, 20, 1, 0.9 > 3328, 2068, 20, 0, 1.109 > 3328, 2068, 20, 1, 1.109 > 3328, 20, 1, 0, 0.99 > 3328, 20, 1, 1, 0.99 > 3328, 1, 20, 0, 0.922 > 3328, 1, 20, 1, 0.922 > 3328, 52, 1, 0, 0.972 > 3328, 52, 1, 1, 0.972 > 3328, 1, 52, 0, 0.901 > 3328, 1, 52, 1, 0.901 > 3328, 2068, 1, 0, 0.99 > 3328, 2068, 1, 1, 0.99 > 3328, 2049, 20, 0, 0.918 > 3328, 2049, 20, 1, 0.918 > 3392, 0, 0, 0, 0.998 > 3392, 0, 0, 1, 1.0 > 3392, 21, 0, 0, 0.964 > 3392, 21, 0, 1, 0.964 > 3392, 53, 0, 0, 0.998 > 3392, 53, 0, 1, 0.998 > 3392, 0, 21, 0, 0.932 > 3392, 0, 21, 1, 0.932 > 3392, 0, 53, 0, 0.93 > 3392, 0, 53, 1, 0.93 > 3392, 21, 21, 0, 1.113 > 3392, 21, 21, 1, 1.113 > 3392, 53, 53, 0, 0.983 > 3392, 53, 53, 1, 0.983 > 3392, 2048, 0, 0, 1.0 > 3392, 2048, 0, 1, 1.0 > 3392, 2069, 0, 0, 0.964 > 3392, 2069, 0, 1, 0.964 > 3392, 2048, 21, 0, 0.895 > 3392, 2048, 21, 1, 0.896 > 3392, 2069, 21, 0, 1.113 > 3392, 2069, 21, 1, 1.113 > 3392, 21, 1, 0, 0.994 > 3392, 21, 1, 1, 0.994 > 3392, 1, 21, 0, 0.923 > 3392, 1, 21, 1, 0.923 > 3392, 53, 1, 0, 0.972 > 3392, 53, 1, 1, 0.972 > 3392, 1, 53, 0, 0.891 > 3392, 1, 53, 1, 0.891 > 3392, 2069, 1, 0, 0.994 > 3392, 2069, 1, 1, 0.994 > 3392, 2049, 21, 0, 0.922 > 3392, 2049, 21, 1, 0.922 > 3456, 0, 0, 0, 0.995 > 3456, 0, 0, 1, 0.995 > 3456, 22, 0, 0, 0.965 > 3456, 22, 0, 1, 0.965 > 3456, 54, 0, 0, 0.996 > 3456, 54, 0, 1, 0.996 > 3456, 0, 22, 0, 0.927 > 3456, 0, 22, 1, 0.927 > 3456, 0, 54, 0, 0.927 > 3456, 0, 54, 1, 0.927 > 3456, 22, 22, 0, 1.107 > 3456, 22, 22, 1, 1.107 > 3456, 54, 54, 0, 0.98 > 3456, 54, 54, 1, 0.98 > 3456, 2048, 0, 0, 0.995 > 3456, 2048, 0, 1, 0.995 > 3456, 2070, 0, 0, 0.965 > 3456, 2070, 0, 1, 0.965 > 3456, 2048, 22, 0, 0.893 > 3456, 2048, 22, 1, 0.893 > 3456, 2070, 22, 0, 1.107 > 3456, 2070, 22, 1, 1.107 > 3456, 22, 1, 0, 0.988 > 3456, 22, 1, 1, 0.988 > 3456, 1, 22, 0, 0.921 > 3456, 1, 22, 1, 0.921 > 3456, 54, 1, 0, 0.963 > 3456, 54, 1, 1, 0.963 > 3456, 1, 54, 0, 0.887 > 3456, 1, 54, 1, 0.887 > 3456, 2070, 1, 0, 0.988 > 3456, 2070, 1, 1, 0.988 > 3456, 2049, 22, 0, 0.917 > 3456, 2049, 22, 1, 0.917 > 3520, 0, 0, 0, 1.016 > 3520, 0, 0, 1, 1.016 > 3520, 23, 0, 0, 0.957 > 3520, 23, 0, 1, 0.957 > 3520, 55, 0, 0, 0.991 > 3520, 55, 0, 1, 0.991 > 3520, 0, 23, 0, 0.919 > 3520, 0, 23, 1, 0.924 > 3520, 0, 55, 0, 0.934 > 3520, 0, 55, 1, 0.934 > 3520, 23, 23, 0, 1.111 > 3520, 23, 23, 1, 1.111 > 3520, 55, 55, 0, 0.994 > 3520, 55, 55, 1, 0.994 > 3520, 2048, 0, 0, 1.016 > 3520, 2048, 0, 1, 1.016 > 3520, 2071, 0, 0, 0.957 > 3520, 2071, 0, 1, 0.957 > 3520, 2048, 23, 0, 0.903 > 3520, 2048, 23, 1, 0.903 > 3520, 2071, 23, 0, 1.111 > 3520, 2071, 23, 1, 1.111 > 3520, 23, 1, 0, 0.997 > 3520, 23, 1, 1, 0.997 > 3520, 1, 23, 0, 0.921 > 3520, 1, 23, 1, 0.921 > 3520, 55, 1, 0, 0.976 > 3520, 55, 1, 1, 0.976 > 3520, 1, 55, 0, 0.902 > 3520, 1, 55, 1, 0.902 > 3520, 2071, 1, 0, 0.997 > 3520, 2071, 1, 1, 0.997 > 3520, 2049, 23, 0, 0.918 > 3520, 2049, 23, 1, 0.918 > 3584, 0, 0, 0, 1.004 > 3584, 0, 0, 1, 1.004 > 3584, 24, 0, 0, 0.985 > 3584, 24, 0, 1, 0.979 > 3584, 56, 0, 0, 1.006 > 3584, 56, 0, 1, 1.006 > 3584, 0, 24, 0, 0.931 > 3584, 0, 24, 1, 0.931 > 3584, 0, 56, 0, 0.93 > 3584, 0, 56, 1, 0.93 > 3584, 24, 24, 0, 1.111 > 3584, 24, 24, 1, 1.11 > 3584, 56, 56, 0, 1.101 > 3584, 56, 56, 1, 1.1 > 3584, 2048, 0, 0, 1.005 > 3584, 2048, 0, 1, 1.005 > 3584, 2072, 0, 0, 0.98 > 3584, 2072, 0, 1, 0.978 > 3584, 2048, 24, 0, 0.896 > 3584, 2048, 24, 1, 0.897 > 3584, 2072, 24, 0, 1.111 > 3584, 2072, 24, 1, 1.111 > 3584, 24, 1, 0, 1.004 > 3584, 24, 1, 1, 1.004 > 3584, 1, 24, 0, 0.921 > 3584, 1, 24, 1, 0.921 > 3584, 56, 1, 0, 0.971 > 3584, 56, 1, 1, 0.97 > 3584, 1, 56, 0, 0.89 > 3584, 1, 56, 1, 0.89 > 3584, 2072, 1, 0, 1.004 > 3584, 2072, 1, 1, 1.004 > 3584, 2049, 24, 0, 0.918 > 3584, 2049, 24, 1, 0.918 > 3648, 0, 0, 0, 1.012 > 3648, 0, 0, 1, 1.012 > 3648, 25, 0, 0, 0.96 > 3648, 25, 0, 1, 0.96 > 3648, 57, 0, 0, 0.988 > 3648, 57, 0, 1, 0.988 > 3648, 0, 25, 0, 0.927 > 3648, 0, 25, 1, 0.927 > 3648, 0, 57, 0, 0.927 > 3648, 0, 57, 1, 0.927 > 3648, 25, 25, 0, 1.101 > 3648, 25, 25, 1, 1.101 > 3648, 57, 57, 0, 0.986 > 3648, 57, 57, 1, 0.986 > 3648, 2048, 0, 0, 1.012 > 3648, 2048, 0, 1, 1.012 > 3648, 2073, 0, 0, 0.96 > 3648, 2073, 0, 1, 0.959 > 3648, 2048, 25, 0, 0.894 > 3648, 2048, 25, 1, 0.895 > 3648, 2073, 25, 0, 1.103 > 3648, 2073, 25, 1, 1.103 > 3648, 25, 1, 0, 1.024 > 3648, 25, 1, 1, 1.024 > 3648, 1, 25, 0, 0.911 > 3648, 1, 25, 1, 0.912 > 3648, 57, 1, 0, 0.973 > 3648, 57, 1, 1, 0.974 > 3648, 1, 57, 0, 0.888 > 3648, 1, 57, 1, 0.888 > 3648, 2073, 1, 0, 1.024 > 3648, 2073, 1, 1, 1.024 > 3648, 2049, 25, 0, 0.907 > 3648, 2049, 25, 1, 0.907 > 3712, 0, 0, 0, 0.996 > 3712, 0, 0, 1, 0.996 > 3712, 26, 0, 0, 0.96 > 3712, 26, 0, 1, 0.96 > 3712, 58, 0, 0, 0.995 > 3712, 58, 0, 1, 0.995 > 3712, 0, 26, 0, 0.919 > 3712, 0, 26, 1, 0.918 > 3712, 0, 58, 0, 0.93 > 3712, 0, 58, 1, 0.93 > 3712, 26, 26, 0, 1.103 > 3712, 26, 26, 1, 1.102 > 3712, 58, 58, 0, 0.989 > 3712, 58, 58, 1, 0.989 > 3712, 2048, 0, 0, 0.997 > 3712, 2048, 0, 1, 0.997 > 3712, 2074, 0, 0, 0.959 > 3712, 2074, 0, 1, 0.959 > 3712, 2048, 26, 0, 0.901 > 3712, 2048, 26, 1, 0.901 > 3712, 2074, 26, 0, 1.104 > 3712, 2074, 26, 1, 1.102 > 3712, 26, 1, 0, 1.001 > 3712, 26, 1, 1, 1.001 > 3712, 1, 26, 0, 0.922 > 3712, 1, 26, 1, 0.922 > 3712, 58, 1, 0, 0.974 > 3712, 58, 1, 1, 0.974 > 3712, 1, 58, 0, 0.903 > 3712, 1, 58, 1, 0.903 > 3712, 2074, 1, 0, 1.001 > 3712, 2074, 1, 1, 1.001 > 3712, 2049, 26, 0, 0.919 > 3712, 2049, 26, 1, 0.919 > 3776, 0, 0, 0, 1.003 > 3776, 0, 0, 1, 1.003 > 3776, 27, 0, 0, 0.964 > 3776, 27, 0, 1, 0.964 > 3776, 59, 0, 0, 1.004 > 3776, 59, 0, 1, 1.004 > 3776, 0, 27, 0, 0.931 > 3776, 0, 27, 1, 0.931 > 3776, 0, 59, 0, 0.929 > 3776, 0, 59, 1, 0.93 > 3776, 27, 27, 0, 1.097 > 3776, 27, 27, 1, 1.097 > 3776, 59, 59, 0, 0.992 > 3776, 59, 59, 1, 0.992 > 3776, 2048, 0, 0, 1.003 > 3776, 2048, 0, 1, 1.003 > 3776, 2075, 0, 0, 0.963 > 3776, 2075, 0, 1, 0.964 > 3776, 2048, 27, 0, 0.898 > 3776, 2048, 27, 1, 0.898 > 3776, 2075, 27, 0, 1.097 > 3776, 2075, 27, 1, 1.097 > 3776, 27, 1, 0, 0.998 > 3776, 27, 1, 1, 0.998 > 3776, 1, 27, 0, 0.925 > 3776, 1, 27, 1, 0.925 > 3776, 59, 1, 0, 0.979 > 3776, 59, 1, 1, 0.979 > 3776, 1, 59, 0, 0.894 > 3776, 1, 59, 1, 0.894 > 3776, 2075, 1, 0, 0.998 > 3776, 2075, 1, 1, 0.999 > 3776, 2049, 27, 0, 0.923 > 3776, 2049, 27, 1, 0.923 > 3840, 0, 0, 0, 0.997 > 3840, 0, 0, 1, 0.997 > 3840, 28, 0, 0, 0.968 > 3840, 28, 0, 1, 0.968 > 3840, 60, 0, 0, 1.001 > 3840, 60, 0, 1, 1.001 > 3840, 0, 28, 0, 0.926 > 3840, 0, 28, 1, 0.927 > 3840, 0, 60, 0, 0.927 > 3840, 0, 60, 1, 0.927 > 3840, 28, 28, 0, 1.094 > 3840, 28, 28, 1, 1.094 > 3840, 60, 60, 0, 0.982 > 3840, 60, 60, 1, 0.982 > 3840, 2048, 0, 0, 0.998 > 3840, 2048, 0, 1, 0.998 > 3840, 2076, 0, 0, 0.968 > 3840, 2076, 0, 1, 0.968 > 3840, 2048, 28, 0, 0.896 > 3840, 2048, 28, 1, 0.896 > 3840, 2076, 28, 0, 1.094 > 3840, 2076, 28, 1, 1.094 > 3840, 28, 1, 0, 0.983 > 3840, 28, 1, 1, 0.982 > 3840, 1, 28, 0, 0.916 > 3840, 1, 28, 1, 0.916 > 3840, 60, 1, 0, 0.969 > 3840, 60, 1, 1, 0.969 > 3840, 1, 60, 0, 0.891 > 3840, 1, 60, 1, 0.891 > 3840, 2076, 1, 0, 0.983 > 3840, 2076, 1, 1, 0.983 > 3840, 2049, 28, 0, 0.912 > 3840, 2049, 28, 1, 0.912 > 3904, 0, 0, 0, 1.002 > 3904, 0, 0, 1, 1.0 > 3904, 29, 0, 0, 0.961 > 3904, 29, 0, 1, 0.961 > 3904, 61, 0, 0, 0.997 > 3904, 61, 0, 1, 0.997 > 3904, 0, 29, 0, 0.915 > 3904, 0, 29, 1, 0.922 > 3904, 0, 61, 0, 0.933 > 3904, 0, 61, 1, 0.933 > 3904, 29, 29, 0, 1.103 > 3904, 29, 29, 1, 1.103 > 3904, 61, 61, 0, 0.995 > 3904, 61, 61, 1, 0.995 > 3904, 2048, 0, 0, 0.998 > 3904, 2048, 0, 1, 1.0 > 3904, 2077, 0, 0, 0.961 > 3904, 2077, 0, 1, 0.961 > 3904, 2048, 29, 0, 0.904 > 3904, 2048, 29, 1, 0.904 > 3904, 2077, 29, 0, 1.103 > 3904, 2077, 29, 1, 1.103 > 3904, 29, 1, 0, 1.0 > 3904, 29, 1, 1, 1.0 > 3904, 1, 29, 0, 0.922 > 3904, 1, 29, 1, 0.922 > 3904, 61, 1, 0, 0.98 > 3904, 61, 1, 1, 0.98 > 3904, 1, 61, 0, 0.904 > 3904, 1, 61, 1, 0.904 > 3904, 2077, 1, 0, 1.0 > 3904, 2077, 1, 1, 1.0 > 3904, 2049, 29, 0, 0.919 > 3904, 2049, 29, 1, 0.919 > 3968, 0, 0, 0, 1.003 > 3968, 0, 0, 1, 1.003 > 3968, 30, 0, 0, 0.969 > 3968, 30, 0, 1, 0.969 > 3968, 62, 0, 0, 1.006 > 3968, 62, 0, 1, 1.006 > 3968, 0, 30, 0, 0.931 > 3968, 0, 30, 1, 0.93 > 3968, 0, 62, 0, 0.929 > 3968, 0, 62, 1, 0.929 > 3968, 30, 30, 0, 1.103 > 3968, 30, 30, 1, 1.103 > 3968, 62, 62, 0, 0.99 > 3968, 62, 62, 1, 0.99 > 3968, 2048, 0, 0, 1.004 > 3968, 2048, 0, 1, 1.004 > 3968, 2078, 0, 0, 0.969 > 3968, 2078, 0, 1, 0.969 > 3968, 2048, 30, 0, 0.899 > 3968, 2048, 30, 1, 0.899 > 3968, 2078, 30, 0, 1.105 > 3968, 2078, 30, 1, 1.105 > 3968, 30, 1, 0, 0.993 > 3968, 30, 1, 1, 0.993 > 3968, 1, 30, 0, 0.908 > 3968, 1, 30, 1, 0.908 > 3968, 62, 1, 0, 0.978 > 3968, 62, 1, 1, 0.978 > 3968, 1, 62, 0, 0.895 > 3968, 1, 62, 1, 0.895 > 3968, 2078, 1, 0, 0.993 > 3968, 2078, 1, 1, 0.993 > 3968, 2049, 30, 0, 0.904 > 3968, 2049, 30, 1, 0.904 > 4032, 0, 0, 0, 0.995 > 4032, 0, 0, 1, 0.995 > 4032, 31, 0, 0, 0.967 > 4032, 31, 0, 1, 0.967 > 4032, 63, 0, 0, 1.002 > 4032, 63, 0, 1, 1.002 > 4032, 0, 31, 0, 0.927 > 4032, 0, 31, 1, 0.926 > 4032, 0, 63, 0, 0.927 > 4032, 0, 63, 1, 0.927 > 4032, 31, 31, 0, 1.09 > 4032, 31, 31, 1, 1.09 > 4032, 63, 63, 0, 0.987 > 4032, 63, 63, 1, 0.987 > 4032, 2048, 0, 0, 0.995 > 4032, 2048, 0, 1, 0.995 > 4032, 2079, 0, 0, 0.967 > 4032, 2079, 0, 1, 0.967 > 4032, 2048, 31, 0, 0.897 > 4032, 2048, 31, 1, 0.897 > 4032, 2079, 31, 0, 1.09 > 4032, 2079, 31, 1, 1.09 > 4032, 31, 1, 0, 0.989 > 4032, 31, 1, 1, 0.989 > 4032, 1, 31, 0, 0.911 > 4032, 1, 31, 1, 0.911 > 4032, 63, 1, 0, 0.971 > 4032, 63, 1, 1, 0.972 > 4032, 1, 63, 0, 0.892 > 4032, 1, 63, 1, 0.892 > 4032, 2079, 1, 0, 0.989 > 4032, 2079, 1, 1, 0.989 > 4032, 2049, 31, 0, 0.907 > 4032, 2049, 31, 1, 0.907 > 4096, 32, 0, 0, 1.014 > 4096, 32, 0, 1, 1.014 > 4096, 64, 0, 0, 1.014 > 4096, 64, 0, 1, 1.014 > 4096, 0, 32, 0, 1.012 > 4096, 0, 32, 1, 1.012 > 4096, 0, 64, 0, 1.012 > 4096, 0, 64, 1, 1.012 > 4096, 32, 32, 0, 1.014 > 4096, 32, 32, 1, 1.014 > 4096, 64, 64, 0, 1.014 > 4096, 64, 64, 1, 1.014 > 4096, 2080, 0, 0, 1.014 > 4096, 2080, 0, 1, 1.014 > 4096, 2048, 32, 0, 1.014 > 4096, 2048, 32, 1, 1.014 > 4096, 2080, 32, 0, 1.014 > 4096, 2080, 32, 1, 1.014 > 4096, 32, 1, 0, 0.975 > 4096, 32, 1, 1, 0.975 > 4096, 1, 32, 0, 0.769 > 4096, 1, 32, 1, 0.769 > 4096, 64, 1, 0, 0.858 > 4096, 64, 1, 1, 0.858 > 4096, 1, 64, 0, 0.769 > 4096, 1, 64, 1, 0.769 > 4096, 2080, 1, 0, 0.829 > 4096, 2080, 1, 1, 0.829 > 4096, 2049, 32, 0, 0.886 > 4096, 2049, 32, 1, 0.886 > 4160, 0, 0, 0, 1.003 > 4160, 0, 0, 1, 1.003 > 4160, 33, 0, 0, 1.004 > 4160, 33, 0, 1, 1.004 > 4160, 65, 0, 0, 0.999 > 4160, 65, 0, 1, 0.999 > 4160, 0, 33, 0, 0.931 > 4160, 0, 33, 1, 0.931 > 4160, 0, 65, 0, 0.765 > 4160, 0, 65, 1, 0.765 > 4160, 33, 33, 0, 0.998 > 4160, 33, 33, 1, 0.998 > 4160, 65, 65, 0, 0.942 > 4160, 65, 65, 1, 0.942 > 4160, 2048, 0, 0, 1.003 > 4160, 2048, 0, 1, 1.003 > 4160, 2081, 0, 0, 1.004 > 4160, 2081, 0, 1, 1.004 > 4160, 2048, 33, 0, 0.899 > 4160, 2048, 33, 1, 0.898 > 4160, 2081, 33, 0, 1.002 > 4160, 2081, 33, 1, 1.002 > 4160, 33, 1, 0, 1.114 > 4160, 33, 1, 1, 1.114 > 4160, 1, 33, 0, 1.01 > 4160, 1, 33, 1, 1.01 > 4160, 65, 1, 0, 1.077 > 4160, 65, 1, 1, 1.077 > 4160, 1, 65, 0, 0.935 > 4160, 1, 65, 1, 0.935 > 4160, 2081, 1, 0, 1.077 > 4160, 2081, 1, 1, 1.077 > 4160, 2049, 33, 0, 1.007 > 4160, 2049, 33, 1, 1.007 > 4224, 0, 0, 0, 1.014 > 4224, 0, 0, 1, 1.014 > 4224, 34, 0, 0, 1.0 > 4224, 34, 0, 1, 1.0 > 4224, 66, 0, 0, 1.001 > 4224, 66, 0, 1, 1.001 > 4224, 0, 34, 0, 0.928 > 4224, 0, 34, 1, 0.928 > 4224, 0, 66, 0, 0.762 > 4224, 0, 66, 1, 0.762 > 4224, 34, 34, 0, 0.998 > 4224, 34, 34, 1, 0.998 > 4224, 66, 66, 0, 0.959 > 4224, 66, 66, 1, 0.959 > 4224, 2048, 0, 0, 1.014 > 4224, 2048, 0, 1, 1.014 > 4224, 2082, 0, 0, 1.001 > 4224, 2082, 0, 1, 1.001 > 4224, 2048, 34, 0, 0.899 > 4224, 2048, 34, 1, 0.898 > 4224, 2082, 34, 0, 0.998 > 4224, 2082, 34, 1, 0.998 > 4224, 34, 1, 0, 1.024 > 4224, 34, 1, 1, 1.023 > 4224, 1, 34, 0, 0.917 > 4224, 1, 34, 1, 0.917 > 4224, 66, 1, 0, 1.012 > 4224, 66, 1, 1, 1.013 > 4224, 1, 66, 0, 0.917 > 4224, 1, 66, 1, 0.917 > 4224, 2082, 1, 0, 1.022 > 4224, 2082, 1, 1, 1.022 > 4224, 2049, 34, 0, 0.914 > 4224, 2049, 34, 1, 0.914 > 4288, 0, 0, 0, 0.999 > 4288, 0, 0, 1, 0.999 > 4288, 35, 0, 0, 0.995 > 4288, 35, 0, 1, 0.996 > 4288, 67, 0, 0, 0.998 > 4288, 67, 0, 1, 0.998 > 4288, 0, 35, 0, 0.919 > 4288, 0, 35, 1, 0.918 > 4288, 0, 67, 0, 0.767 > 4288, 0, 67, 1, 0.767 > 4288, 35, 35, 0, 1.005 > 4288, 35, 35, 1, 1.004 > 4288, 67, 67, 0, 0.995 > 4288, 67, 67, 1, 0.995 > 4288, 2048, 0, 0, 0.999 > 4288, 2048, 0, 1, 0.999 > 4288, 2083, 0, 0, 0.995 > 4288, 2083, 0, 1, 0.995 > 4288, 2048, 35, 0, 0.905 > 4288, 2048, 35, 1, 0.904 > 4288, 2083, 35, 0, 1.005 > 4288, 2083, 35, 1, 1.004 > 4288, 35, 1, 0, 1.033 > 4288, 35, 1, 1, 1.032 > 4288, 1, 35, 0, 0.928 > 4288, 1, 35, 1, 0.928 > 4288, 67, 1, 0, 1.019 > 4288, 67, 1, 1, 1.02 > 4288, 1, 67, 0, 0.925 > 4288, 1, 67, 1, 0.924 > 4288, 2083, 1, 0, 1.03 > 4288, 2083, 1, 1, 1.03 > 4288, 2049, 35, 0, 0.925 > 4288, 2049, 35, 1, 0.926 > 4352, 0, 0, 0, 1.005 > 4352, 0, 0, 1, 1.005 > 4352, 36, 0, 0, 1.007 > 4352, 36, 0, 1, 1.006 > 4352, 68, 0, 0, 1.007 > 4352, 68, 0, 1, 1.008 > 4352, 0, 36, 0, 0.929 > 4352, 0, 36, 1, 0.929 > 4352, 0, 68, 0, 0.766 > 4352, 0, 68, 1, 0.766 > 4352, 36, 36, 0, 0.998 > 4352, 36, 36, 1, 0.998 > 4352, 68, 68, 0, 0.964 > 4352, 68, 68, 1, 0.964 > 4352, 2048, 0, 0, 1.006 > 4352, 2048, 0, 1, 1.006 > 4352, 2084, 0, 0, 1.006 > 4352, 2084, 0, 1, 1.006 > 4352, 2048, 36, 0, 0.897 > 4352, 2048, 36, 1, 0.898 > 4352, 2084, 36, 0, 0.998 > 4352, 2084, 36, 1, 0.998 > 4352, 36, 1, 0, 1.031 > 4352, 36, 1, 1, 1.031 > 4352, 1, 36, 0, 0.924 > 4352, 1, 36, 1, 0.924 > 4352, 68, 1, 0, 0.999 > 4352, 68, 1, 1, 0.999 > 4352, 1, 68, 0, 0.922 > 4352, 1, 68, 1, 0.922 > 4352, 2084, 1, 0, 1.03 > 4352, 2084, 1, 1, 1.03 > 4352, 2049, 36, 0, 0.922 > 4352, 2049, 36, 1, 0.922 > 4416, 0, 0, 0, 0.997 > 4416, 0, 0, 1, 0.997 > 4416, 37, 0, 0, 1.002 > 4416, 37, 0, 1, 1.002 > 4416, 69, 0, 0, 1.004 > 4416, 69, 0, 1, 1.004 > 4416, 0, 37, 0, 0.928 > 4416, 0, 37, 1, 0.927 > 4416, 0, 69, 0, 0.762 > 4416, 0, 69, 1, 0.762 > 4416, 37, 37, 0, 0.994 > 4416, 37, 37, 1, 0.994 > 4416, 69, 69, 0, 0.959 > 4416, 69, 69, 1, 0.959 > 4416, 2048, 0, 0, 0.997 > 4416, 2048, 0, 1, 0.997 > 4416, 2085, 0, 0, 1.001 > 4416, 2085, 0, 1, 1.001 > 4416, 2048, 37, 0, 0.899 > 4416, 2048, 37, 1, 0.899 > 4416, 2085, 37, 0, 0.994 > 4416, 2085, 37, 1, 0.994 > 4416, 37, 1, 0, 1.024 > 4416, 37, 1, 1, 1.023 > 4416, 1, 37, 0, 0.923 > 4416, 1, 37, 1, 0.922 > 4416, 69, 1, 0, 1.009 > 4416, 69, 1, 1, 1.01 > 4416, 1, 69, 0, 0.917 > 4416, 1, 69, 1, 0.917 > 4416, 2085, 1, 0, 1.024 > 4416, 2085, 1, 1, 1.024 > 4416, 2049, 37, 0, 0.919 > 4416, 2049, 37, 1, 0.919 > 4480, 0, 0, 0, 1.0 > 4480, 0, 0, 1, 0.999 > 4480, 38, 0, 0, 0.996 > 4480, 38, 0, 1, 0.996 > 4480, 70, 0, 0, 1.0 > 4480, 70, 0, 1, 1.0 > 4480, 0, 38, 0, 0.919 > 4480, 0, 38, 1, 0.921 > 4480, 0, 70, 0, 0.767 > 4480, 0, 70, 1, 0.767 > 4480, 38, 38, 0, 1.002 > 4480, 38, 38, 1, 1.002 > 4480, 70, 70, 0, 0.963 > 4480, 70, 70, 1, 0.963 > 4480, 2048, 0, 0, 0.998 > 4480, 2048, 0, 1, 0.999 > 4480, 2086, 0, 0, 0.996 > 4480, 2086, 0, 1, 0.995 > 4480, 2048, 38, 0, 0.907 > 4480, 2048, 38, 1, 0.907 > 4480, 2086, 38, 0, 1.002 > 4480, 2086, 38, 1, 1.002 > 4480, 38, 1, 0, 1.032 > 4480, 38, 1, 1, 1.031 > 4480, 1, 38, 0, 0.919 > 4480, 1, 38, 1, 0.92 > 4480, 70, 1, 0, 1.018 > 4480, 70, 1, 1, 1.017 > 4480, 1, 70, 0, 0.916 > 4480, 1, 70, 1, 0.915 > 4480, 2086, 1, 0, 1.031 > 4480, 2086, 1, 1, 1.03 > 4480, 2049, 38, 0, 0.917 > 4480, 2049, 38, 1, 0.918 > 4544, 0, 0, 0, 1.002 > 4544, 0, 0, 1, 1.002 > 4544, 39, 0, 0, 1.007 > 4544, 39, 0, 1, 1.008 > 4544, 71, 0, 0, 1.002 > 4544, 71, 0, 1, 1.002 > 4544, 0, 39, 0, 0.93 > 4544, 0, 39, 1, 0.931 > 4544, 0, 71, 0, 0.766 > 4544, 0, 71, 1, 0.766 > 4544, 39, 39, 0, 1.001 > 4544, 39, 39, 1, 1.001 > 4544, 71, 71, 0, 0.966 > 4544, 71, 71, 1, 0.966 > 4544, 2048, 0, 0, 1.002 > 4544, 2048, 0, 1, 1.002 > 4544, 2087, 0, 0, 1.008 > 4544, 2087, 0, 1, 1.007 > 4544, 2048, 39, 0, 0.901 > 4544, 2048, 39, 1, 0.901 > 4544, 2087, 39, 0, 1.001 > 4544, 2087, 39, 1, 1.001 > 4544, 39, 1, 0, 1.025 > 4544, 39, 1, 1, 1.025 > 4544, 1, 39, 0, 0.919 > 4544, 1, 39, 1, 0.919 > 4544, 71, 1, 0, 0.991 > 4544, 71, 1, 1, 0.991 > 4544, 1, 71, 0, 0.921 > 4544, 1, 71, 1, 0.922 > 4544, 2087, 1, 0, 1.025 > 4544, 2087, 1, 1, 1.025 > 4544, 2049, 39, 0, 0.917 > 4544, 2049, 39, 1, 0.917 > 4608, 0, 0, 0, 0.997 > 4608, 0, 0, 1, 0.997 > 4608, 40, 0, 0, 1.013 > 4608, 40, 0, 1, 1.013 > 4608, 72, 0, 0, 1.013 > 4608, 72, 0, 1, 1.013 > 4608, 0, 40, 0, 0.925 > 4608, 0, 40, 1, 0.926 > 4608, 0, 72, 0, 0.765 > 4608, 0, 72, 1, 0.765 > 4608, 40, 40, 0, 1.084 > 4608, 40, 40, 1, 1.084 > 4608, 72, 72, 0, 0.966 > 4608, 72, 72, 1, 0.966 > 4608, 2048, 0, 0, 0.999 > 4608, 2048, 0, 1, 0.999 > 4608, 2088, 0, 0, 1.012 > 4608, 2088, 0, 1, 1.012 > 4608, 2048, 40, 0, 0.898 > 4608, 2048, 40, 1, 0.898 > 4608, 2088, 40, 0, 1.087 > 4608, 2088, 40, 1, 1.087 > 4608, 40, 1, 0, 1.006 > 4608, 40, 1, 1, 1.006 > 4608, 1, 40, 0, 0.926 > 4608, 1, 40, 1, 0.925 > 4608, 72, 1, 0, 1.012 > 4608, 72, 1, 1, 1.011 > 4608, 1, 72, 0, 0.92 > 4608, 1, 72, 1, 0.92 > 4608, 2088, 1, 0, 1.006 > 4608, 2088, 1, 1, 1.006 > 4608, 2049, 40, 0, 0.923 > 4608, 2049, 40, 1, 0.923 > 4672, 0, 0, 0, 1.014 > 4672, 0, 0, 1, 1.014 > 4672, 41, 0, 0, 1.003 > 4672, 41, 0, 1, 1.003 > 4672, 73, 0, 0, 0.983 > 4672, 73, 0, 1, 0.982 > 4672, 0, 41, 0, 0.916 > 4672, 0, 41, 1, 0.918 > 4672, 0, 73, 0, 0.772 > 4672, 0, 73, 1, 0.772 > 4672, 41, 41, 0, 1.012 > 4672, 41, 41, 1, 1.012 > 4672, 73, 73, 0, 0.973 > 4672, 73, 73, 1, 0.973 > 4672, 2048, 0, 0, 1.014 > 4672, 2048, 0, 1, 1.014 > 4672, 2089, 0, 0, 1.002 > 4672, 2089, 0, 1, 1.002 > 4672, 2048, 41, 0, 0.907 > 4672, 2048, 41, 1, 0.908 > 4672, 2089, 41, 0, 1.012 > 4672, 2089, 41, 1, 1.012 > 4672, 41, 1, 0, 1.027 > 4672, 41, 1, 1, 1.027 > 4672, 1, 41, 0, 0.928 > 4672, 1, 41, 1, 0.927 > 4672, 73, 1, 0, 1.032 > 4672, 73, 1, 1, 1.03 > 4672, 1, 73, 0, 0.927 > 4672, 1, 73, 1, 0.927 > 4672, 2089, 1, 0, 1.026 > 4672, 2089, 1, 1, 1.027 > 4672, 2049, 41, 0, 0.925 > 4672, 2049, 41, 1, 0.925 > 4736, 0, 0, 0, 1.005 > 4736, 0, 0, 1, 1.005 > 4736, 42, 0, 0, 1.012 > 4736, 42, 0, 1, 1.012 > 4736, 74, 0, 0, 0.976 > 4736, 74, 0, 1, 0.975 > 4736, 0, 42, 0, 0.93 > 4736, 0, 42, 1, 0.93 > 4736, 0, 74, 0, 0.77 > 4736, 0, 74, 1, 0.77 > 4736, 42, 42, 0, 1.007 > 4736, 42, 42, 1, 1.007 > 4736, 74, 74, 0, 0.965 > 4736, 74, 74, 1, 0.965 > 4736, 2048, 0, 0, 1.006 > 4736, 2048, 0, 1, 1.006 > 4736, 2090, 0, 0, 1.013 > 4736, 2090, 0, 1, 1.013 > 4736, 2048, 42, 0, 0.902 > 4736, 2048, 42, 1, 0.902 > 4736, 2090, 42, 0, 1.007 > 4736, 2090, 42, 1, 1.007 > 4736, 42, 1, 0, 1.032 > 4736, 42, 1, 1, 1.032 > 4736, 1, 42, 0, 0.925 > 4736, 1, 42, 1, 0.925 > 4736, 74, 1, 0, 1.018 > 4736, 74, 1, 1, 1.018 > 4736, 1, 74, 0, 0.912 > 4736, 1, 74, 1, 0.912 > 4736, 2090, 1, 0, 1.032 > 4736, 2090, 1, 1, 1.032 > 4736, 2049, 42, 0, 0.923 > 4736, 2049, 42, 1, 0.923 > 4800, 0, 0, 0, 1.012 > 4800, 0, 0, 1, 1.012 > 4800, 43, 0, 0, 1.008 > 4800, 43, 0, 1, 1.008 > 4800, 75, 0, 0, 0.99 > 4800, 75, 0, 1, 0.99 > 4800, 0, 43, 0, 0.928 > 4800, 0, 43, 1, 0.928 > 4800, 0, 75, 0, 0.767 > 4800, 0, 75, 1, 0.768 > 4800, 43, 43, 0, 1.004 > 4800, 43, 43, 1, 1.004 > 4800, 75, 75, 0, 0.965 > 4800, 75, 75, 1, 0.965 > 4800, 2048, 0, 0, 1.012 > 4800, 2048, 0, 1, 1.012 > 4800, 2091, 0, 0, 1.009 > 4800, 2091, 0, 1, 1.008 > 4800, 2048, 43, 0, 0.902 > 4800, 2048, 43, 1, 0.902 > 4800, 2091, 43, 0, 1.004 > 4800, 2091, 43, 1, 1.004 > 4800, 43, 1, 0, 1.026 > 4800, 43, 1, 1, 1.025 > 4800, 1, 43, 0, 0.91 > 4800, 1, 43, 1, 0.91 > 4800, 75, 1, 0, 0.992 > 4800, 75, 1, 1, 0.992 > 4800, 1, 75, 0, 0.921 > 4800, 1, 75, 1, 0.92 > 4800, 2091, 1, 0, 1.025 > 4800, 2091, 1, 1, 1.025 > 4800, 2049, 43, 0, 0.907 > 4800, 2049, 43, 1, 0.907 > 4864, 0, 0, 0, 0.998 > 4864, 0, 0, 1, 0.998 > 4864, 44, 0, 0, 1.003 > 4864, 44, 0, 1, 1.004 > 4864, 76, 0, 0, 0.987 > 4864, 76, 0, 1, 0.987 > 4864, 0, 44, 0, 0.92 > 4864, 0, 44, 1, 0.921 > 4864, 0, 76, 0, 0.933 > 4864, 0, 76, 1, 0.932 > 4864, 44, 44, 0, 1.006 > 4864, 44, 44, 1, 1.004 > 4864, 76, 76, 0, 0.976 > 4864, 76, 76, 1, 0.975 > 4864, 2048, 0, 0, 0.999 > 4864, 2048, 0, 1, 0.999 > 4864, 2092, 0, 0, 1.004 > 4864, 2092, 0, 1, 1.005 > 4864, 2048, 44, 0, 0.907 > 4864, 2048, 44, 1, 0.907 > 4864, 2092, 44, 0, 1.006 > 4864, 2092, 44, 1, 1.005 > 4864, 44, 1, 0, 1.034 > 4864, 44, 1, 1, 1.032 > 4864, 1, 44, 0, 0.908 > 4864, 1, 44, 1, 0.929 > 4864, 76, 1, 0, 1.006 > 4864, 76, 1, 1, 1.005 > 4864, 1, 76, 0, 0.798 > 4864, 1, 76, 1, 0.798 > 4864, 2092, 1, 0, 1.033 > 4864, 2092, 1, 1, 1.033 > 4864, 2049, 44, 0, 0.904 > 4864, 2049, 44, 1, 0.925 > 4928, 0, 0, 0, 1.005 > 4928, 0, 0, 1, 1.005 > 4928, 45, 0, 0, 0.993 > 4928, 45, 0, 1, 1.012 > 4928, 77, 0, 0, 0.956 > 4928, 77, 0, 1, 0.976 > 4928, 0, 45, 0, 0.933 > 4928, 0, 45, 1, 0.932 > 4928, 0, 77, 0, 0.771 > 4928, 0, 77, 1, 0.771 > 4928, 45, 45, 0, 1.015 > 4928, 45, 45, 1, 1.015 > 4928, 77, 77, 0, 0.972 > 4928, 77, 77, 1, 0.972 > 4928, 2048, 0, 0, 1.005 > 4928, 2048, 0, 1, 1.005 > 4928, 2093, 0, 0, 0.992 > 4928, 2093, 0, 1, 1.012 > 4928, 2048, 45, 0, 0.932 > 4928, 2048, 45, 1, 0.931 > 4928, 2093, 45, 0, 1.015 > 4928, 2093, 45, 1, 1.015 > 4928, 45, 1, 0, 1.009 > 4928, 45, 1, 1, 1.032 > 4928, 1, 45, 0, 0.806 > 4928, 1, 45, 1, 0.805 > 4928, 77, 1, 0, 0.981 > 4928, 77, 1, 1, 1.005 > 4928, 1, 77, 0, 0.917 > 4928, 1, 77, 1, 0.917 > 4928, 2093, 1, 0, 1.008 > 4928, 2093, 1, 1, 1.032 > 4928, 2049, 45, 0, 0.794 > 4928, 2049, 45, 1, 0.794 > 4992, 0, 0, 0, 0.999 > 4992, 0, 0, 1, 0.999 > 4992, 46, 0, 0, 0.985 > 4992, 46, 0, 1, 1.008 > 4992, 78, 0, 0, 0.963 > 4992, 78, 0, 1, 0.984 > 4992, 0, 46, 0, 0.908 > 4992, 0, 46, 1, 0.908 > 4992, 0, 78, 0, 0.752 > 4992, 0, 78, 1, 0.751 > 4992, 46, 46, 0, 0.997 > 4992, 46, 46, 1, 0.997 > 4992, 78, 78, 0, 0.969 > 4992, 78, 78, 1, 0.968 > 4992, 2048, 0, 0, 1.0 > 4992, 2048, 0, 1, 1.0 > 4992, 2094, 0, 0, 0.987 > 4992, 2094, 0, 1, 1.008 > 4992, 2048, 46, 0, 0.883 > 4992, 2048, 46, 1, 0.883 > 4992, 2094, 46, 0, 0.997 > 4992, 2094, 46, 1, 0.997 > 4992, 46, 1, 0, 0.998 > 4992, 46, 1, 1, 1.02 > 4992, 1, 46, 0, 0.917 > 4992, 1, 46, 1, 0.917 > 4992, 78, 1, 0, 0.972 > 4992, 78, 1, 1, 0.993 > 4992, 1, 78, 0, 0.919 > 4992, 1, 78, 1, 0.92 > 4992, 2094, 1, 0, 0.997 > 4992, 2094, 1, 1, 1.019 > 4992, 2049, 46, 0, 0.914 > 4992, 2049, 46, 1, 0.914 > 5056, 0, 0, 0, 1.002 > 5056, 0, 0, 1, 1.0 > 5056, 47, 0, 0, 1.005 > 5056, 47, 0, 1, 1.005 > 5056, 79, 0, 0, 0.989 > 5056, 79, 0, 1, 0.989 > 5056, 0, 47, 0, 0.918 > 5056, 0, 47, 1, 0.919 > 5056, 0, 79, 0, 0.772 > 5056, 0, 79, 1, 0.771 > 5056, 47, 47, 0, 1.006 > 5056, 47, 47, 1, 1.006 > 5056, 79, 79, 0, 0.972 > 5056, 79, 79, 1, 0.972 > 5056, 2048, 0, 0, 1.001 > 5056, 2048, 0, 1, 1.0 > 5056, 2095, 0, 0, 1.004 > 5056, 2095, 0, 1, 1.004 > 5056, 2048, 47, 0, 0.908 > 5056, 2048, 47, 1, 0.909 > 5056, 2095, 47, 0, 1.006 > 5056, 2095, 47, 1, 1.006 > 5056, 47, 1, 0, 1.033 > 5056, 47, 1, 1, 1.033 > 5056, 1, 47, 0, 0.919 > 5056, 1, 47, 1, 0.919 > 5056, 79, 1, 0, 1.003 > 5056, 79, 1, 1, 1.005 > 5056, 1, 79, 0, 0.921 > 5056, 1, 79, 1, 0.921 > 5056, 2095, 1, 0, 1.032 > 5056, 2095, 1, 1, 1.034 > 5056, 2049, 47, 0, 0.918 > 5056, 2049, 47, 1, 0.917 > 5120, 0, 0, 0, 1.003 > 5120, 0, 0, 1, 1.003 > 5120, 48, 0, 0, 1.068 > 5120, 48, 0, 1, 1.068 > 5120, 80, 0, 0, 1.068 > 5120, 80, 0, 1, 1.068 > 5120, 0, 48, 0, 1.065 > 5120, 0, 48, 1, 1.065 > 5120, 0, 80, 0, 1.064 > 5120, 0, 80, 1, 1.065 > 5120, 48, 48, 0, 1.004 > 5120, 48, 48, 1, 1.004 > 5120, 80, 80, 0, 1.005 > 5120, 80, 80, 1, 1.005 > 5120, 2048, 0, 0, 1.005 > 5120, 2048, 0, 1, 1.005 > 5120, 2096, 0, 0, 1.068 > 5120, 2096, 0, 1, 1.068 > 5120, 2048, 48, 0, 1.065 > 5120, 2048, 48, 1, 1.065 > 5120, 2096, 48, 0, 1.005 > 5120, 2096, 48, 1, 1.005 > 5120, 48, 1, 0, 1.033 > 5120, 48, 1, 1, 1.031 > 5120, 1, 48, 0, 0.898 > 5120, 1, 48, 1, 0.898 > 5120, 80, 1, 0, 0.844 > 5120, 80, 1, 1, 0.844 > 5120, 1, 80, 0, 0.898 > 5120, 1, 80, 1, 0.898 > 5120, 2096, 1, 0, 0.856 > 5120, 2096, 1, 1, 0.855 > 5120, 2049, 48, 0, 0.898 > 5120, 2049, 48, 1, 0.898 > > bench-memcpy-random: > > length, New Time / Old Time > 32768, 0.866 > 65536, 0.891 > 131072, 0.896 > 262144, 0.901 > 524288, 0.904 > 1048576, 0.913 > > bench-memcpy-large: > > length, align0, align1, dst>src, New Time/Old Time > 65543, 0, 0, 0, 0.981 > 65543, 0, 0, 1, 0.981 > 65551, 0, 3, 0, 1.012 > 65551, 0, 3, 1, 1.013 > 65567, 3, 0, 0, 1.019 > 65567, 3, 0, 1, 1.02 > 65599, 3, 5, 0, 1.058 > 65599, 3, 5, 1, 1.061 > 65536, 0, 127, 0, 1.046 > 65536, 0, 127, 1, 1.046 > 65536, 0, 255, 0, 1.071 > 65536, 0, 255, 1, 1.071 > 65536, 0, 256, 0, 0.983 > 65536, 0, 256, 1, 0.984 > 65536, 0, 4064, 0, 1.017 > 65536, 0, 4064, 1, 1.018 > 131079, 0, 0, 0, 0.981 > 131079, 0, 0, 1, 0.981 > 131087, 0, 3, 0, 1.017 > 131087, 0, 3, 1, 1.017 > 131103, 3, 0, 0, 1.022 > 131103, 3, 0, 1, 1.022 > 131135, 3, 5, 0, 1.064 > 131135, 3, 5, 1, 1.065 > 131072, 0, 127, 0, 1.05 > 131072, 0, 127, 1, 1.05 > 131072, 0, 255, 0, 1.074 > 131072, 0, 255, 1, 1.074 > 131072, 0, 256, 0, 0.984 > 131072, 0, 256, 1, 0.984 > 131072, 0, 4064, 0, 1.018 > 131072, 0, 4064, 1, 1.019 > 262151, 0, 0, 0, 0.985 > 262151, 0, 0, 1, 0.985 > 262159, 0, 3, 0, 1.026 > 262159, 0, 3, 1, 1.026 > 262175, 3, 0, 0, 1.03 > 262175, 3, 0, 1, 1.03 > 262207, 3, 5, 0, 1.07 > 262207, 3, 5, 1, 1.07 > 262144, 0, 127, 0, 1.057 > 262144, 0, 127, 1, 1.057 > 262144, 0, 255, 0, 1.079 > 262144, 0, 255, 1, 1.078 > 262144, 0, 256, 0, 0.988 > 262144, 0, 256, 1, 0.988 > 262144, 0, 4064, 0, 1.02 > 262144, 0, 4064, 1, 1.02 > 524295, 0, 0, 0, 0.692 > 524295, 0, 0, 1, 0.692 > 524303, 0, 3, 0, 0.736 > 524303, 0, 3, 1, 0.737 > 524319, 3, 0, 0, 0.758 > 524319, 3, 0, 1, 0.759 > 524351, 3, 5, 0, 0.759 > 524351, 3, 5, 1, 0.759 > 524288, 0, 127, 0, 1.057 > 524288, 0, 127, 1, 1.058 > 524288, 0, 255, 0, 1.079 > 524288, 0, 255, 1, 1.079 > 524288, 0, 256, 0, 0.988 > 524288, 0, 256, 1, 0.988 > 524288, 0, 4064, 0, 1.02 > 524288, 0, 4064, 1, 1.02 > 1048583, 0, 0, 0, 0.948 > 1048583, 0, 0, 1, 0.948 > 1048591, 0, 3, 0, 0.735 > 1048591, 0, 3, 1, 0.735 > 1048607, 3, 0, 0, 0.757 > 1048607, 3, 0, 1, 0.758 > 1048639, 3, 5, 0, 0.758 > 1048639, 3, 5, 1, 0.758 > 1048576, 0, 127, 0, 0.761 > 1048576, 0, 127, 1, 0.762 > 1048576, 0, 255, 0, 0.751 > 1048576, 0, 255, 1, 0.751 > 1048576, 0, 256, 0, 0.93 > 1048576, 0, 256, 1, 0.93 > 1048576, 0, 4064, 0, 0.93 > 1048576, 0, 4064, 1, 0.93 > 2097159, 0, 0, 0, 0.928 > 2097159, 0, 0, 1, 0.931 > 2097167, 0, 3, 0, 0.735 > 2097167, 0, 3, 1, 0.734 > 2097183, 3, 0, 0, 0.759 > 2097183, 3, 0, 1, 0.759 > 2097215, 3, 5, 0, 0.758 > 2097215, 3, 5, 1, 0.757 > 2097152, 0, 127, 0, 0.77 > 2097152, 0, 127, 1, 0.77 > 2097152, 0, 255, 0, 0.745 > 2097152, 0, 255, 1, 0.745 > 2097152, 0, 256, 0, 0.924 > 2097152, 0, 256, 1, 0.925 > 2097152, 0, 4064, 0, 0.926 > 2097152, 0, 4064, 1, 0.927 > 4194311, 0, 0, 0, 0.894 > 4194311, 0, 0, 1, 0.896 > 4194319, 0, 3, 0, 0.752 > 4194319, 0, 3, 1, 0.751 > 4194335, 3, 0, 0, 0.82 > 4194335, 3, 0, 1, 0.821 > 4194367, 3, 5, 0, 0.788 > 4194367, 3, 5, 1, 0.789 > 4194304, 0, 127, 0, 0.801 > 4194304, 0, 127, 1, 0.801 > 4194304, 0, 255, 0, 0.802 > 4194304, 0, 255, 1, 0.804 > 4194304, 0, 256, 0, 0.873 > 4194304, 0, 256, 1, 0.868 > 4194304, 0, 4064, 0, 0.955 > 4194304, 0, 4064, 1, 0.954 > 8388615, 0, 0, 0, 0.885 > 8388615, 0, 0, 1, 0.886 > 8388623, 0, 3, 0, 0.769 > 8388623, 0, 3, 1, 0.769 > 8388639, 3, 0, 0, 0.87 > 8388639, 3, 0, 1, 0.87 > 8388671, 3, 5, 0, 0.811 > 8388671, 3, 5, 1, 0.814 > 8388608, 0, 127, 0, 0.83 > 8388608, 0, 127, 1, 0.83 > 8388608, 0, 255, 0, 0.857 > 8388608, 0, 255, 1, 0.857 > 8388608, 0, 256, 0, 0.851 > 8388608, 0, 256, 1, 0.848 > 8388608, 0, 4064, 0, 0.981 > 8388608, 0, 4064, 1, 0.981 > 16777223, 0, 0, 0, 0.885 > 16777223, 0, 0, 1, 0.886 > 16777231, 0, 3, 0, 0.769 > 16777231, 0, 3, 1, 0.768 > 16777247, 3, 0, 0, 0.87 > 16777247, 3, 0, 1, 0.87 > 16777279, 3, 5, 0, 0.811 > 16777279, 3, 5, 1, 0.814 > 16777216, 0, 127, 0, 0.831 > 16777216, 0, 127, 1, 0.83 > 16777216, 0, 255, 0, 0.857 > 16777216, 0, 255, 1, 0.857 > 16777216, 0, 256, 0, 0.852 > 16777216, 0, 256, 1, 0.848 > 16777216, 0, 4064, 0, 0.98 > 16777216, 0, 4064, 1, 0.981 > 33554439, 0, 0, 0, 0.885 > 33554439, 0, 0, 1, 0.886 > 33554447, 0, 3, 0, 0.768 > 33554447, 0, 3, 1, 0.768 > 33554463, 3, 0, 0, 0.871 > 33554463, 3, 0, 1, 0.87 > 33554495, 3, 5, 0, 0.811 > 33554495, 3, 5, 1, 0.814 > 33554432, 0, 127, 0, 0.831 > 33554432, 0, 127, 1, 0.831 > 33554432, 0, 255, 0, 0.858 > 33554432, 0, 255, 1, 0.857 > 33554432, 0, 256, 0, 0.852 > 33554432, 0, 256, 1, 0.848 > 33554432, 0, 4064, 0, 0.98 > 33554432, 0, 4064, 1, 0.981 > > > sysdeps/x86_64/multiarch/Makefile | 4 - > sysdeps/x86_64/multiarch/ifunc-impl-list.c | 8 - > sysdeps/x86_64/multiarch/stpcpy-ssse3.S | 3 - > sysdeps/x86_64/multiarch/stpncpy-ssse3.S | 4 - > sysdeps/x86_64/multiarch/strcpy-ssse3.S | 3550 -------------------- > sysdeps/x86_64/multiarch/strncpy-ssse3.S | 3 - > 6 files changed, 3572 deletions(-) > delete mode 100644 sysdeps/x86_64/multiarch/stpcpy-ssse3.S > delete mode 100644 sysdeps/x86_64/multiarch/stpncpy-ssse3.S > delete mode 100644 sysdeps/x86_64/multiarch/strcpy-ssse3.S > delete mode 100644 sysdeps/x86_64/multiarch/strncpy-ssse3.S > > diff --git a/sysdeps/x86_64/multiarch/Makefile b/sysdeps/x86_64/multiarch/Makefile > index 2b3c625ea2..5b02ec8de5 100644 > --- a/sysdeps/x86_64/multiarch/Makefile > +++ b/sysdeps/x86_64/multiarch/Makefile > @@ -46,13 +46,11 @@ sysdep_routines += \ > stpcpy-evex \ > stpcpy-sse2 \ > stpcpy-sse2-unaligned \ > - stpcpy-ssse3 \ > stpncpy-avx2 \ > stpncpy-avx2-rtm \ > stpncpy-c \ > stpncpy-evex \ > stpncpy-sse2-unaligned \ > - stpncpy-ssse3 \ > strcasecmp_l-avx2 \ > strcasecmp_l-avx2-rtm \ > strcasecmp_l-evex \ > @@ -83,7 +81,6 @@ sysdep_routines += \ > strcpy-evex \ > strcpy-sse2 \ > strcpy-sse2-unaligned \ > - strcpy-ssse3 \ > strcspn-c \ > strcspn-sse2 \ > strlen-avx2 \ > @@ -110,7 +107,6 @@ sysdep_routines += \ > strncpy-c \ > strncpy-evex \ > strncpy-sse2-unaligned \ > - strncpy-ssse3 \ > strnlen-avx2 \ > strnlen-avx2-rtm \ > strnlen-evex \ > diff --git a/sysdeps/x86_64/multiarch/ifunc-impl-list.c b/sysdeps/x86_64/multiarch/ifunc-impl-list.c > index 41a04621ad..49ce6860d0 100644 > --- a/sysdeps/x86_64/multiarch/ifunc-impl-list.c > +++ b/sysdeps/x86_64/multiarch/ifunc-impl-list.c > @@ -399,8 +399,6 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, > > /* Support sysdeps/x86_64/multiarch/stpncpy.c. */ > IFUNC_IMPL (i, name, stpncpy, > - IFUNC_IMPL_ADD (array, i, stpncpy, CPU_FEATURE_USABLE (SSSE3), > - __stpncpy_ssse3) > IFUNC_IMPL_ADD (array, i, stpncpy, CPU_FEATURE_USABLE (AVX2), > __stpncpy_avx2) > IFUNC_IMPL_ADD (array, i, stpncpy, > @@ -417,8 +415,6 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, > > /* Support sysdeps/x86_64/multiarch/stpcpy.c. */ > IFUNC_IMPL (i, name, stpcpy, > - IFUNC_IMPL_ADD (array, i, stpcpy, CPU_FEATURE_USABLE (SSSE3), > - __stpcpy_ssse3) > IFUNC_IMPL_ADD (array, i, stpcpy, CPU_FEATURE_USABLE (AVX2), > __stpcpy_avx2) > IFUNC_IMPL_ADD (array, i, stpcpy, > @@ -567,8 +563,6 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, > (CPU_FEATURE_USABLE (AVX512VL) > && CPU_FEATURE_USABLE (AVX512BW)), > __strcpy_evex) > - IFUNC_IMPL_ADD (array, i, strcpy, CPU_FEATURE_USABLE (SSSE3), > - __strcpy_ssse3) > IFUNC_IMPL_ADD (array, i, strcpy, 1, __strcpy_sse2_unaligned) > IFUNC_IMPL_ADD (array, i, strcpy, 1, __strcpy_sse2)) > > @@ -644,8 +638,6 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, > (CPU_FEATURE_USABLE (AVX512VL) > && CPU_FEATURE_USABLE (AVX512BW)), > __strncpy_evex) > - IFUNC_IMPL_ADD (array, i, strncpy, CPU_FEATURE_USABLE (SSSE3), > - __strncpy_ssse3) > IFUNC_IMPL_ADD (array, i, strncpy, 1, > __strncpy_sse2_unaligned) > IFUNC_IMPL_ADD (array, i, strncpy, 1, __strncpy_sse2)) > diff --git a/sysdeps/x86_64/multiarch/stpcpy-ssse3.S b/sysdeps/x86_64/multiarch/stpcpy-ssse3.S > deleted file mode 100644 > index d971c2da38..0000000000 > --- a/sysdeps/x86_64/multiarch/stpcpy-ssse3.S > +++ /dev/null > @@ -1,3 +0,0 @@ > -#define USE_AS_STPCPY > -#define STRCPY __stpcpy_ssse3 > -#include "strcpy-ssse3.S" > diff --git a/sysdeps/x86_64/multiarch/stpncpy-ssse3.S b/sysdeps/x86_64/multiarch/stpncpy-ssse3.S > deleted file mode 100644 > index 14ed16f6b5..0000000000 > --- a/sysdeps/x86_64/multiarch/stpncpy-ssse3.S > +++ /dev/null > @@ -1,4 +0,0 @@ > -#define USE_AS_STPCPY > -#define USE_AS_STRNCPY > -#define STRCPY __stpncpy_ssse3 > -#include "strcpy-ssse3.S" > diff --git a/sysdeps/x86_64/multiarch/strcpy-ssse3.S b/sysdeps/x86_64/multiarch/strcpy-ssse3.S > deleted file mode 100644 > index f617a535cf..0000000000 > --- a/sysdeps/x86_64/multiarch/strcpy-ssse3.S > +++ /dev/null > @@ -1,3550 +0,0 @@ > -/* strcpy with SSSE3 > - Copyright (C) 2011-2022 Free Software Foundation, Inc. > - This file is part of the GNU C Library. > - > - The GNU C Library is free software; you can redistribute it and/or > - modify it under the terms of the GNU Lesser General Public > - License as published by the Free Software Foundation; either > - version 2.1 of the License, or (at your option) any later version. > - > - The GNU C Library is distributed in the hope that it will be useful, > - but WITHOUT ANY WARRANTY; without even the implied warranty of > - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > - Lesser General Public License for more details. > - > - You should have received a copy of the GNU Lesser General Public > - License along with the GNU C Library; if not, see > - <https://www.gnu.org/licenses/>. */ > - > -#if IS_IN (libc) > - > -# ifndef USE_AS_STRCAT > -# include <sysdep.h> > - > -# ifndef STRCPY > -# define STRCPY __strcpy_ssse3 > -# endif > - > - .section .text.ssse3,"ax",@progbits > -ENTRY (STRCPY) > - > - mov %rsi, %rcx > -# ifdef USE_AS_STRNCPY > - mov %RDX_LP, %R8_LP > -# endif > - mov %rdi, %rdx > -# ifdef USE_AS_STRNCPY > - test %R8_LP, %R8_LP > - jz L(Exit0) > - cmp $8, %R8_LP > - jbe L(StrncpyExit8Bytes) > -# endif > - cmpb $0, (%rcx) > - jz L(Exit1) > - cmpb $0, 1(%rcx) > - jz L(Exit2) > - cmpb $0, 2(%rcx) > - jz L(Exit3) > - cmpb $0, 3(%rcx) > - jz L(Exit4) > - cmpb $0, 4(%rcx) > - jz L(Exit5) > - cmpb $0, 5(%rcx) > - jz L(Exit6) > - cmpb $0, 6(%rcx) > - jz L(Exit7) > - cmpb $0, 7(%rcx) > - jz L(Exit8) > -# ifdef USE_AS_STRNCPY > - cmp $16, %r8 > - jb L(StrncpyExit15Bytes) > -# endif > - cmpb $0, 8(%rcx) > - jz L(Exit9) > - cmpb $0, 9(%rcx) > - jz L(Exit10) > - cmpb $0, 10(%rcx) > - jz L(Exit11) > - cmpb $0, 11(%rcx) > - jz L(Exit12) > - cmpb $0, 12(%rcx) > - jz L(Exit13) > - cmpb $0, 13(%rcx) > - jz L(Exit14) > - cmpb $0, 14(%rcx) > - jz L(Exit15) > -# ifdef USE_AS_STRNCPY > - cmp $16, %r8 > - je L(Exit16) > -# endif > - cmpb $0, 15(%rcx) > - jz L(Exit16) > -# endif > - > -# ifdef USE_AS_STRNCPY > - mov %rcx, %rsi > - sub $16, %r8 > - and $0xf, %rsi > - > -/* add 16 bytes rcx_offset to r8 */ > - > - add %rsi, %r8 > -# endif > - lea 16(%rcx), %rsi > - and $-16, %rsi > - pxor %xmm0, %xmm0 > - mov (%rcx), %r9 > - mov %r9, (%rdx) > - pcmpeqb (%rsi), %xmm0 > - mov 8(%rcx), %r9 > - mov %r9, 8(%rdx) > - > -/* convert byte mask in xmm0 to bit mask */ > - > - pmovmskb %xmm0, %rax > - sub %rcx, %rsi > - > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(CopyFrom1To16BytesCase2OrCase3) > -# endif > - test %rax, %rax > - jnz L(CopyFrom1To16Bytes) > - > - mov %rdx, %rax > - lea 16(%rdx), %rdx > - and $-16, %rdx > - sub %rdx, %rax > - > -# ifdef USE_AS_STRNCPY > - add %rax, %rsi > - lea -1(%rsi), %rsi > - and $1<<31, %esi > - test %rsi, %rsi > - jnz L(ContinueCopy) > - lea 16(%r8), %r8 > - > -L(ContinueCopy): > -# endif > - sub %rax, %rcx > - mov %rcx, %rax > - and $0xf, %rax > - mov $0, %rsi > - > -/* case: rcx_offset == rdx_offset */ > - > - jz L(Align16Both) > - > - cmp $8, %rax > - jae L(ShlHigh8) > - cmp $1, %rax > - je L(Shl1) > - cmp $2, %rax > - je L(Shl2) > - cmp $3, %rax > - je L(Shl3) > - cmp $4, %rax > - je L(Shl4) > - cmp $5, %rax > - je L(Shl5) > - cmp $6, %rax > - je L(Shl6) > - jmp L(Shl7) > - > -L(ShlHigh8): > - je L(Shl8) > - cmp $9, %rax > - je L(Shl9) > - cmp $10, %rax > - je L(Shl10) > - cmp $11, %rax > - je L(Shl11) > - cmp $12, %rax > - je L(Shl12) > - cmp $13, %rax > - je L(Shl13) > - cmp $14, %rax > - je L(Shl14) > - jmp L(Shl15) > - > -L(Align16Both): > - movaps (%rcx), %xmm1 > - movaps 16(%rcx), %xmm2 > - movaps %xmm1, (%rdx) > - pcmpeqb %xmm2, %xmm0 > - pmovmskb %xmm0, %rax > - lea 16(%rsi), %rsi > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(CopyFrom1To16BytesCase2OrCase3) > -# endif > - test %rax, %rax > - jnz L(CopyFrom1To16Bytes) > - > - movaps 16(%rcx, %rsi), %xmm3 > - movaps %xmm2, (%rdx, %rsi) > - pcmpeqb %xmm3, %xmm0 > - pmovmskb %xmm0, %rax > - lea 16(%rsi), %rsi > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(CopyFrom1To16BytesCase2OrCase3) > -# endif > - test %rax, %rax > - jnz L(CopyFrom1To16Bytes) > - > - movaps 16(%rcx, %rsi), %xmm4 > - movaps %xmm3, (%rdx, %rsi) > - pcmpeqb %xmm4, %xmm0 > - pmovmskb %xmm0, %rax > - lea 16(%rsi), %rsi > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(CopyFrom1To16BytesCase2OrCase3) > -# endif > - test %rax, %rax > - jnz L(CopyFrom1To16Bytes) > - > - movaps 16(%rcx, %rsi), %xmm1 > - movaps %xmm4, (%rdx, %rsi) > - pcmpeqb %xmm1, %xmm0 > - pmovmskb %xmm0, %rax > - lea 16(%rsi), %rsi > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(CopyFrom1To16BytesCase2OrCase3) > -# endif > - test %rax, %rax > - jnz L(CopyFrom1To16Bytes) > - > - movaps 16(%rcx, %rsi), %xmm2 > - movaps %xmm1, (%rdx, %rsi) > - pcmpeqb %xmm2, %xmm0 > - pmovmskb %xmm0, %rax > - lea 16(%rsi), %rsi > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(CopyFrom1To16BytesCase2OrCase3) > -# endif > - test %rax, %rax > - jnz L(CopyFrom1To16Bytes) > - > - movaps 16(%rcx, %rsi), %xmm3 > - movaps %xmm2, (%rdx, %rsi) > - pcmpeqb %xmm3, %xmm0 > - pmovmskb %xmm0, %rax > - lea 16(%rsi), %rsi > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(CopyFrom1To16BytesCase2OrCase3) > -# endif > - test %rax, %rax > - jnz L(CopyFrom1To16Bytes) > - > - movaps %xmm3, (%rdx, %rsi) > - mov %rcx, %rax > - lea 16(%rcx, %rsi), %rcx > - and $-0x40, %rcx > - sub %rcx, %rax > - sub %rax, %rdx > -# ifdef USE_AS_STRNCPY > - lea 112(%r8, %rax), %r8 > -# endif > - mov $-0x40, %rsi > - > - .p2align 4 > -L(Aligned64Loop): > - movaps (%rcx), %xmm2 > - movaps %xmm2, %xmm4 > - movaps 16(%rcx), %xmm5 > - movaps 32(%rcx), %xmm3 > - movaps %xmm3, %xmm6 > - movaps 48(%rcx), %xmm7 > - pminub %xmm5, %xmm2 > - pminub %xmm7, %xmm3 > - pminub %xmm2, %xmm3 > - pcmpeqb %xmm0, %xmm3 > - pmovmskb %xmm3, %rax > - lea 64(%rdx), %rdx > - lea 64(%rcx), %rcx > -# ifdef USE_AS_STRNCPY > - sub $64, %r8 > - jbe L(StrncpyLeaveCase2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Aligned64Leave) > - movaps %xmm4, -64(%rdx) > - movaps %xmm5, -48(%rdx) > - movaps %xmm6, -32(%rdx) > - movaps %xmm7, -16(%rdx) > - jmp L(Aligned64Loop) > - > -L(Aligned64Leave): > -# ifdef USE_AS_STRNCPY > - lea 48(%r8), %r8 > -# endif > - pcmpeqb %xmm4, %xmm0 > - pmovmskb %xmm0, %rax > - test %rax, %rax > - jnz L(CopyFrom1To16Bytes) > - > - pcmpeqb %xmm5, %xmm0 > -# ifdef USE_AS_STRNCPY > - lea -16(%r8), %r8 > -# endif > - pmovmskb %xmm0, %rax > - movaps %xmm4, -64(%rdx) > - test %rax, %rax > - lea 16(%rsi), %rsi > - jnz L(CopyFrom1To16Bytes) > - > - pcmpeqb %xmm6, %xmm0 > -# ifdef USE_AS_STRNCPY > - lea -16(%r8), %r8 > -# endif > - pmovmskb %xmm0, %rax > - movaps %xmm5, -48(%rdx) > - test %rax, %rax > - lea 16(%rsi), %rsi > - jnz L(CopyFrom1To16Bytes) > - > - movaps %xmm6, -32(%rdx) > - pcmpeqb %xmm7, %xmm0 > -# ifdef USE_AS_STRNCPY > - lea -16(%r8), %r8 > -# endif > - pmovmskb %xmm0, %rax > - lea 16(%rsi), %rsi > - jmp L(CopyFrom1To16Bytes) > - > - .p2align 4 > -L(Shl1): > - movaps -1(%rcx), %xmm1 > - movaps 15(%rcx), %xmm2 > -L(Shl1Start): > - pcmpeqb %xmm2, %xmm0 > - pmovmskb %xmm0, %rax > - movaps %xmm2, %xmm3 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit1Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl1LoopExit) > - > - palignr $1, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 31(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > - movaps %xmm2, %xmm1 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit1Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl1LoopExit) > - > - palignr $1, %xmm3, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 31(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > - movaps %xmm2, %xmm3 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit1Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl1LoopExit) > - > - palignr $1, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 31(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit1Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl1LoopExit) > - > - palignr $1, %xmm3, %xmm2 > - movaps %xmm2, (%rdx) > - lea 31(%rcx), %rcx > - lea 16(%rdx), %rdx > - > - mov %rcx, %rax > - and $-0x40, %rcx > - sub %rcx, %rax > - lea -15(%rcx), %rcx > - sub %rax, %rdx > -# ifdef USE_AS_STRNCPY > - add %rax, %r8 > -# endif > - movaps -1(%rcx), %xmm1 > - > -/* 64 bytes loop */ > - .p2align 4 > -L(Shl1LoopStart): > - movaps 15(%rcx), %xmm2 > - movaps 31(%rcx), %xmm3 > - movaps %xmm3, %xmm6 > - movaps 47(%rcx), %xmm4 > - movaps %xmm4, %xmm7 > - movaps 63(%rcx), %xmm5 > - pminub %xmm2, %xmm6 > - pminub %xmm5, %xmm7 > - pminub %xmm6, %xmm7 > - pcmpeqb %xmm0, %xmm7 > - pmovmskb %xmm7, %rax > - movaps %xmm5, %xmm7 > - palignr $1, %xmm4, %xmm5 > - test %rax, %rax > - palignr $1, %xmm3, %xmm4 > - jnz L(Shl1Start) > -# ifdef USE_AS_STRNCPY > - sub $64, %r8 > - jbe L(StrncpyLeave1) > -# endif > - palignr $1, %xmm2, %xmm3 > - lea 64(%rcx), %rcx > - palignr $1, %xmm1, %xmm2 > - movaps %xmm7, %xmm1 > - movaps %xmm5, 48(%rdx) > - movaps %xmm4, 32(%rdx) > - movaps %xmm3, 16(%rdx) > - movaps %xmm2, (%rdx) > - lea 64(%rdx), %rdx > - jmp L(Shl1LoopStart) > - > -L(Shl1LoopExit): > - movdqu -1(%rcx), %xmm1 > - mov $15, %rsi > - movdqu %xmm1, -1(%rdx) > - jmp L(CopyFrom1To16Bytes) > - > - .p2align 4 > -L(Shl2): > - movaps -2(%rcx), %xmm1 > - movaps 14(%rcx), %xmm2 > -L(Shl2Start): > - pcmpeqb %xmm2, %xmm0 > - pmovmskb %xmm0, %rax > - movaps %xmm2, %xmm3 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit2Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl2LoopExit) > - > - palignr $2, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 30(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > - movaps %xmm2, %xmm1 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit2Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl2LoopExit) > - > - palignr $2, %xmm3, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 30(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > - movaps %xmm2, %xmm3 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit2Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl2LoopExit) > - > - palignr $2, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 30(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit2Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl2LoopExit) > - > - palignr $2, %xmm3, %xmm2 > - movaps %xmm2, (%rdx) > - lea 30(%rcx), %rcx > - lea 16(%rdx), %rdx > - > - mov %rcx, %rax > - and $-0x40, %rcx > - sub %rcx, %rax > - lea -14(%rcx), %rcx > - sub %rax, %rdx > -# ifdef USE_AS_STRNCPY > - add %rax, %r8 > -# endif > - movaps -2(%rcx), %xmm1 > - > -/* 64 bytes loop */ > - .p2align 4 > -L(Shl2LoopStart): > - movaps 14(%rcx), %xmm2 > - movaps 30(%rcx), %xmm3 > - movaps %xmm3, %xmm6 > - movaps 46(%rcx), %xmm4 > - movaps %xmm4, %xmm7 > - movaps 62(%rcx), %xmm5 > - pminub %xmm2, %xmm6 > - pminub %xmm5, %xmm7 > - pminub %xmm6, %xmm7 > - pcmpeqb %xmm0, %xmm7 > - pmovmskb %xmm7, %rax > - movaps %xmm5, %xmm7 > - palignr $2, %xmm4, %xmm5 > - test %rax, %rax > - palignr $2, %xmm3, %xmm4 > - jnz L(Shl2Start) > -# ifdef USE_AS_STRNCPY > - sub $64, %r8 > - jbe L(StrncpyLeave2) > -# endif > - palignr $2, %xmm2, %xmm3 > - lea 64(%rcx), %rcx > - palignr $2, %xmm1, %xmm2 > - movaps %xmm7, %xmm1 > - movaps %xmm5, 48(%rdx) > - movaps %xmm4, 32(%rdx) > - movaps %xmm3, 16(%rdx) > - movaps %xmm2, (%rdx) > - lea 64(%rdx), %rdx > - jmp L(Shl2LoopStart) > - > -L(Shl2LoopExit): > - movdqu -2(%rcx), %xmm1 > - mov $14, %rsi > - movdqu %xmm1, -2(%rdx) > - jmp L(CopyFrom1To16Bytes) > - > - .p2align 4 > -L(Shl3): > - movaps -3(%rcx), %xmm1 > - movaps 13(%rcx), %xmm2 > -L(Shl3Start): > - pcmpeqb %xmm2, %xmm0 > - pmovmskb %xmm0, %rax > - movaps %xmm2, %xmm3 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit3Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl3LoopExit) > - > - palignr $3, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 29(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > - movaps %xmm2, %xmm1 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit3Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl3LoopExit) > - > - palignr $3, %xmm3, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 29(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > - movaps %xmm2, %xmm3 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit3Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl3LoopExit) > - > - palignr $3, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 29(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit3Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl3LoopExit) > - > - palignr $3, %xmm3, %xmm2 > - movaps %xmm2, (%rdx) > - lea 29(%rcx), %rcx > - lea 16(%rdx), %rdx > - > - mov %rcx, %rax > - and $-0x40, %rcx > - sub %rcx, %rax > - lea -13(%rcx), %rcx > - sub %rax, %rdx > -# ifdef USE_AS_STRNCPY > - add %rax, %r8 > -# endif > - movaps -3(%rcx), %xmm1 > - > -/* 64 bytes loop */ > - .p2align 4 > -L(Shl3LoopStart): > - movaps 13(%rcx), %xmm2 > - movaps 29(%rcx), %xmm3 > - movaps %xmm3, %xmm6 > - movaps 45(%rcx), %xmm4 > - movaps %xmm4, %xmm7 > - movaps 61(%rcx), %xmm5 > - pminub %xmm2, %xmm6 > - pminub %xmm5, %xmm7 > - pminub %xmm6, %xmm7 > - pcmpeqb %xmm0, %xmm7 > - pmovmskb %xmm7, %rax > - movaps %xmm5, %xmm7 > - palignr $3, %xmm4, %xmm5 > - test %rax, %rax > - palignr $3, %xmm3, %xmm4 > - jnz L(Shl3Start) > -# ifdef USE_AS_STRNCPY > - sub $64, %r8 > - jbe L(StrncpyLeave3) > -# endif > - palignr $3, %xmm2, %xmm3 > - lea 64(%rcx), %rcx > - palignr $3, %xmm1, %xmm2 > - movaps %xmm7, %xmm1 > - movaps %xmm5, 48(%rdx) > - movaps %xmm4, 32(%rdx) > - movaps %xmm3, 16(%rdx) > - movaps %xmm2, (%rdx) > - lea 64(%rdx), %rdx > - jmp L(Shl3LoopStart) > - > -L(Shl3LoopExit): > - movdqu -3(%rcx), %xmm1 > - mov $13, %rsi > - movdqu %xmm1, -3(%rdx) > - jmp L(CopyFrom1To16Bytes) > - > - .p2align 4 > -L(Shl4): > - movaps -4(%rcx), %xmm1 > - movaps 12(%rcx), %xmm2 > -L(Shl4Start): > - pcmpeqb %xmm2, %xmm0 > - pmovmskb %xmm0, %rax > - movaps %xmm2, %xmm3 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit4Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl4LoopExit) > - > - palignr $4, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 28(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > - movaps %xmm2, %xmm1 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit4Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl4LoopExit) > - > - palignr $4, %xmm3, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 28(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > - movaps %xmm2, %xmm3 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit4Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl4LoopExit) > - > - palignr $4, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 28(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit4Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl4LoopExit) > - > - palignr $4, %xmm3, %xmm2 > - movaps %xmm2, (%rdx) > - lea 28(%rcx), %rcx > - lea 16(%rdx), %rdx > - > - mov %rcx, %rax > - and $-0x40, %rcx > - sub %rcx, %rax > - lea -12(%rcx), %rcx > - sub %rax, %rdx > -# ifdef USE_AS_STRNCPY > - add %rax, %r8 > -# endif > - movaps -4(%rcx), %xmm1 > - > -/* 64 bytes loop */ > - .p2align 4 > -L(Shl4LoopStart): > - movaps 12(%rcx), %xmm2 > - movaps 28(%rcx), %xmm3 > - movaps %xmm3, %xmm6 > - movaps 44(%rcx), %xmm4 > - movaps %xmm4, %xmm7 > - movaps 60(%rcx), %xmm5 > - pminub %xmm2, %xmm6 > - pminub %xmm5, %xmm7 > - pminub %xmm6, %xmm7 > - pcmpeqb %xmm0, %xmm7 > - pmovmskb %xmm7, %rax > - movaps %xmm5, %xmm7 > - palignr $4, %xmm4, %xmm5 > - test %rax, %rax > - palignr $4, %xmm3, %xmm4 > - jnz L(Shl4Start) > -# ifdef USE_AS_STRNCPY > - sub $64, %r8 > - jbe L(StrncpyLeave4) > -# endif > - palignr $4, %xmm2, %xmm3 > - lea 64(%rcx), %rcx > - palignr $4, %xmm1, %xmm2 > - movaps %xmm7, %xmm1 > - movaps %xmm5, 48(%rdx) > - movaps %xmm4, 32(%rdx) > - movaps %xmm3, 16(%rdx) > - movaps %xmm2, (%rdx) > - lea 64(%rdx), %rdx > - jmp L(Shl4LoopStart) > - > -L(Shl4LoopExit): > - movdqu -4(%rcx), %xmm1 > - mov $12, %rsi > - movdqu %xmm1, -4(%rdx) > - jmp L(CopyFrom1To16Bytes) > - > - .p2align 4 > -L(Shl5): > - movaps -5(%rcx), %xmm1 > - movaps 11(%rcx), %xmm2 > -L(Shl5Start): > - pcmpeqb %xmm2, %xmm0 > - pmovmskb %xmm0, %rax > - movaps %xmm2, %xmm3 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit5Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl5LoopExit) > - > - palignr $5, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 27(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > - movaps %xmm2, %xmm1 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit5Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl5LoopExit) > - > - palignr $5, %xmm3, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 27(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > - movaps %xmm2, %xmm3 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit5Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl5LoopExit) > - > - palignr $5, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 27(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit5Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl5LoopExit) > - > - palignr $5, %xmm3, %xmm2 > - movaps %xmm2, (%rdx) > - lea 27(%rcx), %rcx > - lea 16(%rdx), %rdx > - > - mov %rcx, %rax > - and $-0x40, %rcx > - sub %rcx, %rax > - lea -11(%rcx), %rcx > - sub %rax, %rdx > -# ifdef USE_AS_STRNCPY > - add %rax, %r8 > -# endif > - movaps -5(%rcx), %xmm1 > - > -/* 64 bytes loop */ > - .p2align 4 > -L(Shl5LoopStart): > - movaps 11(%rcx), %xmm2 > - movaps 27(%rcx), %xmm3 > - movaps %xmm3, %xmm6 > - movaps 43(%rcx), %xmm4 > - movaps %xmm4, %xmm7 > - movaps 59(%rcx), %xmm5 > - pminub %xmm2, %xmm6 > - pminub %xmm5, %xmm7 > - pminub %xmm6, %xmm7 > - pcmpeqb %xmm0, %xmm7 > - pmovmskb %xmm7, %rax > - movaps %xmm5, %xmm7 > - palignr $5, %xmm4, %xmm5 > - test %rax, %rax > - palignr $5, %xmm3, %xmm4 > - jnz L(Shl5Start) > -# ifdef USE_AS_STRNCPY > - sub $64, %r8 > - jbe L(StrncpyLeave5) > -# endif > - palignr $5, %xmm2, %xmm3 > - lea 64(%rcx), %rcx > - palignr $5, %xmm1, %xmm2 > - movaps %xmm7, %xmm1 > - movaps %xmm5, 48(%rdx) > - movaps %xmm4, 32(%rdx) > - movaps %xmm3, 16(%rdx) > - movaps %xmm2, (%rdx) > - lea 64(%rdx), %rdx > - jmp L(Shl5LoopStart) > - > -L(Shl5LoopExit): > - movdqu -5(%rcx), %xmm1 > - mov $11, %rsi > - movdqu %xmm1, -5(%rdx) > - jmp L(CopyFrom1To16Bytes) > - > - .p2align 4 > -L(Shl6): > - movaps -6(%rcx), %xmm1 > - movaps 10(%rcx), %xmm2 > -L(Shl6Start): > - pcmpeqb %xmm2, %xmm0 > - pmovmskb %xmm0, %rax > - movaps %xmm2, %xmm3 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit6Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl6LoopExit) > - > - palignr $6, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 26(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > - movaps %xmm2, %xmm1 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit6Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl6LoopExit) > - > - palignr $6, %xmm3, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 26(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > - movaps %xmm2, %xmm3 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit6Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl6LoopExit) > - > - palignr $6, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 26(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit6Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl6LoopExit) > - > - palignr $6, %xmm3, %xmm2 > - movaps %xmm2, (%rdx) > - lea 26(%rcx), %rcx > - lea 16(%rdx), %rdx > - > - mov %rcx, %rax > - and $-0x40, %rcx > - sub %rcx, %rax > - lea -10(%rcx), %rcx > - sub %rax, %rdx > -# ifdef USE_AS_STRNCPY > - add %rax, %r8 > -# endif > - movaps -6(%rcx), %xmm1 > - > -/* 64 bytes loop */ > - .p2align 4 > -L(Shl6LoopStart): > - movaps 10(%rcx), %xmm2 > - movaps 26(%rcx), %xmm3 > - movaps %xmm3, %xmm6 > - movaps 42(%rcx), %xmm4 > - movaps %xmm4, %xmm7 > - movaps 58(%rcx), %xmm5 > - pminub %xmm2, %xmm6 > - pminub %xmm5, %xmm7 > - pminub %xmm6, %xmm7 > - pcmpeqb %xmm0, %xmm7 > - pmovmskb %xmm7, %rax > - movaps %xmm5, %xmm7 > - palignr $6, %xmm4, %xmm5 > - test %rax, %rax > - palignr $6, %xmm3, %xmm4 > - jnz L(Shl6Start) > -# ifdef USE_AS_STRNCPY > - sub $64, %r8 > - jbe L(StrncpyLeave6) > -# endif > - palignr $6, %xmm2, %xmm3 > - lea 64(%rcx), %rcx > - palignr $6, %xmm1, %xmm2 > - movaps %xmm7, %xmm1 > - movaps %xmm5, 48(%rdx) > - movaps %xmm4, 32(%rdx) > - movaps %xmm3, 16(%rdx) > - movaps %xmm2, (%rdx) > - lea 64(%rdx), %rdx > - jmp L(Shl6LoopStart) > - > -L(Shl6LoopExit): > - mov (%rcx), %r9 > - mov 6(%rcx), %esi > - mov %r9, (%rdx) > - mov %esi, 6(%rdx) > - mov $10, %rsi > - jmp L(CopyFrom1To16Bytes) > - > - .p2align 4 > -L(Shl7): > - movaps -7(%rcx), %xmm1 > - movaps 9(%rcx), %xmm2 > -L(Shl7Start): > - pcmpeqb %xmm2, %xmm0 > - pmovmskb %xmm0, %rax > - movaps %xmm2, %xmm3 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit7Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl7LoopExit) > - > - palignr $7, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 25(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > - movaps %xmm2, %xmm1 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit7Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl7LoopExit) > - > - palignr $7, %xmm3, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 25(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > - movaps %xmm2, %xmm3 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit7Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl7LoopExit) > - > - palignr $7, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 25(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit7Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl7LoopExit) > - > - palignr $7, %xmm3, %xmm2 > - movaps %xmm2, (%rdx) > - lea 25(%rcx), %rcx > - lea 16(%rdx), %rdx > - > - mov %rcx, %rax > - and $-0x40, %rcx > - sub %rcx, %rax > - lea -9(%rcx), %rcx > - sub %rax, %rdx > -# ifdef USE_AS_STRNCPY > - add %rax, %r8 > -# endif > - movaps -7(%rcx), %xmm1 > - > -/* 64 bytes loop */ > - .p2align 4 > -L(Shl7LoopStart): > - movaps 9(%rcx), %xmm2 > - movaps 25(%rcx), %xmm3 > - movaps %xmm3, %xmm6 > - movaps 41(%rcx), %xmm4 > - movaps %xmm4, %xmm7 > - movaps 57(%rcx), %xmm5 > - pminub %xmm2, %xmm6 > - pminub %xmm5, %xmm7 > - pminub %xmm6, %xmm7 > - pcmpeqb %xmm0, %xmm7 > - pmovmskb %xmm7, %rax > - movaps %xmm5, %xmm7 > - palignr $7, %xmm4, %xmm5 > - test %rax, %rax > - palignr $7, %xmm3, %xmm4 > - jnz L(Shl7Start) > -# ifdef USE_AS_STRNCPY > - sub $64, %r8 > - jbe L(StrncpyLeave7) > -# endif > - palignr $7, %xmm2, %xmm3 > - lea 64(%rcx), %rcx > - palignr $7, %xmm1, %xmm2 > - movaps %xmm7, %xmm1 > - movaps %xmm5, 48(%rdx) > - movaps %xmm4, 32(%rdx) > - movaps %xmm3, 16(%rdx) > - movaps %xmm2, (%rdx) > - lea 64(%rdx), %rdx > - jmp L(Shl7LoopStart) > - > -L(Shl7LoopExit): > - mov (%rcx), %r9 > - mov 5(%rcx), %esi > - mov %r9, (%rdx) > - mov %esi, 5(%rdx) > - mov $9, %rsi > - jmp L(CopyFrom1To16Bytes) > - > - .p2align 4 > -L(Shl8): > - movaps -8(%rcx), %xmm1 > - movaps 8(%rcx), %xmm2 > -L(Shl8Start): > - pcmpeqb %xmm2, %xmm0 > - pmovmskb %xmm0, %rax > - movaps %xmm2, %xmm3 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit8Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl8LoopExit) > - > - palignr $8, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 24(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > - movaps %xmm2, %xmm1 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit8Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl8LoopExit) > - > - palignr $8, %xmm3, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 24(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > - movaps %xmm2, %xmm3 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit8Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl8LoopExit) > - > - palignr $8, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 24(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit8Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl8LoopExit) > - > - palignr $8, %xmm3, %xmm2 > - movaps %xmm2, (%rdx) > - lea 24(%rcx), %rcx > - lea 16(%rdx), %rdx > - > - mov %rcx, %rax > - and $-0x40, %rcx > - sub %rcx, %rax > - lea -8(%rcx), %rcx > - sub %rax, %rdx > -# ifdef USE_AS_STRNCPY > - add %rax, %r8 > -# endif > - movaps -8(%rcx), %xmm1 > - > -/* 64 bytes loop */ > - .p2align 4 > -L(Shl8LoopStart): > - movaps 8(%rcx), %xmm2 > - movaps 24(%rcx), %xmm3 > - movaps %xmm3, %xmm6 > - movaps 40(%rcx), %xmm4 > - movaps %xmm4, %xmm7 > - movaps 56(%rcx), %xmm5 > - pminub %xmm2, %xmm6 > - pminub %xmm5, %xmm7 > - pminub %xmm6, %xmm7 > - pcmpeqb %xmm0, %xmm7 > - pmovmskb %xmm7, %rax > - movaps %xmm5, %xmm7 > - palignr $8, %xmm4, %xmm5 > - test %rax, %rax > - palignr $8, %xmm3, %xmm4 > - jnz L(Shl8Start) > -# ifdef USE_AS_STRNCPY > - sub $64, %r8 > - jbe L(StrncpyLeave8) > -# endif > - palignr $8, %xmm2, %xmm3 > - lea 64(%rcx), %rcx > - palignr $8, %xmm1, %xmm2 > - movaps %xmm7, %xmm1 > - movaps %xmm5, 48(%rdx) > - movaps %xmm4, 32(%rdx) > - movaps %xmm3, 16(%rdx) > - movaps %xmm2, (%rdx) > - lea 64(%rdx), %rdx > - jmp L(Shl8LoopStart) > - > -L(Shl8LoopExit): > - mov (%rcx), %r9 > - mov $8, %rsi > - mov %r9, (%rdx) > - jmp L(CopyFrom1To16Bytes) > - > - .p2align 4 > -L(Shl9): > - movaps -9(%rcx), %xmm1 > - movaps 7(%rcx), %xmm2 > -L(Shl9Start): > - pcmpeqb %xmm2, %xmm0 > - pmovmskb %xmm0, %rax > - movaps %xmm2, %xmm3 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit9Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl9LoopExit) > - > - palignr $9, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 23(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > - movaps %xmm2, %xmm1 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit9Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl9LoopExit) > - > - palignr $9, %xmm3, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 23(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > - movaps %xmm2, %xmm3 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit9Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl9LoopExit) > - > - palignr $9, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 23(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit9Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl9LoopExit) > - > - palignr $9, %xmm3, %xmm2 > - movaps %xmm2, (%rdx) > - lea 23(%rcx), %rcx > - lea 16(%rdx), %rdx > - > - mov %rcx, %rax > - and $-0x40, %rcx > - sub %rcx, %rax > - lea -7(%rcx), %rcx > - sub %rax, %rdx > -# ifdef USE_AS_STRNCPY > - add %rax, %r8 > -# endif > - movaps -9(%rcx), %xmm1 > - > -/* 64 bytes loop */ > - .p2align 4 > -L(Shl9LoopStart): > - movaps 7(%rcx), %xmm2 > - movaps 23(%rcx), %xmm3 > - movaps %xmm3, %xmm6 > - movaps 39(%rcx), %xmm4 > - movaps %xmm4, %xmm7 > - movaps 55(%rcx), %xmm5 > - pminub %xmm2, %xmm6 > - pminub %xmm5, %xmm7 > - pminub %xmm6, %xmm7 > - pcmpeqb %xmm0, %xmm7 > - pmovmskb %xmm7, %rax > - movaps %xmm5, %xmm7 > - palignr $9, %xmm4, %xmm5 > - test %rax, %rax > - palignr $9, %xmm3, %xmm4 > - jnz L(Shl9Start) > -# ifdef USE_AS_STRNCPY > - sub $64, %r8 > - jbe L(StrncpyLeave9) > -# endif > - palignr $9, %xmm2, %xmm3 > - lea 64(%rcx), %rcx > - palignr $9, %xmm1, %xmm2 > - movaps %xmm7, %xmm1 > - movaps %xmm5, 48(%rdx) > - movaps %xmm4, 32(%rdx) > - movaps %xmm3, 16(%rdx) > - movaps %xmm2, (%rdx) > - lea 64(%rdx), %rdx > - jmp L(Shl9LoopStart) > - > -L(Shl9LoopExit): > - mov -1(%rcx), %r9 > - mov $7, %rsi > - mov %r9, -1(%rdx) > - jmp L(CopyFrom1To16Bytes) > - > - .p2align 4 > -L(Shl10): > - movaps -10(%rcx), %xmm1 > - movaps 6(%rcx), %xmm2 > -L(Shl10Start): > - pcmpeqb %xmm2, %xmm0 > - pmovmskb %xmm0, %rax > - movaps %xmm2, %xmm3 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit10Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl10LoopExit) > - > - palignr $10, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 22(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > - movaps %xmm2, %xmm1 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit10Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl10LoopExit) > - > - palignr $10, %xmm3, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 22(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > - movaps %xmm2, %xmm3 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit10Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl10LoopExit) > - > - palignr $10, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 22(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit10Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl10LoopExit) > - > - palignr $10, %xmm3, %xmm2 > - movaps %xmm2, (%rdx) > - lea 22(%rcx), %rcx > - lea 16(%rdx), %rdx > - > - mov %rcx, %rax > - and $-0x40, %rcx > - sub %rcx, %rax > - lea -6(%rcx), %rcx > - sub %rax, %rdx > -# ifdef USE_AS_STRNCPY > - add %rax, %r8 > -# endif > - movaps -10(%rcx), %xmm1 > - > -/* 64 bytes loop */ > - .p2align 4 > -L(Shl10LoopStart): > - movaps 6(%rcx), %xmm2 > - movaps 22(%rcx), %xmm3 > - movaps %xmm3, %xmm6 > - movaps 38(%rcx), %xmm4 > - movaps %xmm4, %xmm7 > - movaps 54(%rcx), %xmm5 > - pminub %xmm2, %xmm6 > - pminub %xmm5, %xmm7 > - pminub %xmm6, %xmm7 > - pcmpeqb %xmm0, %xmm7 > - pmovmskb %xmm7, %rax > - movaps %xmm5, %xmm7 > - palignr $10, %xmm4, %xmm5 > - test %rax, %rax > - palignr $10, %xmm3, %xmm4 > - jnz L(Shl10Start) > -# ifdef USE_AS_STRNCPY > - sub $64, %r8 > - jbe L(StrncpyLeave10) > -# endif > - palignr $10, %xmm2, %xmm3 > - lea 64(%rcx), %rcx > - palignr $10, %xmm1, %xmm2 > - movaps %xmm7, %xmm1 > - movaps %xmm5, 48(%rdx) > - movaps %xmm4, 32(%rdx) > - movaps %xmm3, 16(%rdx) > - movaps %xmm2, (%rdx) > - lea 64(%rdx), %rdx > - jmp L(Shl10LoopStart) > - > -L(Shl10LoopExit): > - mov -2(%rcx), %r9 > - mov $6, %rsi > - mov %r9, -2(%rdx) > - jmp L(CopyFrom1To16Bytes) > - > - .p2align 4 > -L(Shl11): > - movaps -11(%rcx), %xmm1 > - movaps 5(%rcx), %xmm2 > -L(Shl11Start): > - pcmpeqb %xmm2, %xmm0 > - pmovmskb %xmm0, %rax > - movaps %xmm2, %xmm3 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit11Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl11LoopExit) > - > - palignr $11, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 21(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > - movaps %xmm2, %xmm1 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit11Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl11LoopExit) > - > - palignr $11, %xmm3, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 21(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > - movaps %xmm2, %xmm3 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit11Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl11LoopExit) > - > - palignr $11, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 21(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit11Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl11LoopExit) > - > - palignr $11, %xmm3, %xmm2 > - movaps %xmm2, (%rdx) > - lea 21(%rcx), %rcx > - lea 16(%rdx), %rdx > - > - mov %rcx, %rax > - and $-0x40, %rcx > - sub %rcx, %rax > - lea -5(%rcx), %rcx > - sub %rax, %rdx > -# ifdef USE_AS_STRNCPY > - add %rax, %r8 > -# endif > - movaps -11(%rcx), %xmm1 > - > -/* 64 bytes loop */ > - .p2align 4 > -L(Shl11LoopStart): > - movaps 5(%rcx), %xmm2 > - movaps 21(%rcx), %xmm3 > - movaps %xmm3, %xmm6 > - movaps 37(%rcx), %xmm4 > - movaps %xmm4, %xmm7 > - movaps 53(%rcx), %xmm5 > - pminub %xmm2, %xmm6 > - pminub %xmm5, %xmm7 > - pminub %xmm6, %xmm7 > - pcmpeqb %xmm0, %xmm7 > - pmovmskb %xmm7, %rax > - movaps %xmm5, %xmm7 > - palignr $11, %xmm4, %xmm5 > - test %rax, %rax > - palignr $11, %xmm3, %xmm4 > - jnz L(Shl11Start) > -# ifdef USE_AS_STRNCPY > - sub $64, %r8 > - jbe L(StrncpyLeave11) > -# endif > - palignr $11, %xmm2, %xmm3 > - lea 64(%rcx), %rcx > - palignr $11, %xmm1, %xmm2 > - movaps %xmm7, %xmm1 > - movaps %xmm5, 48(%rdx) > - movaps %xmm4, 32(%rdx) > - movaps %xmm3, 16(%rdx) > - movaps %xmm2, (%rdx) > - lea 64(%rdx), %rdx > - jmp L(Shl11LoopStart) > - > -L(Shl11LoopExit): > - mov -3(%rcx), %r9 > - mov $5, %rsi > - mov %r9, -3(%rdx) > - jmp L(CopyFrom1To16Bytes) > - > - .p2align 4 > -L(Shl12): > - movaps -12(%rcx), %xmm1 > - movaps 4(%rcx), %xmm2 > -L(Shl12Start): > - pcmpeqb %xmm2, %xmm0 > - pmovmskb %xmm0, %rax > - movaps %xmm2, %xmm3 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit12Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl12LoopExit) > - > - palignr $12, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 20(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > - movaps %xmm2, %xmm1 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit12Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl12LoopExit) > - > - palignr $12, %xmm3, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 20(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > - movaps %xmm2, %xmm3 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit12Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl12LoopExit) > - > - palignr $12, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 20(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit12Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl12LoopExit) > - > - palignr $12, %xmm3, %xmm2 > - movaps %xmm2, (%rdx) > - lea 20(%rcx), %rcx > - lea 16(%rdx), %rdx > - > - mov %rcx, %rax > - and $-0x40, %rcx > - sub %rcx, %rax > - lea -4(%rcx), %rcx > - sub %rax, %rdx > -# ifdef USE_AS_STRNCPY > - add %rax, %r8 > -# endif > - movaps -12(%rcx), %xmm1 > - > -/* 64 bytes loop */ > - .p2align 4 > -L(Shl12LoopStart): > - movaps 4(%rcx), %xmm2 > - movaps 20(%rcx), %xmm3 > - movaps %xmm3, %xmm6 > - movaps 36(%rcx), %xmm4 > - movaps %xmm4, %xmm7 > - movaps 52(%rcx), %xmm5 > - pminub %xmm2, %xmm6 > - pminub %xmm5, %xmm7 > - pminub %xmm6, %xmm7 > - pcmpeqb %xmm0, %xmm7 > - pmovmskb %xmm7, %rax > - movaps %xmm5, %xmm7 > - palignr $12, %xmm4, %xmm5 > - test %rax, %rax > - palignr $12, %xmm3, %xmm4 > - jnz L(Shl12Start) > -# ifdef USE_AS_STRNCPY > - sub $64, %r8 > - jbe L(StrncpyLeave12) > -# endif > - palignr $12, %xmm2, %xmm3 > - lea 64(%rcx), %rcx > - palignr $12, %xmm1, %xmm2 > - movaps %xmm7, %xmm1 > - movaps %xmm5, 48(%rdx) > - movaps %xmm4, 32(%rdx) > - movaps %xmm3, 16(%rdx) > - movaps %xmm2, (%rdx) > - lea 64(%rdx), %rdx > - jmp L(Shl12LoopStart) > - > -L(Shl12LoopExit): > - mov (%rcx), %r9d > - mov $4, %rsi > - mov %r9d, (%rdx) > - jmp L(CopyFrom1To16Bytes) > - > - .p2align 4 > -L(Shl13): > - movaps -13(%rcx), %xmm1 > - movaps 3(%rcx), %xmm2 > -L(Shl13Start): > - pcmpeqb %xmm2, %xmm0 > - pmovmskb %xmm0, %rax > - movaps %xmm2, %xmm3 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit13Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl13LoopExit) > - > - palignr $13, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 19(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > - movaps %xmm2, %xmm1 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit13Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl13LoopExit) > - > - palignr $13, %xmm3, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 19(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > - movaps %xmm2, %xmm3 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit13Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl13LoopExit) > - > - palignr $13, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 19(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit13Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl13LoopExit) > - > - palignr $13, %xmm3, %xmm2 > - movaps %xmm2, (%rdx) > - lea 19(%rcx), %rcx > - lea 16(%rdx), %rdx > - > - mov %rcx, %rax > - and $-0x40, %rcx > - sub %rcx, %rax > - lea -3(%rcx), %rcx > - sub %rax, %rdx > -# ifdef USE_AS_STRNCPY > - add %rax, %r8 > -# endif > - movaps -13(%rcx), %xmm1 > - > -/* 64 bytes loop */ > - .p2align 4 > -L(Shl13LoopStart): > - movaps 3(%rcx), %xmm2 > - movaps 19(%rcx), %xmm3 > - movaps %xmm3, %xmm6 > - movaps 35(%rcx), %xmm4 > - movaps %xmm4, %xmm7 > - movaps 51(%rcx), %xmm5 > - pminub %xmm2, %xmm6 > - pminub %xmm5, %xmm7 > - pminub %xmm6, %xmm7 > - pcmpeqb %xmm0, %xmm7 > - pmovmskb %xmm7, %rax > - movaps %xmm5, %xmm7 > - palignr $13, %xmm4, %xmm5 > - test %rax, %rax > - palignr $13, %xmm3, %xmm4 > - jnz L(Shl13Start) > -# ifdef USE_AS_STRNCPY > - sub $64, %r8 > - jbe L(StrncpyLeave13) > -# endif > - palignr $13, %xmm2, %xmm3 > - lea 64(%rcx), %rcx > - palignr $13, %xmm1, %xmm2 > - movaps %xmm7, %xmm1 > - movaps %xmm5, 48(%rdx) > - movaps %xmm4, 32(%rdx) > - movaps %xmm3, 16(%rdx) > - movaps %xmm2, (%rdx) > - lea 64(%rdx), %rdx > - jmp L(Shl13LoopStart) > - > -L(Shl13LoopExit): > - mov -1(%rcx), %r9d > - mov $3, %rsi > - mov %r9d, -1(%rdx) > - jmp L(CopyFrom1To16Bytes) > - > - .p2align 4 > -L(Shl14): > - movaps -14(%rcx), %xmm1 > - movaps 2(%rcx), %xmm2 > -L(Shl14Start): > - pcmpeqb %xmm2, %xmm0 > - pmovmskb %xmm0, %rax > - movaps %xmm2, %xmm3 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit14Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl14LoopExit) > - > - palignr $14, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 18(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > - movaps %xmm2, %xmm1 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit14Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl14LoopExit) > - > - palignr $14, %xmm3, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 18(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > - movaps %xmm2, %xmm3 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit14Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl14LoopExit) > - > - palignr $14, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 18(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit14Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl14LoopExit) > - > - palignr $14, %xmm3, %xmm2 > - movaps %xmm2, (%rdx) > - lea 18(%rcx), %rcx > - lea 16(%rdx), %rdx > - > - mov %rcx, %rax > - and $-0x40, %rcx > - sub %rcx, %rax > - lea -2(%rcx), %rcx > - sub %rax, %rdx > -# ifdef USE_AS_STRNCPY > - add %rax, %r8 > -# endif > - movaps -14(%rcx), %xmm1 > - > -/* 64 bytes loop */ > - .p2align 4 > -L(Shl14LoopStart): > - movaps 2(%rcx), %xmm2 > - movaps 18(%rcx), %xmm3 > - movaps %xmm3, %xmm6 > - movaps 34(%rcx), %xmm4 > - movaps %xmm4, %xmm7 > - movaps 50(%rcx), %xmm5 > - pminub %xmm2, %xmm6 > - pminub %xmm5, %xmm7 > - pminub %xmm6, %xmm7 > - pcmpeqb %xmm0, %xmm7 > - pmovmskb %xmm7, %rax > - movaps %xmm5, %xmm7 > - palignr $14, %xmm4, %xmm5 > - test %rax, %rax > - palignr $14, %xmm3, %xmm4 > - jnz L(Shl14Start) > -# ifdef USE_AS_STRNCPY > - sub $64, %r8 > - jbe L(StrncpyLeave14) > -# endif > - palignr $14, %xmm2, %xmm3 > - lea 64(%rcx), %rcx > - palignr $14, %xmm1, %xmm2 > - movaps %xmm7, %xmm1 > - movaps %xmm5, 48(%rdx) > - movaps %xmm4, 32(%rdx) > - movaps %xmm3, 16(%rdx) > - movaps %xmm2, (%rdx) > - lea 64(%rdx), %rdx > - jmp L(Shl14LoopStart) > - > -L(Shl14LoopExit): > - mov -2(%rcx), %r9d > - mov $2, %rsi > - mov %r9d, -2(%rdx) > - jmp L(CopyFrom1To16Bytes) > - > - .p2align 4 > -L(Shl15): > - movaps -15(%rcx), %xmm1 > - movaps 1(%rcx), %xmm2 > -L(Shl15Start): > - pcmpeqb %xmm2, %xmm0 > - pmovmskb %xmm0, %rax > - movaps %xmm2, %xmm3 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit15Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl15LoopExit) > - > - palignr $15, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 17(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > - movaps %xmm2, %xmm1 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit15Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl15LoopExit) > - > - palignr $15, %xmm3, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 17(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > - movaps %xmm2, %xmm3 > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit15Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl15LoopExit) > - > - palignr $15, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 17(%rcx), %xmm2 > - > - pcmpeqb %xmm2, %xmm0 > - lea 16(%rdx), %rdx > - pmovmskb %xmm0, %rax > - lea 16(%rcx), %rcx > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - jbe L(StrncpyExit15Case2OrCase3) > -# endif > - test %rax, %rax > - jnz L(Shl15LoopExit) > - > - palignr $15, %xmm3, %xmm2 > - movaps %xmm2, (%rdx) > - lea 17(%rcx), %rcx > - lea 16(%rdx), %rdx > - > - mov %rcx, %rax > - and $-0x40, %rcx > - sub %rcx, %rax > - lea -1(%rcx), %rcx > - sub %rax, %rdx > -# ifdef USE_AS_STRNCPY > - add %rax, %r8 > -# endif > - movaps -15(%rcx), %xmm1 > - > -/* 64 bytes loop */ > - .p2align 4 > -L(Shl15LoopStart): > - movaps 1(%rcx), %xmm2 > - movaps 17(%rcx), %xmm3 > - movaps %xmm3, %xmm6 > - movaps 33(%rcx), %xmm4 > - movaps %xmm4, %xmm7 > - movaps 49(%rcx), %xmm5 > - pminub %xmm2, %xmm6 > - pminub %xmm5, %xmm7 > - pminub %xmm6, %xmm7 > - pcmpeqb %xmm0, %xmm7 > - pmovmskb %xmm7, %rax > - movaps %xmm5, %xmm7 > - palignr $15, %xmm4, %xmm5 > - test %rax, %rax > - palignr $15, %xmm3, %xmm4 > - jnz L(Shl15Start) > -# ifdef USE_AS_STRNCPY > - sub $64, %r8 > - jbe L(StrncpyLeave15) > -# endif > - palignr $15, %xmm2, %xmm3 > - lea 64(%rcx), %rcx > - palignr $15, %xmm1, %xmm2 > - movaps %xmm7, %xmm1 > - movaps %xmm5, 48(%rdx) > - movaps %xmm4, 32(%rdx) > - movaps %xmm3, 16(%rdx) > - movaps %xmm2, (%rdx) > - lea 64(%rdx), %rdx > - jmp L(Shl15LoopStart) > - > -L(Shl15LoopExit): > - mov -3(%rcx), %r9d > - mov $1, %rsi > - mov %r9d, -3(%rdx) > -# ifdef USE_AS_STRCAT > - jmp L(CopyFrom1To16Bytes) > -# endif > - > -# ifndef USE_AS_STRCAT > - > - .p2align 4 > -L(CopyFrom1To16Bytes): > -# ifdef USE_AS_STRNCPY > - add $16, %r8 > -# endif > - add %rsi, %rdx > - add %rsi, %rcx > - > - test %al, %al > - jz L(ExitHigh) > - test $0x01, %al > - jnz L(Exit1) > - test $0x02, %al > - jnz L(Exit2) > - test $0x04, %al > - jnz L(Exit3) > - test $0x08, %al > - jnz L(Exit4) > - test $0x10, %al > - jnz L(Exit5) > - test $0x20, %al > - jnz L(Exit6) > - test $0x40, %al > - jnz L(Exit7) > - > - .p2align 4 > -L(Exit8): > - mov (%rcx), %rax > - mov %rax, (%rdx) > -# ifdef USE_AS_STPCPY > - lea 7(%rdx), %rax > -# else > - mov %rdi, %rax > -# endif > -# ifdef USE_AS_STRNCPY > - sub $8, %r8 > - lea 8(%rdx), %rcx > - jnz L(StrncpyFillTailWithZero1) > -# ifdef USE_AS_STPCPY > - cmpb $1, (%rax) > - sbb $-1, %rax > -# endif > -# endif > - ret > - > - .p2align 4 > -L(ExitHigh): > - test $0x01, %ah > - jnz L(Exit9) > - test $0x02, %ah > - jnz L(Exit10) > - test $0x04, %ah > - jnz L(Exit11) > - test $0x08, %ah > - jnz L(Exit12) > - test $0x10, %ah > - jnz L(Exit13) > - test $0x20, %ah > - jnz L(Exit14) > - test $0x40, %ah > - jnz L(Exit15) > - > - .p2align 4 > -L(Exit16): > - mov (%rcx), %rax > - mov %rax, (%rdx) > - mov 8(%rcx), %rax > - mov %rax, 8(%rdx) > -# ifdef USE_AS_STPCPY > - lea 15(%rdx), %rax > -# else > - mov %rdi, %rax > -# endif > -# ifdef USE_AS_STRNCPY > - sub $16, %r8 > - lea 16(%rdx), %rcx > - jnz L(StrncpyFillTailWithZero1) > -# ifdef USE_AS_STPCPY > - cmpb $1, (%rax) > - sbb $-1, %rax > -# endif > -# endif > - ret > - > -# ifdef USE_AS_STRNCPY > - > - .p2align 4 > -L(CopyFrom1To16BytesCase2): > - add $16, %r8 > - add %rsi, %rcx > - lea (%rsi, %rdx), %rsi > - lea -9(%r8), %rdx > - and $1<<7, %dh > - or %al, %dh > - test %dh, %dh > - lea (%rsi), %rdx > - jz L(ExitHighCase2) > - > - cmp $1, %r8 > - je L(Exit1) > - test $0x01, %al > - jnz L(Exit1) > - cmp $2, %r8 > - je L(Exit2) > - test $0x02, %al > - jnz L(Exit2) > - cmp $3, %r8 > - je L(Exit3) > - test $0x04, %al > - jnz L(Exit3) > - cmp $4, %r8 > - je L(Exit4) > - test $0x08, %al > - jnz L(Exit4) > - cmp $5, %r8 > - je L(Exit5) > - test $0x10, %al > - jnz L(Exit5) > - cmp $6, %r8 > - je L(Exit6) > - test $0x20, %al > - jnz L(Exit6) > - cmp $7, %r8 > - je L(Exit7) > - test $0x40, %al > - jnz L(Exit7) > - jmp L(Exit8) > - > - .p2align 4 > -L(ExitHighCase2): > - cmp $9, %r8 > - je L(Exit9) > - test $0x01, %ah > - jnz L(Exit9) > - cmp $10, %r8 > - je L(Exit10) > - test $0x02, %ah > - jnz L(Exit10) > - cmp $11, %r8 > - je L(Exit11) > - test $0x04, %ah > - jnz L(Exit11) > - cmp $12, %r8 > - je L(Exit12) > - test $0x8, %ah > - jnz L(Exit12) > - cmp $13, %r8 > - je L(Exit13) > - test $0x10, %ah > - jnz L(Exit13) > - cmp $14, %r8 > - je L(Exit14) > - test $0x20, %ah > - jnz L(Exit14) > - cmp $15, %r8 > - je L(Exit15) > - test $0x40, %ah > - jnz L(Exit15) > - jmp L(Exit16) > - > -L(CopyFrom1To16BytesCase2OrCase3): > - test %rax, %rax > - jnz L(CopyFrom1To16BytesCase2) > - > - .p2align 4 > -L(CopyFrom1To16BytesCase3): > - add $16, %r8 > - add %rsi, %rdx > - add %rsi, %rcx > - > - cmp $16, %r8 > - je L(Exit16) > - cmp $8, %r8 > - je L(Exit8) > - jg L(More8Case3) > - cmp $4, %r8 > - je L(Exit4) > - jg L(More4Case3) > - cmp $2, %r8 > - jl L(Exit1) > - je L(Exit2) > - jg L(Exit3) > -L(More8Case3): /* but less than 16 */ > - cmp $12, %r8 > - je L(Exit12) > - jl L(Less12Case3) > - cmp $14, %r8 > - jl L(Exit13) > - je L(Exit14) > - jg L(Exit15) > -L(More4Case3): /* but less than 8 */ > - cmp $6, %r8 > - jl L(Exit5) > - je L(Exit6) > - jg L(Exit7) > -L(Less12Case3): /* but more than 8 */ > - cmp $10, %r8 > - jl L(Exit9) > - je L(Exit10) > - jg L(Exit11) > -# endif > - > - .p2align 4 > -L(Exit1): > - movb (%rcx), %al > - movb %al, (%rdx) > -# ifdef USE_AS_STPCPY > - lea (%rdx), %rax > -# else > - mov %rdi, %rax > -# endif > -# ifdef USE_AS_STRNCPY > - sub $1, %r8 > - lea 1(%rdx), %rcx > - jnz L(StrncpyFillTailWithZero1) > -# ifdef USE_AS_STPCPY > - cmpb $1, (%rax) > - sbb $-1, %rax > -# endif > -# endif > - ret > - > - .p2align 4 > -L(Exit2): > - movw (%rcx), %ax > - movw %ax, (%rdx) > -# ifdef USE_AS_STPCPY > - lea 1(%rdx), %rax > -# else > - mov %rdi, %rax > -# endif > -# ifdef USE_AS_STRNCPY > - sub $2, %r8 > - lea 2(%rdx), %rcx > - jnz L(StrncpyFillTailWithZero1) > -# ifdef USE_AS_STPCPY > - cmpb $1, (%rax) > - sbb $-1, %rax > -# endif > -# endif > - ret > - > - .p2align 4 > -L(Exit3): > - movw (%rcx), %ax > - movw %ax, (%rdx) > - movb 2(%rcx), %al > - movb %al, 2(%rdx) > -# ifdef USE_AS_STPCPY > - lea 2(%rdx), %rax > -# else > - mov %rdi, %rax > -# endif > -# ifdef USE_AS_STRNCPY > - sub $3, %r8 > - lea 3(%rdx), %rcx > - jnz L(StrncpyFillTailWithZero1) > -# ifdef USE_AS_STPCPY > - cmpb $1, (%rax) > - sbb $-1, %rax > -# endif > -# endif > - ret > - > - .p2align 4 > -L(Exit4): > - movl (%rcx), %eax > - movl %eax, (%rdx) > -# ifdef USE_AS_STPCPY > - lea 3(%rdx), %rax > -# else > - mov %rdi, %rax > -# endif > -# ifdef USE_AS_STRNCPY > - sub $4, %r8 > - lea 4(%rdx), %rcx > - jnz L(StrncpyFillTailWithZero1) > -# ifdef USE_AS_STPCPY > - cmpb $1, (%rax) > - sbb $-1, %rax > -# endif > -# endif > - ret > - > - .p2align 4 > -L(Exit5): > - movl (%rcx), %eax > - movl %eax, (%rdx) > - movb 4(%rcx), %al > - movb %al, 4(%rdx) > -# ifdef USE_AS_STPCPY > - lea 4(%rdx), %rax > -# else > - mov %rdi, %rax > -# endif > -# ifdef USE_AS_STRNCPY > - sub $5, %r8 > - lea 5(%rdx), %rcx > - jnz L(StrncpyFillTailWithZero1) > -# ifdef USE_AS_STPCPY > - cmpb $1, (%rax) > - sbb $-1, %rax > -# endif > -# endif > - ret > - > - .p2align 4 > -L(Exit6): > - movl (%rcx), %eax > - movl %eax, (%rdx) > - movw 4(%rcx), %ax > - movw %ax, 4(%rdx) > -# ifdef USE_AS_STPCPY > - lea 5(%rdx), %rax > -# else > - mov %rdi, %rax > -# endif > -# ifdef USE_AS_STRNCPY > - sub $6, %r8 > - lea 6(%rdx), %rcx > - jnz L(StrncpyFillTailWithZero1) > -# ifdef USE_AS_STPCPY > - cmpb $1, (%rax) > - sbb $-1, %rax > -# endif > -# endif > - ret > - > - .p2align 4 > -L(Exit7): > - movl (%rcx), %eax > - movl %eax, (%rdx) > - movl 3(%rcx), %eax > - movl %eax, 3(%rdx) > -# ifdef USE_AS_STPCPY > - lea 6(%rdx), %rax > -# else > - mov %rdi, %rax > -# endif > -# ifdef USE_AS_STRNCPY > - sub $7, %r8 > - lea 7(%rdx), %rcx > - jnz L(StrncpyFillTailWithZero1) > -# ifdef USE_AS_STPCPY > - cmpb $1, (%rax) > - sbb $-1, %rax > -# endif > -# endif > - ret > - > - .p2align 4 > -L(Exit9): > - mov (%rcx), %rax > - mov %rax, (%rdx) > - mov 5(%rcx), %eax > - mov %eax, 5(%rdx) > -# ifdef USE_AS_STPCPY > - lea 8(%rdx), %rax > -# else > - mov %rdi, %rax > -# endif > -# ifdef USE_AS_STRNCPY > - sub $9, %r8 > - lea 9(%rdx), %rcx > - jnz L(StrncpyFillTailWithZero1) > -# ifdef USE_AS_STPCPY > - cmpb $1, (%rax) > - sbb $-1, %rax > -# endif > -# endif > - ret > - > - .p2align 4 > -L(Exit10): > - mov (%rcx), %rax > - mov %rax, (%rdx) > - mov 6(%rcx), %eax > - mov %eax, 6(%rdx) > -# ifdef USE_AS_STPCPY > - lea 9(%rdx), %rax > -# else > - mov %rdi, %rax > -# endif > -# ifdef USE_AS_STRNCPY > - sub $10, %r8 > - lea 10(%rdx), %rcx > - jnz L(StrncpyFillTailWithZero1) > -# ifdef USE_AS_STPCPY > - cmpb $1, (%rax) > - sbb $-1, %rax > -# endif > -# endif > - ret > - > - .p2align 4 > -L(Exit11): > - mov (%rcx), %rax > - mov %rax, (%rdx) > - mov 7(%rcx), %eax > - mov %eax, 7(%rdx) > -# ifdef USE_AS_STPCPY > - lea 10(%rdx), %rax > -# else > - mov %rdi, %rax > -# endif > -# ifdef USE_AS_STRNCPY > - sub $11, %r8 > - lea 11(%rdx), %rcx > - jnz L(StrncpyFillTailWithZero1) > -# ifdef USE_AS_STPCPY > - cmpb $1, (%rax) > - sbb $-1, %rax > -# endif > -# endif > - ret > - > - .p2align 4 > -L(Exit12): > - mov (%rcx), %rax > - mov %rax, (%rdx) > - mov 8(%rcx), %eax > - mov %eax, 8(%rdx) > -# ifdef USE_AS_STPCPY > - lea 11(%rdx), %rax > -# else > - mov %rdi, %rax > -# endif > -# ifdef USE_AS_STRNCPY > - sub $12, %r8 > - lea 12(%rdx), %rcx > - jnz L(StrncpyFillTailWithZero1) > -# ifdef USE_AS_STPCPY > - cmpb $1, (%rax) > - sbb $-1, %rax > -# endif > -# endif > - ret > - > - .p2align 4 > -L(Exit13): > - mov (%rcx), %rax > - mov %rax, (%rdx) > - mov 5(%rcx), %rax > - mov %rax, 5(%rdx) > -# ifdef USE_AS_STPCPY > - lea 12(%rdx), %rax > -# else > - mov %rdi, %rax > -# endif > -# ifdef USE_AS_STRNCPY > - sub $13, %r8 > - lea 13(%rdx), %rcx > - jnz L(StrncpyFillTailWithZero1) > -# ifdef USE_AS_STPCPY > - cmpb $1, (%rax) > - sbb $-1, %rax > -# endif > -# endif > - ret > - > - .p2align 4 > -L(Exit14): > - mov (%rcx), %rax > - mov %rax, (%rdx) > - mov 6(%rcx), %rax > - mov %rax, 6(%rdx) > -# ifdef USE_AS_STPCPY > - lea 13(%rdx), %rax > -# else > - mov %rdi, %rax > -# endif > -# ifdef USE_AS_STRNCPY > - sub $14, %r8 > - lea 14(%rdx), %rcx > - jnz L(StrncpyFillTailWithZero1) > -# ifdef USE_AS_STPCPY > - cmpb $1, (%rax) > - sbb $-1, %rax > -# endif > -# endif > - ret > - > - .p2align 4 > -L(Exit15): > - mov (%rcx), %rax > - mov %rax, (%rdx) > - mov 7(%rcx), %rax > - mov %rax, 7(%rdx) > -# ifdef USE_AS_STPCPY > - lea 14(%rdx), %rax > -# else > - mov %rdi, %rax > -# endif > -# ifdef USE_AS_STRNCPY > - sub $15, %r8 > - lea 15(%rdx), %rcx > - jnz L(StrncpyFillTailWithZero1) > -# ifdef USE_AS_STPCPY > - cmpb $1, (%rax) > - sbb $-1, %rax > -# endif > -# endif > - ret > - > -# ifdef USE_AS_STRNCPY > - .p2align 4 > -L(Fill0): > - ret > - > - .p2align 4 > -L(Fill1): > - movb %dl, (%rcx) > - ret > - > - .p2align 4 > -L(Fill2): > - movw %dx, (%rcx) > - ret > - > - .p2align 4 > -L(Fill3): > - movw %dx, (%rcx) > - movb %dl, 2(%rcx) > - ret > - > - .p2align 4 > -L(Fill4): > - movl %edx, (%rcx) > - ret > - > - .p2align 4 > -L(Fill5): > - movl %edx, (%rcx) > - movb %dl, 4(%rcx) > - ret > - > - .p2align 4 > -L(Fill6): > - movl %edx, (%rcx) > - movw %dx, 4(%rcx) > - ret > - > - .p2align 4 > -L(Fill7): > - movl %edx, (%rcx) > - movl %edx, 3(%rcx) > - ret > - > - .p2align 4 > -L(Fill8): > - mov %rdx, (%rcx) > - ret > - > - .p2align 4 > -L(Fill9): > - mov %rdx, (%rcx) > - movb %dl, 8(%rcx) > - ret > - > - .p2align 4 > -L(Fill10): > - mov %rdx, (%rcx) > - movw %dx, 8(%rcx) > - ret > - > - .p2align 4 > -L(Fill11): > - mov %rdx, (%rcx) > - movl %edx, 7(%rcx) > - ret > - > - .p2align 4 > -L(Fill12): > - mov %rdx, (%rcx) > - movl %edx, 8(%rcx) > - ret > - > - .p2align 4 > -L(Fill13): > - mov %rdx, (%rcx) > - mov %rdx, 5(%rcx) > - ret > - > - .p2align 4 > -L(Fill14): > - mov %rdx, (%rcx) > - mov %rdx, 6(%rcx) > - ret > - > - .p2align 4 > -L(Fill15): > - mov %rdx, (%rcx) > - mov %rdx, 7(%rcx) > - ret > - > - .p2align 4 > -L(Fill16): > - mov %rdx, (%rcx) > - mov %rdx, 8(%rcx) > - ret > - > - .p2align 4 > -L(StrncpyFillExit1): > - lea 16(%r8), %r8 > -L(FillFrom1To16Bytes): > - test %r8, %r8 > - jz L(Fill0) > - cmp $16, %r8 > - je L(Fill16) > - cmp $8, %r8 > - je L(Fill8) > - jg L(FillMore8) > - cmp $4, %r8 > - je L(Fill4) > - jg L(FillMore4) > - cmp $2, %r8 > - jl L(Fill1) > - je L(Fill2) > - jg L(Fill3) > -L(FillMore8): /* but less than 16 */ > - cmp $12, %r8 > - je L(Fill12) > - jl L(FillLess12) > - cmp $14, %r8 > - jl L(Fill13) > - je L(Fill14) > - jg L(Fill15) > -L(FillMore4): /* but less than 8 */ > - cmp $6, %r8 > - jl L(Fill5) > - je L(Fill6) > - jg L(Fill7) > -L(FillLess12): /* but more than 8 */ > - cmp $10, %r8 > - jl L(Fill9) > - je L(Fill10) > - jmp L(Fill11) > - > - .p2align 4 > -L(StrncpyFillTailWithZero1): > - xor %rdx, %rdx > - sub $16, %r8 > - jbe L(StrncpyFillExit1) > - > - pxor %xmm0, %xmm0 > - mov %rdx, (%rcx) > - mov %rdx, 8(%rcx) > - > - lea 16(%rcx), %rcx > - > - mov %rcx, %rdx > - and $0xf, %rdx > - sub %rdx, %rcx > - add %rdx, %r8 > - xor %rdx, %rdx > - sub $64, %r8 > - jb L(StrncpyFillLess64) > - > -L(StrncpyFillLoopMovdqa): > - movdqa %xmm0, (%rcx) > - movdqa %xmm0, 16(%rcx) > - movdqa %xmm0, 32(%rcx) > - movdqa %xmm0, 48(%rcx) > - lea 64(%rcx), %rcx > - sub $64, %r8 > - jae L(StrncpyFillLoopMovdqa) > - > -L(StrncpyFillLess64): > - add $32, %r8 > - jl L(StrncpyFillLess32) > - movdqa %xmm0, (%rcx) > - movdqa %xmm0, 16(%rcx) > - lea 32(%rcx), %rcx > - sub $16, %r8 > - jl L(StrncpyFillExit1) > - movdqa %xmm0, (%rcx) > - lea 16(%rcx), %rcx > - jmp L(FillFrom1To16Bytes) > - > -L(StrncpyFillLess32): > - add $16, %r8 > - jl L(StrncpyFillExit1) > - movdqa %xmm0, (%rcx) > - lea 16(%rcx), %rcx > - jmp L(FillFrom1To16Bytes) > - > - .p2align 4 > -L(Exit0): > - mov %rdx, %rax > - ret > - > - .p2align 4 > -L(StrncpyExit15Bytes): > - cmp $9, %r8 > - je L(Exit9) > - cmpb $0, 8(%rcx) > - jz L(Exit9) > - cmp $10, %r8 > - je L(Exit10) > - cmpb $0, 9(%rcx) > - jz L(Exit10) > - cmp $11, %r8 > - je L(Exit11) > - cmpb $0, 10(%rcx) > - jz L(Exit11) > - cmp $12, %r8 > - je L(Exit12) > - cmpb $0, 11(%rcx) > - jz L(Exit12) > - cmp $13, %r8 > - je L(Exit13) > - cmpb $0, 12(%rcx) > - jz L(Exit13) > - cmp $14, %r8 > - je L(Exit14) > - cmpb $0, 13(%rcx) > - jz L(Exit14) > - mov (%rcx), %rax > - mov %rax, (%rdx) > - mov 7(%rcx), %rax > - mov %rax, 7(%rdx) > -# ifdef USE_AS_STPCPY > - lea 14(%rdx), %rax > - cmpb $1, (%rax) > - sbb $-1, %rax > -# else > - mov %rdi, %rax > -# endif > - ret > - > - .p2align 4 > -L(StrncpyExit8Bytes): > - cmp $1, %r8 > - je L(Exit1) > - cmpb $0, (%rcx) > - jz L(Exit1) > - cmp $2, %r8 > - je L(Exit2) > - cmpb $0, 1(%rcx) > - jz L(Exit2) > - cmp $3, %r8 > - je L(Exit3) > - cmpb $0, 2(%rcx) > - jz L(Exit3) > - cmp $4, %r8 > - je L(Exit4) > - cmpb $0, 3(%rcx) > - jz L(Exit4) > - cmp $5, %r8 > - je L(Exit5) > - cmpb $0, 4(%rcx) > - jz L(Exit5) > - cmp $6, %r8 > - je L(Exit6) > - cmpb $0, 5(%rcx) > - jz L(Exit6) > - cmp $7, %r8 > - je L(Exit7) > - cmpb $0, 6(%rcx) > - jz L(Exit7) > - mov (%rcx), %rax > - mov %rax, (%rdx) > -# ifdef USE_AS_STPCPY > - lea 7(%rdx), %rax > - cmpb $1, (%rax) > - sbb $-1, %rax > -# else > - mov %rdi, %rax > -# endif > - ret > - > -# endif > -# endif > - > -# ifdef USE_AS_STRNCPY > - .p2align 4 > -L(StrncpyLeaveCase2OrCase3): > - test %rax, %rax > - jnz L(Aligned64LeaveCase2) > - > -L(Aligned64LeaveCase3): > - lea 64(%r8), %r8 > - sub $16, %r8 > - jbe L(CopyFrom1To16BytesCase3) > - movaps %xmm4, -64(%rdx) > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(CopyFrom1To16BytesCase3) > - movaps %xmm5, -48(%rdx) > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(CopyFrom1To16BytesCase3) > - movaps %xmm6, -32(%rdx) > - lea 16(%rsi), %rsi > - lea -16(%r8), %r8 > - jmp L(CopyFrom1To16BytesCase3) > - > -L(Aligned64LeaveCase2): > - pcmpeqb %xmm4, %xmm0 > - pmovmskb %xmm0, %rax > - add $48, %r8 > - jle L(CopyFrom1To16BytesCase2OrCase3) > - test %rax, %rax > - jnz L(CopyFrom1To16Bytes) > - > - pcmpeqb %xmm5, %xmm0 > - pmovmskb %xmm0, %rax > - movaps %xmm4, -64(%rdx) > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(CopyFrom1To16BytesCase2OrCase3) > - test %rax, %rax > - jnz L(CopyFrom1To16Bytes) > - > - pcmpeqb %xmm6, %xmm0 > - pmovmskb %xmm0, %rax > - movaps %xmm5, -48(%rdx) > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(CopyFrom1To16BytesCase2OrCase3) > - test %rax, %rax > - jnz L(CopyFrom1To16Bytes) > - > - pcmpeqb %xmm7, %xmm0 > - pmovmskb %xmm0, %rax > - movaps %xmm6, -32(%rdx) > - lea 16(%rsi), %rsi > - lea -16(%r8), %r8 > - jmp L(CopyFrom1To16BytesCase2) > -/*--------------------------------------------------*/ > - .p2align 4 > -L(StrncpyExit1Case2OrCase3): > - movdqu -1(%rcx), %xmm0 > - movdqu %xmm0, -1(%rdx) > - mov $15, %rsi > - test %rax, %rax > - jnz L(CopyFrom1To16BytesCase2) > - jmp L(CopyFrom1To16BytesCase3) > - > - .p2align 4 > -L(StrncpyExit2Case2OrCase3): > - movdqu -2(%rcx), %xmm0 > - movdqu %xmm0, -2(%rdx) > - mov $14, %rsi > - test %rax, %rax > - jnz L(CopyFrom1To16BytesCase2) > - jmp L(CopyFrom1To16BytesCase3) > - > - .p2align 4 > -L(StrncpyExit3Case2OrCase3): > - movdqu -3(%rcx), %xmm0 > - movdqu %xmm0, -3(%rdx) > - mov $13, %rsi > - test %rax, %rax > - jnz L(CopyFrom1To16BytesCase2) > - jmp L(CopyFrom1To16BytesCase3) > - > - .p2align 4 > -L(StrncpyExit4Case2OrCase3): > - movdqu -4(%rcx), %xmm0 > - movdqu %xmm0, -4(%rdx) > - mov $12, %rsi > - test %rax, %rax > - jnz L(CopyFrom1To16BytesCase2) > - jmp L(CopyFrom1To16BytesCase3) > - > - .p2align 4 > -L(StrncpyExit5Case2OrCase3): > - movdqu -5(%rcx), %xmm0 > - movdqu %xmm0, -5(%rdx) > - mov $11, %rsi > - test %rax, %rax > - jnz L(CopyFrom1To16BytesCase2) > - jmp L(CopyFrom1To16BytesCase3) > - > - .p2align 4 > -L(StrncpyExit6Case2OrCase3): > - mov (%rcx), %rsi > - mov 6(%rcx), %r9d > - mov %r9d, 6(%rdx) > - mov %rsi, (%rdx) > - test %rax, %rax > - mov $10, %rsi > - jnz L(CopyFrom1To16BytesCase2) > - jmp L(CopyFrom1To16BytesCase3) > - > - .p2align 4 > -L(StrncpyExit7Case2OrCase3): > - mov (%rcx), %rsi > - mov 5(%rcx), %r9d > - mov %r9d, 5(%rdx) > - mov %rsi, (%rdx) > - test %rax, %rax > - mov $9, %rsi > - jnz L(CopyFrom1To16BytesCase2) > - jmp L(CopyFrom1To16BytesCase3) > - > - .p2align 4 > -L(StrncpyExit8Case2OrCase3): > - mov (%rcx), %r9 > - mov $8, %rsi > - mov %r9, (%rdx) > - test %rax, %rax > - jnz L(CopyFrom1To16BytesCase2) > - jmp L(CopyFrom1To16BytesCase3) > - > - .p2align 4 > -L(StrncpyExit9Case2OrCase3): > - mov -1(%rcx), %r9 > - mov $7, %rsi > - mov %r9, -1(%rdx) > - test %rax, %rax > - jnz L(CopyFrom1To16BytesCase2) > - jmp L(CopyFrom1To16BytesCase3) > - > - .p2align 4 > -L(StrncpyExit10Case2OrCase3): > - mov -2(%rcx), %r9 > - mov $6, %rsi > - mov %r9, -2(%rdx) > - test %rax, %rax > - jnz L(CopyFrom1To16BytesCase2) > - jmp L(CopyFrom1To16BytesCase3) > - > - .p2align 4 > -L(StrncpyExit11Case2OrCase3): > - mov -3(%rcx), %r9 > - mov $5, %rsi > - mov %r9, -3(%rdx) > - test %rax, %rax > - jnz L(CopyFrom1To16BytesCase2) > - jmp L(CopyFrom1To16BytesCase3) > - > - .p2align 4 > -L(StrncpyExit12Case2OrCase3): > - mov (%rcx), %r9d > - mov $4, %rsi > - mov %r9d, (%rdx) > - test %rax, %rax > - jnz L(CopyFrom1To16BytesCase2) > - jmp L(CopyFrom1To16BytesCase3) > - > - .p2align 4 > -L(StrncpyExit13Case2OrCase3): > - mov -1(%rcx), %r9d > - mov $3, %rsi > - mov %r9d, -1(%rdx) > - test %rax, %rax > - jnz L(CopyFrom1To16BytesCase2) > - jmp L(CopyFrom1To16BytesCase3) > - > - .p2align 4 > -L(StrncpyExit14Case2OrCase3): > - mov -2(%rcx), %r9d > - mov $2, %rsi > - mov %r9d, -2(%rdx) > - test %rax, %rax > - jnz L(CopyFrom1To16BytesCase2) > - jmp L(CopyFrom1To16BytesCase3) > - > - .p2align 4 > -L(StrncpyExit15Case2OrCase3): > - mov -3(%rcx), %r9d > - mov $1, %rsi > - mov %r9d, -3(%rdx) > - test %rax, %rax > - jnz L(CopyFrom1To16BytesCase2) > - jmp L(CopyFrom1To16BytesCase3) > - > - .p2align 4 > -L(StrncpyLeave1): > - movaps %xmm2, %xmm3 > - add $48, %r8 > - jle L(StrncpyExit1) > - palignr $1, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 31(%rcx), %xmm2 > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit1) > - palignr $1, %xmm3, %xmm2 > - movaps %xmm2, 16(%rdx) > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit1) > - movaps %xmm4, 32(%rdx) > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit1) > - movaps %xmm5, 48(%rdx) > - lea 16(%rsi), %rsi > - lea -16(%r8), %r8 > - > -L(StrncpyExit1): > - lea 15(%rdx, %rsi), %rdx > - lea 15(%rcx, %rsi), %rcx > - mov -15(%rcx), %rsi > - mov -8(%rcx), %rax > - mov %rsi, -15(%rdx) > - mov %rax, -8(%rdx) > - xor %rsi, %rsi > - jmp L(CopyFrom1To16BytesCase3) > - > - .p2align 4 > -L(StrncpyLeave2): > - movaps %xmm2, %xmm3 > - add $48, %r8 > - jle L(StrncpyExit2) > - palignr $2, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 30(%rcx), %xmm2 > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit2) > - palignr $2, %xmm3, %xmm2 > - movaps %xmm2, 16(%rdx) > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit2) > - movaps %xmm4, 32(%rdx) > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit2) > - movaps %xmm5, 48(%rdx) > - lea 16(%rsi), %rsi > - lea -16(%r8), %r8 > - > -L(StrncpyExit2): > - lea 14(%rdx, %rsi), %rdx > - lea 14(%rcx, %rsi), %rcx > - mov -14(%rcx), %rsi > - mov -8(%rcx), %rax > - mov %rsi, -14(%rdx) > - mov %rax, -8(%rdx) > - xor %rsi, %rsi > - jmp L(CopyFrom1To16BytesCase3) > - > - .p2align 4 > -L(StrncpyLeave3): > - movaps %xmm2, %xmm3 > - add $48, %r8 > - jle L(StrncpyExit3) > - palignr $3, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 29(%rcx), %xmm2 > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit3) > - palignr $3, %xmm3, %xmm2 > - movaps %xmm2, 16(%rdx) > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit3) > - movaps %xmm4, 32(%rdx) > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit3) > - movaps %xmm5, 48(%rdx) > - lea 16(%rsi), %rsi > - lea -16(%r8), %r8 > - > -L(StrncpyExit3): > - lea 13(%rdx, %rsi), %rdx > - lea 13(%rcx, %rsi), %rcx > - mov -13(%rcx), %rsi > - mov -8(%rcx), %rax > - mov %rsi, -13(%rdx) > - mov %rax, -8(%rdx) > - xor %rsi, %rsi > - jmp L(CopyFrom1To16BytesCase3) > - > - .p2align 4 > -L(StrncpyLeave4): > - movaps %xmm2, %xmm3 > - add $48, %r8 > - jle L(StrncpyExit4) > - palignr $4, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 28(%rcx), %xmm2 > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit4) > - palignr $4, %xmm3, %xmm2 > - movaps %xmm2, 16(%rdx) > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit4) > - movaps %xmm4, 32(%rdx) > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit4) > - movaps %xmm5, 48(%rdx) > - lea 16(%rsi), %rsi > - lea -16(%r8), %r8 > - > -L(StrncpyExit4): > - lea 12(%rdx, %rsi), %rdx > - lea 12(%rcx, %rsi), %rcx > - mov -12(%rcx), %rsi > - mov -4(%rcx), %eax > - mov %rsi, -12(%rdx) > - mov %eax, -4(%rdx) > - xor %rsi, %rsi > - jmp L(CopyFrom1To16BytesCase3) > - > - .p2align 4 > -L(StrncpyLeave5): > - movaps %xmm2, %xmm3 > - add $48, %r8 > - jle L(StrncpyExit5) > - palignr $5, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 27(%rcx), %xmm2 > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit5) > - palignr $5, %xmm3, %xmm2 > - movaps %xmm2, 16(%rdx) > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit5) > - movaps %xmm4, 32(%rdx) > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit5) > - movaps %xmm5, 48(%rdx) > - lea 16(%rsi), %rsi > - lea -16(%r8), %r8 > - > -L(StrncpyExit5): > - lea 11(%rdx, %rsi), %rdx > - lea 11(%rcx, %rsi), %rcx > - mov -11(%rcx), %rsi > - mov -4(%rcx), %eax > - mov %rsi, -11(%rdx) > - mov %eax, -4(%rdx) > - xor %rsi, %rsi > - jmp L(CopyFrom1To16BytesCase3) > - > - .p2align 4 > -L(StrncpyLeave6): > - movaps %xmm2, %xmm3 > - add $48, %r8 > - jle L(StrncpyExit6) > - palignr $6, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 26(%rcx), %xmm2 > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit6) > - palignr $6, %xmm3, %xmm2 > - movaps %xmm2, 16(%rdx) > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit6) > - movaps %xmm4, 32(%rdx) > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit6) > - movaps %xmm5, 48(%rdx) > - lea 16(%rsi), %rsi > - lea -16(%r8), %r8 > - > -L(StrncpyExit6): > - lea 10(%rdx, %rsi), %rdx > - lea 10(%rcx, %rsi), %rcx > - mov -10(%rcx), %rsi > - movw -2(%rcx), %ax > - mov %rsi, -10(%rdx) > - movw %ax, -2(%rdx) > - xor %rsi, %rsi > - jmp L(CopyFrom1To16BytesCase3) > - > - .p2align 4 > -L(StrncpyLeave7): > - movaps %xmm2, %xmm3 > - add $48, %r8 > - jle L(StrncpyExit7) > - palignr $7, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 25(%rcx), %xmm2 > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit7) > - palignr $7, %xmm3, %xmm2 > - movaps %xmm2, 16(%rdx) > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit7) > - movaps %xmm4, 32(%rdx) > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit7) > - movaps %xmm5, 48(%rdx) > - lea 16(%rsi), %rsi > - lea -16(%r8), %r8 > - > -L(StrncpyExit7): > - lea 9(%rdx, %rsi), %rdx > - lea 9(%rcx, %rsi), %rcx > - mov -9(%rcx), %rsi > - movb -1(%rcx), %ah > - mov %rsi, -9(%rdx) > - movb %ah, -1(%rdx) > - xor %rsi, %rsi > - jmp L(CopyFrom1To16BytesCase3) > - > - .p2align 4 > -L(StrncpyLeave8): > - movaps %xmm2, %xmm3 > - add $48, %r8 > - jle L(StrncpyExit8) > - palignr $8, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 24(%rcx), %xmm2 > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit8) > - palignr $8, %xmm3, %xmm2 > - movaps %xmm2, 16(%rdx) > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit8) > - movaps %xmm4, 32(%rdx) > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit8) > - movaps %xmm5, 48(%rdx) > - lea 16(%rsi), %rsi > - lea -16(%r8), %r8 > - > -L(StrncpyExit8): > - lea 8(%rdx, %rsi), %rdx > - lea 8(%rcx, %rsi), %rcx > - mov -8(%rcx), %rax > - xor %rsi, %rsi > - mov %rax, -8(%rdx) > - jmp L(CopyFrom1To16BytesCase3) > - > - .p2align 4 > -L(StrncpyLeave9): > - movaps %xmm2, %xmm3 > - add $48, %r8 > - jle L(StrncpyExit9) > - palignr $9, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 23(%rcx), %xmm2 > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit9) > - palignr $9, %xmm3, %xmm2 > - movaps %xmm2, 16(%rdx) > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit9) > - movaps %xmm4, 32(%rdx) > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit9) > - movaps %xmm5, 48(%rdx) > - lea 16(%rsi), %rsi > - lea -16(%r8), %r8 > - > -L(StrncpyExit9): > - lea 7(%rdx, %rsi), %rdx > - lea 7(%rcx, %rsi), %rcx > - mov -8(%rcx), %rax > - xor %rsi, %rsi > - mov %rax, -8(%rdx) > - jmp L(CopyFrom1To16BytesCase3) > - > - .p2align 4 > -L(StrncpyLeave10): > - movaps %xmm2, %xmm3 > - add $48, %r8 > - jle L(StrncpyExit10) > - palignr $10, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 22(%rcx), %xmm2 > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit10) > - palignr $10, %xmm3, %xmm2 > - movaps %xmm2, 16(%rdx) > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit10) > - movaps %xmm4, 32(%rdx) > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit10) > - movaps %xmm5, 48(%rdx) > - lea 16(%rsi), %rsi > - lea -16(%r8), %r8 > - > -L(StrncpyExit10): > - lea 6(%rdx, %rsi), %rdx > - lea 6(%rcx, %rsi), %rcx > - mov -8(%rcx), %rax > - xor %rsi, %rsi > - mov %rax, -8(%rdx) > - jmp L(CopyFrom1To16BytesCase3) > - > - .p2align 4 > -L(StrncpyLeave11): > - movaps %xmm2, %xmm3 > - add $48, %r8 > - jle L(StrncpyExit11) > - palignr $11, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 21(%rcx), %xmm2 > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit11) > - palignr $11, %xmm3, %xmm2 > - movaps %xmm2, 16(%rdx) > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit11) > - movaps %xmm4, 32(%rdx) > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit11) > - movaps %xmm5, 48(%rdx) > - lea 16(%rsi), %rsi > - lea -16(%r8), %r8 > - > -L(StrncpyExit11): > - lea 5(%rdx, %rsi), %rdx > - lea 5(%rcx, %rsi), %rcx > - mov -8(%rcx), %rax > - xor %rsi, %rsi > - mov %rax, -8(%rdx) > - jmp L(CopyFrom1To16BytesCase3) > - > - .p2align 4 > -L(StrncpyLeave12): > - movaps %xmm2, %xmm3 > - add $48, %r8 > - jle L(StrncpyExit12) > - palignr $12, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 20(%rcx), %xmm2 > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit12) > - palignr $12, %xmm3, %xmm2 > - movaps %xmm2, 16(%rdx) > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit12) > - movaps %xmm4, 32(%rdx) > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit12) > - movaps %xmm5, 48(%rdx) > - lea 16(%rsi), %rsi > - lea -16(%r8), %r8 > - > -L(StrncpyExit12): > - lea 4(%rdx, %rsi), %rdx > - lea 4(%rcx, %rsi), %rcx > - mov -4(%rcx), %eax > - xor %rsi, %rsi > - mov %eax, -4(%rdx) > - jmp L(CopyFrom1To16BytesCase3) > - > - .p2align 4 > -L(StrncpyLeave13): > - movaps %xmm2, %xmm3 > - add $48, %r8 > - jle L(StrncpyExit13) > - palignr $13, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 19(%rcx), %xmm2 > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit13) > - palignr $13, %xmm3, %xmm2 > - movaps %xmm2, 16(%rdx) > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit13) > - movaps %xmm4, 32(%rdx) > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit13) > - movaps %xmm5, 48(%rdx) > - lea 16(%rsi), %rsi > - lea -16(%r8), %r8 > - > -L(StrncpyExit13): > - lea 3(%rdx, %rsi), %rdx > - lea 3(%rcx, %rsi), %rcx > - mov -4(%rcx), %eax > - xor %rsi, %rsi > - mov %eax, -4(%rdx) > - jmp L(CopyFrom1To16BytesCase3) > - > - .p2align 4 > -L(StrncpyLeave14): > - movaps %xmm2, %xmm3 > - add $48, %r8 > - jle L(StrncpyExit14) > - palignr $14, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 18(%rcx), %xmm2 > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit14) > - palignr $14, %xmm3, %xmm2 > - movaps %xmm2, 16(%rdx) > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit14) > - movaps %xmm4, 32(%rdx) > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit14) > - movaps %xmm5, 48(%rdx) > - lea 16(%rsi), %rsi > - lea -16(%r8), %r8 > - > -L(StrncpyExit14): > - lea 2(%rdx, %rsi), %rdx > - lea 2(%rcx, %rsi), %rcx > - movw -2(%rcx), %ax > - xor %rsi, %rsi > - movw %ax, -2(%rdx) > - jmp L(CopyFrom1To16BytesCase3) > - > - .p2align 4 > -L(StrncpyLeave15): > - movaps %xmm2, %xmm3 > - add $48, %r8 > - jle L(StrncpyExit15) > - palignr $15, %xmm1, %xmm2 > - movaps %xmm2, (%rdx) > - movaps 17(%rcx), %xmm2 > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit15) > - palignr $15, %xmm3, %xmm2 > - movaps %xmm2, 16(%rdx) > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit15) > - movaps %xmm4, 32(%rdx) > - lea 16(%rsi), %rsi > - sub $16, %r8 > - jbe L(StrncpyExit15) > - movaps %xmm5, 48(%rdx) > - lea 16(%rsi), %rsi > - lea -16(%r8), %r8 > - > -L(StrncpyExit15): > - lea 1(%rdx, %rsi), %rdx > - lea 1(%rcx, %rsi), %rcx > - movb -1(%rcx), %ah > - xor %rsi, %rsi > - movb %ah, -1(%rdx) > - jmp L(CopyFrom1To16BytesCase3) > - > -# endif > -# ifndef USE_AS_STRCAT > -END (STRCPY) > -# endif > -#endif > diff --git a/sysdeps/x86_64/multiarch/strncpy-ssse3.S b/sysdeps/x86_64/multiarch/strncpy-ssse3.S > deleted file mode 100644 > index bf82ee447d..0000000000 > --- a/sysdeps/x86_64/multiarch/strncpy-ssse3.S > +++ /dev/null > @@ -1,3 +0,0 @@ > -#define USE_AS_STRNCPY > -#define STRCPY __strncpy_ssse3 > -#include "strcpy-ssse3.S" > -- > 2.25.1 >
diff --git a/sysdeps/x86_64/multiarch/Makefile b/sysdeps/x86_64/multiarch/Makefile index 2b3c625ea2..5b02ec8de5 100644 --- a/sysdeps/x86_64/multiarch/Makefile +++ b/sysdeps/x86_64/multiarch/Makefile @@ -46,13 +46,11 @@ sysdep_routines += \ stpcpy-evex \ stpcpy-sse2 \ stpcpy-sse2-unaligned \ - stpcpy-ssse3 \ stpncpy-avx2 \ stpncpy-avx2-rtm \ stpncpy-c \ stpncpy-evex \ stpncpy-sse2-unaligned \ - stpncpy-ssse3 \ strcasecmp_l-avx2 \ strcasecmp_l-avx2-rtm \ strcasecmp_l-evex \ @@ -83,7 +81,6 @@ sysdep_routines += \ strcpy-evex \ strcpy-sse2 \ strcpy-sse2-unaligned \ - strcpy-ssse3 \ strcspn-c \ strcspn-sse2 \ strlen-avx2 \ @@ -110,7 +107,6 @@ sysdep_routines += \ strncpy-c \ strncpy-evex \ strncpy-sse2-unaligned \ - strncpy-ssse3 \ strnlen-avx2 \ strnlen-avx2-rtm \ strnlen-evex \ diff --git a/sysdeps/x86_64/multiarch/ifunc-impl-list.c b/sysdeps/x86_64/multiarch/ifunc-impl-list.c index 41a04621ad..49ce6860d0 100644 --- a/sysdeps/x86_64/multiarch/ifunc-impl-list.c +++ b/sysdeps/x86_64/multiarch/ifunc-impl-list.c @@ -399,8 +399,6 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, /* Support sysdeps/x86_64/multiarch/stpncpy.c. */ IFUNC_IMPL (i, name, stpncpy, - IFUNC_IMPL_ADD (array, i, stpncpy, CPU_FEATURE_USABLE (SSSE3), - __stpncpy_ssse3) IFUNC_IMPL_ADD (array, i, stpncpy, CPU_FEATURE_USABLE (AVX2), __stpncpy_avx2) IFUNC_IMPL_ADD (array, i, stpncpy, @@ -417,8 +415,6 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, /* Support sysdeps/x86_64/multiarch/stpcpy.c. */ IFUNC_IMPL (i, name, stpcpy, - IFUNC_IMPL_ADD (array, i, stpcpy, CPU_FEATURE_USABLE (SSSE3), - __stpcpy_ssse3) IFUNC_IMPL_ADD (array, i, stpcpy, CPU_FEATURE_USABLE (AVX2), __stpcpy_avx2) IFUNC_IMPL_ADD (array, i, stpcpy, @@ -567,8 +563,6 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, (CPU_FEATURE_USABLE (AVX512VL) && CPU_FEATURE_USABLE (AVX512BW)), __strcpy_evex) - IFUNC_IMPL_ADD (array, i, strcpy, CPU_FEATURE_USABLE (SSSE3), - __strcpy_ssse3) IFUNC_IMPL_ADD (array, i, strcpy, 1, __strcpy_sse2_unaligned) IFUNC_IMPL_ADD (array, i, strcpy, 1, __strcpy_sse2)) @@ -644,8 +638,6 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, (CPU_FEATURE_USABLE (AVX512VL) && CPU_FEATURE_USABLE (AVX512BW)), __strncpy_evex) - IFUNC_IMPL_ADD (array, i, strncpy, CPU_FEATURE_USABLE (SSSE3), - __strncpy_ssse3) IFUNC_IMPL_ADD (array, i, strncpy, 1, __strncpy_sse2_unaligned) IFUNC_IMPL_ADD (array, i, strncpy, 1, __strncpy_sse2)) diff --git a/sysdeps/x86_64/multiarch/stpcpy-ssse3.S b/sysdeps/x86_64/multiarch/stpcpy-ssse3.S deleted file mode 100644 index d971c2da38..0000000000 --- a/sysdeps/x86_64/multiarch/stpcpy-ssse3.S +++ /dev/null @@ -1,3 +0,0 @@ -#define USE_AS_STPCPY -#define STRCPY __stpcpy_ssse3 -#include "strcpy-ssse3.S" diff --git a/sysdeps/x86_64/multiarch/stpncpy-ssse3.S b/sysdeps/x86_64/multiarch/stpncpy-ssse3.S deleted file mode 100644 index 14ed16f6b5..0000000000 --- a/sysdeps/x86_64/multiarch/stpncpy-ssse3.S +++ /dev/null @@ -1,4 +0,0 @@ -#define USE_AS_STPCPY -#define USE_AS_STRNCPY -#define STRCPY __stpncpy_ssse3 -#include "strcpy-ssse3.S" diff --git a/sysdeps/x86_64/multiarch/strcpy-ssse3.S b/sysdeps/x86_64/multiarch/strcpy-ssse3.S deleted file mode 100644 index f617a535cf..0000000000 --- a/sysdeps/x86_64/multiarch/strcpy-ssse3.S +++ /dev/null @@ -1,3550 +0,0 @@ -/* strcpy with SSSE3 - Copyright (C) 2011-2022 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - <https://www.gnu.org/licenses/>. */ - -#if IS_IN (libc) - -# ifndef USE_AS_STRCAT -# include <sysdep.h> - -# ifndef STRCPY -# define STRCPY __strcpy_ssse3 -# endif - - .section .text.ssse3,"ax",@progbits -ENTRY (STRCPY) - - mov %rsi, %rcx -# ifdef USE_AS_STRNCPY - mov %RDX_LP, %R8_LP -# endif - mov %rdi, %rdx -# ifdef USE_AS_STRNCPY - test %R8_LP, %R8_LP - jz L(Exit0) - cmp $8, %R8_LP - jbe L(StrncpyExit8Bytes) -# endif - cmpb $0, (%rcx) - jz L(Exit1) - cmpb $0, 1(%rcx) - jz L(Exit2) - cmpb $0, 2(%rcx) - jz L(Exit3) - cmpb $0, 3(%rcx) - jz L(Exit4) - cmpb $0, 4(%rcx) - jz L(Exit5) - cmpb $0, 5(%rcx) - jz L(Exit6) - cmpb $0, 6(%rcx) - jz L(Exit7) - cmpb $0, 7(%rcx) - jz L(Exit8) -# ifdef USE_AS_STRNCPY - cmp $16, %r8 - jb L(StrncpyExit15Bytes) -# endif - cmpb $0, 8(%rcx) - jz L(Exit9) - cmpb $0, 9(%rcx) - jz L(Exit10) - cmpb $0, 10(%rcx) - jz L(Exit11) - cmpb $0, 11(%rcx) - jz L(Exit12) - cmpb $0, 12(%rcx) - jz L(Exit13) - cmpb $0, 13(%rcx) - jz L(Exit14) - cmpb $0, 14(%rcx) - jz L(Exit15) -# ifdef USE_AS_STRNCPY - cmp $16, %r8 - je L(Exit16) -# endif - cmpb $0, 15(%rcx) - jz L(Exit16) -# endif - -# ifdef USE_AS_STRNCPY - mov %rcx, %rsi - sub $16, %r8 - and $0xf, %rsi - -/* add 16 bytes rcx_offset to r8 */ - - add %rsi, %r8 -# endif - lea 16(%rcx), %rsi - and $-16, %rsi - pxor %xmm0, %xmm0 - mov (%rcx), %r9 - mov %r9, (%rdx) - pcmpeqb (%rsi), %xmm0 - mov 8(%rcx), %r9 - mov %r9, 8(%rdx) - -/* convert byte mask in xmm0 to bit mask */ - - pmovmskb %xmm0, %rax - sub %rcx, %rsi - -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(CopyFrom1To16BytesCase2OrCase3) -# endif - test %rax, %rax - jnz L(CopyFrom1To16Bytes) - - mov %rdx, %rax - lea 16(%rdx), %rdx - and $-16, %rdx - sub %rdx, %rax - -# ifdef USE_AS_STRNCPY - add %rax, %rsi - lea -1(%rsi), %rsi - and $1<<31, %esi - test %rsi, %rsi - jnz L(ContinueCopy) - lea 16(%r8), %r8 - -L(ContinueCopy): -# endif - sub %rax, %rcx - mov %rcx, %rax - and $0xf, %rax - mov $0, %rsi - -/* case: rcx_offset == rdx_offset */ - - jz L(Align16Both) - - cmp $8, %rax - jae L(ShlHigh8) - cmp $1, %rax - je L(Shl1) - cmp $2, %rax - je L(Shl2) - cmp $3, %rax - je L(Shl3) - cmp $4, %rax - je L(Shl4) - cmp $5, %rax - je L(Shl5) - cmp $6, %rax - je L(Shl6) - jmp L(Shl7) - -L(ShlHigh8): - je L(Shl8) - cmp $9, %rax - je L(Shl9) - cmp $10, %rax - je L(Shl10) - cmp $11, %rax - je L(Shl11) - cmp $12, %rax - je L(Shl12) - cmp $13, %rax - je L(Shl13) - cmp $14, %rax - je L(Shl14) - jmp L(Shl15) - -L(Align16Both): - movaps (%rcx), %xmm1 - movaps 16(%rcx), %xmm2 - movaps %xmm1, (%rdx) - pcmpeqb %xmm2, %xmm0 - pmovmskb %xmm0, %rax - lea 16(%rsi), %rsi -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(CopyFrom1To16BytesCase2OrCase3) -# endif - test %rax, %rax - jnz L(CopyFrom1To16Bytes) - - movaps 16(%rcx, %rsi), %xmm3 - movaps %xmm2, (%rdx, %rsi) - pcmpeqb %xmm3, %xmm0 - pmovmskb %xmm0, %rax - lea 16(%rsi), %rsi -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(CopyFrom1To16BytesCase2OrCase3) -# endif - test %rax, %rax - jnz L(CopyFrom1To16Bytes) - - movaps 16(%rcx, %rsi), %xmm4 - movaps %xmm3, (%rdx, %rsi) - pcmpeqb %xmm4, %xmm0 - pmovmskb %xmm0, %rax - lea 16(%rsi), %rsi -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(CopyFrom1To16BytesCase2OrCase3) -# endif - test %rax, %rax - jnz L(CopyFrom1To16Bytes) - - movaps 16(%rcx, %rsi), %xmm1 - movaps %xmm4, (%rdx, %rsi) - pcmpeqb %xmm1, %xmm0 - pmovmskb %xmm0, %rax - lea 16(%rsi), %rsi -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(CopyFrom1To16BytesCase2OrCase3) -# endif - test %rax, %rax - jnz L(CopyFrom1To16Bytes) - - movaps 16(%rcx, %rsi), %xmm2 - movaps %xmm1, (%rdx, %rsi) - pcmpeqb %xmm2, %xmm0 - pmovmskb %xmm0, %rax - lea 16(%rsi), %rsi -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(CopyFrom1To16BytesCase2OrCase3) -# endif - test %rax, %rax - jnz L(CopyFrom1To16Bytes) - - movaps 16(%rcx, %rsi), %xmm3 - movaps %xmm2, (%rdx, %rsi) - pcmpeqb %xmm3, %xmm0 - pmovmskb %xmm0, %rax - lea 16(%rsi), %rsi -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(CopyFrom1To16BytesCase2OrCase3) -# endif - test %rax, %rax - jnz L(CopyFrom1To16Bytes) - - movaps %xmm3, (%rdx, %rsi) - mov %rcx, %rax - lea 16(%rcx, %rsi), %rcx - and $-0x40, %rcx - sub %rcx, %rax - sub %rax, %rdx -# ifdef USE_AS_STRNCPY - lea 112(%r8, %rax), %r8 -# endif - mov $-0x40, %rsi - - .p2align 4 -L(Aligned64Loop): - movaps (%rcx), %xmm2 - movaps %xmm2, %xmm4 - movaps 16(%rcx), %xmm5 - movaps 32(%rcx), %xmm3 - movaps %xmm3, %xmm6 - movaps 48(%rcx), %xmm7 - pminub %xmm5, %xmm2 - pminub %xmm7, %xmm3 - pminub %xmm2, %xmm3 - pcmpeqb %xmm0, %xmm3 - pmovmskb %xmm3, %rax - lea 64(%rdx), %rdx - lea 64(%rcx), %rcx -# ifdef USE_AS_STRNCPY - sub $64, %r8 - jbe L(StrncpyLeaveCase2OrCase3) -# endif - test %rax, %rax - jnz L(Aligned64Leave) - movaps %xmm4, -64(%rdx) - movaps %xmm5, -48(%rdx) - movaps %xmm6, -32(%rdx) - movaps %xmm7, -16(%rdx) - jmp L(Aligned64Loop) - -L(Aligned64Leave): -# ifdef USE_AS_STRNCPY - lea 48(%r8), %r8 -# endif - pcmpeqb %xmm4, %xmm0 - pmovmskb %xmm0, %rax - test %rax, %rax - jnz L(CopyFrom1To16Bytes) - - pcmpeqb %xmm5, %xmm0 -# ifdef USE_AS_STRNCPY - lea -16(%r8), %r8 -# endif - pmovmskb %xmm0, %rax - movaps %xmm4, -64(%rdx) - test %rax, %rax - lea 16(%rsi), %rsi - jnz L(CopyFrom1To16Bytes) - - pcmpeqb %xmm6, %xmm0 -# ifdef USE_AS_STRNCPY - lea -16(%r8), %r8 -# endif - pmovmskb %xmm0, %rax - movaps %xmm5, -48(%rdx) - test %rax, %rax - lea 16(%rsi), %rsi - jnz L(CopyFrom1To16Bytes) - - movaps %xmm6, -32(%rdx) - pcmpeqb %xmm7, %xmm0 -# ifdef USE_AS_STRNCPY - lea -16(%r8), %r8 -# endif - pmovmskb %xmm0, %rax - lea 16(%rsi), %rsi - jmp L(CopyFrom1To16Bytes) - - .p2align 4 -L(Shl1): - movaps -1(%rcx), %xmm1 - movaps 15(%rcx), %xmm2 -L(Shl1Start): - pcmpeqb %xmm2, %xmm0 - pmovmskb %xmm0, %rax - movaps %xmm2, %xmm3 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit1Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl1LoopExit) - - palignr $1, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 31(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx - movaps %xmm2, %xmm1 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit1Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl1LoopExit) - - palignr $1, %xmm3, %xmm2 - movaps %xmm2, (%rdx) - movaps 31(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx - movaps %xmm2, %xmm3 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit1Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl1LoopExit) - - palignr $1, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 31(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit1Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl1LoopExit) - - palignr $1, %xmm3, %xmm2 - movaps %xmm2, (%rdx) - lea 31(%rcx), %rcx - lea 16(%rdx), %rdx - - mov %rcx, %rax - and $-0x40, %rcx - sub %rcx, %rax - lea -15(%rcx), %rcx - sub %rax, %rdx -# ifdef USE_AS_STRNCPY - add %rax, %r8 -# endif - movaps -1(%rcx), %xmm1 - -/* 64 bytes loop */ - .p2align 4 -L(Shl1LoopStart): - movaps 15(%rcx), %xmm2 - movaps 31(%rcx), %xmm3 - movaps %xmm3, %xmm6 - movaps 47(%rcx), %xmm4 - movaps %xmm4, %xmm7 - movaps 63(%rcx), %xmm5 - pminub %xmm2, %xmm6 - pminub %xmm5, %xmm7 - pminub %xmm6, %xmm7 - pcmpeqb %xmm0, %xmm7 - pmovmskb %xmm7, %rax - movaps %xmm5, %xmm7 - palignr $1, %xmm4, %xmm5 - test %rax, %rax - palignr $1, %xmm3, %xmm4 - jnz L(Shl1Start) -# ifdef USE_AS_STRNCPY - sub $64, %r8 - jbe L(StrncpyLeave1) -# endif - palignr $1, %xmm2, %xmm3 - lea 64(%rcx), %rcx - palignr $1, %xmm1, %xmm2 - movaps %xmm7, %xmm1 - movaps %xmm5, 48(%rdx) - movaps %xmm4, 32(%rdx) - movaps %xmm3, 16(%rdx) - movaps %xmm2, (%rdx) - lea 64(%rdx), %rdx - jmp L(Shl1LoopStart) - -L(Shl1LoopExit): - movdqu -1(%rcx), %xmm1 - mov $15, %rsi - movdqu %xmm1, -1(%rdx) - jmp L(CopyFrom1To16Bytes) - - .p2align 4 -L(Shl2): - movaps -2(%rcx), %xmm1 - movaps 14(%rcx), %xmm2 -L(Shl2Start): - pcmpeqb %xmm2, %xmm0 - pmovmskb %xmm0, %rax - movaps %xmm2, %xmm3 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit2Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl2LoopExit) - - palignr $2, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 30(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx - movaps %xmm2, %xmm1 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit2Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl2LoopExit) - - palignr $2, %xmm3, %xmm2 - movaps %xmm2, (%rdx) - movaps 30(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx - movaps %xmm2, %xmm3 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit2Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl2LoopExit) - - palignr $2, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 30(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit2Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl2LoopExit) - - palignr $2, %xmm3, %xmm2 - movaps %xmm2, (%rdx) - lea 30(%rcx), %rcx - lea 16(%rdx), %rdx - - mov %rcx, %rax - and $-0x40, %rcx - sub %rcx, %rax - lea -14(%rcx), %rcx - sub %rax, %rdx -# ifdef USE_AS_STRNCPY - add %rax, %r8 -# endif - movaps -2(%rcx), %xmm1 - -/* 64 bytes loop */ - .p2align 4 -L(Shl2LoopStart): - movaps 14(%rcx), %xmm2 - movaps 30(%rcx), %xmm3 - movaps %xmm3, %xmm6 - movaps 46(%rcx), %xmm4 - movaps %xmm4, %xmm7 - movaps 62(%rcx), %xmm5 - pminub %xmm2, %xmm6 - pminub %xmm5, %xmm7 - pminub %xmm6, %xmm7 - pcmpeqb %xmm0, %xmm7 - pmovmskb %xmm7, %rax - movaps %xmm5, %xmm7 - palignr $2, %xmm4, %xmm5 - test %rax, %rax - palignr $2, %xmm3, %xmm4 - jnz L(Shl2Start) -# ifdef USE_AS_STRNCPY - sub $64, %r8 - jbe L(StrncpyLeave2) -# endif - palignr $2, %xmm2, %xmm3 - lea 64(%rcx), %rcx - palignr $2, %xmm1, %xmm2 - movaps %xmm7, %xmm1 - movaps %xmm5, 48(%rdx) - movaps %xmm4, 32(%rdx) - movaps %xmm3, 16(%rdx) - movaps %xmm2, (%rdx) - lea 64(%rdx), %rdx - jmp L(Shl2LoopStart) - -L(Shl2LoopExit): - movdqu -2(%rcx), %xmm1 - mov $14, %rsi - movdqu %xmm1, -2(%rdx) - jmp L(CopyFrom1To16Bytes) - - .p2align 4 -L(Shl3): - movaps -3(%rcx), %xmm1 - movaps 13(%rcx), %xmm2 -L(Shl3Start): - pcmpeqb %xmm2, %xmm0 - pmovmskb %xmm0, %rax - movaps %xmm2, %xmm3 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit3Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl3LoopExit) - - palignr $3, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 29(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx - movaps %xmm2, %xmm1 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit3Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl3LoopExit) - - palignr $3, %xmm3, %xmm2 - movaps %xmm2, (%rdx) - movaps 29(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx - movaps %xmm2, %xmm3 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit3Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl3LoopExit) - - palignr $3, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 29(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit3Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl3LoopExit) - - palignr $3, %xmm3, %xmm2 - movaps %xmm2, (%rdx) - lea 29(%rcx), %rcx - lea 16(%rdx), %rdx - - mov %rcx, %rax - and $-0x40, %rcx - sub %rcx, %rax - lea -13(%rcx), %rcx - sub %rax, %rdx -# ifdef USE_AS_STRNCPY - add %rax, %r8 -# endif - movaps -3(%rcx), %xmm1 - -/* 64 bytes loop */ - .p2align 4 -L(Shl3LoopStart): - movaps 13(%rcx), %xmm2 - movaps 29(%rcx), %xmm3 - movaps %xmm3, %xmm6 - movaps 45(%rcx), %xmm4 - movaps %xmm4, %xmm7 - movaps 61(%rcx), %xmm5 - pminub %xmm2, %xmm6 - pminub %xmm5, %xmm7 - pminub %xmm6, %xmm7 - pcmpeqb %xmm0, %xmm7 - pmovmskb %xmm7, %rax - movaps %xmm5, %xmm7 - palignr $3, %xmm4, %xmm5 - test %rax, %rax - palignr $3, %xmm3, %xmm4 - jnz L(Shl3Start) -# ifdef USE_AS_STRNCPY - sub $64, %r8 - jbe L(StrncpyLeave3) -# endif - palignr $3, %xmm2, %xmm3 - lea 64(%rcx), %rcx - palignr $3, %xmm1, %xmm2 - movaps %xmm7, %xmm1 - movaps %xmm5, 48(%rdx) - movaps %xmm4, 32(%rdx) - movaps %xmm3, 16(%rdx) - movaps %xmm2, (%rdx) - lea 64(%rdx), %rdx - jmp L(Shl3LoopStart) - -L(Shl3LoopExit): - movdqu -3(%rcx), %xmm1 - mov $13, %rsi - movdqu %xmm1, -3(%rdx) - jmp L(CopyFrom1To16Bytes) - - .p2align 4 -L(Shl4): - movaps -4(%rcx), %xmm1 - movaps 12(%rcx), %xmm2 -L(Shl4Start): - pcmpeqb %xmm2, %xmm0 - pmovmskb %xmm0, %rax - movaps %xmm2, %xmm3 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit4Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl4LoopExit) - - palignr $4, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 28(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx - movaps %xmm2, %xmm1 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit4Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl4LoopExit) - - palignr $4, %xmm3, %xmm2 - movaps %xmm2, (%rdx) - movaps 28(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx - movaps %xmm2, %xmm3 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit4Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl4LoopExit) - - palignr $4, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 28(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit4Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl4LoopExit) - - palignr $4, %xmm3, %xmm2 - movaps %xmm2, (%rdx) - lea 28(%rcx), %rcx - lea 16(%rdx), %rdx - - mov %rcx, %rax - and $-0x40, %rcx - sub %rcx, %rax - lea -12(%rcx), %rcx - sub %rax, %rdx -# ifdef USE_AS_STRNCPY - add %rax, %r8 -# endif - movaps -4(%rcx), %xmm1 - -/* 64 bytes loop */ - .p2align 4 -L(Shl4LoopStart): - movaps 12(%rcx), %xmm2 - movaps 28(%rcx), %xmm3 - movaps %xmm3, %xmm6 - movaps 44(%rcx), %xmm4 - movaps %xmm4, %xmm7 - movaps 60(%rcx), %xmm5 - pminub %xmm2, %xmm6 - pminub %xmm5, %xmm7 - pminub %xmm6, %xmm7 - pcmpeqb %xmm0, %xmm7 - pmovmskb %xmm7, %rax - movaps %xmm5, %xmm7 - palignr $4, %xmm4, %xmm5 - test %rax, %rax - palignr $4, %xmm3, %xmm4 - jnz L(Shl4Start) -# ifdef USE_AS_STRNCPY - sub $64, %r8 - jbe L(StrncpyLeave4) -# endif - palignr $4, %xmm2, %xmm3 - lea 64(%rcx), %rcx - palignr $4, %xmm1, %xmm2 - movaps %xmm7, %xmm1 - movaps %xmm5, 48(%rdx) - movaps %xmm4, 32(%rdx) - movaps %xmm3, 16(%rdx) - movaps %xmm2, (%rdx) - lea 64(%rdx), %rdx - jmp L(Shl4LoopStart) - -L(Shl4LoopExit): - movdqu -4(%rcx), %xmm1 - mov $12, %rsi - movdqu %xmm1, -4(%rdx) - jmp L(CopyFrom1To16Bytes) - - .p2align 4 -L(Shl5): - movaps -5(%rcx), %xmm1 - movaps 11(%rcx), %xmm2 -L(Shl5Start): - pcmpeqb %xmm2, %xmm0 - pmovmskb %xmm0, %rax - movaps %xmm2, %xmm3 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit5Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl5LoopExit) - - palignr $5, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 27(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx - movaps %xmm2, %xmm1 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit5Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl5LoopExit) - - palignr $5, %xmm3, %xmm2 - movaps %xmm2, (%rdx) - movaps 27(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx - movaps %xmm2, %xmm3 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit5Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl5LoopExit) - - palignr $5, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 27(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit5Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl5LoopExit) - - palignr $5, %xmm3, %xmm2 - movaps %xmm2, (%rdx) - lea 27(%rcx), %rcx - lea 16(%rdx), %rdx - - mov %rcx, %rax - and $-0x40, %rcx - sub %rcx, %rax - lea -11(%rcx), %rcx - sub %rax, %rdx -# ifdef USE_AS_STRNCPY - add %rax, %r8 -# endif - movaps -5(%rcx), %xmm1 - -/* 64 bytes loop */ - .p2align 4 -L(Shl5LoopStart): - movaps 11(%rcx), %xmm2 - movaps 27(%rcx), %xmm3 - movaps %xmm3, %xmm6 - movaps 43(%rcx), %xmm4 - movaps %xmm4, %xmm7 - movaps 59(%rcx), %xmm5 - pminub %xmm2, %xmm6 - pminub %xmm5, %xmm7 - pminub %xmm6, %xmm7 - pcmpeqb %xmm0, %xmm7 - pmovmskb %xmm7, %rax - movaps %xmm5, %xmm7 - palignr $5, %xmm4, %xmm5 - test %rax, %rax - palignr $5, %xmm3, %xmm4 - jnz L(Shl5Start) -# ifdef USE_AS_STRNCPY - sub $64, %r8 - jbe L(StrncpyLeave5) -# endif - palignr $5, %xmm2, %xmm3 - lea 64(%rcx), %rcx - palignr $5, %xmm1, %xmm2 - movaps %xmm7, %xmm1 - movaps %xmm5, 48(%rdx) - movaps %xmm4, 32(%rdx) - movaps %xmm3, 16(%rdx) - movaps %xmm2, (%rdx) - lea 64(%rdx), %rdx - jmp L(Shl5LoopStart) - -L(Shl5LoopExit): - movdqu -5(%rcx), %xmm1 - mov $11, %rsi - movdqu %xmm1, -5(%rdx) - jmp L(CopyFrom1To16Bytes) - - .p2align 4 -L(Shl6): - movaps -6(%rcx), %xmm1 - movaps 10(%rcx), %xmm2 -L(Shl6Start): - pcmpeqb %xmm2, %xmm0 - pmovmskb %xmm0, %rax - movaps %xmm2, %xmm3 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit6Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl6LoopExit) - - palignr $6, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 26(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx - movaps %xmm2, %xmm1 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit6Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl6LoopExit) - - palignr $6, %xmm3, %xmm2 - movaps %xmm2, (%rdx) - movaps 26(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx - movaps %xmm2, %xmm3 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit6Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl6LoopExit) - - palignr $6, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 26(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit6Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl6LoopExit) - - palignr $6, %xmm3, %xmm2 - movaps %xmm2, (%rdx) - lea 26(%rcx), %rcx - lea 16(%rdx), %rdx - - mov %rcx, %rax - and $-0x40, %rcx - sub %rcx, %rax - lea -10(%rcx), %rcx - sub %rax, %rdx -# ifdef USE_AS_STRNCPY - add %rax, %r8 -# endif - movaps -6(%rcx), %xmm1 - -/* 64 bytes loop */ - .p2align 4 -L(Shl6LoopStart): - movaps 10(%rcx), %xmm2 - movaps 26(%rcx), %xmm3 - movaps %xmm3, %xmm6 - movaps 42(%rcx), %xmm4 - movaps %xmm4, %xmm7 - movaps 58(%rcx), %xmm5 - pminub %xmm2, %xmm6 - pminub %xmm5, %xmm7 - pminub %xmm6, %xmm7 - pcmpeqb %xmm0, %xmm7 - pmovmskb %xmm7, %rax - movaps %xmm5, %xmm7 - palignr $6, %xmm4, %xmm5 - test %rax, %rax - palignr $6, %xmm3, %xmm4 - jnz L(Shl6Start) -# ifdef USE_AS_STRNCPY - sub $64, %r8 - jbe L(StrncpyLeave6) -# endif - palignr $6, %xmm2, %xmm3 - lea 64(%rcx), %rcx - palignr $6, %xmm1, %xmm2 - movaps %xmm7, %xmm1 - movaps %xmm5, 48(%rdx) - movaps %xmm4, 32(%rdx) - movaps %xmm3, 16(%rdx) - movaps %xmm2, (%rdx) - lea 64(%rdx), %rdx - jmp L(Shl6LoopStart) - -L(Shl6LoopExit): - mov (%rcx), %r9 - mov 6(%rcx), %esi - mov %r9, (%rdx) - mov %esi, 6(%rdx) - mov $10, %rsi - jmp L(CopyFrom1To16Bytes) - - .p2align 4 -L(Shl7): - movaps -7(%rcx), %xmm1 - movaps 9(%rcx), %xmm2 -L(Shl7Start): - pcmpeqb %xmm2, %xmm0 - pmovmskb %xmm0, %rax - movaps %xmm2, %xmm3 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit7Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl7LoopExit) - - palignr $7, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 25(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx - movaps %xmm2, %xmm1 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit7Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl7LoopExit) - - palignr $7, %xmm3, %xmm2 - movaps %xmm2, (%rdx) - movaps 25(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx - movaps %xmm2, %xmm3 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit7Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl7LoopExit) - - palignr $7, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 25(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit7Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl7LoopExit) - - palignr $7, %xmm3, %xmm2 - movaps %xmm2, (%rdx) - lea 25(%rcx), %rcx - lea 16(%rdx), %rdx - - mov %rcx, %rax - and $-0x40, %rcx - sub %rcx, %rax - lea -9(%rcx), %rcx - sub %rax, %rdx -# ifdef USE_AS_STRNCPY - add %rax, %r8 -# endif - movaps -7(%rcx), %xmm1 - -/* 64 bytes loop */ - .p2align 4 -L(Shl7LoopStart): - movaps 9(%rcx), %xmm2 - movaps 25(%rcx), %xmm3 - movaps %xmm3, %xmm6 - movaps 41(%rcx), %xmm4 - movaps %xmm4, %xmm7 - movaps 57(%rcx), %xmm5 - pminub %xmm2, %xmm6 - pminub %xmm5, %xmm7 - pminub %xmm6, %xmm7 - pcmpeqb %xmm0, %xmm7 - pmovmskb %xmm7, %rax - movaps %xmm5, %xmm7 - palignr $7, %xmm4, %xmm5 - test %rax, %rax - palignr $7, %xmm3, %xmm4 - jnz L(Shl7Start) -# ifdef USE_AS_STRNCPY - sub $64, %r8 - jbe L(StrncpyLeave7) -# endif - palignr $7, %xmm2, %xmm3 - lea 64(%rcx), %rcx - palignr $7, %xmm1, %xmm2 - movaps %xmm7, %xmm1 - movaps %xmm5, 48(%rdx) - movaps %xmm4, 32(%rdx) - movaps %xmm3, 16(%rdx) - movaps %xmm2, (%rdx) - lea 64(%rdx), %rdx - jmp L(Shl7LoopStart) - -L(Shl7LoopExit): - mov (%rcx), %r9 - mov 5(%rcx), %esi - mov %r9, (%rdx) - mov %esi, 5(%rdx) - mov $9, %rsi - jmp L(CopyFrom1To16Bytes) - - .p2align 4 -L(Shl8): - movaps -8(%rcx), %xmm1 - movaps 8(%rcx), %xmm2 -L(Shl8Start): - pcmpeqb %xmm2, %xmm0 - pmovmskb %xmm0, %rax - movaps %xmm2, %xmm3 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit8Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl8LoopExit) - - palignr $8, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 24(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx - movaps %xmm2, %xmm1 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit8Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl8LoopExit) - - palignr $8, %xmm3, %xmm2 - movaps %xmm2, (%rdx) - movaps 24(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx - movaps %xmm2, %xmm3 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit8Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl8LoopExit) - - palignr $8, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 24(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit8Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl8LoopExit) - - palignr $8, %xmm3, %xmm2 - movaps %xmm2, (%rdx) - lea 24(%rcx), %rcx - lea 16(%rdx), %rdx - - mov %rcx, %rax - and $-0x40, %rcx - sub %rcx, %rax - lea -8(%rcx), %rcx - sub %rax, %rdx -# ifdef USE_AS_STRNCPY - add %rax, %r8 -# endif - movaps -8(%rcx), %xmm1 - -/* 64 bytes loop */ - .p2align 4 -L(Shl8LoopStart): - movaps 8(%rcx), %xmm2 - movaps 24(%rcx), %xmm3 - movaps %xmm3, %xmm6 - movaps 40(%rcx), %xmm4 - movaps %xmm4, %xmm7 - movaps 56(%rcx), %xmm5 - pminub %xmm2, %xmm6 - pminub %xmm5, %xmm7 - pminub %xmm6, %xmm7 - pcmpeqb %xmm0, %xmm7 - pmovmskb %xmm7, %rax - movaps %xmm5, %xmm7 - palignr $8, %xmm4, %xmm5 - test %rax, %rax - palignr $8, %xmm3, %xmm4 - jnz L(Shl8Start) -# ifdef USE_AS_STRNCPY - sub $64, %r8 - jbe L(StrncpyLeave8) -# endif - palignr $8, %xmm2, %xmm3 - lea 64(%rcx), %rcx - palignr $8, %xmm1, %xmm2 - movaps %xmm7, %xmm1 - movaps %xmm5, 48(%rdx) - movaps %xmm4, 32(%rdx) - movaps %xmm3, 16(%rdx) - movaps %xmm2, (%rdx) - lea 64(%rdx), %rdx - jmp L(Shl8LoopStart) - -L(Shl8LoopExit): - mov (%rcx), %r9 - mov $8, %rsi - mov %r9, (%rdx) - jmp L(CopyFrom1To16Bytes) - - .p2align 4 -L(Shl9): - movaps -9(%rcx), %xmm1 - movaps 7(%rcx), %xmm2 -L(Shl9Start): - pcmpeqb %xmm2, %xmm0 - pmovmskb %xmm0, %rax - movaps %xmm2, %xmm3 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit9Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl9LoopExit) - - palignr $9, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 23(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx - movaps %xmm2, %xmm1 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit9Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl9LoopExit) - - palignr $9, %xmm3, %xmm2 - movaps %xmm2, (%rdx) - movaps 23(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx - movaps %xmm2, %xmm3 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit9Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl9LoopExit) - - palignr $9, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 23(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit9Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl9LoopExit) - - palignr $9, %xmm3, %xmm2 - movaps %xmm2, (%rdx) - lea 23(%rcx), %rcx - lea 16(%rdx), %rdx - - mov %rcx, %rax - and $-0x40, %rcx - sub %rcx, %rax - lea -7(%rcx), %rcx - sub %rax, %rdx -# ifdef USE_AS_STRNCPY - add %rax, %r8 -# endif - movaps -9(%rcx), %xmm1 - -/* 64 bytes loop */ - .p2align 4 -L(Shl9LoopStart): - movaps 7(%rcx), %xmm2 - movaps 23(%rcx), %xmm3 - movaps %xmm3, %xmm6 - movaps 39(%rcx), %xmm4 - movaps %xmm4, %xmm7 - movaps 55(%rcx), %xmm5 - pminub %xmm2, %xmm6 - pminub %xmm5, %xmm7 - pminub %xmm6, %xmm7 - pcmpeqb %xmm0, %xmm7 - pmovmskb %xmm7, %rax - movaps %xmm5, %xmm7 - palignr $9, %xmm4, %xmm5 - test %rax, %rax - palignr $9, %xmm3, %xmm4 - jnz L(Shl9Start) -# ifdef USE_AS_STRNCPY - sub $64, %r8 - jbe L(StrncpyLeave9) -# endif - palignr $9, %xmm2, %xmm3 - lea 64(%rcx), %rcx - palignr $9, %xmm1, %xmm2 - movaps %xmm7, %xmm1 - movaps %xmm5, 48(%rdx) - movaps %xmm4, 32(%rdx) - movaps %xmm3, 16(%rdx) - movaps %xmm2, (%rdx) - lea 64(%rdx), %rdx - jmp L(Shl9LoopStart) - -L(Shl9LoopExit): - mov -1(%rcx), %r9 - mov $7, %rsi - mov %r9, -1(%rdx) - jmp L(CopyFrom1To16Bytes) - - .p2align 4 -L(Shl10): - movaps -10(%rcx), %xmm1 - movaps 6(%rcx), %xmm2 -L(Shl10Start): - pcmpeqb %xmm2, %xmm0 - pmovmskb %xmm0, %rax - movaps %xmm2, %xmm3 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit10Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl10LoopExit) - - palignr $10, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 22(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx - movaps %xmm2, %xmm1 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit10Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl10LoopExit) - - palignr $10, %xmm3, %xmm2 - movaps %xmm2, (%rdx) - movaps 22(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx - movaps %xmm2, %xmm3 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit10Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl10LoopExit) - - palignr $10, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 22(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit10Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl10LoopExit) - - palignr $10, %xmm3, %xmm2 - movaps %xmm2, (%rdx) - lea 22(%rcx), %rcx - lea 16(%rdx), %rdx - - mov %rcx, %rax - and $-0x40, %rcx - sub %rcx, %rax - lea -6(%rcx), %rcx - sub %rax, %rdx -# ifdef USE_AS_STRNCPY - add %rax, %r8 -# endif - movaps -10(%rcx), %xmm1 - -/* 64 bytes loop */ - .p2align 4 -L(Shl10LoopStart): - movaps 6(%rcx), %xmm2 - movaps 22(%rcx), %xmm3 - movaps %xmm3, %xmm6 - movaps 38(%rcx), %xmm4 - movaps %xmm4, %xmm7 - movaps 54(%rcx), %xmm5 - pminub %xmm2, %xmm6 - pminub %xmm5, %xmm7 - pminub %xmm6, %xmm7 - pcmpeqb %xmm0, %xmm7 - pmovmskb %xmm7, %rax - movaps %xmm5, %xmm7 - palignr $10, %xmm4, %xmm5 - test %rax, %rax - palignr $10, %xmm3, %xmm4 - jnz L(Shl10Start) -# ifdef USE_AS_STRNCPY - sub $64, %r8 - jbe L(StrncpyLeave10) -# endif - palignr $10, %xmm2, %xmm3 - lea 64(%rcx), %rcx - palignr $10, %xmm1, %xmm2 - movaps %xmm7, %xmm1 - movaps %xmm5, 48(%rdx) - movaps %xmm4, 32(%rdx) - movaps %xmm3, 16(%rdx) - movaps %xmm2, (%rdx) - lea 64(%rdx), %rdx - jmp L(Shl10LoopStart) - -L(Shl10LoopExit): - mov -2(%rcx), %r9 - mov $6, %rsi - mov %r9, -2(%rdx) - jmp L(CopyFrom1To16Bytes) - - .p2align 4 -L(Shl11): - movaps -11(%rcx), %xmm1 - movaps 5(%rcx), %xmm2 -L(Shl11Start): - pcmpeqb %xmm2, %xmm0 - pmovmskb %xmm0, %rax - movaps %xmm2, %xmm3 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit11Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl11LoopExit) - - palignr $11, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 21(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx - movaps %xmm2, %xmm1 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit11Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl11LoopExit) - - palignr $11, %xmm3, %xmm2 - movaps %xmm2, (%rdx) - movaps 21(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx - movaps %xmm2, %xmm3 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit11Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl11LoopExit) - - palignr $11, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 21(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit11Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl11LoopExit) - - palignr $11, %xmm3, %xmm2 - movaps %xmm2, (%rdx) - lea 21(%rcx), %rcx - lea 16(%rdx), %rdx - - mov %rcx, %rax - and $-0x40, %rcx - sub %rcx, %rax - lea -5(%rcx), %rcx - sub %rax, %rdx -# ifdef USE_AS_STRNCPY - add %rax, %r8 -# endif - movaps -11(%rcx), %xmm1 - -/* 64 bytes loop */ - .p2align 4 -L(Shl11LoopStart): - movaps 5(%rcx), %xmm2 - movaps 21(%rcx), %xmm3 - movaps %xmm3, %xmm6 - movaps 37(%rcx), %xmm4 - movaps %xmm4, %xmm7 - movaps 53(%rcx), %xmm5 - pminub %xmm2, %xmm6 - pminub %xmm5, %xmm7 - pminub %xmm6, %xmm7 - pcmpeqb %xmm0, %xmm7 - pmovmskb %xmm7, %rax - movaps %xmm5, %xmm7 - palignr $11, %xmm4, %xmm5 - test %rax, %rax - palignr $11, %xmm3, %xmm4 - jnz L(Shl11Start) -# ifdef USE_AS_STRNCPY - sub $64, %r8 - jbe L(StrncpyLeave11) -# endif - palignr $11, %xmm2, %xmm3 - lea 64(%rcx), %rcx - palignr $11, %xmm1, %xmm2 - movaps %xmm7, %xmm1 - movaps %xmm5, 48(%rdx) - movaps %xmm4, 32(%rdx) - movaps %xmm3, 16(%rdx) - movaps %xmm2, (%rdx) - lea 64(%rdx), %rdx - jmp L(Shl11LoopStart) - -L(Shl11LoopExit): - mov -3(%rcx), %r9 - mov $5, %rsi - mov %r9, -3(%rdx) - jmp L(CopyFrom1To16Bytes) - - .p2align 4 -L(Shl12): - movaps -12(%rcx), %xmm1 - movaps 4(%rcx), %xmm2 -L(Shl12Start): - pcmpeqb %xmm2, %xmm0 - pmovmskb %xmm0, %rax - movaps %xmm2, %xmm3 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit12Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl12LoopExit) - - palignr $12, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 20(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx - movaps %xmm2, %xmm1 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit12Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl12LoopExit) - - palignr $12, %xmm3, %xmm2 - movaps %xmm2, (%rdx) - movaps 20(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx - movaps %xmm2, %xmm3 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit12Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl12LoopExit) - - palignr $12, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 20(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit12Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl12LoopExit) - - palignr $12, %xmm3, %xmm2 - movaps %xmm2, (%rdx) - lea 20(%rcx), %rcx - lea 16(%rdx), %rdx - - mov %rcx, %rax - and $-0x40, %rcx - sub %rcx, %rax - lea -4(%rcx), %rcx - sub %rax, %rdx -# ifdef USE_AS_STRNCPY - add %rax, %r8 -# endif - movaps -12(%rcx), %xmm1 - -/* 64 bytes loop */ - .p2align 4 -L(Shl12LoopStart): - movaps 4(%rcx), %xmm2 - movaps 20(%rcx), %xmm3 - movaps %xmm3, %xmm6 - movaps 36(%rcx), %xmm4 - movaps %xmm4, %xmm7 - movaps 52(%rcx), %xmm5 - pminub %xmm2, %xmm6 - pminub %xmm5, %xmm7 - pminub %xmm6, %xmm7 - pcmpeqb %xmm0, %xmm7 - pmovmskb %xmm7, %rax - movaps %xmm5, %xmm7 - palignr $12, %xmm4, %xmm5 - test %rax, %rax - palignr $12, %xmm3, %xmm4 - jnz L(Shl12Start) -# ifdef USE_AS_STRNCPY - sub $64, %r8 - jbe L(StrncpyLeave12) -# endif - palignr $12, %xmm2, %xmm3 - lea 64(%rcx), %rcx - palignr $12, %xmm1, %xmm2 - movaps %xmm7, %xmm1 - movaps %xmm5, 48(%rdx) - movaps %xmm4, 32(%rdx) - movaps %xmm3, 16(%rdx) - movaps %xmm2, (%rdx) - lea 64(%rdx), %rdx - jmp L(Shl12LoopStart) - -L(Shl12LoopExit): - mov (%rcx), %r9d - mov $4, %rsi - mov %r9d, (%rdx) - jmp L(CopyFrom1To16Bytes) - - .p2align 4 -L(Shl13): - movaps -13(%rcx), %xmm1 - movaps 3(%rcx), %xmm2 -L(Shl13Start): - pcmpeqb %xmm2, %xmm0 - pmovmskb %xmm0, %rax - movaps %xmm2, %xmm3 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit13Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl13LoopExit) - - palignr $13, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 19(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx - movaps %xmm2, %xmm1 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit13Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl13LoopExit) - - palignr $13, %xmm3, %xmm2 - movaps %xmm2, (%rdx) - movaps 19(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx - movaps %xmm2, %xmm3 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit13Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl13LoopExit) - - palignr $13, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 19(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit13Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl13LoopExit) - - palignr $13, %xmm3, %xmm2 - movaps %xmm2, (%rdx) - lea 19(%rcx), %rcx - lea 16(%rdx), %rdx - - mov %rcx, %rax - and $-0x40, %rcx - sub %rcx, %rax - lea -3(%rcx), %rcx - sub %rax, %rdx -# ifdef USE_AS_STRNCPY - add %rax, %r8 -# endif - movaps -13(%rcx), %xmm1 - -/* 64 bytes loop */ - .p2align 4 -L(Shl13LoopStart): - movaps 3(%rcx), %xmm2 - movaps 19(%rcx), %xmm3 - movaps %xmm3, %xmm6 - movaps 35(%rcx), %xmm4 - movaps %xmm4, %xmm7 - movaps 51(%rcx), %xmm5 - pminub %xmm2, %xmm6 - pminub %xmm5, %xmm7 - pminub %xmm6, %xmm7 - pcmpeqb %xmm0, %xmm7 - pmovmskb %xmm7, %rax - movaps %xmm5, %xmm7 - palignr $13, %xmm4, %xmm5 - test %rax, %rax - palignr $13, %xmm3, %xmm4 - jnz L(Shl13Start) -# ifdef USE_AS_STRNCPY - sub $64, %r8 - jbe L(StrncpyLeave13) -# endif - palignr $13, %xmm2, %xmm3 - lea 64(%rcx), %rcx - palignr $13, %xmm1, %xmm2 - movaps %xmm7, %xmm1 - movaps %xmm5, 48(%rdx) - movaps %xmm4, 32(%rdx) - movaps %xmm3, 16(%rdx) - movaps %xmm2, (%rdx) - lea 64(%rdx), %rdx - jmp L(Shl13LoopStart) - -L(Shl13LoopExit): - mov -1(%rcx), %r9d - mov $3, %rsi - mov %r9d, -1(%rdx) - jmp L(CopyFrom1To16Bytes) - - .p2align 4 -L(Shl14): - movaps -14(%rcx), %xmm1 - movaps 2(%rcx), %xmm2 -L(Shl14Start): - pcmpeqb %xmm2, %xmm0 - pmovmskb %xmm0, %rax - movaps %xmm2, %xmm3 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit14Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl14LoopExit) - - palignr $14, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 18(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx - movaps %xmm2, %xmm1 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit14Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl14LoopExit) - - palignr $14, %xmm3, %xmm2 - movaps %xmm2, (%rdx) - movaps 18(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx - movaps %xmm2, %xmm3 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit14Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl14LoopExit) - - palignr $14, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 18(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit14Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl14LoopExit) - - palignr $14, %xmm3, %xmm2 - movaps %xmm2, (%rdx) - lea 18(%rcx), %rcx - lea 16(%rdx), %rdx - - mov %rcx, %rax - and $-0x40, %rcx - sub %rcx, %rax - lea -2(%rcx), %rcx - sub %rax, %rdx -# ifdef USE_AS_STRNCPY - add %rax, %r8 -# endif - movaps -14(%rcx), %xmm1 - -/* 64 bytes loop */ - .p2align 4 -L(Shl14LoopStart): - movaps 2(%rcx), %xmm2 - movaps 18(%rcx), %xmm3 - movaps %xmm3, %xmm6 - movaps 34(%rcx), %xmm4 - movaps %xmm4, %xmm7 - movaps 50(%rcx), %xmm5 - pminub %xmm2, %xmm6 - pminub %xmm5, %xmm7 - pminub %xmm6, %xmm7 - pcmpeqb %xmm0, %xmm7 - pmovmskb %xmm7, %rax - movaps %xmm5, %xmm7 - palignr $14, %xmm4, %xmm5 - test %rax, %rax - palignr $14, %xmm3, %xmm4 - jnz L(Shl14Start) -# ifdef USE_AS_STRNCPY - sub $64, %r8 - jbe L(StrncpyLeave14) -# endif - palignr $14, %xmm2, %xmm3 - lea 64(%rcx), %rcx - palignr $14, %xmm1, %xmm2 - movaps %xmm7, %xmm1 - movaps %xmm5, 48(%rdx) - movaps %xmm4, 32(%rdx) - movaps %xmm3, 16(%rdx) - movaps %xmm2, (%rdx) - lea 64(%rdx), %rdx - jmp L(Shl14LoopStart) - -L(Shl14LoopExit): - mov -2(%rcx), %r9d - mov $2, %rsi - mov %r9d, -2(%rdx) - jmp L(CopyFrom1To16Bytes) - - .p2align 4 -L(Shl15): - movaps -15(%rcx), %xmm1 - movaps 1(%rcx), %xmm2 -L(Shl15Start): - pcmpeqb %xmm2, %xmm0 - pmovmskb %xmm0, %rax - movaps %xmm2, %xmm3 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit15Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl15LoopExit) - - palignr $15, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 17(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx - movaps %xmm2, %xmm1 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit15Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl15LoopExit) - - palignr $15, %xmm3, %xmm2 - movaps %xmm2, (%rdx) - movaps 17(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx - movaps %xmm2, %xmm3 -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit15Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl15LoopExit) - - palignr $15, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 17(%rcx), %xmm2 - - pcmpeqb %xmm2, %xmm0 - lea 16(%rdx), %rdx - pmovmskb %xmm0, %rax - lea 16(%rcx), %rcx -# ifdef USE_AS_STRNCPY - sub $16, %r8 - jbe L(StrncpyExit15Case2OrCase3) -# endif - test %rax, %rax - jnz L(Shl15LoopExit) - - palignr $15, %xmm3, %xmm2 - movaps %xmm2, (%rdx) - lea 17(%rcx), %rcx - lea 16(%rdx), %rdx - - mov %rcx, %rax - and $-0x40, %rcx - sub %rcx, %rax - lea -1(%rcx), %rcx - sub %rax, %rdx -# ifdef USE_AS_STRNCPY - add %rax, %r8 -# endif - movaps -15(%rcx), %xmm1 - -/* 64 bytes loop */ - .p2align 4 -L(Shl15LoopStart): - movaps 1(%rcx), %xmm2 - movaps 17(%rcx), %xmm3 - movaps %xmm3, %xmm6 - movaps 33(%rcx), %xmm4 - movaps %xmm4, %xmm7 - movaps 49(%rcx), %xmm5 - pminub %xmm2, %xmm6 - pminub %xmm5, %xmm7 - pminub %xmm6, %xmm7 - pcmpeqb %xmm0, %xmm7 - pmovmskb %xmm7, %rax - movaps %xmm5, %xmm7 - palignr $15, %xmm4, %xmm5 - test %rax, %rax - palignr $15, %xmm3, %xmm4 - jnz L(Shl15Start) -# ifdef USE_AS_STRNCPY - sub $64, %r8 - jbe L(StrncpyLeave15) -# endif - palignr $15, %xmm2, %xmm3 - lea 64(%rcx), %rcx - palignr $15, %xmm1, %xmm2 - movaps %xmm7, %xmm1 - movaps %xmm5, 48(%rdx) - movaps %xmm4, 32(%rdx) - movaps %xmm3, 16(%rdx) - movaps %xmm2, (%rdx) - lea 64(%rdx), %rdx - jmp L(Shl15LoopStart) - -L(Shl15LoopExit): - mov -3(%rcx), %r9d - mov $1, %rsi - mov %r9d, -3(%rdx) -# ifdef USE_AS_STRCAT - jmp L(CopyFrom1To16Bytes) -# endif - -# ifndef USE_AS_STRCAT - - .p2align 4 -L(CopyFrom1To16Bytes): -# ifdef USE_AS_STRNCPY - add $16, %r8 -# endif - add %rsi, %rdx - add %rsi, %rcx - - test %al, %al - jz L(ExitHigh) - test $0x01, %al - jnz L(Exit1) - test $0x02, %al - jnz L(Exit2) - test $0x04, %al - jnz L(Exit3) - test $0x08, %al - jnz L(Exit4) - test $0x10, %al - jnz L(Exit5) - test $0x20, %al - jnz L(Exit6) - test $0x40, %al - jnz L(Exit7) - - .p2align 4 -L(Exit8): - mov (%rcx), %rax - mov %rax, (%rdx) -# ifdef USE_AS_STPCPY - lea 7(%rdx), %rax -# else - mov %rdi, %rax -# endif -# ifdef USE_AS_STRNCPY - sub $8, %r8 - lea 8(%rdx), %rcx - jnz L(StrncpyFillTailWithZero1) -# ifdef USE_AS_STPCPY - cmpb $1, (%rax) - sbb $-1, %rax -# endif -# endif - ret - - .p2align 4 -L(ExitHigh): - test $0x01, %ah - jnz L(Exit9) - test $0x02, %ah - jnz L(Exit10) - test $0x04, %ah - jnz L(Exit11) - test $0x08, %ah - jnz L(Exit12) - test $0x10, %ah - jnz L(Exit13) - test $0x20, %ah - jnz L(Exit14) - test $0x40, %ah - jnz L(Exit15) - - .p2align 4 -L(Exit16): - mov (%rcx), %rax - mov %rax, (%rdx) - mov 8(%rcx), %rax - mov %rax, 8(%rdx) -# ifdef USE_AS_STPCPY - lea 15(%rdx), %rax -# else - mov %rdi, %rax -# endif -# ifdef USE_AS_STRNCPY - sub $16, %r8 - lea 16(%rdx), %rcx - jnz L(StrncpyFillTailWithZero1) -# ifdef USE_AS_STPCPY - cmpb $1, (%rax) - sbb $-1, %rax -# endif -# endif - ret - -# ifdef USE_AS_STRNCPY - - .p2align 4 -L(CopyFrom1To16BytesCase2): - add $16, %r8 - add %rsi, %rcx - lea (%rsi, %rdx), %rsi - lea -9(%r8), %rdx - and $1<<7, %dh - or %al, %dh - test %dh, %dh - lea (%rsi), %rdx - jz L(ExitHighCase2) - - cmp $1, %r8 - je L(Exit1) - test $0x01, %al - jnz L(Exit1) - cmp $2, %r8 - je L(Exit2) - test $0x02, %al - jnz L(Exit2) - cmp $3, %r8 - je L(Exit3) - test $0x04, %al - jnz L(Exit3) - cmp $4, %r8 - je L(Exit4) - test $0x08, %al - jnz L(Exit4) - cmp $5, %r8 - je L(Exit5) - test $0x10, %al - jnz L(Exit5) - cmp $6, %r8 - je L(Exit6) - test $0x20, %al - jnz L(Exit6) - cmp $7, %r8 - je L(Exit7) - test $0x40, %al - jnz L(Exit7) - jmp L(Exit8) - - .p2align 4 -L(ExitHighCase2): - cmp $9, %r8 - je L(Exit9) - test $0x01, %ah - jnz L(Exit9) - cmp $10, %r8 - je L(Exit10) - test $0x02, %ah - jnz L(Exit10) - cmp $11, %r8 - je L(Exit11) - test $0x04, %ah - jnz L(Exit11) - cmp $12, %r8 - je L(Exit12) - test $0x8, %ah - jnz L(Exit12) - cmp $13, %r8 - je L(Exit13) - test $0x10, %ah - jnz L(Exit13) - cmp $14, %r8 - je L(Exit14) - test $0x20, %ah - jnz L(Exit14) - cmp $15, %r8 - je L(Exit15) - test $0x40, %ah - jnz L(Exit15) - jmp L(Exit16) - -L(CopyFrom1To16BytesCase2OrCase3): - test %rax, %rax - jnz L(CopyFrom1To16BytesCase2) - - .p2align 4 -L(CopyFrom1To16BytesCase3): - add $16, %r8 - add %rsi, %rdx - add %rsi, %rcx - - cmp $16, %r8 - je L(Exit16) - cmp $8, %r8 - je L(Exit8) - jg L(More8Case3) - cmp $4, %r8 - je L(Exit4) - jg L(More4Case3) - cmp $2, %r8 - jl L(Exit1) - je L(Exit2) - jg L(Exit3) -L(More8Case3): /* but less than 16 */ - cmp $12, %r8 - je L(Exit12) - jl L(Less12Case3) - cmp $14, %r8 - jl L(Exit13) - je L(Exit14) - jg L(Exit15) -L(More4Case3): /* but less than 8 */ - cmp $6, %r8 - jl L(Exit5) - je L(Exit6) - jg L(Exit7) -L(Less12Case3): /* but more than 8 */ - cmp $10, %r8 - jl L(Exit9) - je L(Exit10) - jg L(Exit11) -# endif - - .p2align 4 -L(Exit1): - movb (%rcx), %al - movb %al, (%rdx) -# ifdef USE_AS_STPCPY - lea (%rdx), %rax -# else - mov %rdi, %rax -# endif -# ifdef USE_AS_STRNCPY - sub $1, %r8 - lea 1(%rdx), %rcx - jnz L(StrncpyFillTailWithZero1) -# ifdef USE_AS_STPCPY - cmpb $1, (%rax) - sbb $-1, %rax -# endif -# endif - ret - - .p2align 4 -L(Exit2): - movw (%rcx), %ax - movw %ax, (%rdx) -# ifdef USE_AS_STPCPY - lea 1(%rdx), %rax -# else - mov %rdi, %rax -# endif -# ifdef USE_AS_STRNCPY - sub $2, %r8 - lea 2(%rdx), %rcx - jnz L(StrncpyFillTailWithZero1) -# ifdef USE_AS_STPCPY - cmpb $1, (%rax) - sbb $-1, %rax -# endif -# endif - ret - - .p2align 4 -L(Exit3): - movw (%rcx), %ax - movw %ax, (%rdx) - movb 2(%rcx), %al - movb %al, 2(%rdx) -# ifdef USE_AS_STPCPY - lea 2(%rdx), %rax -# else - mov %rdi, %rax -# endif -# ifdef USE_AS_STRNCPY - sub $3, %r8 - lea 3(%rdx), %rcx - jnz L(StrncpyFillTailWithZero1) -# ifdef USE_AS_STPCPY - cmpb $1, (%rax) - sbb $-1, %rax -# endif -# endif - ret - - .p2align 4 -L(Exit4): - movl (%rcx), %eax - movl %eax, (%rdx) -# ifdef USE_AS_STPCPY - lea 3(%rdx), %rax -# else - mov %rdi, %rax -# endif -# ifdef USE_AS_STRNCPY - sub $4, %r8 - lea 4(%rdx), %rcx - jnz L(StrncpyFillTailWithZero1) -# ifdef USE_AS_STPCPY - cmpb $1, (%rax) - sbb $-1, %rax -# endif -# endif - ret - - .p2align 4 -L(Exit5): - movl (%rcx), %eax - movl %eax, (%rdx) - movb 4(%rcx), %al - movb %al, 4(%rdx) -# ifdef USE_AS_STPCPY - lea 4(%rdx), %rax -# else - mov %rdi, %rax -# endif -# ifdef USE_AS_STRNCPY - sub $5, %r8 - lea 5(%rdx), %rcx - jnz L(StrncpyFillTailWithZero1) -# ifdef USE_AS_STPCPY - cmpb $1, (%rax) - sbb $-1, %rax -# endif -# endif - ret - - .p2align 4 -L(Exit6): - movl (%rcx), %eax - movl %eax, (%rdx) - movw 4(%rcx), %ax - movw %ax, 4(%rdx) -# ifdef USE_AS_STPCPY - lea 5(%rdx), %rax -# else - mov %rdi, %rax -# endif -# ifdef USE_AS_STRNCPY - sub $6, %r8 - lea 6(%rdx), %rcx - jnz L(StrncpyFillTailWithZero1) -# ifdef USE_AS_STPCPY - cmpb $1, (%rax) - sbb $-1, %rax -# endif -# endif - ret - - .p2align 4 -L(Exit7): - movl (%rcx), %eax - movl %eax, (%rdx) - movl 3(%rcx), %eax - movl %eax, 3(%rdx) -# ifdef USE_AS_STPCPY - lea 6(%rdx), %rax -# else - mov %rdi, %rax -# endif -# ifdef USE_AS_STRNCPY - sub $7, %r8 - lea 7(%rdx), %rcx - jnz L(StrncpyFillTailWithZero1) -# ifdef USE_AS_STPCPY - cmpb $1, (%rax) - sbb $-1, %rax -# endif -# endif - ret - - .p2align 4 -L(Exit9): - mov (%rcx), %rax - mov %rax, (%rdx) - mov 5(%rcx), %eax - mov %eax, 5(%rdx) -# ifdef USE_AS_STPCPY - lea 8(%rdx), %rax -# else - mov %rdi, %rax -# endif -# ifdef USE_AS_STRNCPY - sub $9, %r8 - lea 9(%rdx), %rcx - jnz L(StrncpyFillTailWithZero1) -# ifdef USE_AS_STPCPY - cmpb $1, (%rax) - sbb $-1, %rax -# endif -# endif - ret - - .p2align 4 -L(Exit10): - mov (%rcx), %rax - mov %rax, (%rdx) - mov 6(%rcx), %eax - mov %eax, 6(%rdx) -# ifdef USE_AS_STPCPY - lea 9(%rdx), %rax -# else - mov %rdi, %rax -# endif -# ifdef USE_AS_STRNCPY - sub $10, %r8 - lea 10(%rdx), %rcx - jnz L(StrncpyFillTailWithZero1) -# ifdef USE_AS_STPCPY - cmpb $1, (%rax) - sbb $-1, %rax -# endif -# endif - ret - - .p2align 4 -L(Exit11): - mov (%rcx), %rax - mov %rax, (%rdx) - mov 7(%rcx), %eax - mov %eax, 7(%rdx) -# ifdef USE_AS_STPCPY - lea 10(%rdx), %rax -# else - mov %rdi, %rax -# endif -# ifdef USE_AS_STRNCPY - sub $11, %r8 - lea 11(%rdx), %rcx - jnz L(StrncpyFillTailWithZero1) -# ifdef USE_AS_STPCPY - cmpb $1, (%rax) - sbb $-1, %rax -# endif -# endif - ret - - .p2align 4 -L(Exit12): - mov (%rcx), %rax - mov %rax, (%rdx) - mov 8(%rcx), %eax - mov %eax, 8(%rdx) -# ifdef USE_AS_STPCPY - lea 11(%rdx), %rax -# else - mov %rdi, %rax -# endif -# ifdef USE_AS_STRNCPY - sub $12, %r8 - lea 12(%rdx), %rcx - jnz L(StrncpyFillTailWithZero1) -# ifdef USE_AS_STPCPY - cmpb $1, (%rax) - sbb $-1, %rax -# endif -# endif - ret - - .p2align 4 -L(Exit13): - mov (%rcx), %rax - mov %rax, (%rdx) - mov 5(%rcx), %rax - mov %rax, 5(%rdx) -# ifdef USE_AS_STPCPY - lea 12(%rdx), %rax -# else - mov %rdi, %rax -# endif -# ifdef USE_AS_STRNCPY - sub $13, %r8 - lea 13(%rdx), %rcx - jnz L(StrncpyFillTailWithZero1) -# ifdef USE_AS_STPCPY - cmpb $1, (%rax) - sbb $-1, %rax -# endif -# endif - ret - - .p2align 4 -L(Exit14): - mov (%rcx), %rax - mov %rax, (%rdx) - mov 6(%rcx), %rax - mov %rax, 6(%rdx) -# ifdef USE_AS_STPCPY - lea 13(%rdx), %rax -# else - mov %rdi, %rax -# endif -# ifdef USE_AS_STRNCPY - sub $14, %r8 - lea 14(%rdx), %rcx - jnz L(StrncpyFillTailWithZero1) -# ifdef USE_AS_STPCPY - cmpb $1, (%rax) - sbb $-1, %rax -# endif -# endif - ret - - .p2align 4 -L(Exit15): - mov (%rcx), %rax - mov %rax, (%rdx) - mov 7(%rcx), %rax - mov %rax, 7(%rdx) -# ifdef USE_AS_STPCPY - lea 14(%rdx), %rax -# else - mov %rdi, %rax -# endif -# ifdef USE_AS_STRNCPY - sub $15, %r8 - lea 15(%rdx), %rcx - jnz L(StrncpyFillTailWithZero1) -# ifdef USE_AS_STPCPY - cmpb $1, (%rax) - sbb $-1, %rax -# endif -# endif - ret - -# ifdef USE_AS_STRNCPY - .p2align 4 -L(Fill0): - ret - - .p2align 4 -L(Fill1): - movb %dl, (%rcx) - ret - - .p2align 4 -L(Fill2): - movw %dx, (%rcx) - ret - - .p2align 4 -L(Fill3): - movw %dx, (%rcx) - movb %dl, 2(%rcx) - ret - - .p2align 4 -L(Fill4): - movl %edx, (%rcx) - ret - - .p2align 4 -L(Fill5): - movl %edx, (%rcx) - movb %dl, 4(%rcx) - ret - - .p2align 4 -L(Fill6): - movl %edx, (%rcx) - movw %dx, 4(%rcx) - ret - - .p2align 4 -L(Fill7): - movl %edx, (%rcx) - movl %edx, 3(%rcx) - ret - - .p2align 4 -L(Fill8): - mov %rdx, (%rcx) - ret - - .p2align 4 -L(Fill9): - mov %rdx, (%rcx) - movb %dl, 8(%rcx) - ret - - .p2align 4 -L(Fill10): - mov %rdx, (%rcx) - movw %dx, 8(%rcx) - ret - - .p2align 4 -L(Fill11): - mov %rdx, (%rcx) - movl %edx, 7(%rcx) - ret - - .p2align 4 -L(Fill12): - mov %rdx, (%rcx) - movl %edx, 8(%rcx) - ret - - .p2align 4 -L(Fill13): - mov %rdx, (%rcx) - mov %rdx, 5(%rcx) - ret - - .p2align 4 -L(Fill14): - mov %rdx, (%rcx) - mov %rdx, 6(%rcx) - ret - - .p2align 4 -L(Fill15): - mov %rdx, (%rcx) - mov %rdx, 7(%rcx) - ret - - .p2align 4 -L(Fill16): - mov %rdx, (%rcx) - mov %rdx, 8(%rcx) - ret - - .p2align 4 -L(StrncpyFillExit1): - lea 16(%r8), %r8 -L(FillFrom1To16Bytes): - test %r8, %r8 - jz L(Fill0) - cmp $16, %r8 - je L(Fill16) - cmp $8, %r8 - je L(Fill8) - jg L(FillMore8) - cmp $4, %r8 - je L(Fill4) - jg L(FillMore4) - cmp $2, %r8 - jl L(Fill1) - je L(Fill2) - jg L(Fill3) -L(FillMore8): /* but less than 16 */ - cmp $12, %r8 - je L(Fill12) - jl L(FillLess12) - cmp $14, %r8 - jl L(Fill13) - je L(Fill14) - jg L(Fill15) -L(FillMore4): /* but less than 8 */ - cmp $6, %r8 - jl L(Fill5) - je L(Fill6) - jg L(Fill7) -L(FillLess12): /* but more than 8 */ - cmp $10, %r8 - jl L(Fill9) - je L(Fill10) - jmp L(Fill11) - - .p2align 4 -L(StrncpyFillTailWithZero1): - xor %rdx, %rdx - sub $16, %r8 - jbe L(StrncpyFillExit1) - - pxor %xmm0, %xmm0 - mov %rdx, (%rcx) - mov %rdx, 8(%rcx) - - lea 16(%rcx), %rcx - - mov %rcx, %rdx - and $0xf, %rdx - sub %rdx, %rcx - add %rdx, %r8 - xor %rdx, %rdx - sub $64, %r8 - jb L(StrncpyFillLess64) - -L(StrncpyFillLoopMovdqa): - movdqa %xmm0, (%rcx) - movdqa %xmm0, 16(%rcx) - movdqa %xmm0, 32(%rcx) - movdqa %xmm0, 48(%rcx) - lea 64(%rcx), %rcx - sub $64, %r8 - jae L(StrncpyFillLoopMovdqa) - -L(StrncpyFillLess64): - add $32, %r8 - jl L(StrncpyFillLess32) - movdqa %xmm0, (%rcx) - movdqa %xmm0, 16(%rcx) - lea 32(%rcx), %rcx - sub $16, %r8 - jl L(StrncpyFillExit1) - movdqa %xmm0, (%rcx) - lea 16(%rcx), %rcx - jmp L(FillFrom1To16Bytes) - -L(StrncpyFillLess32): - add $16, %r8 - jl L(StrncpyFillExit1) - movdqa %xmm0, (%rcx) - lea 16(%rcx), %rcx - jmp L(FillFrom1To16Bytes) - - .p2align 4 -L(Exit0): - mov %rdx, %rax - ret - - .p2align 4 -L(StrncpyExit15Bytes): - cmp $9, %r8 - je L(Exit9) - cmpb $0, 8(%rcx) - jz L(Exit9) - cmp $10, %r8 - je L(Exit10) - cmpb $0, 9(%rcx) - jz L(Exit10) - cmp $11, %r8 - je L(Exit11) - cmpb $0, 10(%rcx) - jz L(Exit11) - cmp $12, %r8 - je L(Exit12) - cmpb $0, 11(%rcx) - jz L(Exit12) - cmp $13, %r8 - je L(Exit13) - cmpb $0, 12(%rcx) - jz L(Exit13) - cmp $14, %r8 - je L(Exit14) - cmpb $0, 13(%rcx) - jz L(Exit14) - mov (%rcx), %rax - mov %rax, (%rdx) - mov 7(%rcx), %rax - mov %rax, 7(%rdx) -# ifdef USE_AS_STPCPY - lea 14(%rdx), %rax - cmpb $1, (%rax) - sbb $-1, %rax -# else - mov %rdi, %rax -# endif - ret - - .p2align 4 -L(StrncpyExit8Bytes): - cmp $1, %r8 - je L(Exit1) - cmpb $0, (%rcx) - jz L(Exit1) - cmp $2, %r8 - je L(Exit2) - cmpb $0, 1(%rcx) - jz L(Exit2) - cmp $3, %r8 - je L(Exit3) - cmpb $0, 2(%rcx) - jz L(Exit3) - cmp $4, %r8 - je L(Exit4) - cmpb $0, 3(%rcx) - jz L(Exit4) - cmp $5, %r8 - je L(Exit5) - cmpb $0, 4(%rcx) - jz L(Exit5) - cmp $6, %r8 - je L(Exit6) - cmpb $0, 5(%rcx) - jz L(Exit6) - cmp $7, %r8 - je L(Exit7) - cmpb $0, 6(%rcx) - jz L(Exit7) - mov (%rcx), %rax - mov %rax, (%rdx) -# ifdef USE_AS_STPCPY - lea 7(%rdx), %rax - cmpb $1, (%rax) - sbb $-1, %rax -# else - mov %rdi, %rax -# endif - ret - -# endif -# endif - -# ifdef USE_AS_STRNCPY - .p2align 4 -L(StrncpyLeaveCase2OrCase3): - test %rax, %rax - jnz L(Aligned64LeaveCase2) - -L(Aligned64LeaveCase3): - lea 64(%r8), %r8 - sub $16, %r8 - jbe L(CopyFrom1To16BytesCase3) - movaps %xmm4, -64(%rdx) - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(CopyFrom1To16BytesCase3) - movaps %xmm5, -48(%rdx) - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(CopyFrom1To16BytesCase3) - movaps %xmm6, -32(%rdx) - lea 16(%rsi), %rsi - lea -16(%r8), %r8 - jmp L(CopyFrom1To16BytesCase3) - -L(Aligned64LeaveCase2): - pcmpeqb %xmm4, %xmm0 - pmovmskb %xmm0, %rax - add $48, %r8 - jle L(CopyFrom1To16BytesCase2OrCase3) - test %rax, %rax - jnz L(CopyFrom1To16Bytes) - - pcmpeqb %xmm5, %xmm0 - pmovmskb %xmm0, %rax - movaps %xmm4, -64(%rdx) - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(CopyFrom1To16BytesCase2OrCase3) - test %rax, %rax - jnz L(CopyFrom1To16Bytes) - - pcmpeqb %xmm6, %xmm0 - pmovmskb %xmm0, %rax - movaps %xmm5, -48(%rdx) - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(CopyFrom1To16BytesCase2OrCase3) - test %rax, %rax - jnz L(CopyFrom1To16Bytes) - - pcmpeqb %xmm7, %xmm0 - pmovmskb %xmm0, %rax - movaps %xmm6, -32(%rdx) - lea 16(%rsi), %rsi - lea -16(%r8), %r8 - jmp L(CopyFrom1To16BytesCase2) -/*--------------------------------------------------*/ - .p2align 4 -L(StrncpyExit1Case2OrCase3): - movdqu -1(%rcx), %xmm0 - movdqu %xmm0, -1(%rdx) - mov $15, %rsi - test %rax, %rax - jnz L(CopyFrom1To16BytesCase2) - jmp L(CopyFrom1To16BytesCase3) - - .p2align 4 -L(StrncpyExit2Case2OrCase3): - movdqu -2(%rcx), %xmm0 - movdqu %xmm0, -2(%rdx) - mov $14, %rsi - test %rax, %rax - jnz L(CopyFrom1To16BytesCase2) - jmp L(CopyFrom1To16BytesCase3) - - .p2align 4 -L(StrncpyExit3Case2OrCase3): - movdqu -3(%rcx), %xmm0 - movdqu %xmm0, -3(%rdx) - mov $13, %rsi - test %rax, %rax - jnz L(CopyFrom1To16BytesCase2) - jmp L(CopyFrom1To16BytesCase3) - - .p2align 4 -L(StrncpyExit4Case2OrCase3): - movdqu -4(%rcx), %xmm0 - movdqu %xmm0, -4(%rdx) - mov $12, %rsi - test %rax, %rax - jnz L(CopyFrom1To16BytesCase2) - jmp L(CopyFrom1To16BytesCase3) - - .p2align 4 -L(StrncpyExit5Case2OrCase3): - movdqu -5(%rcx), %xmm0 - movdqu %xmm0, -5(%rdx) - mov $11, %rsi - test %rax, %rax - jnz L(CopyFrom1To16BytesCase2) - jmp L(CopyFrom1To16BytesCase3) - - .p2align 4 -L(StrncpyExit6Case2OrCase3): - mov (%rcx), %rsi - mov 6(%rcx), %r9d - mov %r9d, 6(%rdx) - mov %rsi, (%rdx) - test %rax, %rax - mov $10, %rsi - jnz L(CopyFrom1To16BytesCase2) - jmp L(CopyFrom1To16BytesCase3) - - .p2align 4 -L(StrncpyExit7Case2OrCase3): - mov (%rcx), %rsi - mov 5(%rcx), %r9d - mov %r9d, 5(%rdx) - mov %rsi, (%rdx) - test %rax, %rax - mov $9, %rsi - jnz L(CopyFrom1To16BytesCase2) - jmp L(CopyFrom1To16BytesCase3) - - .p2align 4 -L(StrncpyExit8Case2OrCase3): - mov (%rcx), %r9 - mov $8, %rsi - mov %r9, (%rdx) - test %rax, %rax - jnz L(CopyFrom1To16BytesCase2) - jmp L(CopyFrom1To16BytesCase3) - - .p2align 4 -L(StrncpyExit9Case2OrCase3): - mov -1(%rcx), %r9 - mov $7, %rsi - mov %r9, -1(%rdx) - test %rax, %rax - jnz L(CopyFrom1To16BytesCase2) - jmp L(CopyFrom1To16BytesCase3) - - .p2align 4 -L(StrncpyExit10Case2OrCase3): - mov -2(%rcx), %r9 - mov $6, %rsi - mov %r9, -2(%rdx) - test %rax, %rax - jnz L(CopyFrom1To16BytesCase2) - jmp L(CopyFrom1To16BytesCase3) - - .p2align 4 -L(StrncpyExit11Case2OrCase3): - mov -3(%rcx), %r9 - mov $5, %rsi - mov %r9, -3(%rdx) - test %rax, %rax - jnz L(CopyFrom1To16BytesCase2) - jmp L(CopyFrom1To16BytesCase3) - - .p2align 4 -L(StrncpyExit12Case2OrCase3): - mov (%rcx), %r9d - mov $4, %rsi - mov %r9d, (%rdx) - test %rax, %rax - jnz L(CopyFrom1To16BytesCase2) - jmp L(CopyFrom1To16BytesCase3) - - .p2align 4 -L(StrncpyExit13Case2OrCase3): - mov -1(%rcx), %r9d - mov $3, %rsi - mov %r9d, -1(%rdx) - test %rax, %rax - jnz L(CopyFrom1To16BytesCase2) - jmp L(CopyFrom1To16BytesCase3) - - .p2align 4 -L(StrncpyExit14Case2OrCase3): - mov -2(%rcx), %r9d - mov $2, %rsi - mov %r9d, -2(%rdx) - test %rax, %rax - jnz L(CopyFrom1To16BytesCase2) - jmp L(CopyFrom1To16BytesCase3) - - .p2align 4 -L(StrncpyExit15Case2OrCase3): - mov -3(%rcx), %r9d - mov $1, %rsi - mov %r9d, -3(%rdx) - test %rax, %rax - jnz L(CopyFrom1To16BytesCase2) - jmp L(CopyFrom1To16BytesCase3) - - .p2align 4 -L(StrncpyLeave1): - movaps %xmm2, %xmm3 - add $48, %r8 - jle L(StrncpyExit1) - palignr $1, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 31(%rcx), %xmm2 - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit1) - palignr $1, %xmm3, %xmm2 - movaps %xmm2, 16(%rdx) - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit1) - movaps %xmm4, 32(%rdx) - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit1) - movaps %xmm5, 48(%rdx) - lea 16(%rsi), %rsi - lea -16(%r8), %r8 - -L(StrncpyExit1): - lea 15(%rdx, %rsi), %rdx - lea 15(%rcx, %rsi), %rcx - mov -15(%rcx), %rsi - mov -8(%rcx), %rax - mov %rsi, -15(%rdx) - mov %rax, -8(%rdx) - xor %rsi, %rsi - jmp L(CopyFrom1To16BytesCase3) - - .p2align 4 -L(StrncpyLeave2): - movaps %xmm2, %xmm3 - add $48, %r8 - jle L(StrncpyExit2) - palignr $2, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 30(%rcx), %xmm2 - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit2) - palignr $2, %xmm3, %xmm2 - movaps %xmm2, 16(%rdx) - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit2) - movaps %xmm4, 32(%rdx) - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit2) - movaps %xmm5, 48(%rdx) - lea 16(%rsi), %rsi - lea -16(%r8), %r8 - -L(StrncpyExit2): - lea 14(%rdx, %rsi), %rdx - lea 14(%rcx, %rsi), %rcx - mov -14(%rcx), %rsi - mov -8(%rcx), %rax - mov %rsi, -14(%rdx) - mov %rax, -8(%rdx) - xor %rsi, %rsi - jmp L(CopyFrom1To16BytesCase3) - - .p2align 4 -L(StrncpyLeave3): - movaps %xmm2, %xmm3 - add $48, %r8 - jle L(StrncpyExit3) - palignr $3, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 29(%rcx), %xmm2 - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit3) - palignr $3, %xmm3, %xmm2 - movaps %xmm2, 16(%rdx) - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit3) - movaps %xmm4, 32(%rdx) - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit3) - movaps %xmm5, 48(%rdx) - lea 16(%rsi), %rsi - lea -16(%r8), %r8 - -L(StrncpyExit3): - lea 13(%rdx, %rsi), %rdx - lea 13(%rcx, %rsi), %rcx - mov -13(%rcx), %rsi - mov -8(%rcx), %rax - mov %rsi, -13(%rdx) - mov %rax, -8(%rdx) - xor %rsi, %rsi - jmp L(CopyFrom1To16BytesCase3) - - .p2align 4 -L(StrncpyLeave4): - movaps %xmm2, %xmm3 - add $48, %r8 - jle L(StrncpyExit4) - palignr $4, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 28(%rcx), %xmm2 - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit4) - palignr $4, %xmm3, %xmm2 - movaps %xmm2, 16(%rdx) - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit4) - movaps %xmm4, 32(%rdx) - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit4) - movaps %xmm5, 48(%rdx) - lea 16(%rsi), %rsi - lea -16(%r8), %r8 - -L(StrncpyExit4): - lea 12(%rdx, %rsi), %rdx - lea 12(%rcx, %rsi), %rcx - mov -12(%rcx), %rsi - mov -4(%rcx), %eax - mov %rsi, -12(%rdx) - mov %eax, -4(%rdx) - xor %rsi, %rsi - jmp L(CopyFrom1To16BytesCase3) - - .p2align 4 -L(StrncpyLeave5): - movaps %xmm2, %xmm3 - add $48, %r8 - jle L(StrncpyExit5) - palignr $5, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 27(%rcx), %xmm2 - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit5) - palignr $5, %xmm3, %xmm2 - movaps %xmm2, 16(%rdx) - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit5) - movaps %xmm4, 32(%rdx) - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit5) - movaps %xmm5, 48(%rdx) - lea 16(%rsi), %rsi - lea -16(%r8), %r8 - -L(StrncpyExit5): - lea 11(%rdx, %rsi), %rdx - lea 11(%rcx, %rsi), %rcx - mov -11(%rcx), %rsi - mov -4(%rcx), %eax - mov %rsi, -11(%rdx) - mov %eax, -4(%rdx) - xor %rsi, %rsi - jmp L(CopyFrom1To16BytesCase3) - - .p2align 4 -L(StrncpyLeave6): - movaps %xmm2, %xmm3 - add $48, %r8 - jle L(StrncpyExit6) - palignr $6, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 26(%rcx), %xmm2 - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit6) - palignr $6, %xmm3, %xmm2 - movaps %xmm2, 16(%rdx) - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit6) - movaps %xmm4, 32(%rdx) - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit6) - movaps %xmm5, 48(%rdx) - lea 16(%rsi), %rsi - lea -16(%r8), %r8 - -L(StrncpyExit6): - lea 10(%rdx, %rsi), %rdx - lea 10(%rcx, %rsi), %rcx - mov -10(%rcx), %rsi - movw -2(%rcx), %ax - mov %rsi, -10(%rdx) - movw %ax, -2(%rdx) - xor %rsi, %rsi - jmp L(CopyFrom1To16BytesCase3) - - .p2align 4 -L(StrncpyLeave7): - movaps %xmm2, %xmm3 - add $48, %r8 - jle L(StrncpyExit7) - palignr $7, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 25(%rcx), %xmm2 - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit7) - palignr $7, %xmm3, %xmm2 - movaps %xmm2, 16(%rdx) - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit7) - movaps %xmm4, 32(%rdx) - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit7) - movaps %xmm5, 48(%rdx) - lea 16(%rsi), %rsi - lea -16(%r8), %r8 - -L(StrncpyExit7): - lea 9(%rdx, %rsi), %rdx - lea 9(%rcx, %rsi), %rcx - mov -9(%rcx), %rsi - movb -1(%rcx), %ah - mov %rsi, -9(%rdx) - movb %ah, -1(%rdx) - xor %rsi, %rsi - jmp L(CopyFrom1To16BytesCase3) - - .p2align 4 -L(StrncpyLeave8): - movaps %xmm2, %xmm3 - add $48, %r8 - jle L(StrncpyExit8) - palignr $8, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 24(%rcx), %xmm2 - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit8) - palignr $8, %xmm3, %xmm2 - movaps %xmm2, 16(%rdx) - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit8) - movaps %xmm4, 32(%rdx) - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit8) - movaps %xmm5, 48(%rdx) - lea 16(%rsi), %rsi - lea -16(%r8), %r8 - -L(StrncpyExit8): - lea 8(%rdx, %rsi), %rdx - lea 8(%rcx, %rsi), %rcx - mov -8(%rcx), %rax - xor %rsi, %rsi - mov %rax, -8(%rdx) - jmp L(CopyFrom1To16BytesCase3) - - .p2align 4 -L(StrncpyLeave9): - movaps %xmm2, %xmm3 - add $48, %r8 - jle L(StrncpyExit9) - palignr $9, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 23(%rcx), %xmm2 - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit9) - palignr $9, %xmm3, %xmm2 - movaps %xmm2, 16(%rdx) - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit9) - movaps %xmm4, 32(%rdx) - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit9) - movaps %xmm5, 48(%rdx) - lea 16(%rsi), %rsi - lea -16(%r8), %r8 - -L(StrncpyExit9): - lea 7(%rdx, %rsi), %rdx - lea 7(%rcx, %rsi), %rcx - mov -8(%rcx), %rax - xor %rsi, %rsi - mov %rax, -8(%rdx) - jmp L(CopyFrom1To16BytesCase3) - - .p2align 4 -L(StrncpyLeave10): - movaps %xmm2, %xmm3 - add $48, %r8 - jle L(StrncpyExit10) - palignr $10, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 22(%rcx), %xmm2 - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit10) - palignr $10, %xmm3, %xmm2 - movaps %xmm2, 16(%rdx) - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit10) - movaps %xmm4, 32(%rdx) - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit10) - movaps %xmm5, 48(%rdx) - lea 16(%rsi), %rsi - lea -16(%r8), %r8 - -L(StrncpyExit10): - lea 6(%rdx, %rsi), %rdx - lea 6(%rcx, %rsi), %rcx - mov -8(%rcx), %rax - xor %rsi, %rsi - mov %rax, -8(%rdx) - jmp L(CopyFrom1To16BytesCase3) - - .p2align 4 -L(StrncpyLeave11): - movaps %xmm2, %xmm3 - add $48, %r8 - jle L(StrncpyExit11) - palignr $11, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 21(%rcx), %xmm2 - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit11) - palignr $11, %xmm3, %xmm2 - movaps %xmm2, 16(%rdx) - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit11) - movaps %xmm4, 32(%rdx) - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit11) - movaps %xmm5, 48(%rdx) - lea 16(%rsi), %rsi - lea -16(%r8), %r8 - -L(StrncpyExit11): - lea 5(%rdx, %rsi), %rdx - lea 5(%rcx, %rsi), %rcx - mov -8(%rcx), %rax - xor %rsi, %rsi - mov %rax, -8(%rdx) - jmp L(CopyFrom1To16BytesCase3) - - .p2align 4 -L(StrncpyLeave12): - movaps %xmm2, %xmm3 - add $48, %r8 - jle L(StrncpyExit12) - palignr $12, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 20(%rcx), %xmm2 - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit12) - palignr $12, %xmm3, %xmm2 - movaps %xmm2, 16(%rdx) - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit12) - movaps %xmm4, 32(%rdx) - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit12) - movaps %xmm5, 48(%rdx) - lea 16(%rsi), %rsi - lea -16(%r8), %r8 - -L(StrncpyExit12): - lea 4(%rdx, %rsi), %rdx - lea 4(%rcx, %rsi), %rcx - mov -4(%rcx), %eax - xor %rsi, %rsi - mov %eax, -4(%rdx) - jmp L(CopyFrom1To16BytesCase3) - - .p2align 4 -L(StrncpyLeave13): - movaps %xmm2, %xmm3 - add $48, %r8 - jle L(StrncpyExit13) - palignr $13, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 19(%rcx), %xmm2 - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit13) - palignr $13, %xmm3, %xmm2 - movaps %xmm2, 16(%rdx) - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit13) - movaps %xmm4, 32(%rdx) - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit13) - movaps %xmm5, 48(%rdx) - lea 16(%rsi), %rsi - lea -16(%r8), %r8 - -L(StrncpyExit13): - lea 3(%rdx, %rsi), %rdx - lea 3(%rcx, %rsi), %rcx - mov -4(%rcx), %eax - xor %rsi, %rsi - mov %eax, -4(%rdx) - jmp L(CopyFrom1To16BytesCase3) - - .p2align 4 -L(StrncpyLeave14): - movaps %xmm2, %xmm3 - add $48, %r8 - jle L(StrncpyExit14) - palignr $14, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 18(%rcx), %xmm2 - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit14) - palignr $14, %xmm3, %xmm2 - movaps %xmm2, 16(%rdx) - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit14) - movaps %xmm4, 32(%rdx) - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit14) - movaps %xmm5, 48(%rdx) - lea 16(%rsi), %rsi - lea -16(%r8), %r8 - -L(StrncpyExit14): - lea 2(%rdx, %rsi), %rdx - lea 2(%rcx, %rsi), %rcx - movw -2(%rcx), %ax - xor %rsi, %rsi - movw %ax, -2(%rdx) - jmp L(CopyFrom1To16BytesCase3) - - .p2align 4 -L(StrncpyLeave15): - movaps %xmm2, %xmm3 - add $48, %r8 - jle L(StrncpyExit15) - palignr $15, %xmm1, %xmm2 - movaps %xmm2, (%rdx) - movaps 17(%rcx), %xmm2 - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit15) - palignr $15, %xmm3, %xmm2 - movaps %xmm2, 16(%rdx) - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit15) - movaps %xmm4, 32(%rdx) - lea 16(%rsi), %rsi - sub $16, %r8 - jbe L(StrncpyExit15) - movaps %xmm5, 48(%rdx) - lea 16(%rsi), %rsi - lea -16(%r8), %r8 - -L(StrncpyExit15): - lea 1(%rdx, %rsi), %rdx - lea 1(%rcx, %rsi), %rcx - movb -1(%rcx), %ah - xor %rsi, %rsi - movb %ah, -1(%rdx) - jmp L(CopyFrom1To16BytesCase3) - -# endif -# ifndef USE_AS_STRCAT -END (STRCPY) -# endif -#endif diff --git a/sysdeps/x86_64/multiarch/strncpy-ssse3.S b/sysdeps/x86_64/multiarch/strncpy-ssse3.S deleted file mode 100644 index bf82ee447d..0000000000 --- a/sysdeps/x86_64/multiarch/strncpy-ssse3.S +++ /dev/null @@ -1,3 +0,0 @@ -#define USE_AS_STRNCPY -#define STRCPY __strncpy_ssse3 -#include "strcpy-ssse3.S"