[PATCH v1 6/8] x86: Optimize memrchr-avx2.S

Noah Goldstein goldstein.w.n@gmail.com
Fri Jun 3 04:50:24 GMT 2022


On Thu, Jun 2, 2022 at 11:42 PM Noah Goldstein <goldstein.w.n@gmail.com> wrote:
>
> The new code:
>     1. prioritizes smaller user-arg lengths more.
>     2. optimizes target placement more carefully
>     3. reuses logic more
>     4. fixes up various inefficiencies in the logic. The biggest
>        case here is the `lzcnt` logic for checking returns which
>        saves either a branch or multiple instructions.
>
> The total code size saving is: 306 bytes
> Geometric Mean of all benchmarks New / Old: 0.760
>
> Regressions:
> There are some regressions. Particularly where the length (user arg
> length) is large but the position of the match char is near the
> begining of the string (in first VEC). This case has roughly a
> 10-20% regression.
>
> This is because the new logic gives the hot path for immediate matches
> to shorter lengths (the more common input). This case has roughly
> a 15-45% speedup.
>
> Full xcheck passes on x86_64.
> ---
>  sysdeps/x86_64/multiarch/memrchr-avx2-rtm.S |   1 +
>  sysdeps/x86_64/multiarch/memrchr-avx2.S     | 538 ++++++++++----------
>  2 files changed, 260 insertions(+), 279 deletions(-)
>
> diff --git a/sysdeps/x86_64/multiarch/memrchr-avx2-rtm.S b/sysdeps/x86_64/multiarch/memrchr-avx2-rtm.S
> index cea2d2a72d..5e9beeeef2 100644
> --- a/sysdeps/x86_64/multiarch/memrchr-avx2-rtm.S
> +++ b/sysdeps/x86_64/multiarch/memrchr-avx2-rtm.S
> @@ -2,6 +2,7 @@
>  # define MEMRCHR __memrchr_avx2_rtm
>  #endif
>
> +#define COND_VZEROUPPER        COND_VZEROUPPER_XTEST
>  #define ZERO_UPPER_VEC_REGISTERS_RETURN \
>    ZERO_UPPER_VEC_REGISTERS_RETURN_XTEST
>
> diff --git a/sysdeps/x86_64/multiarch/memrchr-avx2.S b/sysdeps/x86_64/multiarch/memrchr-avx2.S
> index ba2ce7cb03..6915e1c373 100644
> --- a/sysdeps/x86_64/multiarch/memrchr-avx2.S
> +++ b/sysdeps/x86_64/multiarch/memrchr-avx2.S
> @@ -21,340 +21,320 @@
>  # include <sysdep.h>
>
>  # ifndef MEMRCHR
> -#  define MEMRCHR      __memrchr_avx2
> +#  define MEMRCHR                              __memrchr_avx2
>  # endif
>
>  # ifndef VZEROUPPER
> -#  define VZEROUPPER   vzeroupper
> +#  define VZEROUPPER                   vzeroupper
>  # endif
>
> +// abf-off
>  # ifndef SECTION
>  #  define SECTION(p)   p##.avx
>  # endif
> +// abf-on
> +
> +# define VEC_SIZE                      32
> +# define PAGE_SIZE                     4096
> +       .section SECTION(.text), "ax", @progbits
> +ENTRY(MEMRCHR)
> +# ifdef __ILP32__
> +       /* Clear upper bits.  */
> +       and     %RDX_LP, %RDX_LP
> +# else
> +       test    %RDX_LP, %RDX_LP
> +# endif
> +       jz      L(zero_0)
>
> -# define VEC_SIZE 32
> -
> -       .section SECTION(.text),"ax",@progbits
> -ENTRY (MEMRCHR)
> -       /* Broadcast CHAR to YMM0.  */
>         vmovd   %esi, %xmm0
> -       vpbroadcastb %xmm0, %ymm0
> -
> -       sub     $VEC_SIZE, %RDX_LP
> -       jbe     L(last_vec_or_less)
> -
> -       add     %RDX_LP, %RDI_LP
> +       /* Get end pointer. Minus one for two reasons. 1) It is necessary for a
> +          correct page cross check and 2) it correctly sets up end ptr to be
> +          subtract by lzcnt aligned.  */
> +       leaq    -1(%rdx, %rdi), %rax
>
> -       /* Check the last VEC_SIZE bytes.  */
> -       vpcmpeqb (%rdi), %ymm0, %ymm1
> -       vpmovmskb %ymm1, %eax
> -       testl   %eax, %eax
> -       jnz     L(last_vec_x0)
> -
> -       subq    $(VEC_SIZE * 4), %rdi
> -       movl    %edi, %ecx
> -       andl    $(VEC_SIZE - 1), %ecx
> -       jz      L(aligned_more)
> +       vpbroadcastb %xmm0, %ymm0
>
> -       /* Align data for aligned loads in the loop.  */
> -       addq    $VEC_SIZE, %rdi
> -       addq    $VEC_SIZE, %rdx
> -       andq    $-VEC_SIZE, %rdi
> -       subq    %rcx, %rdx
> +       /* Check if we can load 1x VEC without cross a page.  */
> +       testl   $(PAGE_SIZE - VEC_SIZE), %eax
> +       jz      L(page_cross)
> +
> +       vpcmpeqb -(VEC_SIZE - 1)(%rax), %ymm0, %ymm1
> +       vpmovmskb %ymm1, %ecx
> +       cmpq    $VEC_SIZE, %rdx
> +       ja      L(more_1x_vec)
> +
> +L(ret_vec_x0_test):
> +       /* If ecx is zero (no matches) lzcnt will set it 32 (VEC_SIZE) which
> +          will gurantee edx (len) is less than it.  */
> +       lzcntl  %ecx, %ecx
> +
> +       /* Hoist vzeroupper (not great for RTM) to save code size. This allows
> +          all logic for edx (len) <= VEC_SIZE to fit in first cache line.  */
> +       COND_VZEROUPPER
> +       cmpl    %ecx, %edx
> +       jle     L(zero_0)
> +       subq    %rcx, %rax
> +       ret
>
> -       .p2align 4
> -L(aligned_more):
> -       subq    $(VEC_SIZE * 4), %rdx
> -       jbe     L(last_4x_vec_or_less)
> -
> -       /* Check the last 4 * VEC_SIZE.  Only one VEC_SIZE at a time
> -          since data is only aligned to VEC_SIZE.  */
> -       vpcmpeqb (VEC_SIZE * 3)(%rdi), %ymm0, %ymm1
> -       vpmovmskb %ymm1, %eax
> -       testl   %eax, %eax
> -       jnz     L(last_vec_x3)
> -
> -       vpcmpeqb (VEC_SIZE * 2)(%rdi), %ymm0, %ymm2
> -       vpmovmskb %ymm2, %eax
> -       testl   %eax, %eax
> -       jnz     L(last_vec_x2)
> -
> -       vpcmpeqb VEC_SIZE(%rdi), %ymm0, %ymm3
> -       vpmovmskb %ymm3, %eax
> -       testl   %eax, %eax
> -       jnz     L(last_vec_x1)
> -
> -       vpcmpeqb (%rdi), %ymm0, %ymm4
> -       vpmovmskb %ymm4, %eax
> -       testl   %eax, %eax
> -       jnz     L(last_vec_x0)
> -
> -       /* Align data to 4 * VEC_SIZE for loop with fewer branches.
> -          There are some overlaps with above if data isn't aligned
> -          to 4 * VEC_SIZE.  */
> -       movl    %edi, %ecx
> -       andl    $(VEC_SIZE * 4 - 1), %ecx
> -       jz      L(loop_4x_vec)
> -
> -       addq    $(VEC_SIZE * 4), %rdi
> -       addq    $(VEC_SIZE * 4), %rdx
> -       andq    $-(VEC_SIZE * 4), %rdi
> -       subq    %rcx, %rdx
> +       /* Fits in aligning bytes of first cache line.  */
> +L(zero_0):
> +       xorl    %eax, %eax
> +       ret
>
> -       .p2align 4
> -L(loop_4x_vec):
> -       /* Compare 4 * VEC at a time forward.  */
> -       subq    $(VEC_SIZE * 4), %rdi
> -       subq    $(VEC_SIZE * 4), %rdx
> -       jbe     L(last_4x_vec_or_less)
> -
> -       vmovdqa (%rdi), %ymm1
> -       vmovdqa VEC_SIZE(%rdi), %ymm2
> -       vmovdqa (VEC_SIZE * 2)(%rdi), %ymm3
> -       vmovdqa (VEC_SIZE * 3)(%rdi), %ymm4
> -
> -       vpcmpeqb %ymm1, %ymm0, %ymm1
> -       vpcmpeqb %ymm2, %ymm0, %ymm2
> -       vpcmpeqb %ymm3, %ymm0, %ymm3
> -       vpcmpeqb %ymm4, %ymm0, %ymm4
> -
> -       vpor    %ymm1, %ymm2, %ymm5
> -       vpor    %ymm3, %ymm4, %ymm6
> -       vpor    %ymm5, %ymm6, %ymm5
> -
> -       vpmovmskb %ymm5, %eax
> -       testl   %eax, %eax
> -       jz      L(loop_4x_vec)
> -
> -       /* There is a match.  */
> -       vpmovmskb %ymm4, %eax
> -       testl   %eax, %eax
> -       jnz     L(last_vec_x3)
> -
> -       vpmovmskb %ymm3, %eax
> -       testl   %eax, %eax
> -       jnz     L(last_vec_x2)
> -
> -       vpmovmskb %ymm2, %eax
> -       testl   %eax, %eax
> -       jnz     L(last_vec_x1)
> -
> -       vpmovmskb %ymm1, %eax
> -       bsrl    %eax, %eax
> -       addq    %rdi, %rax
> +       .p2align 4,, 9
> +L(ret_vec_x0):
> +       lzcntl  %ecx, %ecx
> +       subq    %rcx, %rax
>  L(return_vzeroupper):
>         ZERO_UPPER_VEC_REGISTERS_RETURN
>
> -       .p2align 4
> -L(last_4x_vec_or_less):
> -       addl    $(VEC_SIZE * 4), %edx
> -       cmpl    $(VEC_SIZE * 2), %edx
> -       jbe     L(last_2x_vec)
> -
> -       vpcmpeqb (VEC_SIZE * 3)(%rdi), %ymm0, %ymm1
> -       vpmovmskb %ymm1, %eax
> -       testl   %eax, %eax
> -       jnz     L(last_vec_x3)
> -
> -       vpcmpeqb (VEC_SIZE * 2)(%rdi), %ymm0, %ymm2
> -       vpmovmskb %ymm2, %eax
> -       testl   %eax, %eax
> -       jnz     L(last_vec_x2)
> -
> -       vpcmpeqb VEC_SIZE(%rdi), %ymm0, %ymm3
> -       vpmovmskb %ymm3, %eax
> -       testl   %eax, %eax
> -       jnz     L(last_vec_x1_check)
> -       cmpl    $(VEC_SIZE * 3), %edx
> -       jbe     L(zero)
> -
> -       vpcmpeqb (%rdi), %ymm0, %ymm4
> -       vpmovmskb %ymm4, %eax
> -       testl   %eax, %eax
> -       jz      L(zero)
> -       bsrl    %eax, %eax
> -       subq    $(VEC_SIZE * 4), %rdx
> -       addq    %rax, %rdx
> -       jl      L(zero)
> -       addq    %rdi, %rax
> -       VZEROUPPER_RETURN
> -
> -       .p2align 4
> +       .p2align 4,, 10
> +L(more_1x_vec):
> +       testl   %ecx, %ecx
> +       jnz     L(ret_vec_x0)
> +
> +       /* Align rax (string pointer).  */
> +       andq    $-VEC_SIZE, %rax
> +
> +       /* Recompute remaining length after aligning.  */
> +       movq    %rax, %rdx
> +       /* Need this comparison next no matter what.  */
> +       vpcmpeqb -(VEC_SIZE)(%rax), %ymm0, %ymm1
> +       subq    %rdi, %rdx
> +       decq    %rax
> +       vpmovmskb %ymm1, %ecx
> +       /* Fall through for short (hotter than length).  */
> +       cmpq    $(VEC_SIZE * 2), %rdx
> +       ja      L(more_2x_vec)
>  L(last_2x_vec):
> -       vpcmpeqb (VEC_SIZE * 3)(%rdi), %ymm0, %ymm1
> -       vpmovmskb %ymm1, %eax
> -       testl   %eax, %eax
> -       jnz     L(last_vec_x3_check)
>         cmpl    $VEC_SIZE, %edx
> -       jbe     L(zero)
> -
> -       vpcmpeqb (VEC_SIZE * 2)(%rdi), %ymm0, %ymm1
> -       vpmovmskb %ymm1, %eax
> -       testl   %eax, %eax
> -       jz      L(zero)
> -       bsrl    %eax, %eax
> -       subq    $(VEC_SIZE * 2), %rdx
> -       addq    %rax, %rdx
> -       jl      L(zero)
> -       addl    $(VEC_SIZE * 2), %eax
> -       addq    %rdi, %rax
> -       VZEROUPPER_RETURN
> -
> -       .p2align 4
> -L(last_vec_x0):
> -       bsrl    %eax, %eax
> -       addq    %rdi, %rax
> -       VZEROUPPER_RETURN
> +       jbe     L(ret_vec_x0_test)
> +
> +       testl   %ecx, %ecx
> +       jnz     L(ret_vec_x0)
> +
> +       vpcmpeqb -(VEC_SIZE * 2 - 1)(%rax), %ymm0, %ymm1
> +       vpmovmskb %ymm1, %ecx
> +       /* 64-bit lzcnt. This will naturally add 32 to position.  */
> +       lzcntq  %rcx, %rcx
> +       COND_VZEROUPPER
> +       cmpl    %ecx, %edx
> +       jle     L(zero_0)
> +       subq    %rcx, %rax
> +       ret
>
> -       .p2align 4
> -L(last_vec_x1):
> -       bsrl    %eax, %eax
> -       addl    $VEC_SIZE, %eax
> -       addq    %rdi, %rax
> -       VZEROUPPER_RETURN
>
> -       .p2align 4
> -L(last_vec_x2):
> -       bsrl    %eax, %eax
> -       addl    $(VEC_SIZE * 2), %eax
> -       addq    %rdi, %rax
> +       /* Inexpensive place to put this regarding code size / target alignments
> +          / ICache NLP. Necessary for 2-byte encoding of jump to page cross
> +          case which inturn in necessray for hot path (len <= VEC_SIZE) to fit
> +          in first cache line.  */
> +L(page_cross):
> +       movq    %rax, %rsi
> +       andq    $-VEC_SIZE, %rsi
> +       vpcmpeqb (%rsi), %ymm0, %ymm1
> +       vpmovmskb %ymm1, %ecx
> +       /* Shift out negative alignment (because we are starting from endptr and
> +          working backwards).  */
> +       movl    %eax, %r8d
> +       /* notl because eax already has endptr - 1.  (-x = ~(x - 1)).  */
> +       notl    %r8d
> +       shlxl   %r8d, %ecx, %ecx
> +       cmpq    %rdi, %rsi
> +       ja      L(more_1x_vec)
> +       lzcntl  %ecx, %ecx
> +       COND_VZEROUPPER
> +       cmpl    %ecx, %edx
> +       jle     L(zero_0)
> +       subq    %rcx, %rax
> +       ret
> +       .p2align 4,, 11
> +L(ret_vec_x1):
> +       /* This will naturally add 32 to position.  */
> +       lzcntq  %rcx, %rcx
> +       subq    %rcx, %rax
>         VZEROUPPER_RETURN
> +       .p2align 4,, 10
> +L(more_2x_vec):
> +       testl   %ecx, %ecx
> +       jnz     L(ret_vec_x0)
>
> -       .p2align 4
> -L(last_vec_x3):
> -       bsrl    %eax, %eax
> -       addl    $(VEC_SIZE * 3), %eax
> -       addq    %rdi, %rax
> -       ret
> +       vpcmpeqb -(VEC_SIZE * 2 - 1)(%rax), %ymm0, %ymm1
> +       vpmovmskb %ymm1, %ecx
> +       testl   %ecx, %ecx
> +       jnz     L(ret_vec_x1)
>
> -       .p2align 4
> -L(last_vec_x1_check):
> -       bsrl    %eax, %eax
> -       subq    $(VEC_SIZE * 3), %rdx
> -       addq    %rax, %rdx
> -       jl      L(zero)
> -       addl    $VEC_SIZE, %eax
> -       addq    %rdi, %rax
> -       VZEROUPPER_RETURN
>
> -       .p2align 4
> -L(last_vec_x3_check):
> -       bsrl    %eax, %eax
> -       subq    $VEC_SIZE, %rdx
> -       addq    %rax, %rdx
> -       jl      L(zero)
> -       addl    $(VEC_SIZE * 3), %eax
> -       addq    %rdi, %rax
> -       VZEROUPPER_RETURN
> +       /* Needed no matter what.  */
> +       vpcmpeqb -(VEC_SIZE * 3 - 1)(%rax), %ymm0, %ymm1
> +       vpmovmskb %ymm1, %ecx
>
> -       .p2align 4
> -L(zero):
> -       xorl    %eax, %eax
> -       VZEROUPPER_RETURN
> +       subq    $(VEC_SIZE * 4), %rdx
> +       ja      L(more_4x_vec)
> +
> +       cmpl    $(VEC_SIZE * -1), %edx
> +       jle     L(ret_vec_x2_test)
> +
> +L(last_vec):
> +       testl   %ecx, %ecx
> +       jnz     L(ret_vec_x2)
> +
> +       /* Needed no matter what.  */
> +       vpcmpeqb -(VEC_SIZE * 4 - 1)(%rax), %ymm0, %ymm1
> +       vpmovmskb %ymm1, %ecx
> +       lzcntl  %ecx, %ecx
> +       subq    $(VEC_SIZE * 3), %rax
> +       COND_VZEROUPPER
> +       subq    %rcx, %rax
> +       cmpq    %rax, %rdi
> +       ja      L(zero_2)
> +       ret
>
> -       .p2align 4
> -L(null):
> +       /* First in aligning bytes.  */
> +L(zero_2):
>         xorl    %eax, %eax
>         ret
>
> -       .p2align 4
> -L(last_vec_or_less_aligned):
> -       movl    %edx, %ecx
> +       .p2align 4,, 4
> +L(ret_vec_x2_test):
> +       lzcntl  %ecx, %ecx
> +       subq    $(VEC_SIZE * 2), %rax
> +       COND_VZEROUPPER
> +       subq    %rcx, %rax
> +       cmpq    %rax, %rdi
> +       ja      L(zero_2)
> +       ret
>
> -       vpcmpeqb (%rdi), %ymm0, %ymm1
>
> -       movl    $1, %edx
> -       /* Support rdx << 32.  */
> -       salq    %cl, %rdx
> -       subq    $1, %rdx
> +       .p2align 4,, 11
> +L(ret_vec_x2):
> +       /* ecx must be non-zero.  */
> +       bsrl    %ecx, %ecx
> +       leaq    (VEC_SIZE * -3 + 1)(%rcx, %rax), %rax
> +       VZEROUPPER_RETURN
>
> -       vpmovmskb %ymm1, %eax
> +       .p2align 4,, 14
> +L(ret_vec_x3):
> +       /* ecx must be non-zero.  */
> +       bsrl    %ecx, %ecx
> +       leaq    (VEC_SIZE * -4 + 1)(%rcx, %rax), %rax
> +       VZEROUPPER_RETURN
>
> -       /* Remove the trailing bytes.  */
> -       andl    %edx, %eax
> -       testl   %eax, %eax
> -       jz      L(zero)
>
> -       bsrl    %eax, %eax
> -       addq    %rdi, %rax
> -       VZEROUPPER_RETURN
>
>         .p2align 4
> -L(last_vec_or_less):
> -       addl    $VEC_SIZE, %edx
> +L(more_4x_vec):
> +       testl   %ecx, %ecx
> +       jnz     L(ret_vec_x2)
>
> -       /* Check for zero length.  */
> -       testl   %edx, %edx
> -       jz      L(null)
> +       vpcmpeqb -(VEC_SIZE * 4 - 1)(%rax), %ymm0, %ymm1
> +       vpmovmskb %ymm1, %ecx
>
> -       movl    %edi, %ecx
> -       andl    $(VEC_SIZE - 1), %ecx
> -       jz      L(last_vec_or_less_aligned)
> +       testl   %ecx, %ecx
> +       jnz     L(ret_vec_x3)
>
> -       movl    %ecx, %esi
> -       movl    %ecx, %r8d
> -       addl    %edx, %esi
> -       andq    $-VEC_SIZE, %rdi
> +       /* Check if near end before re-aligning (otherwise might do an
> +          unnecissary loop iteration).  */
> +       addq    $-(VEC_SIZE * 4), %rax
> +       cmpq    $(VEC_SIZE * 4), %rdx
> +       jbe     L(last_4x_vec)
>
> -       subl    $VEC_SIZE, %esi
> -       ja      L(last_vec_2x_aligned)
> +       /* Align rax to (VEC_SIZE - 1).  */
> +       orq     $(VEC_SIZE * 4 - 1), %rax
> +       movq    %rdi, %rdx
> +       /* Get endptr for loop in rdx. NB: Can't just do while rax > rdi because
> +          lengths that overflow can be valid and break the comparison.  */
> +       orq     $(VEC_SIZE * 4 - 1), %rdx
>
> -       /* Check the last VEC.  */
> -       vpcmpeqb (%rdi), %ymm0, %ymm1
> -       vpmovmskb %ymm1, %eax
> -
> -       /* Remove the leading and trailing bytes.  */
> -       sarl    %cl, %eax
> -       movl    %edx, %ecx
> +       .p2align 4
> +L(loop_4x_vec):
> +       /* Need this comparison next no matter what.  */
> +       vpcmpeqb -(VEC_SIZE * 1 - 1)(%rax), %ymm0, %ymm1
> +       vpcmpeqb -(VEC_SIZE * 2 - 1)(%rax), %ymm0, %ymm2
> +       vpcmpeqb -(VEC_SIZE * 3 - 1)(%rax), %ymm0, %ymm3
> +       vpcmpeqb -(VEC_SIZE * 4 - 1)(%rax), %ymm0, %ymm4
>
> -       movl    $1, %edx
> -       sall    %cl, %edx
> -       subl    $1, %edx
> +       vpor    %ymm1, %ymm2, %ymm2
> +       vpor    %ymm3, %ymm4, %ymm4
> +       vpor    %ymm2, %ymm4, %ymm4
> +       vpmovmskb %ymm4, %esi
>
> -       andl    %edx, %eax
> -       testl   %eax, %eax
> -       jz      L(zero)
> +       testl   %esi, %esi
> +       jnz     L(loop_end)
>
> -       bsrl    %eax, %eax
> -       addq    %rdi, %rax
> -       addq    %r8, %rax
> -       VZEROUPPER_RETURN
> +       addq    $(VEC_SIZE * -4), %rax
> +       cmpq    %rdx, %rax
> +       jne     L(loop_4x_vec)
>
> -       .p2align 4
> -L(last_vec_2x_aligned):
> -       movl    %esi, %ecx
> +       subl    %edi, %edx
> +       incl    %edx
>
> -       /* Check the last VEC.  */
> -       vpcmpeqb VEC_SIZE(%rdi), %ymm0, %ymm1
> +L(last_4x_vec):
> +       /* Used no matter what.  */
> +       vpcmpeqb -(VEC_SIZE * 1 - 1)(%rax), %ymm0, %ymm1
> +       vpmovmskb %ymm1, %ecx
>
> -       movl    $1, %edx
> -       sall    %cl, %edx
> -       subl    $1, %edx
> +       cmpl    $(VEC_SIZE * 2), %edx
> +       jbe     L(last_2x_vec)
>
> -       vpmovmskb %ymm1, %eax
> +       testl   %ecx, %ecx
> +       jnz     L(ret_vec_x0_end)
>
> -       /* Remove the trailing bytes.  */
> -       andl    %edx, %eax
> +       vpcmpeqb -(VEC_SIZE * 2 - 1)(%rax), %ymm0, %ymm1
> +       vpmovmskb %ymm1, %ecx
> +       testl   %ecx, %ecx
> +       jnz     L(ret_vec_x1_end)
>
> -       testl   %eax, %eax
> -       jnz     L(last_vec_x1)
> +       /* Used no matter what.  */
> +       vpcmpeqb -(VEC_SIZE * 3 - 1)(%rax), %ymm0, %ymm1
> +       vpmovmskb %ymm1, %ecx
>
> -       /* Check the second last VEC.  */
> -       vpcmpeqb (%rdi), %ymm0, %ymm1
> +       cmpl    $(VEC_SIZE * 3), %edx
> +       ja      L(last_vec)
> +
> +       lzcntl  %ecx, %ecx
> +       subq    $(VEC_SIZE * 2), %rax
> +       COND_VZEROUPPER
> +       subq    %rcx, %rax
> +       cmpq    %rax, %rdi
> +       jbe     L(ret0)
> +       xorl    %eax, %eax
> +L(ret0):
> +       ret
>
> -       movl    %r8d, %ecx
>
> -       vpmovmskb %ymm1, %eax
> +       .p2align 4
> +L(loop_end):
> +       vpmovmskb %ymm1, %ecx
> +       testl   %ecx, %ecx
> +       jnz     L(ret_vec_x0_end)
> +
> +       vpmovmskb %ymm2, %ecx
> +       testl   %ecx, %ecx
> +       jnz     L(ret_vec_x1_end)
> +
> +       vpmovmskb %ymm3, %ecx
> +       /* Combine last 2 VEC matches. If ecx (VEC3) is zero (no CHAR in VEC3)
> +          then it won't affect the result in esi (VEC4). If ecx is non-zero
> +          then CHAR in VEC3 and bsrq will use that position.  */
> +       salq    $32, %rcx
> +       orq     %rsi, %rcx
> +       bsrq    %rcx, %rcx
> +       leaq    (VEC_SIZE * -4 + 1)(%rcx, %rax), %rax
> +       VZEROUPPER_RETURN
>
> -       /* Remove the leading bytes.  Must use unsigned right shift for
> -          bsrl below.  */
> -       shrl    %cl, %eax
> -       testl   %eax, %eax
> -       jz      L(zero)
> +       .p2align 4,, 4
> +L(ret_vec_x1_end):
> +       /* 64-bit version will automatically add 32 (VEC_SIZE).  */
> +       lzcntq  %rcx, %rcx
> +       subq    %rcx, %rax
> +       VZEROUPPER_RETURN
>
> -       bsrl    %eax, %eax
> -       addq    %rdi, %rax
> -       addq    %r8, %rax
> +       .p2align 4,, 4
> +L(ret_vec_x0_end):
> +       lzcntl  %ecx, %ecx
> +       subq    %rcx, %rax
>         VZEROUPPER_RETURN
> -END (MEMRCHR)
> +
> +       /* 2 bytes until next cache line.  */
> +END(MEMRCHR)
>  #endif
> --
> 2.34.1
>
-------------- next part --------------
Geometric mean of N = 30 runs.
Benchmarked on Tigerlake: https://ark.intel.com/content/www/us/en/ark/products/208921/intel-core-i71165g7-processor-12m-cache-up-to-4-70-ghz-with-ipu.html

Aggregate Geometric Mean of New / Old: 0.7606704539854201

Results For: memrchr
 len, align,  pos, seek_char, invert_pos,  New / Old
2048,     0,   32,        23,          0,      0.938
 256,     1,   64,        23,          0,      0.813
2048,     0,   32,         0,          0,      0.948
 256,     1,   64,         0,          0,      0.811
 256,  4081,   64,         0,          0,      0.642
 256,     0,    1,        23,          0,       0.77
 256,     0,    1,         0,          0,      0.771
 256,     1,    1,        23,          0,      0.788
 256,     1,    1,         0,          0,      0.788
2048,     0,   64,        23,          0,       0.95
 256,     2,   64,        23,          0,      0.817
2048,     0,   64,         0,          0,       0.96
 256,     2,   64,         0,          0,      0.811
 256,     0,    2,        23,          0,      0.772
 256,     0,    2,         0,          0,      0.772
 256,     2,    2,        23,          0,      0.789
 256,     2,    2,         0,          0,      0.789
2048,     0,  128,        23,          0,      0.979
 256,     3,   64,        23,          0,      0.811
2048,     0,  128,         0,          0,      0.971
 256,     3,   64,         0,          0,      0.816
 256,     0,    3,        23,          0,      0.772
 256,     0,    3,         0,          0,      0.772
 256,     3,    3,        23,          0,      0.788
 256,     3,    3,         0,          0,      0.787
2048,     0,  256,        23,          0,      0.949
 256,     4,   64,        23,          0,      0.808
2048,     0,  256,         0,          0,      0.952
 256,     4,   64,         0,          0,      0.811
 256,     0,    4,        23,          0,      0.778
 256,     0,    4,         0,          0,       0.78
 256,     4,    4,        23,          0,       0.79
 256,     4,    4,         0,          0,       0.79
2048,     0,  512,        23,          0,      0.971
 256,     5,   64,        23,          0,      0.817
2048,     0,  512,         0,          0,      0.969
 256,     5,   64,         0,          0,      0.822
 256,     0,    5,        23,          0,       0.78
 256,     0,    5,         0,          0,       0.77
 256,     5,    5,        23,          0,      0.791
 256,     5,    5,         0,          0,      0.791
2048,     0, 1024,        23,          0,      1.007
 256,     6,   64,        23,          0,      0.812
2048,     0, 1024,         0,          0,      1.002
 256,     6,   64,         0,          0,      0.811
 256,     0,    6,        23,          0,      0.773
 256,     0,    6,         0,          0,      0.774
 256,     6,    6,        23,          0,      0.791
 256,     6,    6,         0,          0,      0.791
2048,     0, 2048,        23,          0,      0.969
 256,     7,   64,        23,          0,      0.818
2048,     0, 2048,         0,          0,      0.959
 256,     7,   64,         0,          0,      0.816
 256,     0,    7,        23,          0,      0.773
 256,     0,    7,         0,          0,      0.776
 256,     7,    7,        23,          0,      0.791
 256,     7,    7,         0,          0,      0.798
 192,     1,   32,        23,          0,      0.647
 192,     1,   32,         0,          0,      0.643
 256,     1,   32,        23,          0,      0.803
 256,     1,   32,         0,          0,      0.808
 512,     1,   32,        23,          0,      0.838
 512,     1,   32,         0,          0,      0.834
 256,  4081,   32,        23,          0,      0.725
 192,     2,   64,        23,          0,      0.919
 192,     2,   64,         0,          0,      0.919
 512,     2,   64,        23,          0,      0.878
 512,     2,   64,         0,          0,      0.875
 256,  4081,   64,        23,          0,      0.645
 192,     3,   96,        23,          0,      0.919
 192,     3,   96,         0,          0,      0.934
 256,     3,   96,        23,          0,      0.829
 256,     3,   96,         0,          0,       0.83
 512,     3,   96,        23,          0,      0.883
 512,     3,   96,         0,          0,      0.886
 256,  4081,   96,        23,          0,      0.649
 192,     4,  128,        23,          0,      0.877
 192,     4,  128,         0,          0,      0.862
 256,     4,  128,        23,          0,      0.915
 256,     4,  128,         0,          0,      0.918
 512,     4,  128,        23,          0,      0.892
 512,     4,  128,         0,          0,       0.89
 256,  4081,  128,        23,          0,      0.927
 192,     5,  160,        23,          0,      1.164
 192,     5,  160,         0,          0,      1.157
 256,     5,  160,        23,          0,      0.928
 256,     5,  160,         0,          0,       0.93
 512,     5,  160,        23,          0,      0.857
 512,     5,  160,         0,          0,      0.864
 256,  4081,  160,        23,          0,       0.94
 192,     6,  192,        23,          0,      0.699
 192,     6,  192,         0,          0,      0.701
 256,     6,  192,        23,          0,      0.865
 256,     6,  192,         0,          0,      0.873
 512,     6,  192,        23,          0,      0.836
 512,     6,  192,         0,          0,      0.835
 256,  4081,  192,        23,          0,      0.896
 192,     7,  224,        23,          0,      0.702
 192,     7,  224,         0,          0,      0.701
 256,     7,  224,        23,          0,       1.16
 256,     7,  224,         0,          0,      1.161
 512,     7,  224,        23,          0,      0.854
 512,     7,  224,         0,          0,      0.862
 256,  4081,  224,        23,          0,      1.155
   2,     0,    1,        23,          0,      0.812
   2,     0,    1,         0,          0,      0.836
   2,     1,    1,        23,          0,       0.72
   2,     1,    1,         0,          0,      0.726
   0,     0,    1,        23,          0,      0.857
   0,     0,    1,         0,          0,      0.857
   0,     1,    1,        23,          0,      0.857
   0,     1,    1,         0,          0,      0.857
   2,  2048,    1,        23,          0,      0.694
   2,  2048,    1,         0,          0,       0.71
   2,  2049,    1,        23,          0,      0.621
   2,  2049,    1,         0,          0,      0.629
   0,  2048,    1,        23,          0,      0.857
   0,  2048,    1,         0,          0,      0.856
   0,  2049,    1,        23,          0,      0.857
   0,  2049,    1,         0,          0,      0.857
   0,  4081,    1,        23,          0,      0.857
   0,  4081,    1,         0,          0,      0.857
   2,  4081,    1,        23,          0,      0.602
   2,  4081,    1,         0,          0,      0.621
   2,     0,    2,         0,          0,      0.777
   3,     0,    2,        23,          0,      0.827
   3,     0,    2,         0,          0,      0.819
   3,     2,    2,        23,          0,      0.737
   3,     2,    2,         0,          0,      0.731
   1,     0,    2,        23,          0,      0.778
   1,     0,    2,         0,          0,      0.778
   1,     2,    2,        23,          0,      0.868
   1,     2,    2,         0,          0,      0.868
   3,  2048,    2,        23,          0,      0.716
   3,  2048,    2,         0,          0,      0.719
   3,  2050,    2,        23,          0,      0.625
   3,  2050,    2,         0,          0,      0.632
   1,  2048,    2,        23,          0,      0.667
   1,  2048,    2,         0,          0,      0.667
   1,  2050,    2,        23,          0,      0.749
   1,  2050,    2,         0,          0,      0.752
   1,  4081,    2,        23,          0,      0.743
   1,  4081,    2,         0,          0,      0.745
   3,  4081,    2,        23,          0,      0.601
   3,  4081,    2,         0,          0,      0.613
   3,     0,    1,        23,          0,      0.832
   4,     0,    3,        23,          0,      0.834
   4,     0,    3,         0,          0,      0.838
   4,     3,    3,        23,          0,      0.728
   4,     3,    3,         0,          0,      0.718
   2,     0,    3,        23,          0,      0.778
   2,     0,    3,         0,          0,      0.777
   2,     3,    3,        23,          0,      0.868
   2,     3,    3,         0,          0,       0.87
   4,  2048,    3,        23,          0,      0.711
   4,  2048,    3,         0,          0,      0.711
   4,  2051,    3,        23,          0,      0.621
   4,  2051,    3,         0,          0,      0.622
   2,  2048,    3,        23,          0,      0.669
   2,  2048,    3,         0,          0,      0.669
   2,  2051,    3,        23,          0,      0.746
   2,  2051,    3,         0,          0,      0.746
   2,  4081,    3,        23,          0,      0.745
   2,  4081,    3,         0,          0,      0.744
   4,  4081,    3,        23,          0,      0.587
   4,  4081,    3,         0,          0,      0.585
   4,     0,    1,        23,          0,      0.846
   4,     0,    2,         0,          0,      0.834
   5,     0,    4,        23,          0,       0.84
   5,     0,    4,         0,          0,      0.838
   5,     4,    4,        23,          0,      0.736
   5,     4,    4,         0,          0,      0.733
   3,     0,    4,        23,          0,      0.779
   3,     0,    4,         0,          0,      0.779
   3,     4,    4,        23,          0,      0.869
   3,     4,    4,         0,          0,      0.869
   5,  2048,    4,        23,          0,      0.693
   5,  2048,    4,         0,          0,      0.713
   5,  2052,    4,        23,          0,      0.615
   5,  2052,    4,         0,          0,      0.609
   3,  2048,    4,        23,          0,      0.666
   3,  2048,    4,         0,          0,      0.668
   3,  2052,    4,        23,          0,      0.748
   3,  2052,    4,         0,          0,      0.745
   3,  4081,    4,        23,          0,      0.745
   3,  4081,    4,         0,          0,      0.745
   5,  4081,    4,        23,          0,      0.566
   5,  4081,    4,         0,          0,      0.589
   5,     0,    1,        23,          0,      0.841
   5,     0,    2,         0,          0,      0.832
   6,     0,    5,        23,          0,      0.832
   6,     0,    5,         0,          0,      0.836
   6,     5,    5,        23,          0,      0.736
   6,     5,    5,         0,          0,      0.732
   4,     0,    5,        23,          0,      0.778
   4,     0,    5,         0,          0,      0.779
   4,     5,    5,        23,          0,      0.871
   4,     5,    5,         0,          0,       0.87
   6,  2048,    5,        23,          0,      0.713
   6,  2048,    5,         0,          0,      0.702
   6,  2053,    5,        23,          0,      0.611
   6,  2053,    5,         0,          0,      0.632
   4,  2048,    5,        23,          0,      0.667
   4,  2048,    5,         0,          0,      0.667
   4,  2053,    5,        23,          0,      0.746
   4,  2053,    5,         0,          0,      0.745
   4,  4081,    5,        23,          0,      0.746
   4,  4081,    5,         0,          0,      0.744
   6,  4081,    5,        23,          0,      0.584
   6,  4081,    5,         0,          0,      0.602
   6,     0,    1,        23,          0,      0.842
   6,     0,    2,         0,          0,      0.848
   7,     0,    6,        23,          0,      0.837
   7,     0,    6,         0,          0,      0.838
   7,     6,    6,        23,          0,      0.739
   7,     6,    6,         0,          0,      0.721
   5,     0,    6,        23,          0,      0.778
   5,     0,    6,         0,          0,      0.777
   5,     6,    6,        23,          0,      0.869
   5,     6,    6,         0,          0,      0.869
   7,  2048,    6,        23,          0,      0.719
   7,  2048,    6,         0,          0,      0.699
   7,  2054,    6,        23,          0,      0.618
   7,  2054,    6,         0,          0,      0.621
   5,  2048,    6,        23,          0,      0.667
   5,  2048,    6,         0,          0,      0.667
   5,  2054,    6,        23,          0,      0.747
   5,  2054,    6,         0,          0,       0.75
   5,  4081,    6,        23,          0,      0.745
   5,  4081,    6,         0,          0,      0.743
   7,  4081,    6,        23,          0,      0.586
   7,  4081,    6,         0,          0,      0.572
   7,     0,    1,        23,          0,      0.836
   7,     0,    2,         0,          0,      0.848
   8,     0,    7,        23,          0,      0.843
   8,     0,    7,         0,          0,      0.827
   8,     7,    7,        23,          0,      0.733
   8,     7,    7,         0,          0,      0.744
   6,     0,    7,        23,          0,      0.778
   6,     0,    7,         0,          0,      0.781
   6,     7,    7,        23,          0,      0.869
   6,     7,    7,         0,          0,      0.872
   8,  2048,    7,        23,          0,      0.717
   8,  2048,    7,         0,          0,      0.703
   8,  2055,    7,        23,          0,      0.608
   8,  2055,    7,         0,          0,      0.608
   6,  2048,    7,        23,          0,      0.667
   6,  2048,    7,         0,          0,      0.669
   6,  2055,    7,        23,          0,      0.749
   6,  2055,    7,         0,          0,      0.748
   6,  4081,    7,        23,          0,      0.742
   6,  4081,    7,         0,          0,      0.745
   8,  4081,    7,        23,          0,      0.602
   8,  4081,    7,         0,          0,       0.59
   8,     0,    1,        23,          0,      0.833
   8,     0,    2,         0,          0,      0.837
   9,     0,    8,        23,          0,      0.822
   9,     0,    8,         0,          0,      0.824
   9,     8,    8,        23,          0,      0.725
   9,     8,    8,         0,          0,      0.734
   7,     0,    8,        23,          0,      0.778
   7,     0,    8,         0,          0,      0.778
   7,     8,    8,        23,          0,      0.871
   7,     8,    8,         0,          0,      0.873
   9,  2048,    8,        23,          0,      0.709
   9,  2048,    8,         0,          0,      0.713
   9,  2056,    8,        23,          0,      0.616
   9,  2056,    8,         0,          0,      0.616
   7,  2048,    8,        23,          0,      0.667
   7,  2048,    8,         0,          0,      0.668
   7,  2056,    8,        23,          0,      0.749
   7,  2056,    8,         0,          0,      0.747
   7,  4081,    8,        23,          0,      0.744
   7,  4081,    8,         0,          0,      0.742
   9,  4081,    8,        23,          0,      0.581
   9,  4081,    8,         0,          0,      0.591
   9,     0,    1,        23,          0,      0.842
   9,     0,    2,         0,          0,       0.83
  10,     0,    9,        23,          0,      0.834
  10,     0,    9,         0,          0,      0.851
  10,     9,    9,        23,          0,      0.728
  10,     9,    9,         0,          0,      0.726
   8,     0,    9,        23,          0,      0.778
   8,     0,    9,         0,          0,      0.776
   8,     9,    9,        23,          0,      0.872
   8,     9,    9,         0,          0,      0.868
  10,  2048,    9,        23,          0,      0.697
  10,  2048,    9,         0,          0,      0.712
  10,  2057,    9,        23,          0,      0.605
  10,  2057,    9,         0,          0,       0.61
   8,  2048,    9,        23,          0,      0.667
   8,  2048,    9,         0,          0,      0.667
   8,  2057,    9,        23,          0,      0.744
   8,  2057,    9,         0,          0,      0.745
   8,  4081,    9,        23,          0,      0.745
   8,  4081,    9,         0,          0,      0.743
  10,  4081,    9,        23,          0,       0.57
  10,  4081,    9,         0,          0,      0.593
  10,     0,    1,        23,          0,      0.841
  10,     0,    2,         0,          0,      0.841
  11,     0,   10,        23,          0,      0.815
  11,     0,   10,         0,          0,      0.834
  11,    10,   10,        23,          0,      0.735
  11,    10,   10,         0,          0,       0.73
   9,     0,   10,        23,          0,      0.778
   9,     0,   10,         0,          0,      0.779
   9,    10,   10,        23,          0,      0.867
   9,    10,   10,         0,          0,       0.87
  11,  2048,   10,        23,          0,      0.707
  11,  2048,   10,         0,          0,      0.697
  11,  2058,   10,        23,          0,      0.614
  11,  2058,   10,         0,          0,      0.616
   9,  2048,   10,        23,          0,      0.667
   9,  2048,   10,         0,          0,      0.666
   9,  2058,   10,        23,          0,      0.744
   9,  2058,   10,         0,          0,      0.744
   9,  4081,   10,        23,          0,      0.745
   9,  4081,   10,         0,          0,      0.744
  11,  4081,   10,        23,          0,       0.59
  11,  4081,   10,         0,          0,      0.588
  11,     0,    1,        23,          0,       0.84
  11,     0,    2,         0,          0,      0.837
  12,     0,   11,        23,          0,      0.831
  12,     0,   11,         0,          0,      0.831
  12,    11,   11,        23,          0,      0.725
  12,    11,   11,         0,          0,      0.737
  10,     0,   11,        23,          0,       0.78
  10,     0,   11,         0,          0,      0.778
  10,    11,   11,        23,          0,      0.867
  10,    11,   11,         0,          0,       0.87
  12,  2048,   11,        23,          0,      0.715
  12,  2048,   11,         0,          0,      0.723
  12,  2059,   11,        23,          0,      0.623
  12,  2059,   11,         0,          0,      0.613
  10,  2048,   11,        23,          0,      0.668
  10,  2048,   11,         0,          0,      0.667
  10,  2059,   11,        23,          0,      0.743
  10,  2059,   11,         0,          0,      0.743
  10,  4081,   11,        23,          0,      0.744
  10,  4081,   11,         0,          0,      0.743
  12,  4081,   11,        23,          0,      0.605
  12,  4081,   11,         0,          0,      0.586
  12,     0,    1,        23,          0,      0.843
  12,     0,    2,         0,          0,      0.846
  13,     0,   12,        23,          0,      0.829
  13,     0,   12,         0,          0,      0.832
  13,    12,   12,        23,          0,      0.731
  13,    12,   12,         0,          0,      0.727
  11,     0,   12,        23,          0,      0.778
  11,     0,   12,         0,          0,      0.777
  11,    12,   12,        23,          0,       0.87
  11,    12,   12,         0,          0,       0.87
  13,  2048,   12,        23,          0,      0.714
  13,  2048,   12,         0,          0,      0.713
  13,  2060,   12,        23,          0,      0.618
  13,  2060,   12,         0,          0,      0.614
  11,  2048,   12,        23,          0,      0.667
  11,  2048,   12,         0,          0,      0.667
  11,  2060,   12,        23,          0,      0.744
  11,  2060,   12,         0,          0,      0.744
  11,  4081,   12,        23,          0,      0.744
  11,  4081,   12,         0,          0,      0.743
  13,  4081,   12,        23,          0,      0.586
  13,  4081,   12,         0,          0,      0.589
  13,     0,    1,        23,          0,      0.838
  13,     0,    2,         0,          0,       0.83
  14,     0,   13,        23,          0,      0.838
  14,     0,   13,         0,          0,      0.843
  14,    13,   13,        23,          0,      0.739
  14,    13,   13,         0,          0,      0.728
  12,     0,   13,        23,          0,      0.778
  12,     0,   13,         0,          0,      0.778
  12,    13,   13,        23,          0,      0.868
  12,    13,   13,         0,          0,      0.866
  14,  2048,   13,        23,          0,      0.706
  14,  2048,   13,         0,          0,      0.719
  14,  2061,   13,        23,          0,      0.626
  14,  2061,   13,         0,          0,      0.626
  12,  2048,   13,        23,          0,      0.667
  12,  2048,   13,         0,          0,      0.667
  12,  2061,   13,        23,          0,      0.744
  12,  2061,   13,         0,          0,      0.742
  12,  4081,   13,        23,          0,      0.745
  12,  4081,   13,         0,          0,      0.743
  14,  4081,   13,        23,          0,      0.601
  14,  4081,   13,         0,          0,      0.582
  14,     0,    1,        23,          0,      0.851
  14,     0,    2,         0,          0,      0.839
  15,     0,   14,        23,          0,      0.833
  15,     0,   14,         0,          0,      0.815
  15,    14,   14,        23,          0,      0.723
  15,    14,   14,         0,          0,      0.719
  13,     0,   14,        23,          0,      0.777
  13,     0,   14,         0,          0,      0.779
  13,    14,   14,        23,          0,      0.867
  13,    14,   14,         0,          0,      0.867
  15,  2048,   14,        23,          0,      0.701
  15,  2048,   14,         0,          0,      0.718
  15,  2062,   14,        23,          0,      0.628
  15,  2062,   14,         0,          0,      0.622
  13,  2048,   14,        23,          0,      0.667
  13,  2048,   14,         0,          0,      0.667
  13,  2062,   14,        23,          0,      0.743
  13,  2062,   14,         0,          0,      0.743
  13,  4081,   14,        23,          0,      0.744
  13,  4081,   14,         0,          0,      0.741
  15,  4081,   14,        23,          0,      0.568
  15,  4081,   14,         0,          0,      0.562
  15,     0,    1,        23,          0,      0.842
  15,     0,    2,         0,          0,      0.841
  16,     0,   15,        23,          0,      0.834
  16,     0,   15,         0,          0,      0.831
  16,    15,   15,        23,          0,      0.737
  16,    15,   15,         0,          0,      0.715
  14,     0,   15,        23,          0,      0.793
  14,     0,   15,         0,          0,      0.792
  14,    15,   15,        23,          0,      0.878
  14,    15,   15,         0,          0,      0.876
  16,  2048,   15,        23,          0,      0.702
  16,  2048,   15,         0,          0,      0.697
  16,  2063,   15,        23,          0,      0.615
  16,  2063,   15,         0,          0,      0.622
  14,  2048,   15,        23,          0,      0.689
  14,  2048,   15,         0,          0,      0.688
  14,  2063,   15,        23,          0,       0.76
  14,  2063,   15,         0,          0,      0.759
  14,  4081,   15,        23,          0,      0.756
  14,  4081,   15,         0,          0,      0.763
  16,  4081,   15,        23,          0,      0.887
  16,  4081,   15,         0,          0,      0.888
  16,     0,    1,        23,          0,       0.84
  16,     0,    2,         0,          0,      0.848
  17,     0,   16,        23,          0,      0.833
  17,     0,   16,         0,          0,      0.845
  17,    16,   16,        23,          0,      0.616
  17,    16,   16,         0,          0,      0.603
  15,     0,   16,        23,          0,      0.829
  15,     0,   16,         0,          0,      0.829
  15,    16,   16,        23,          0,      0.907
  15,    16,   16,         0,          0,      0.909
  17,  2048,   16,        23,          0,       0.71
  17,  2048,   16,         0,          0,       0.69
  17,  2064,   16,        23,          0,      0.615
  17,  2064,   16,         0,          0,      0.588
  15,  2048,   16,        23,          0,      0.686
  15,  2048,   16,         0,          0,      0.687
  15,  2064,   16,        23,          0,      0.755
  15,  2064,   16,         0,          0,      0.756
  15,  4081,   16,        23,          0,       0.76
  15,  4081,   16,         0,          0,      0.755
  17,  4081,   16,        23,          0,      0.889
  17,  4081,   16,         0,          0,      0.889
  17,     0,    1,        23,          0,      0.849
  17,     0,    2,         0,          0,      0.855
  18,     0,   17,        23,          0,       0.83
  18,     0,   17,         0,          0,      0.826
  18,    17,   17,        23,          0,      0.612
  18,    17,   17,         0,          0,      0.597
  16,     0,   17,        23,          0,        0.8
  16,     0,   17,         0,          0,      0.805
  16,    17,   17,        23,          0,      0.669
  16,    17,   17,         0,          0,      0.669
  18,  2048,   17,        23,          0,      0.707
  18,  2048,   17,         0,          0,       0.71
  18,  2065,   17,        23,          0,      0.607
  18,  2065,   17,         0,          0,      0.588
  16,  2048,   17,        23,          0,      0.687
  16,  2048,   17,         0,          0,      0.686
  16,  2065,   17,        23,          0,      0.669
  16,  2065,   17,         0,          0,       0.67
  16,  4081,   17,        23,          0,      0.986
  16,  4081,   17,         0,          0,      0.982
  18,  4081,   17,        23,          0,      0.889
  18,  4081,   17,         0,          0,      0.889
  18,     0,    1,        23,          0,      0.857
  18,     0,    2,         0,          0,      0.853
  19,     0,   18,        23,          0,      0.842
  19,     0,   18,         0,          0,      0.817
  19,    18,   18,        23,          0,      0.599
  19,    18,   18,         0,          0,      0.593
  17,     0,   18,        23,          0,      0.795
  17,     0,   18,         0,          0,        0.8
  17,    18,   18,        23,          0,       0.67
  17,    18,   18,         0,          0,      0.669
  19,  2048,   18,        23,          0,      0.707
  19,  2048,   18,         0,          0,      0.704
  19,  2066,   18,        23,          0,      0.588
  19,  2066,   18,         0,          0,      0.611
  17,  2048,   18,        23,          0,      0.687
  17,  2048,   18,         0,          0,      0.686
  17,  2066,   18,        23,          0,       0.67
  17,  2066,   18,         0,          0,      0.671
  17,  4081,   18,        23,          0,      0.982
  17,  4081,   18,         0,          0,       0.98
  19,  4081,   18,        23,          0,      0.889
  19,  4081,   18,         0,          0,      0.889
  19,     0,    1,        23,          0,      0.844
  19,     0,    2,         0,          0,      0.847
  20,     0,   19,        23,          0,       0.83
  20,     0,   19,         0,          0,      0.836
  20,    19,   19,        23,          0,      0.588
  20,    19,   19,         0,          0,       0.61
  18,     0,   19,        23,          0,      0.829
  18,     0,   19,         0,          0,      0.835
  18,    19,   19,        23,          0,      0.669
  18,    19,   19,         0,          0,       0.67
  20,  2048,   19,        23,          0,      0.691
  20,  2048,   19,         0,          0,      0.707
  20,  2067,   19,        23,          0,      0.626
  20,  2067,   19,         0,          0,      0.611
  18,  2048,   19,        23,          0,      0.686
  18,  2048,   19,         0,          0,      0.687
  18,  2067,   19,        23,          0,      0.669
  18,  2067,   19,         0,          0,      0.669
  18,  4081,   19,        23,          0,      0.982
  18,  4081,   19,         0,          0,       0.98
  20,  4081,   19,        23,          0,      0.889
  20,  4081,   19,         0,          0,      0.889
  20,     0,    1,        23,          0,       0.85
  20,     0,    2,         0,          0,      0.838
  21,     0,   20,        23,          0,      0.839
  21,     0,   20,         0,          0,      0.824
  21,    20,   20,        23,          0,      0.593
  21,    20,   20,         0,          0,      0.612
  19,     0,   20,        23,          0,      0.833
  19,     0,   20,         0,          0,       0.83
  19,    20,   20,        23,          0,      0.669
  19,    20,   20,         0,          0,      0.669
  21,  2048,   20,        23,          0,        0.7
  21,  2048,   20,         0,          0,       0.72
  21,  2068,   20,        23,          0,      0.611
  21,  2068,   20,         0,          0,      0.597
  19,  2048,   20,        23,          0,      0.687
  19,  2048,   20,         0,          0,      0.687
  19,  2068,   20,        23,          0,      0.669
  19,  2068,   20,         0,          0,      0.668
  19,  4081,   20,        23,          0,       0.98
  19,  4081,   20,         0,          0,       0.98
  21,  4081,   20,        23,          0,      0.889
  21,  4081,   20,         0,          0,      0.889
  21,     0,    1,        23,          0,      0.856
  21,     0,    2,         0,          0,      0.845
  22,     0,   21,        23,          0,      0.833
  22,     0,   21,         0,          0,       0.83
  22,    21,   21,        23,          0,      0.607
  22,    21,   21,         0,          0,      0.602
  20,     0,   21,        23,          0,      0.807
  20,     0,   21,         0,          0,      0.807
  20,    21,   21,        23,          0,      0.666
  20,    21,   21,         0,          0,      0.669
  22,  2048,   21,        23,          0,       0.71
  22,  2048,   21,         0,          0,      0.723
  22,  2069,   21,        23,          0,      0.602
  22,  2069,   21,         0,          0,      0.597
  20,  2048,   21,        23,          0,      0.688
  20,  2048,   21,         0,          0,      0.689
  20,  2069,   21,        23,          0,       0.67
  20,  2069,   21,         0,          0,      0.668
  20,  4081,   21,        23,          0,      0.982
  20,  4081,   21,         0,          0,      0.983
  22,  4081,   21,        23,          0,      0.889
  22,  4081,   21,         0,          0,      0.889
  22,     0,    1,        23,          0,      0.851
  22,     0,    2,         0,          0,      0.837
  23,     0,   22,        23,          0,      0.833
  23,     0,   22,         0,          0,      0.834
  23,    22,   22,        23,          0,      0.626
  23,    22,   22,         0,          0,      0.603
  21,     0,   22,        23,          0,      0.828
  21,     0,   22,         0,          0,      0.823
  21,    22,   22,        23,          0,       0.67
  21,    22,   22,         0,          0,      0.669
  23,  2048,   22,        23,          0,       0.71
  23,  2048,   22,         0,          0,      0.713
  23,  2070,   22,        23,          0,      0.611
  23,  2070,   22,         0,          0,      0.607
  21,  2048,   22,        23,          0,      0.687
  21,  2048,   22,         0,          0,      0.687
  21,  2070,   22,        23,          0,       0.67
  21,  2070,   22,         0,          0,       0.67
  21,  4081,   22,        23,          0,      0.981
  21,  4081,   22,         0,          0,      0.981
  23,  4081,   22,        23,          0,      0.889
  23,  4081,   22,         0,          0,      0.889
  23,     0,    1,        23,          0,      0.852
  23,     0,    2,         0,          0,      0.856
  24,     0,   23,        23,          0,       0.83
  24,     0,   23,         0,          0,      0.852
  24,    23,   23,        23,          0,      0.595
  24,    23,   23,         0,          0,      0.597
  22,     0,   23,        23,          0,      0.846
  22,     0,   23,         0,          0,      0.847
  22,    23,   23,        23,          0,      0.673
  22,    23,   23,         0,          0,      0.673
  24,  2048,   23,        23,          0,      0.691
  24,  2048,   23,         0,          0,      0.694
  24,  2071,   23,        23,          0,      0.611
  24,  2071,   23,         0,          0,      0.593
  22,  2048,   23,        23,          0,      0.688
  22,  2048,   23,         0,          0,      0.692
  22,  2071,   23,        23,          0,      0.675
  22,  2071,   23,         0,          0,      0.673
  22,  4081,   23,        23,          0,      0.982
  22,  4081,   23,         0,          0,      0.981
  24,  4081,   23,        23,          0,      0.889
  24,  4081,   23,         0,          0,      0.889
  24,     0,    1,        23,          0,       0.84
  24,     0,    2,         0,          0,      0.853
  25,     0,   24,        23,          0,      0.823
  25,     0,   24,         0,          0,       0.83
  25,    24,   24,        23,          0,      0.593
  25,    24,   24,         0,          0,      0.597
  23,     0,   24,        23,          0,      0.815
  23,     0,   24,         0,          0,      0.815
  23,    24,   24,        23,          0,      0.669
  23,    24,   24,         0,          0,      0.672
  25,  2048,   24,        23,          0,      0.694
  25,  2048,   24,         0,          0,      0.716
  25,  2072,   24,        23,          0,      0.621
  25,  2072,   24,         0,          0,      0.597
  23,  2048,   24,        23,          0,      0.689
  23,  2048,   24,         0,          0,      0.689
  23,  2072,   24,        23,          0,       0.67
  23,  2072,   24,         0,          0,      0.675
  23,  4081,   24,        23,          0,       0.98
  23,  4081,   24,         0,          0,      0.983
  25,  4081,   24,        23,          0,      0.889
  25,  4081,   24,         0,          0,      0.889
  25,     0,    1,        23,          0,      0.847
  25,     0,    2,         0,          0,      0.851
  26,     0,   25,        23,          0,      0.825
  26,     0,   25,         0,          0,      0.842
  26,    25,   25,        23,          0,      0.616
  26,    25,   25,         0,          0,      0.626
  24,     0,   25,        23,          0,      0.817
  24,     0,   25,         0,          0,      0.814
  24,    25,   25,        23,          0,      0.676
  24,    25,   25,         0,          0,      0.673
  26,  2048,   25,        23,          0,      0.707
  26,  2048,   25,         0,          0,      0.707
  26,  2073,   25,        23,          0,      0.607
  26,  2073,   25,         0,          0,      0.593
  24,  2048,   25,        23,          0,      0.686
  24,  2048,   25,         0,          0,      0.691
  24,  2073,   25,        23,          0,      0.672
  24,  2073,   25,         0,          0,      0.673
  24,  4081,   25,        23,          0,      0.981
  24,  4081,   25,         0,          0,      0.977
  26,  4081,   25,        23,          0,      0.889
  26,  4081,   25,         0,          0,      0.889
  26,     0,    1,        23,          0,      0.842
  26,     0,    2,         0,          0,       0.85
  27,     0,   26,        23,          0,       0.83
  27,     0,   26,         0,          0,      0.848
  27,    26,   26,        23,          0,      0.607
  27,    26,   26,         0,          0,      0.612
  25,     0,   26,        23,          0,      0.828
  25,     0,   26,         0,          0,      0.826
  25,    26,   26,        23,          0,      0.675
  25,    26,   26,         0,          0,      0.672
  27,  2048,   26,        23,          0,        0.7
  27,  2048,   26,         0,          0,        0.7
  27,  2074,   26,        23,          0,      0.616
  27,  2074,   26,         0,          0,      0.599
  25,  2048,   26,        23,          0,      0.691
  25,  2048,   26,         0,          0,      0.694
  25,  2074,   26,        23,          0,       0.67
  25,  2074,   26,         0,          0,      0.672
  25,  4081,   26,        23,          0,      0.979
  25,  4081,   26,         0,          0,      0.985
  27,  4081,   26,        23,          0,      0.889
  27,  4081,   26,         0,          0,      0.889
  27,     0,    1,        23,          0,      0.854
  27,     0,    2,         0,          0,      0.853
  28,     0,   27,        23,          0,      0.827
  28,     0,   27,         0,          0,      0.845
  28,    27,   27,        23,          0,      0.583
  28,    27,   27,         0,          0,      0.585
  26,     0,   27,        23,          0,      0.844
  26,     0,   27,         0,          0,      0.829
  26,    27,   27,        23,          0,      0.673
  26,    27,   27,         0,          0,      0.671
  28,  2048,   27,        23,          0,      0.697
  28,  2048,   27,         0,          0,      0.713
  28,  2075,   27,        23,          0,      0.602
  28,  2075,   27,         0,          0,      0.602
  26,  2048,   27,        23,          0,      0.688
  26,  2048,   27,         0,          0,      0.692
  26,  2075,   27,        23,          0,      0.673
  26,  2075,   27,         0,          0,       0.67
  26,  4081,   27,        23,          0,       0.98
  26,  4081,   27,         0,          0,      0.977
  28,  4081,   27,        23,          0,      0.889
  28,  4081,   27,         0,          0,      0.889
  28,     0,    1,        23,          0,      0.837
  28,     0,    2,         0,          0,      0.839
  29,     0,   28,        23,          0,      0.811
  29,     0,   28,         0,          0,      0.843
  29,    28,   28,        23,          0,      0.618
  29,    28,   28,         0,          0,      0.626
  27,     0,   28,        23,          0,      0.839
  27,     0,   28,         0,          0,      0.832
  27,    28,   28,        23,          0,      0.674
  27,    28,   28,         0,          0,      0.671
  29,  2048,   28,        23,          0,      0.694
  29,  2048,   28,         0,          0,        0.7
  29,  2076,   28,        23,          0,      0.583
  29,  2076,   28,         0,          0,      0.618
  27,  2048,   28,        23,          0,      0.689
  27,  2048,   28,         0,          0,      0.692
  27,  2076,   28,        23,          0,       0.67
  27,  2076,   28,         0,          0,      0.678
  27,  4081,   28,        23,          0,      0.982
  27,  4081,   28,         0,          0,      0.978
  29,  4081,   28,        23,          0,      0.889
  29,  4081,   28,         0,          0,      0.889
  29,     0,    1,        23,          0,      0.849
  29,     0,    2,         0,          0,      0.843
  30,     0,   29,        23,          0,      0.827
  30,     0,   29,         0,          0,      0.829
  30,    29,   29,        23,          0,      0.616
  30,    29,   29,         0,          0,      0.616
  28,     0,   29,        23,          0,      0.847
  28,     0,   29,         0,          0,       0.85
  28,    29,   29,        23,          0,      0.676
  28,    29,   29,         0,          0,      0.672
  30,  2048,   29,        23,          0,       0.71
  30,  2048,   29,         0,          0,      0.707
  30,  2077,   29,        23,          0,      0.621
  30,  2077,   29,         0,          0,      0.583
  28,  2048,   29,        23,          0,       0.69
  28,  2048,   29,         0,          0,      0.687
  28,  2077,   29,        23,          0,      0.668
  28,  2077,   29,         0,          0,      0.666
  28,  4081,   29,        23,          0,      0.977
  28,  4081,   29,         0,          0,      0.974
  30,  4081,   29,        23,          0,      0.887
  30,  4081,   29,         0,          0,      0.887
  30,     0,    1,        23,          0,      0.854
  30,     0,    2,         0,          0,      0.852
  31,     0,   30,        23,          0,      0.828
  31,     0,   30,         0,          0,      0.837
  31,    30,   30,        23,          0,      0.586
  31,    30,   30,         0,          0,        0.6
  29,     0,   30,        23,          0,      0.852
  29,     0,   30,         0,          0,       0.85
  29,    30,   30,        23,          0,      0.667
  29,    30,   30,         0,          0,      0.673
  31,  2048,   30,        23,          0,      0.727
  31,  2048,   30,         0,          0,      0.695
  31,  2078,   30,        23,          0,      0.614
  31,  2078,   30,         0,          0,      0.599
  29,  2048,   30,        23,          0,      0.687
  29,  2048,   30,         0,          0,      0.684
  29,  2078,   30,        23,          0,      0.668
  29,  2078,   30,         0,          0,      0.664
  29,  4081,   30,        23,          0,      0.967
  29,  4081,   30,         0,          0,       0.97
  31,  4081,   30,        23,          0,      0.884
  31,  4081,   30,         0,          0,      0.884
  31,     0,    1,        23,          0,      0.837
  31,     0,    2,         0,          0,      0.847
  32,     0,   31,        23,          0,      0.841
  32,     0,   31,         0,          0,      0.827
  32,    31,   31,        23,          0,      0.585
  32,    31,   31,         0,          0,      0.604
  30,     0,   31,        23,          0,      0.848
  30,     0,   31,         0,          0,      0.838
  30,    31,   31,        23,          0,      0.663
  30,    31,   31,         0,          0,      0.671
  32,  2048,   31,        23,          0,      0.658
  32,  2048,   31,         0,          0,      0.689
  32,  2079,   31,        23,          0,      0.585
  32,  2079,   31,         0,          0,      0.584
  30,  2048,   31,        23,          0,      0.682
  30,  2048,   31,         0,          0,      0.691
  30,  2079,   31,        23,          0,      0.673
  30,  2079,   31,         0,          0,       0.67
  30,  4081,   31,        23,          0,       0.97
  30,  4081,   31,         0,          0,      0.976
  32,  4081,   31,        23,          0,      0.882
  32,  4081,   31,         0,          0,      0.881
  32,     0,    1,        23,          0,      0.855
  32,     0,    2,         0,          0,      0.856
2048,     0,   32,        23,          1,      1.142
 256,     1,   64,        23,          1,      0.857
2048,     0,   32,         0,          1,      1.134
 256,     1,   64,         0,          1,      0.854
 256,  4081,   64,         0,          1,      0.868
 256,     0,    1,        23,          1,      1.155
 256,     0,    1,         0,          1,      1.157
 256,     1,    1,        23,          1,      1.157
 256,     1,    1,         0,          1,      1.158
2048,     0,   64,        23,          1,      1.122
 256,     2,   64,        23,          1,      0.863
2048,     0,   64,         0,          1,      1.118
 256,     2,   64,         0,          1,      0.857
 256,     0,    2,        23,          1,      1.161
 256,     0,    2,         0,          1,      1.161
 256,     2,    2,        23,          1,       1.16
 256,     2,    2,         0,          1,      1.161
2048,     0,  128,        23,          1,      1.091
 256,     3,   64,        23,          1,      0.867
2048,     0,  128,         0,          1,      1.081
 256,     3,   64,         0,          1,      0.867
 256,     0,    3,        23,          1,      1.165
 256,     0,    3,         0,          1,      1.166
 256,     3,    3,        23,          1,      1.167
 256,     3,    3,         0,          1,      1.167
2048,     0,  256,        23,          1,      0.917
 256,     4,   64,        23,          1,      0.866
2048,     0,  256,         0,          1,      0.917
 256,     4,   64,         0,          1,      0.884
 256,     0,    4,        23,          1,      1.167
 256,     0,    4,         0,          1,      1.167
 256,     4,    4,        23,          1,      1.167
 256,     4,    4,         0,          1,      1.167
2048,     0,  512,        23,          1,      0.928
 256,     5,   64,        23,          1,      0.884
2048,     0,  512,         0,          1,      0.926
 256,     5,   64,         0,          1,      0.876
 256,     0,    5,        23,          1,      1.167
 256,     0,    5,         0,          1,      1.167
 256,     5,    5,        23,          1,      1.167
 256,     5,    5,         0,          1,      1.167
2048,     0, 1024,        23,          1,      1.004
 256,     6,   64,        23,          1,      0.869
2048,     0, 1024,         0,          1,      1.001
 256,     6,   64,         0,          1,      0.877
 256,     0,    6,        23,          1,      1.167
 256,     0,    6,         0,          1,      1.167
 256,     6,    6,        23,          1,      1.167
 256,     6,    6,         0,          1,      1.167
2048,     0, 2048,        23,          1,      0.962
 256,     7,   64,        23,          1,      0.897
2048,     0, 2048,         0,          1,      0.946
 256,     7,   64,         0,          1,      0.873
 256,     0,    7,        23,          1,      1.165
 256,     0,    7,         0,          1,      1.165
 256,     7,    7,        23,          1,      1.165
 256,     7,    7,         0,          1,      1.165
 192,     1,   32,        23,          1,      1.155
 192,     1,   32,         0,          1,      1.153
 256,     1,   32,        23,          1,      1.151
 256,     1,   32,         0,          1,      1.159
 512,     1,   32,        23,          1,      1.159
 512,     1,   32,         0,          1,      1.156
 256,  4081,   32,        23,          1,      1.152
 192,     2,   64,        23,          1,      0.882
 192,     2,   64,         0,          1,      0.869
 512,     2,   64,        23,          1,      0.877
 512,     2,   64,         0,          1,      0.859
 256,  4081,   64,        23,          1,      0.875
 192,     3,   96,        23,          1,      0.928
 192,     3,   96,         0,          1,      0.936
 256,     3,   96,        23,          1,      0.923
 256,     3,   96,         0,          1,      0.918
 512,     3,   96,        23,          1,       0.93
 512,     3,   96,         0,          1,      0.914
 256,  4081,   96,        23,          1,      0.933
 192,     4,  128,        23,          1,      0.917
 192,     4,  128,         0,          1,      0.918
 256,     4,  128,        23,          1,      0.913
 256,     4,  128,         0,          1,      0.919
 512,     4,  128,        23,          1,      0.916
 512,     4,  128,         0,          1,      0.916
 256,  4081,  128,        23,          1,      0.925
 192,     5,  160,        23,          1,      0.657
 192,     5,  160,         0,          1,       0.65
 256,     5,  160,        23,          1,      0.842
 256,     5,  160,         0,          1,      0.832
 512,     5,  160,        23,          1,       0.89
 512,     5,  160,         0,          1,      0.892
 256,  4081,  160,        23,          1,      0.642
 192,     6,  192,        23,          1,      0.701
 192,     6,  192,         0,          1,      0.701
 256,     6,  192,        23,          1,      0.819
 256,     6,  192,         0,          1,      0.815
 512,     6,  192,        23,          1,      0.863
 512,     6,  192,         0,          1,      0.867
 256,  4081,  192,        23,          1,      0.645
 192,     7,  224,        23,          1,      0.702
 192,     7,  224,         0,          1,      0.699
 256,     7,  224,        23,          1,      0.803
 256,     7,  224,         0,          1,      0.801
 512,     7,  224,        23,          1,      0.882
 512,     7,  224,         0,          1,      0.882
 256,  4081,  224,        23,          1,      0.719
   2,     0,    1,        23,          1,      0.809
   2,     0,    1,         0,          1,      0.836
   2,     1,    1,        23,          1,      0.726
   2,     1,    1,         0,          1,      0.733
   0,     0,    1,        23,          1,      0.854
   0,     0,    1,         0,          1,      0.854
   0,     1,    1,        23,          1,      0.854
   0,     1,    1,         0,          1,      0.854
   2,  2048,    1,        23,          1,      0.705
   2,  2048,    1,         0,          1,      0.698
   2,  2049,    1,        23,          1,      0.616
   2,  2049,    1,         0,          1,      0.613
   0,  2048,    1,        23,          1,      0.854
   0,  2048,    1,         0,          1,      0.854
   0,  2049,    1,        23,          1,      0.854
   0,  2049,    1,         0,          1,      0.854
   0,  4081,    1,        23,          1,      0.855
   0,  4081,    1,         0,          1,      0.854
   2,  4081,    1,        23,          1,      0.576
   2,  4081,    1,         0,          1,      0.614
   2,     0,    2,         0,          1,      0.858
   3,     0,    2,        23,          1,       0.83
   3,     0,    2,         0,          1,      0.821
   3,     2,    2,        23,          1,       0.74
   3,     2,    2,         0,          1,      0.712
   1,     0,    2,        23,          1,      0.846
   1,     0,    2,         0,          1,      0.838
   1,     2,    2,        23,          1,      0.933
   1,     2,    2,         0,          1,      0.935
   3,  2048,    2,        23,          1,      0.701
   3,  2048,    2,         0,          1,      0.704
   3,  2050,    2,        23,          1,      0.621
   3,  2050,    2,         0,          1,      0.625
   1,  2048,    2,        23,          1,      0.665
   1,  2048,    2,         0,          1,      0.664
   1,  2050,    2,        23,          1,      0.741
   1,  2050,    2,         0,          1,      0.741
   1,  4081,    2,        23,          1,      0.741
   1,  4081,    2,         0,          1,      0.741
   3,  4081,    2,        23,          1,       0.59
   3,  4081,    2,         0,          1,       0.59
   3,     0,    1,        23,          1,      0.836
   4,     0,    3,        23,          1,      0.831
   4,     0,    3,         0,          1,      0.831
   4,     3,    3,        23,          1,      0.741
   4,     3,    3,         0,          1,      0.719
   2,     0,    3,        23,          1,      0.815
   2,     0,    3,         0,          1,      0.816
   2,     3,    3,        23,          1,      0.919
   2,     3,    3,         0,          1,      0.921
   4,  2048,    3,        23,          1,      0.714
   4,  2048,    3,         0,          1,      0.711
   4,  2051,    3,        23,          1,      0.611
   4,  2051,    3,         0,          1,      0.614
   2,  2048,    3,        23,          1,      0.664
   2,  2048,    3,         0,          1,      0.664
   2,  2051,    3,        23,          1,      0.743
   2,  2051,    3,         0,          1,      0.744
   2,  4081,    3,        23,          1,      0.744
   2,  4081,    3,         0,          1,      0.744
   4,  4081,    3,        23,          1,      0.613
   4,  4081,    3,         0,          1,      0.601
   4,     0,    1,        23,          1,      0.838
   4,     0,    2,         0,          1,       0.82
   5,     0,    4,        23,          1,      0.831
   5,     0,    4,         0,          1,      0.836
   5,     4,    4,        23,          1,      0.742
   5,     4,    4,         0,          1,      0.731
   3,     0,    4,        23,          1,      0.792
   3,     0,    4,         0,          1,      0.788
   3,     4,    4,        23,          1,      0.878
   3,     4,    4,         0,          1,      0.878
   5,  2048,    4,        23,          1,      0.687
   5,  2048,    4,         0,          1,       0.71
   5,  2052,    4,        23,          1,      0.618
   5,  2052,    4,         0,          1,      0.615
   3,  2048,    4,        23,          1,      0.666
   3,  2048,    4,         0,          1,      0.665
   3,  2052,    4,        23,          1,      0.743
   3,  2052,    4,         0,          1,      0.745
   3,  4081,    4,        23,          1,      0.744
   3,  4081,    4,         0,          1,      0.744
   5,  4081,    4,        23,          1,      0.586
   5,  4081,    4,         0,          1,      0.591
   5,     0,    1,        23,          1,      0.824
   5,     0,    2,         0,          1,      0.841
   6,     0,    5,        23,          1,      0.832
   6,     0,    5,         0,          1,      0.849
   6,     5,    5,        23,          1,       0.73
   6,     5,    5,         0,          1,      0.736
   4,     0,    5,        23,          1,      0.778
   4,     0,    5,         0,          1,      0.778
   4,     5,    5,        23,          1,      0.868
   4,     5,    5,         0,          1,      0.868
   6,  2048,    5,        23,          1,      0.727
   6,  2048,    5,         0,          1,       0.71
   6,  2053,    5,        23,          1,      0.604
   6,  2053,    5,         0,          1,      0.624
   4,  2048,    5,        23,          1,      0.667
   4,  2048,    5,         0,          1,      0.667
   4,  2053,    5,        23,          1,      0.744
   4,  2053,    5,         0,          1,      0.744
   4,  4081,    5,        23,          1,      0.743
   4,  4081,    5,         0,          1,      0.743
   6,  4081,    5,        23,          1,      0.606
   6,  4081,    5,         0,          1,      0.601
   6,     0,    1,        23,          1,      0.822
   6,     0,    2,         0,          1,      0.819
   7,     0,    6,        23,          1,      0.842
   7,     0,    6,         0,          1,      0.856
   7,     6,    6,        23,          1,      0.743
   7,     6,    6,         0,          1,      0.743
   5,     0,    6,        23,          1,      0.777
   5,     0,    6,         0,          1,      0.777
   5,     6,    6,        23,          1,      0.867
   5,     6,    6,         0,          1,      0.867
   7,  2048,    6,        23,          1,      0.706
   7,  2048,    6,         0,          1,      0.704
   7,  2054,    6,        23,          1,      0.617
   7,  2054,    6,         0,          1,      0.617
   5,  2048,    6,        23,          1,      0.666
   5,  2048,    6,         0,          1,      0.666
   5,  2054,    6,        23,          1,      0.743
   5,  2054,    6,         0,          1,      0.743
   5,  4081,    6,        23,          1,      0.743
   5,  4081,    6,         0,          1,      0.743
   7,  4081,    6,        23,          1,      0.592
   7,  4081,    6,         0,          1,      0.592
   7,     0,    1,        23,          1,      0.835
   7,     0,    2,         0,          1,      0.829
   8,     0,    7,        23,          1,      0.851
   8,     0,    7,         0,          1,      0.831
   8,     7,    7,        23,          1,      0.731
   8,     7,    7,         0,          1,      0.723
   6,     0,    7,        23,          1,      0.778
   6,     0,    7,         0,          1,      0.778
   6,     7,    7,        23,          1,      0.868
   6,     7,    7,         0,          1,      0.867
   8,  2048,    7,        23,          1,       0.71
   8,  2048,    7,         0,          1,      0.713
   8,  2055,    7,        23,          1,       0.62
   8,  2055,    7,         0,          1,      0.621
   6,  2048,    7,        23,          1,      0.667
   6,  2048,    7,         0,          1,      0.667
   6,  2055,    7,        23,          1,      0.744
   6,  2055,    7,         0,          1,      0.744
   6,  4081,    7,        23,          1,      0.744
   6,  4081,    7,         0,          1,      0.744
   8,  4081,    7,        23,          1,      0.578
   8,  4081,    7,         0,          1,       0.59
   8,     0,    1,        23,          1,      0.833
   8,     0,    2,         0,          1,      0.822
   9,     0,    8,        23,          1,      0.836
   9,     0,    8,         0,          1,      0.817
   9,     8,    8,        23,          1,      0.729
   9,     8,    8,         0,          1,      0.715
   7,     0,    8,        23,          1,      0.778
   7,     0,    8,         0,          1,      0.778
   7,     8,    8,        23,          1,      0.867
   7,     8,    8,         0,          1,      0.868
   9,  2048,    8,        23,          1,      0.697
   9,  2048,    8,         0,          1,      0.697
   9,  2056,    8,        23,          1,      0.621
   9,  2056,    8,         0,          1,      0.621
   7,  2048,    8,        23,          1,      0.667
   7,  2048,    8,         0,          1,      0.667
   7,  2056,    8,        23,          1,      0.744
   7,  2056,    8,         0,          1,      0.744
   7,  4081,    8,        23,          1,      0.744
   7,  4081,    8,         0,          1,      0.744
   9,  4081,    8,        23,          1,      0.611
   9,  4081,    8,         0,          1,      0.605
   9,     0,    1,        23,          1,       0.83
   9,     0,    2,         0,          1,      0.839
  10,     0,    9,        23,          1,      0.849
  10,     0,    9,         0,          1,      0.836
  10,     9,    9,        23,          1,      0.732
  10,     9,    9,         0,          1,      0.717
   8,     0,    9,        23,          1,      0.778
   8,     0,    9,         0,          1,      0.778
   8,     9,    9,        23,          1,      0.867
   8,     9,    9,         0,          1,      0.868
  10,  2048,    9,        23,          1,      0.697
  10,  2048,    9,         0,          1,      0.697
  10,  2057,    9,        23,          1,       0.63
  10,  2057,    9,         0,          1,      0.612
   8,  2048,    9,        23,          1,      0.667
   8,  2048,    9,         0,          1,      0.667
   8,  2057,    9,        23,          1,      0.744
   8,  2057,    9,         0,          1,      0.744
   8,  4081,    9,        23,          1,      0.744
   8,  4081,    9,         0,          1,      0.744
  10,  4081,    9,        23,          1,      0.597
  10,  4081,    9,         0,          1,      0.597
  10,     0,    1,        23,          1,      0.848
  10,     0,    2,         0,          1,      0.826
  11,     0,   10,        23,          1,      0.849
  11,     0,   10,         0,          1,      0.833
  11,    10,   10,        23,          1,      0.725
  11,    10,   10,         0,          1,      0.723
   9,     0,   10,        23,          1,      0.778
   9,     0,   10,         0,          1,      0.778
   9,    10,   10,        23,          1,      0.868
   9,    10,   10,         0,          1,      0.868
  11,  2048,   10,        23,          1,      0.713
  11,  2048,   10,         0,          1,       0.71
  11,  2058,   10,        23,          1,      0.627
  11,  2058,   10,         0,          1,      0.621
   9,  2048,   10,        23,          1,      0.667
   9,  2048,   10,         0,          1,      0.667
   9,  2058,   10,        23,          1,      0.744
   9,  2058,   10,         0,          1,      0.744
   9,  4081,   10,        23,          1,      0.744
   9,  4081,   10,         0,          1,      0.744
  11,  4081,   10,        23,          1,      0.612
  11,  4081,   10,         0,          1,      0.612
  11,     0,    1,        23,          1,      0.836
  11,     0,    2,         0,          1,      0.839
  12,     0,   11,        23,          1,      0.846
  12,     0,   11,         0,          1,      0.833
  12,    11,   11,        23,          1,       0.72
  12,    11,   11,         0,          1,      0.731
  10,     0,   11,        23,          1,      0.778
  10,     0,   11,         0,          1,      0.778
  10,    11,   11,        23,          1,      0.867
  10,    11,   11,         0,          1,      0.868
  12,  2048,   11,        23,          1,       0.71
  12,  2048,   11,         0,          1,      0.707
  12,  2059,   11,        23,          1,      0.621
  12,  2059,   11,         0,          1,      0.632
  10,  2048,   11,        23,          1,      0.667
  10,  2048,   11,         0,          1,      0.667
  10,  2059,   11,        23,          1,      0.744
  10,  2059,   11,         0,          1,      0.743
  10,  4081,   11,        23,          1,      0.744
  10,  4081,   11,         0,          1,      0.744
  12,  4081,   11,        23,          1,      0.592
  12,  4081,   11,         0,          1,      0.583
  12,     0,    1,        23,          1,      0.849
  12,     0,    2,         0,          1,      0.843
  13,     0,   12,        23,          1,      0.846
  13,     0,   12,         0,          1,      0.833
  13,    12,   12,        23,          1,      0.743
  13,    12,   12,         0,          1,      0.731
  11,     0,   12,        23,          1,      0.778
  11,     0,   12,         0,          1,      0.778
  11,    12,   12,        23,          1,      0.867
  11,    12,   12,         0,          1,      0.868
  13,  2048,   12,        23,          1,       0.71
  13,  2048,   12,         0,          1,      0.703
  13,  2060,   12,        23,          1,      0.624
  13,  2060,   12,         0,          1,      0.627
  11,  2048,   12,        23,          1,      0.667
  11,  2048,   12,         0,          1,      0.667
  11,  2060,   12,        23,          1,      0.744
  11,  2060,   12,         0,          1,      0.744
  11,  4081,   12,        23,          1,      0.744
  11,  4081,   12,         0,          1,      0.744
  13,  4081,   12,        23,          1,      0.606
  13,  4081,   12,         0,          1,      0.597
  13,     0,    1,        23,          1,      0.836
  13,     0,    2,         0,          1,       0.82
  14,     0,   13,        23,          1,      0.849
  14,     0,   13,         0,          1,      0.837
  14,    13,   13,        23,          1,      0.743
  14,    13,   13,         0,          1,      0.749
  12,     0,   13,        23,          1,      0.778
  12,     0,   13,         0,          1,      0.778
  12,    13,   13,        23,          1,      0.868
  12,    13,   13,         0,          1,      0.868
  14,  2048,   13,        23,          1,      0.724
  14,  2048,   13,         0,          1,      0.731
  14,  2061,   13,        23,          1,      0.648
  14,  2061,   13,         0,          1,      0.648
  12,  2048,   13,        23,          1,      0.667
  12,  2048,   13,         0,          1,      0.667
  12,  2061,   13,        23,          1,      0.744
  12,  2061,   13,         0,          1,      0.744
  12,  4081,   13,        23,          1,      0.744
  12,  4081,   13,         0,          1,      0.745
  14,  4081,   13,        23,          1,        0.6
  14,  4081,   13,         0,          1,      0.628
  14,     0,    1,        23,          1,      0.836
  14,     0,    2,         0,          1,      0.836
  15,     0,   14,        23,          1,      0.848
  15,     0,   14,         0,          1,      0.847
  15,    14,   14,        23,          1,      0.747
  15,    14,   14,         0,          1,      0.742
  13,     0,   14,        23,          1,      0.778
  13,     0,   14,         0,          1,      0.778
  13,    14,   14,        23,          1,      0.868
  13,    14,   14,         0,          1,      0.868
  15,  2048,   14,        23,          1,      0.731
  15,  2048,   14,         0,          1,      0.735
  15,  2062,   14,        23,          1,      0.648
  15,  2062,   14,         0,          1,      0.649
  13,  2048,   14,        23,          1,      0.667
  13,  2048,   14,         0,          1,      0.667
  13,  2062,   14,        23,          1,      0.744
  13,  2062,   14,         0,          1,      0.744
  13,  4081,   14,        23,          1,      0.744
  13,  4081,   14,         0,          1,      0.744
  15,  4081,   14,        23,          1,      0.645
  15,  4081,   14,         0,          1,      0.627
  15,     0,    1,        23,          1,      0.842
  15,     0,    2,         0,          1,       0.83
  16,     0,   15,        23,          1,      0.858
  16,     0,   15,         0,          1,      0.849
  16,    15,   15,        23,          1,      0.763
  16,    15,   15,         0,          1,      0.745
  14,     0,   15,        23,          1,      0.793
  14,     0,   15,         0,          1,      0.792
  14,    15,   15,        23,          1,      0.875
  14,    15,   15,         0,          1,      0.878
  16,  2048,   15,        23,          1,       0.73
  16,  2048,   15,         0,          1,      0.737
  16,  2063,   15,        23,          1,      0.647
  16,  2063,   15,         0,          1,      0.633
  14,  2048,   15,        23,          1,       0.69
  14,  2048,   15,         0,          1,      0.693
  14,  2063,   15,        23,          1,      0.759
  14,  2063,   15,         0,          1,      0.765
  14,  4081,   15,        23,          1,      0.756
  14,  4081,   15,         0,          1,       0.76
  16,  4081,   15,        23,          1,        0.9
  16,  4081,   15,         0,          1,      0.886
  16,     0,    1,        23,          1,       0.84
  16,     0,    2,         0,          1,      0.831
  17,     0,   16,        23,          1,      0.849
  17,     0,   16,         0,          1,      0.842
  17,    16,   16,        23,          1,      0.562
  17,    16,   16,         0,          1,      0.562
  15,     0,   16,        23,          1,      0.795
  15,     0,   16,         0,          1,      0.795
  15,    16,   16,        23,          1,      0.878
  15,    16,   16,         0,          1,      0.874
  17,  2048,   16,        23,          1,      0.718
  17,  2048,   16,         0,          1,      0.731
  17,  2064,   16,        23,          1,      0.558
  17,  2064,   16,         0,          1,      0.551
  15,  2048,   16,        23,          1,       0.69
  15,  2048,   16,         0,          1,      0.689
  15,  2064,   16,        23,          1,      0.758
  15,  2064,   16,         0,          1,      0.759
  15,  4081,   16,        23,          1,      0.762
  15,  4081,   16,         0,          1,      0.761
  17,  4081,   16,        23,          1,       0.89
  17,  4081,   16,         0,          1,      0.889
  17,     0,    1,        23,          1,      0.824
  17,     0,    2,         0,          1,      0.834
  18,     0,   17,        23,          1,       0.86
  18,     0,   17,         0,          1,      0.849
  18,    17,   17,        23,          1,       0.55
  18,    17,   17,         0,          1,      0.564
  16,     0,   17,        23,          1,      0.794
  16,     0,   17,         0,          1,      0.793
  16,    17,   17,        23,          1,       0.67
  16,    17,   17,         0,          1,      0.672
  18,  2048,   17,        23,          1,      0.727
  18,  2048,   17,         0,          1,      0.747
  18,  2065,   17,        23,          1,      0.549
  18,  2065,   17,         0,          1,      0.565
  16,  2048,   17,        23,          1,       0.69
  16,  2048,   17,         0,          1,      0.687
  16,  2065,   17,        23,          1,      0.669
  16,  2065,   17,         0,          1,      0.672
  16,  4081,   17,        23,          1,      0.982
  16,  4081,   17,         0,          1,      0.984
  18,  4081,   17,        23,          1,       0.89
  18,  4081,   17,         0,          1,      0.888
  18,     0,    1,        23,          1,      0.846
  18,     0,    2,         0,          1,      0.861
  19,     0,   18,        23,          1,      0.848
  19,     0,   18,         0,          1,      0.859
  19,    18,   18,        23,          1,      0.576
  19,    18,   18,         0,          1,      0.561
  17,     0,   18,        23,          1,        0.8
  17,     0,   18,         0,          1,      0.797
  17,    18,   18,        23,          1,      0.676
  17,    18,   18,         0,          1,      0.675
  19,  2048,   18,        23,          1,      0.726
  19,  2048,   18,         0,          1,      0.733
  19,  2066,   18,        23,          1,      0.566
  19,  2066,   18,         0,          1,      0.578
  17,  2048,   18,        23,          1,      0.689
  17,  2048,   18,         0,          1,      0.692
  17,  2066,   18,        23,          1,      0.673
  17,  2066,   18,         0,          1,      0.674
  17,  4081,   18,        23,          1,      0.985
  17,  4081,   18,         0,          1,      0.979
  19,  4081,   18,        23,          1,      0.885
  19,  4081,   18,         0,          1,      0.887
  19,     0,    1,        23,          1,       0.82
  19,     0,    2,         0,          1,      0.834
  20,     0,   19,        23,          1,      0.842
  20,     0,   19,         0,          1,      0.852
  20,    19,   19,        23,          1,      0.556
  20,    19,   19,         0,          1,      0.544
  18,     0,   19,        23,          1,      0.797
  18,     0,   19,         0,          1,      0.797
  18,    19,   19,        23,          1,      0.672
  18,    19,   19,         0,          1,      0.672
  20,  2048,   19,        23,          1,      0.719
  20,  2048,   19,         0,          1,      0.731
  20,  2067,   19,        23,          1,      0.572
  20,  2067,   19,         0,          1,      0.537
  18,  2048,   19,        23,          1,      0.688
  18,  2048,   19,         0,          1,      0.687
  18,  2067,   19,        23,          1,      0.668
  18,  2067,   19,         0,          1,      0.667
  18,  4081,   19,        23,          1,      0.979
  18,  4081,   19,         0,          1,      0.976
  20,  4081,   19,        23,          1,      0.882
  20,  4081,   19,         0,          1,      0.881
  20,     0,    1,        23,          1,      0.829
  20,     0,    2,         0,          1,      0.842
  21,     0,   20,        23,          1,      0.837
  21,     0,   20,         0,          1,      0.845
  21,    20,   20,        23,          1,      0.543
  21,    20,   20,         0,          1,       0.55
  19,     0,   20,        23,          1,      0.792
  19,     0,   20,         0,          1,      0.794
  19,    20,   20,        23,          1,      0.671
  19,    20,   20,         0,          1,      0.669
  21,  2048,   20,        23,          1,      0.728
  21,  2048,   20,         0,          1,      0.735
  21,  2068,   20,        23,          1,      0.553
  21,  2068,   20,         0,          1,      0.528
  19,  2048,   20,        23,          1,      0.685
  19,  2048,   20,         0,          1,      0.685
  19,  2068,   20,        23,          1,      0.669
  19,  2068,   20,         0,          1,      0.669
  19,  4081,   20,        23,          1,      0.984
  19,  4081,   20,         0,          1,      0.981
  21,  4081,   20,        23,          1,      0.886
  21,  4081,   20,         0,          1,      0.885
  21,     0,    1,        23,          1,      0.846
  21,     0,    2,         0,          1,      0.837
  22,     0,   21,        23,          1,      0.854
  22,     0,   21,         0,          1,       0.84
  22,    21,   21,        23,          1,      0.548
  22,    21,   21,         0,          1,      0.553
  20,     0,   21,        23,          1,      0.796
  20,     0,   21,         0,          1,      0.799
  20,    21,   21,        23,          1,      0.674
  20,    21,   21,         0,          1,      0.673
  22,  2048,   21,        23,          1,      0.743
  22,  2048,   21,         0,          1,       0.74
  22,  2069,   21,        23,          1,      0.556
  22,  2069,   21,         0,          1,      0.546
  20,  2048,   21,        23,          1,      0.686
  20,  2048,   21,         0,          1,      0.685
  20,  2069,   21,        23,          1,      0.669
  20,  2069,   21,         0,          1,       0.67
  20,  4081,   21,        23,          1,       0.98
  20,  4081,   21,         0,          1,      0.974
  22,  4081,   21,        23,          1,      0.883
  22,  4081,   21,         0,          1,      0.882
  22,     0,    1,        23,          1,      0.839
  22,     0,    2,         0,          1,      0.835
  23,     0,   22,        23,          1,      0.841
  23,     0,   22,         0,          1,      0.857
  23,    22,   22,        23,          1,      0.554
  23,    22,   22,         0,          1,      0.562
  21,     0,   22,        23,          1,      0.796
  21,     0,   22,         0,          1,      0.792
  21,    22,   22,        23,          1,       0.67
  21,    22,   22,         0,          1,      0.668
  23,  2048,   22,        23,          1,      0.738
  23,  2048,   22,         0,          1,      0.744
  23,  2070,   22,        23,          1,      0.566
  23,  2070,   22,         0,          1,       0.53
  21,  2048,   22,        23,          1,      0.686
  21,  2048,   22,         0,          1,      0.683
  21,  2070,   22,        23,          1,       0.67
  21,  2070,   22,         0,          1,      0.667
  21,  4081,   22,        23,          1,      0.977
  21,  4081,   22,         0,          1,      0.981
  23,  4081,   22,        23,          1,      0.882
  23,  4081,   22,         0,          1,      0.882
  23,     0,    1,        23,          1,      0.849
  23,     0,    2,         0,          1,      0.827
  24,     0,   23,        23,          1,      0.849
  24,     0,   23,         0,          1,      0.851
  24,    23,   23,        23,          1,      0.561
  24,    23,   23,         0,          1,      0.545
  22,     0,   23,        23,          1,      0.793
  22,     0,   23,         0,          1,      0.796
  22,    23,   23,        23,          1,      0.674
  22,    23,   23,         0,          1,      0.673
  24,  2048,   23,        23,          1,      0.741
  24,  2048,   23,         0,          1,      0.745
  24,  2071,   23,        23,          1,      0.549
  24,  2071,   23,         0,          1,      0.567
  22,  2048,   23,        23,          1,      0.693
  22,  2048,   23,         0,          1,      0.692
  22,  2071,   23,        23,          1,      0.675
  22,  2071,   23,         0,          1,      0.674
  22,  4081,   23,        23,          1,      0.984
  22,  4081,   23,         0,          1,      0.979
  24,  4081,   23,        23,          1,       0.88
  24,  4081,   23,         0,          1,      0.882
  24,     0,    1,        23,          1,      0.825
  24,     0,    2,         0,          1,      0.837
  25,     0,   24,        23,          1,      0.847
  25,     0,   24,         0,          1,      0.837
  25,    24,   24,        23,          1,      0.548
  25,    24,   24,         0,          1,      0.554
  23,     0,   24,        23,          1,      0.797
  23,     0,   24,         0,          1,      0.793
  23,    24,   24,        23,          1,      0.671
  23,    24,   24,         0,          1,       0.67
  25,  2048,   24,        23,          1,      0.734
  25,  2048,   24,         0,          1,      0.722
  25,  2072,   24,        23,          1,       0.57
  25,  2072,   24,         0,          1,      0.543
  23,  2048,   24,        23,          1,      0.689
  23,  2048,   24,         0,          1,      0.692
  23,  2072,   24,        23,          1,      0.673
  23,  2072,   24,         0,          1,      0.675
  23,  4081,   24,        23,          1,      0.978
  23,  4081,   24,         0,          1,      0.973
  25,  4081,   24,        23,          1,      0.881
  25,  4081,   24,         0,          1,      0.883
  25,     0,    1,        23,          1,       0.84
  25,     0,    2,         0,          1,      0.824
  26,     0,   25,        23,          1,      0.834
  26,     0,   25,         0,          1,      0.847
  26,    25,   25,        23,          1,      0.559
  26,    25,   25,         0,          1,      0.554
  24,     0,   25,        23,          1,      0.799
  24,     0,   25,         0,          1,      0.794
  24,    25,   25,        23,          1,      0.674
  24,    25,   25,         0,          1,      0.676
  26,  2048,   25,        23,          1,      0.722
  26,  2048,   25,         0,          1,      0.729
  26,  2073,   25,        23,          1,      0.557
  26,  2073,   25,         0,          1,      0.563
  24,  2048,   25,        23,          1,      0.693
  24,  2048,   25,         0,          1,      0.687
  24,  2073,   25,        23,          1,      0.672
  24,  2073,   25,         0,          1,      0.672
  24,  4081,   25,        23,          1,      0.976
  24,  4081,   25,         0,          1,      0.977
  26,  4081,   25,        23,          1,      0.885
  26,  4081,   25,         0,          1,      0.884
  26,     0,    1,        23,          1,      0.843
  26,     0,    2,         0,          1,       0.84
  27,     0,   26,        23,          1,      0.868
  27,     0,   26,         0,          1,      0.854
  27,    26,   26,        23,          1,      0.537
  27,    26,   26,         0,          1,      0.558
  25,     0,   26,        23,          1,      0.799
  25,     0,   26,         0,          1,      0.797
  25,    26,   26,        23,          1,      0.673
  25,    26,   26,         0,          1,       0.67
  27,  2048,   26,        23,          1,      0.737
  27,  2048,   26,         0,          1,      0.724
  27,  2074,   26,        23,          1,      0.559
  27,  2074,   26,         0,          1,      0.555
  25,  2048,   26,        23,          1,      0.692
  25,  2048,   26,         0,          1,      0.697
  25,  2074,   26,        23,          1,      0.674
  25,  2074,   26,         0,          1,      0.676
  25,  4081,   26,        23,          1,       0.98
  25,  4081,   26,         0,          1,      0.986
  27,  4081,   26,        23,          1,       0.89
  27,  4081,   26,         0,          1,      0.884
  27,     0,    1,        23,          1,      0.816
  27,     0,    2,         0,          1,      0.845
  28,     0,   27,        23,          1,      0.846
  28,     0,   27,         0,          1,       0.84
  28,    27,   27,        23,          1,      0.571
  28,    27,   27,         0,          1,       0.56
  26,     0,   27,        23,          1,      0.797
  26,     0,   27,         0,          1,      0.794
  26,    27,   27,        23,          1,      0.674
  26,    27,   27,         0,          1,      0.677
  28,  2048,   27,        23,          1,      0.747
  28,  2048,   27,         0,          1,      0.727
  28,  2075,   27,        23,          1,      0.556
  28,  2075,   27,         0,          1,      0.555
  26,  2048,   27,        23,          1,      0.688
  26,  2048,   27,         0,          1,      0.692
  26,  2075,   27,        23,          1,      0.672
  26,  2075,   27,         0,          1,      0.672
  26,  4081,   27,        23,          1,      0.982
  26,  4081,   27,         0,          1,       0.98
  28,  4081,   27,        23,          1,      0.886
  28,  4081,   27,         0,          1,      0.883
  28,     0,    1,        23,          1,      0.826
  28,     0,    2,         0,          1,      0.838
  29,     0,   28,        23,          1,      0.844
  29,     0,   28,         0,          1,      0.851
  29,    28,   28,        23,          1,      0.567
  29,    28,   28,         0,          1,      0.567
  27,     0,   28,        23,          1,      0.804
  27,     0,   28,         0,          1,      0.797
  27,    28,   28,        23,          1,      0.678
  27,    28,   28,         0,          1,      0.672
  29,  2048,   28,        23,          1,       0.73
  29,  2048,   28,         0,          1,      0.724
  29,  2076,   28,        23,          1,      0.577
  29,  2076,   28,         0,          1,       0.55
  27,  2048,   28,        23,          1,      0.692
  27,  2048,   28,         0,          1,      0.693
  27,  2076,   28,        23,          1,      0.672
  27,  2076,   28,         0,          1,      0.675
  27,  4081,   28,        23,          1,      0.988
  27,  4081,   28,         0,          1,      0.985
  29,  4081,   28,        23,          1,      0.886
  29,  4081,   28,         0,          1,       0.89
  29,     0,    1,        23,          1,      0.858
  29,     0,    2,         0,          1,      0.821
  30,     0,   29,        23,          1,      0.853
  30,     0,   29,         0,          1,      0.865
  30,    29,   29,        23,          1,      0.541
  30,    29,   29,         0,          1,      0.559
  28,     0,   29,        23,          1,      0.801
  28,     0,   29,         0,          1,      0.795
  28,    29,   29,        23,          1,      0.676
  28,    29,   29,         0,          1,      0.678
  30,  2048,   29,        23,          1,      0.756
  30,  2048,   29,         0,          1,      0.735
  30,  2077,   29,        23,          1,      0.569
  30,  2077,   29,         0,          1,      0.563
  28,  2048,   29,        23,          1,        0.7
  28,  2048,   29,         0,          1,      0.698
  28,  2077,   29,        23,          1,      0.678
  28,  2077,   29,         0,          1,      0.674
  28,  4081,   29,        23,          1,      0.983
  28,  4081,   29,         0,          1,      0.974
  30,  4081,   29,        23,          1,      0.883
  30,  4081,   29,         0,          1,      0.887
  30,     0,    1,        23,          1,      0.837
  30,     0,    2,         0,          1,       0.83
  31,     0,   30,        23,          1,      0.859
  31,     0,   30,         0,          1,       0.85
  31,    30,   30,        23,          1,      0.542
  31,    30,   30,         0,          1,      0.551
  29,     0,   30,        23,          1,      0.797
  29,     0,   30,         0,          1,      0.798
  29,    30,   30,        23,          1,      0.676
  29,    30,   30,         0,          1,      0.676
  31,  2048,   30,        23,          1,      0.738
  31,  2048,   30,         0,          1,      0.739
  31,  2078,   30,        23,          1,       0.57
  31,  2078,   30,         0,          1,      0.551
  29,  2048,   30,        23,          1,      0.693
  29,  2048,   30,         0,          1,      0.694
  29,  2078,   30,        23,          1,      0.675
  29,  2078,   30,         0,          1,      0.671
  29,  4081,   30,        23,          1,      0.981
  29,  4081,   30,         0,          1,      0.976
  31,  4081,   30,        23,          1,       0.89
  31,  4081,   30,         0,          1,       0.89
  31,     0,    1,        23,          1,      0.837
  31,     0,    2,         0,          1,      0.848
  32,     0,   31,        23,          1,      0.853
  32,     0,   31,         0,          1,      0.838
  32,    31,   31,        23,          1,      0.646
  32,    31,   31,         0,          1,      0.648
  30,     0,   31,        23,          1,      0.799
  30,     0,   31,         0,          1,      0.798
  30,    31,   31,        23,          1,      0.674
  30,    31,   31,         0,          1,      0.675
  32,  2048,   31,        23,          1,      0.722
  32,  2048,   31,         0,          1,      0.703
  32,  2079,   31,        23,          1,      0.651
  32,  2079,   31,         0,          1,      0.636
  30,  2048,   31,        23,          1,      0.691
  30,  2048,   31,         0,          1,      0.695
  30,  2079,   31,        23,          1,      0.675
  30,  2079,   31,         0,          1,      0.675
  30,  4081,   31,        23,          1,      0.978
  30,  4081,   31,         0,          1,      0.982
  32,  4081,   31,        23,          1,      0.886
  32,  4081,   31,         0,          1,      0.886
  32,     0,    1,        23,          1,      0.852
  32,     0,    2,         0,          1,      0.833


More information about the Libc-alpha mailing list