From patchwork Mon May 17 18:44:06 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Noah Goldstein X-Patchwork-Id: 43441 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 28D033938399; Mon, 17 May 2021 19:10:54 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 28D033938399 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1621278654; bh=zcjSoY1W8YiOz2W4OKq1ao9bur1AuZcyV7Ey3GruInw=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=TXcldZIdpsWDB8SqvdaYuAjkgtAjkvVpWQy95cwg0z4+ITBLwcrWcuoqtewO2ToD7 N6ZbC8QFdPK0XU0lE1Auu4WqHOHVM390Ik4N3a3Qy6ub2vhLjYvaW9gi/q4+tAcRC1 cKNyjrxcD1WmD50GCDQqT4Hr4Ug9dgMQKJKt/N8o= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-qv1-xf32.google.com (mail-qv1-xf32.google.com [IPv6:2607:f8b0:4864:20::f32]) by sourceware.org (Postfix) with ESMTPS id A73C5389042D for ; Mon, 17 May 2021 19:10:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org A73C5389042D Received: by mail-qv1-xf32.google.com with SMTP id ee9so3669324qvb.8 for ; Mon, 17 May 2021 12:10:36 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=zcjSoY1W8YiOz2W4OKq1ao9bur1AuZcyV7Ey3GruInw=; b=oyY1xblpfOdk19wRpbma/8s1Agu7tyJXyYM6NGyNDxTc8j9Ha0eS6w+A7CERlUH5+k W9Thzn0PrTFPUtcsgpyqB+N076rdDNXh6Dugvqm6ntYRLso/YgOEt2xmte1m7gQQmBBv TQjoLjaRuwHP1hv5FcSr9RuDhyL4JQ3YsaY1WiE68TGiluvGXl2ra/QZQQbLsGzVkuMN zPoNQ2Zxr2Z9dgJ1+JrLQdMgotpwYmaQErQGfjgCoejVp+GLk8+xGczZ5LYbxlKUqJ+x +ZqlQo1Dcqe15YDY4EH0SgjtdrDL2tcum24eukZ6mzR2h1rpseXYKUOAlT8CemmMVxwo Wo+Q== X-Gm-Message-State: AOAM5313KT7IepkguujklB7/EiupobNc5Bf7iMFwEHxgT9+Thi9xcER3 Wvqcnh9dxG4TMNlE8tNNHMjiIVsiQxXHXw== X-Google-Smtp-Source: ABdhPJxGTn9vvch4lheHszknV0NnnTz3VoAn2v0x4WJxNmeeq8V0uKmjsx5W0BaiZnYXsjhxmwd4Tg== X-Received: by 2002:a0c:c446:: with SMTP id t6mr1207658qvi.3.1621278633279; Mon, 17 May 2021 12:10:33 -0700 (PDT) Received: from localhost.localdomain (pool-71-245-178-39.pitbpa.fios.verizon.net. [71.245.178.39]) by smtp.googlemail.com with ESMTPSA id v10sm10964155qtf.39.2021.05.17.12.10.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 May 2021 12:10:32 -0700 (PDT) To: libc-alpha@sourceware.org Subject: [PATCH v1 1/3] x86: Expand bench-memcmp.c and test-memcmp.c Date: Mon, 17 May 2021 14:44:06 -0400 Message-Id: <20210517184406.2609574-1-goldstein.w.n@gmail.com> X-Mailer: git-send-email 2.29.2 MIME-Version: 1.0 X-Spam-Status: No, score=-12.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SCC_5_SHORT_WORD_LINES, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Noah Goldstein via Libc-alpha From: Noah Goldstein Reply-To: Noah Goldstein Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" No bug. This commit adds some additional performance test cases to bench-memcmp.c and test-memcmp.c. The new benchtests include some medium range sizes, as well as small sizes near page cross. The new correctness tests correspond with the new benchtests though add some additional cases for checking the page cross logic. Signed-off-by: Noah Goldstein Reviewed-by: H.J. Lu --- Tests where run on the following CPUs: Skylake: https://ark.intel.com/content/www/us/en/ark/products/149091/intel-core-i7-8565u-processor-8m-cache-up-to-4-60-ghz.html Icelake: https://ark.intel.com/content/www/us/en/ark/products/196597/intel-core-i7-1065g7-processor-8m-cache-up-to-3-90-ghz.html Tigerlake: https://ark.intel.com/content/www/us/en/ark/products/208921/intel-core-i7-1165g7-processor-12m-cache-up-to-4-70-ghz-with-ipu.html All times are the geometric mean of N=20. The unit of time is seconds. "Cur" refers to the current implementation "New" refers to this patches implementation The results are a pretty substantial improvement for most cases. The exceptions are 1) size < 4 where the additional logic of checking for a page / cross to handling a partial vector load are more expensive. That being said non-page cross size = [4 - 31] are an improved by a larger margin and likely the more important size range. 2) size = [1, 31] in the page cross case. The new code basically adds some ALU + a branch to the control flow. Generally, however, this should be rare enough that the gains in the non-page cross case should make it worth it. 3) The configurations where s1/s2 are misaligned the time seems to be dominated by misaligned loads. In these cases the two implementations are similiar, though the new one seems to generally outperform. Below each cpu/function csv there is tabulation of number of times than the new vs current implementation was faster for cases where size >= 32. Generally the results are roughly ~300 new, ~20 old. From memcmp-avx on tgl: 32 , 1 , 0 ,1 , 3.751 , 3.768 , Cur , -0.02 32 , 0 , 1 , , 4.373 , 3.9 , New , 0.47 32 , 1 , 1 ,0 , 4.372 , 3.748 , New , 0.62 64 , 6 , 4 ,1 , 4.828 , 5.069 , Cur , -0.24 64 , 0 , 0 , , 5.65 , 5.303 , New , 0.35 64 , 0 , 0 ,0 , 5.752 , 5.259 , New , 0.49 256 , 4 , 0 ,1 , 9.887 , 9.65 , New , 0.24 256 , 0 , 4 , , 10.765 , 9.778 , New , 0.99 256 , 4 , 4 ,0 , 10.593 , 10.665 , Cur , -0.07 For the 4x loop the new implementation is meaningfully faster for both avx2 and evex. The degree of improvement is heavily influenced by whether s1/s2 are misaligned. In the case where one of the two buffers must remain misaligned, cache lines splits are generally the primary bottleneck, though the new implementation still wins out. From memcmp-avx2 on tgl. 4096, 8 , 0 , , 124.386 , 120.405 , New , 3.98 4096, 0 , 8 ,0 , 124.678 , 121.095 , New , 3.58 4096, 8 , 8 ,1 , 100.62 , 94.085 , New , 6.54 From memcmp-evex on tgl. 4096, 8 , 0 ,1 , 121.773 , 119.497 , New , 2.28 4096, 0 , 8 , , 123.615 , 120.279 , New , 3.34 4096, 8 , 8 ,0 , 107.077 , 93.907 , New , 13.17 ---- AVX2 Results ---- Results For Tigerlake memcmp-avx2 size, al1 , al2 ,res, Cur T , New T , Win , Dif 1 , 1 , 1 ,0 , 3.944 , 3.949 , Cur , -0.0 1 , 1 , 1 ,1 , 3.951 , 3.939 , New , 0.01 1 , 1 , 1 , , 4.021 , 3.939 , New , 0.08 2 , 2 , 2 ,0 , 3.891 , 4.231 , Cur , -0.34 2 , 2 , 2 ,1 , 3.894 , 4.271 , Cur , -0.38 2 , 2 , 2 , , 3.96 , 4.332 , Cur , -0.37 3 , 3 , 3 ,0 , 3.865 , 4.221 , Cur , -0.36 3 , 3 , 3 ,1 , 4.064 , 4.248 , Cur , -0.18 3 , 3 , 3 , , 4.067 , 4.356 , Cur , -0.29 4 , 4 , 4 ,0 , 5.59 , 4.529 , New , 1.06 4 , 4 , 4 ,1 , 5.26 , 5.008 , New , 0.25 4 , 4 , 4 , , 5.665 , 4.879 , New , 0.79 5 , 5 , 5 ,0 , 5.295 , 4.303 , New , 0.99 5 , 5 , 5 ,1 , 5.414 , 4.273 , New , 1.14 5 , 5 , 5 , , 5.112 , 4.218 , New , 0.89 6 , 6 , 6 ,0 , 4.846 , 4.084 , New , 0.76 6 , 6 , 6 ,1 , 4.755 , 4.077 , New , 0.68 6 , 6 , 6 , , 4.728 , 4.146 , New , 0.58 7 , 7 , 7 ,0 , 4.882 , 4.069 , New , 0.81 7 , 7 , 7 ,1 , 4.872 , 4.099 , New , 0.77 7 , 7 , 7 , , 4.879 , 4.292 , New , 0.59 8 , 8 , 8 ,0 , 5.11 , 4.053 , New , 1.06 8 , 8 , 8 ,1 , 5.005 , 4.185 , New , 0.82 8 , 8 , 8 , , 5.037 , 4.141 , New , 0.9 9 , 9 , 9 ,0 , 5.951 , 4.087 , New , 1.86 9 , 9 , 9 ,1 , 5.916 , 4.259 , New , 1.66 9 , 9 , 9 , , 5.586 , 4.133 , New , 1.45 10 , 10 , 10 ,0 , 5.773 , 4.094 , New , 1.68 10 , 10 , 10 ,1 , 5.796 , 4.214 , New , 1.58 10 , 10 , 10 , , 6.007 , 4.128 , New , 1.88 11 , 11 , 11 ,0 , 5.878 , 4.139 , New , 1.74 11 , 11 , 11 ,1 , 5.791 , 4.236 , New , 1.56 11 , 11 , 11 , , 5.72 , 4.117 , New , 1.6 12 , 12 , 12 ,0 , 5.651 , 4.101 , New , 1.55 12 , 12 , 12 ,1 , 5.838 , 4.068 , New , 1.77 12 , 12 , 12 , , 5.658 , 4.091 , New , 1.57 13 , 13 , 13 ,0 , 5.674 , 4.078 , New , 1.6 13 , 13 , 13 ,1 , 5.775 , 4.146 , New , 1.63 13 , 13 , 13 , , 5.745 , 4.148 , New , 1.6 14 , 14 , 14 ,0 , 5.764 , 4.077 , New , 1.69 14 , 14 , 14 ,1 , 5.761 , 4.066 , New , 1.7 14 , 14 , 14 , , 5.769 , 4.159 , New , 1.61 15 , 15 , 15 ,0 , 5.789 , 4.061 , New , 1.73 15 , 15 , 15 ,1 , 5.876 , 4.054 , New , 1.82 15 , 15 , 15 , , 5.65 , 4.094 , New , 1.56 16 , 16 , 16 ,0 , 5.338 , 4.078 , New , 1.26 16 , 16 , 16 ,1 , 5.352 , 4.107 , New , 1.25 16 , 16 , 16 , , 5.337 , 4.085 , New , 1.25 17 , 17 , 17 ,0 , 5.371 , 4.117 , New , 1.25 17 , 17 , 17 ,1 , 5.665 , 4.077 , New , 1.59 17 , 17 , 17 , , 5.559 , 4.085 , New , 1.47 18 , 18 , 18 ,0 , 5.518 , 4.092 , New , 1.43 18 , 18 , 18 ,1 , 5.579 , 4.089 , New , 1.49 18 , 18 , 18 , , 5.475 , 4.085 , New , 1.39 19 , 19 , 19 ,0 , 5.457 , 4.077 , New , 1.38 19 , 19 , 19 ,1 , 5.546 , 4.054 , New , 1.49 19 , 19 , 19 , , 5.44 , 4.085 , New , 1.36 20 , 20 , 20 ,0 , 5.43 , 4.078 , New , 1.35 20 , 20 , 20 ,1 , 5.507 , 4.086 , New , 1.42 20 , 20 , 20 , , 5.444 , 4.085 , New , 1.36 21 , 21 , 21 ,0 , 5.546 , 4.053 , New , 1.49 21 , 21 , 21 ,1 , 5.521 , 4.055 , New , 1.47 21 , 21 , 21 , , 5.331 , 4.237 , New , 1.09 22 , 22 , 22 ,0 , 5.455 , 4.081 , New , 1.37 22 , 22 , 22 ,1 , 5.478 , 4.061 , New , 1.42 22 , 22 , 22 , , 5.445 , 4.117 , New , 1.33 23 , 23 , 23 ,0 , 5.486 , 4.093 , New , 1.39 23 , 23 , 23 ,1 , 5.555 , 4.054 , New , 1.5 23 , 23 , 23 , , 5.581 , 4.109 , New , 1.47 24 , 24 , 24 ,0 , 5.394 , 4.078 , New , 1.32 24 , 24 , 24 ,1 , 5.483 , 4.055 , New , 1.43 24 , 24 , 24 , , 5.422 , 4.086 , New , 1.34 25 , 25 , 25 ,0 , 5.484 , 4.123 , New , 1.36 25 , 25 , 25 ,1 , 5.529 , 4.106 , New , 1.42 25 , 25 , 25 , , 5.397 , 4.109 , New , 1.29 26 , 26 , 26 ,0 , 5.518 , 4.135 , New , 1.38 26 , 26 , 26 ,1 , 5.571 , 4.149 , New , 1.42 26 , 26 , 26 , , 5.368 , 4.144 , New , 1.22 27 , 27 , 27 ,0 , 5.493 , 4.077 , New , 1.42 27 , 27 , 27 ,1 , 5.484 , 4.078 , New , 1.41 27 , 27 , 27 , , 5.478 , 4.109 , New , 1.37 28 , 28 , 28 ,0 , 5.644 , 4.104 , New , 1.54 28 , 28 , 28 ,1 , 5.572 , 4.101 , New , 1.47 28 , 28 , 28 , , 5.425 , 4.108 , New , 1.32 29 , 29 , 29 ,0 , 5.462 , 4.077 , New , 1.38 29 , 29 , 29 ,1 , 5.469 , 4.078 , New , 1.39 29 , 29 , 29 , , 5.406 , 4.12 , New , 1.29 30 , 30 , 30 ,0 , 5.494 , 4.058 , New , 1.44 30 , 30 , 30 ,1 , 5.536 , 4.192 , New , 1.34 30 , 30 , 30 , , 5.439 , 4.089 , New , 1.35 31 , 31 , 31 ,0 , 5.447 , 4.067 , New , 1.38 31 , 31 , 31 ,1 , 5.619 , 4.059 , New , 1.56 31 , 31 , 31 , , 5.514 , 4.14 , New , 1.37 1 , 0 , 0 ,0 , 3.683 , 3.67 , New , 0.01 1 , 0 , 0 ,1 , 3.682 , 3.671 , New , 0.01 1 , 0 , 0 , , 3.682 , 3.676 , New , 0.01 1 , 4095, 0 ,0 , 3.682 , 3.675 , New , 0.01 1 , 4095, 0 ,1 , 3.682 , 3.674 , New , 0.01 1 , 4095, 0 , , 3.682 , 3.674 , New , 0.01 2 , 0 , 0 ,0 , 3.74 , 4.063 , Cur , -0.32 2 , 0 , 0 ,1 , 3.769 , 4.082 , Cur , -0.31 2 , 0 , 0 , , 3.771 , 4.169 , Cur , -0.4 2 , 4094, 0 ,0 , 3.792 , 4.379 , Cur , -0.59 2 , 4094, 0 ,1 , 3.687 , 4.358 , Cur , -0.67 2 , 4094, 0 , , 3.715 , 4.418 , Cur , -0.7 3 , 0 , 0 ,0 , 3.744 , 4.062 , Cur , -0.32 3 , 0 , 0 ,1 , 3.802 , 4.064 , Cur , -0.26 3 , 0 , 0 , , 3.715 , 4.146 , Cur , -0.43 3 , 4093, 0 ,0 , 3.725 , 4.359 , Cur , -0.63 3 , 4093, 0 ,1 , 3.748 , 4.375 , Cur , -0.63 3 , 4093, 0 , , 3.744 , 4.345 , Cur , -0.6 4 , 0 , 0 ,0 , 4.753 , 4.135 , New , 0.62 4 , 0 , 0 ,1 , 4.864 , 4.107 , New , 0.76 4 , 0 , 0 , , 4.899 , 4.163 , New , 0.74 4 , 4092, 0 ,0 , 4.668 , 5.287 , Cur , -0.62 4 , 4092, 0 ,1 , 4.664 , 5.138 , Cur , -0.47 4 , 4092, 0 , , 4.732 , 5.195 , Cur , -0.46 5 , 0 , 0 ,0 , 4.7 , 4.081 , New , 0.62 5 , 0 , 0 ,1 , 4.673 , 4.064 , New , 0.61 5 , 0 , 0 , , 4.798 , 4.121 , New , 0.68 5 , 4091, 0 ,0 , 4.865 , 5.164 , Cur , -0.3 5 , 4091, 0 ,1 , 4.615 , 5.133 , Cur , -0.52 5 , 4091, 0 , , 4.678 , 5.107 , Cur , -0.43 6 , 0 , 0 ,0 , 4.71 , 4.101 , New , 0.61 6 , 0 , 0 ,1 , 4.648 , 4.153 , New , 0.5 6 , 0 , 0 , , 4.828 , 4.126 , New , 0.7 6 , 4090, 0 ,0 , 4.772 , 5.174 , Cur , -0.4 6 , 4090, 0 ,1 , 4.672 , 5.228 , Cur , -0.56 6 , 4090, 0 , , 4.678 , 5.162 , Cur , -0.48 7 , 0 , 0 ,0 , 4.833 , 4.071 , New , 0.76 7 , 0 , 0 ,1 , 4.808 , 4.071 , New , 0.74 7 , 0 , 0 , , 4.763 , 4.13 , New , 0.63 7 , 4089, 0 ,0 , 4.742 , 5.151 , Cur , -0.41 7 , 4089, 0 ,1 , 4.741 , 5.149 , Cur , -0.41 7 , 4089, 0 , , 4.774 , 5.15 , Cur , -0.38 8 , 0 , 0 ,0 , 5.146 , 4.144 , New , 1.0 8 , 0 , 0 ,1 , 5.093 , 4.11 , New , 0.98 8 , 0 , 0 , , 5.098 , 4.153 , New , 0.95 8 , 4088, 0 ,0 , 5.1 , 4.96 , New , 0.14 8 , 4088, 0 ,1 , 5.018 , 5.048 , Cur , -0.03 8 , 4088, 0 , , 5.109 , 5.096 , New , 0.01 9 , 0 , 0 ,0 , 5.82 , 4.108 , New , 1.71 9 , 0 , 0 ,1 , 5.946 , 4.112 , New , 1.83 9 , 0 , 0 , , 5.794 , 4.139 , New , 1.65 9 , 4087, 0 ,0 , 5.797 , 5.461 , New , 0.34 9 , 4087, 0 ,1 , 5.782 , 5.496 , New , 0.29 9 , 4087, 0 , , 5.752 , 5.554 , New , 0.2 10 , 0 , 0 ,0 , 5.812 , 4.111 , New , 1.7 10 , 0 , 0 ,1 , 5.86 , 4.164 , New , 1.7 10 , 0 , 0 , , 5.884 , 4.141 , New , 1.74 10 , 4086, 0 ,0 , 5.865 , 5.549 , New , 0.32 10 , 4086, 0 ,1 , 5.793 , 5.435 , New , 0.36 10 , 4086, 0 , , 5.678 , 5.485 , New , 0.19 11 , 0 , 0 ,0 , 5.779 , 4.116 , New , 1.66 11 , 0 , 0 ,1 , 5.913 , 4.116 , New , 1.8 11 , 0 , 0 , , 5.894 , 4.139 , New , 1.75 11 , 4085, 0 ,0 , 5.882 , 5.457 , New , 0.42 11 , 4085, 0 ,1 , 5.812 , 5.47 , New , 0.34 11 , 4085, 0 , , 5.809 , 5.607 , New , 0.2 12 , 0 , 0 ,0 , 5.747 , 4.129 , New , 1.62 12 , 0 , 0 ,1 , 5.785 , 4.122 , New , 1.66 12 , 0 , 0 , , 5.924 , 4.205 , New , 1.72 12 , 4084, 0 ,0 , 5.833 , 5.527 , New , 0.31 12 , 4084, 0 ,1 , 5.75 , 5.475 , New , 0.28 12 , 4084, 0 , , 5.598 , 5.503 , New , 0.09 13 , 0 , 0 ,0 , 5.667 , 4.125 , New , 1.54 13 , 0 , 0 ,1 , 5.792 , 4.128 , New , 1.66 13 , 0 , 0 , , 5.842 , 4.181 , New , 1.66 13 , 4083, 0 ,0 , 5.642 , 5.504 , New , 0.14 13 , 4083, 0 ,1 , 5.805 , 5.507 , New , 0.3 13 , 4083, 0 , , 5.906 , 5.656 , New , 0.25 14 , 0 , 0 ,0 , 5.665 , 4.149 , New , 1.52 14 , 0 , 0 ,1 , 5.877 , 4.13 , New , 1.75 14 , 0 , 0 , , 5.885 , 4.162 , New , 1.72 14 , 4082, 0 ,0 , 5.681 , 5.667 , New , 0.01 14 , 4082, 0 ,1 , 5.873 , 5.589 , New , 0.28 14 , 4082, 0 , , 5.755 , 5.617 , New , 0.14 15 , 0 , 0 ,0 , 5.818 , 4.144 , New , 1.67 15 , 0 , 0 ,1 , 5.795 , 4.14 , New , 1.66 15 , 0 , 0 , , 5.771 , 4.171 , New , 1.6 15 , 4081, 0 ,0 , 5.794 , 5.556 , New , 0.24 15 , 4081, 0 ,1 , 5.776 , 5.558 , New , 0.22 15 , 4081, 0 , , 5.845 , 5.555 , New , 0.29 16 , 0 , 0 ,0 , 5.445 , 4.158 , New , 1.29 16 , 0 , 0 ,1 , 5.415 , 4.144 , New , 1.27 16 , 0 , 0 , , 5.385 , 4.146 , New , 1.24 16 , 4080, 0 ,0 , 5.404 , 5.41 , Cur , -0.01 16 , 4080, 0 ,1 , 5.436 , 5.421 , New , 0.01 16 , 4080, 0 , , 5.404 , 5.446 , Cur , -0.04 17 , 0 , 0 ,0 , 5.629 , 4.117 , New , 1.51 17 , 0 , 0 ,1 , 5.561 , 4.144 , New , 1.42 17 , 0 , 0 , , 5.546 , 4.196 , New , 1.35 17 , 4079, 0 ,0 , 5.6 , 5.421 , New , 0.18 17 , 4079, 0 ,1 , 5.568 , 5.427 , New , 0.14 17 , 4079, 0 , , 5.483 , 5.447 , New , 0.04 18 , 0 , 0 ,0 , 5.578 , 4.149 , New , 1.43 18 , 0 , 0 ,1 , 5.7 , 4.149 , New , 1.55 18 , 0 , 0 , , 5.635 , 4.181 , New , 1.45 18 , 4078, 0 ,0 , 5.654 , 5.367 , New , 0.29 18 , 4078, 0 ,1 , 5.592 , 5.425 , New , 0.17 18 , 4078, 0 , , 5.525 , 5.399 , New , 0.13 19 , 0 , 0 ,0 , 5.464 , 4.141 , New , 1.32 19 , 0 , 0 ,1 , 5.553 , 4.14 , New , 1.41 19 , 0 , 0 , , 5.521 , 4.157 , New , 1.36 19 , 4077, 0 ,0 , 5.642 , 5.386 , New , 0.26 19 , 4077, 0 ,1 , 5.585 , 5.375 , New , 0.21 19 , 4077, 0 , , 5.577 , 5.433 , New , 0.14 20 , 0 , 0 ,0 , 5.5 , 4.162 , New , 1.34 20 , 0 , 0 ,1 , 5.645 , 4.153 , New , 1.49 20 , 0 , 0 , , 5.647 , 4.186 , New , 1.46 20 , 4076, 0 ,0 , 5.607 , 5.435 , New , 0.17 20 , 4076, 0 ,1 , 5.502 , 5.38 , New , 0.12 20 , 4076, 0 , , 5.617 , 5.439 , New , 0.18 21 , 0 , 0 ,0 , 5.52 , 4.135 , New , 1.38 21 , 0 , 0 ,1 , 5.557 , 4.158 , New , 1.4 21 , 0 , 0 , , 5.612 , 4.162 , New , 1.45 21 , 4075, 0 ,0 , 5.743 , 5.385 , New , 0.36 21 , 4075, 0 ,1 , 5.677 , 5.387 , New , 0.29 21 , 4075, 0 , , 5.627 , 5.416 , New , 0.21 22 , 0 , 0 ,0 , 5.517 , 4.171 , New , 1.35 22 , 0 , 0 ,1 , 5.584 , 4.163 , New , 1.42 22 , 0 , 0 , , 5.595 , 4.169 , New , 1.43 22 , 4074, 0 ,0 , 5.579 , 5.412 , New , 0.17 22 , 4074, 0 ,1 , 5.69 , 5.45 , New , 0.24 22 , 4074, 0 , , 5.69 , 5.42 , New , 0.27 23 , 0 , 0 ,0 , 5.635 , 4.168 , New , 1.47 23 , 0 , 0 ,1 , 5.608 , 4.169 , New , 1.44 23 , 0 , 0 , , 5.55 , 4.195 , New , 1.35 23 , 4073, 0 ,0 , 5.649 , 5.385 , New , 0.26 23 , 4073, 0 ,1 , 5.718 , 5.414 , New , 0.3 23 , 4073, 0 , , 5.481 , 5.416 , New , 0.06 24 , 0 , 0 ,0 , 5.669 , 4.234 , New , 1.43 24 , 0 , 0 ,1 , 5.55 , 4.163 , New , 1.39 24 , 0 , 0 , , 5.507 , 4.172 , New , 1.33 24 , 4072, 0 ,0 , 5.705 , 5.39 , New , 0.32 24 , 4072, 0 ,1 , 5.614 , 5.429 , New , 0.18 24 , 4072, 0 , , 5.584 , 5.454 , New , 0.13 25 , 0 , 0 ,0 , 5.635 , 4.171 , New , 1.46 25 , 0 , 0 ,1 , 5.632 , 4.168 , New , 1.46 25 , 0 , 0 , , 5.525 , 4.199 , New , 1.33 25 , 4071, 0 ,0 , 5.581 , 5.474 , New , 0.11 25 , 4071, 0 ,1 , 5.599 , 5.393 , New , 0.21 25 , 4071, 0 , , 5.621 , 5.422 , New , 0.2 26 , 0 , 0 ,0 , 5.47 , 4.176 , New , 1.29 26 , 0 , 0 ,1 , 5.523 , 4.139 , New , 1.38 26 , 0 , 0 , , 5.678 , 4.171 , New , 1.51 26 , 4070, 0 ,0 , 5.557 , 5.397 , New , 0.16 26 , 4070, 0 ,1 , 5.573 , 5.475 , New , 0.1 26 , 4070, 0 , , 5.672 , 5.427 , New , 0.25 27 , 0 , 0 ,0 , 5.436 , 4.199 , New , 1.24 27 , 0 , 0 ,1 , 5.56 , 4.199 , New , 1.36 27 , 0 , 0 , , 5.59 , 4.227 , New , 1.36 27 , 4069, 0 ,0 , 5.444 , 5.39 , New , 0.05 27 , 4069, 0 ,1 , 5.689 , 5.391 , New , 0.3 27 , 4069, 0 , , 5.527 , 5.422 , New , 0.11 28 , 0 , 0 ,0 , 5.603 , 4.222 , New , 1.38 28 , 0 , 0 ,1 , 5.73 , 4.172 , New , 1.56 28 , 0 , 0 , , 5.556 , 4.2 , New , 1.36 28 , 4068, 0 ,0 , 5.598 , 5.39 , New , 0.21 28 , 4068, 0 ,1 , 5.531 , 5.389 , New , 0.14 28 , 4068, 0 , , 5.591 , 5.437 , New , 0.15 29 , 0 , 0 ,0 , 5.558 , 4.205 , New , 1.35 29 , 0 , 0 ,1 , 5.618 , 4.204 , New , 1.41 29 , 0 , 0 , , 5.684 , 4.228 , New , 1.46 29 , 4067, 0 ,0 , 5.672 , 5.391 , New , 0.28 29 , 4067, 0 ,1 , 5.641 , 5.445 , New , 0.2 29 , 4067, 0 , , 5.78 , 5.451 , New , 0.33 30 , 0 , 0 ,0 , 5.466 , 4.199 , New , 1.27 30 , 0 , 0 ,1 , 5.585 , 4.223 , New , 1.36 30 , 0 , 0 , , 5.595 , 4.227 , New , 1.37 30 , 4066, 0 ,0 , 5.634 , 5.39 , New , 0.24 30 , 4066, 0 ,1 , 5.691 , 5.421 , New , 0.27 30 , 4066, 0 , , 5.598 , 5.421 , New , 0.18 31 , 0 , 0 ,0 , 5.615 , 4.407 , New , 1.21 31 , 0 , 0 ,1 , 5.615 , 4.418 , New , 1.2 31 , 0 , 0 , , 5.623 , 4.393 , New , 1.23 31 , 4065, 0 ,0 , 5.568 , 5.417 , New , 0.15 31 , 4065, 0 ,1 , 5.624 , 5.394 , New , 0.23 31 , 4065, 0 , , 5.622 , 5.427 , New , 0.2 33 , 0 , 0 ,0 , 4.573 , 4.145 , New , 0.43 33 , 0 , 0 ,1 , 4.661 , 4.152 , New , 0.51 33 , 0 , 0 , , 4.614 , 4.248 , New , 0.37 33 , 33 , 0 ,0 , 3.787 , 3.75 , New , 0.04 33 , 0 , 33 ,1 , 4.999 , 4.374 , New , 0.62 33 , 33 , 33 , , 4.997 , 4.374 , New , 0.62 65 , 0 , 0 ,0 , 7.572 , 6.264 , New , 1.31 65 , 0 , 0 ,1 , 7.705 , 6.18 , New , 1.53 65 , 0 , 0 , , 7.687 , 6.303 , New , 1.38 65 , 65 , 0 ,0 , 7.256 , 6.179 , New , 1.08 65 , 0 , 65 ,1 , 7.636 , 6.422 , New , 1.21 65 , 65 , 65 , , 7.944 , 6.377 , New , 1.57 97 , 0 , 0 ,0 , 7.642 , 6.244 , New , 1.4 97 , 0 , 0 ,1 , 7.522 , 6.208 , New , 1.31 97 , 0 , 0 , , 7.559 , 6.853 , New , 0.71 97 , 97 , 0 ,0 , 6.983 , 5.777 , New , 1.21 97 , 0 , 97 ,1 , 7.513 , 6.536 , New , 0.98 97 , 97 , 97 , , 7.71 , 6.629 , New , 1.08 129 , 0 , 0 ,0 , 9.749 , 9.186 , New , 0.56 129 , 0 , 0 ,1 , 9.827 , 9.177 , New , 0.65 129 , 0 , 0 , , 9.833 , 9.424 , New , 0.41 129 , 129 , 0 ,0 , 10.101 , 9.835 , New , 0.27 129 , 0 , 129 ,1 , 10.496 , 9.539 , New , 0.96 129 , 129 , 129 , , 10.676 , 10.797 , Cur , -0.12 161 , 0 , 0 ,0 , 9.652 , 9.408 , New , 0.24 161 , 0 , 0 ,1 , 9.921 , 9.252 , New , 0.67 161 , 0 , 0 , , 9.699 , 9.434 , New , 0.27 161 , 161 , 0 ,0 , 10.44 , 9.696 , New , 0.74 161 , 0 , 161 ,1 , 11.18 , 10.229 , New , 0.95 161 , 161 , 161 , , 11.207 , 10.716 , New , 0.49 193 , 0 , 0 ,0 , 9.954 , 9.407 , New , 0.55 193 , 0 , 0 ,1 , 9.959 , 9.436 , New , 0.52 193 , 0 , 0 , , 9.985 , 9.442 , New , 0.54 193 , 193 , 0 ,0 , 10.052 , 10.172 , Cur , -0.12 193 , 0 , 193 ,1 , 10.733 , 9.323 , New , 1.41 193 , 193 , 193 , , 10.71 , 10.659 , New , 0.05 225 , 0 , 0 ,0 , 9.865 , 9.291 , New , 0.57 225 , 0 , 0 ,1 , 9.736 , 9.269 , New , 0.47 225 , 0 , 0 , , 9.983 , 9.303 , New , 0.68 225 , 225 , 0 ,0 , 10.532 , 9.67 , New , 0.86 225 , 0 , 225 ,1 , 11.28 , 10.252 , New , 1.03 225 , 225 , 225 , , 11.337 , 10.973 , New , 0.36 257 , 0 , 0 ,0 , 12.296 , 9.332 , New , 2.96 257 , 0 , 0 ,1 , 12.418 , 9.209 , New , 3.21 257 , 0 , 0 , , 12.257 , 9.438 , New , 2.82 257 , 257 , 0 ,0 , 12.785 , 9.631 , New , 3.15 257 , 0 , 257 ,1 , 13.396 , 11.694 , New , 1.7 257 , 257 , 257 , , 12.341 , 10.327 , New , 2.01 289 , 0 , 0 ,0 , 12.144 , 10.177 , New , 1.97 289 , 0 , 0 ,1 , 12.318 , 10.209 , New , 2.11 289 , 0 , 0 , , 12.268 , 10.136 , New , 2.13 289 , 289 , 0 ,0 , 12.967 , 10.273 , New , 2.69 289 , 0 , 289 ,1 , 13.842 , 12.157 , New , 1.69 289 , 289 , 289 , , 13.052 , 11.194 , New , 1.86 321 , 0 , 0 ,0 , 13.314 , 11.728 , New , 1.59 321 , 0 , 0 ,1 , 13.287 , 11.813 , New , 1.47 321 , 0 , 0 , , 13.348 , 11.872 , New , 1.48 321 , 321 , 0 ,0 , 13.739 , 12.206 , New , 1.53 321 , 0 , 321 ,1 , 13.855 , 14.031 , Cur , -0.18 321 , 321 , 321 , , 13.345 , 12.844 , New , 0.5 353 , 0 , 0 ,0 , 15.216 , 11.809 , New , 3.41 353 , 0 , 0 ,1 , 15.058 , 11.919 , New , 3.14 353 , 0 , 0 , , 15.066 , 11.865 , New , 3.2 353 , 353 , 0 ,0 , 15.935 , 12.183 , New , 3.75 353 , 0 , 353 ,1 , 16.483 , 14.157 , New , 2.33 353 , 353 , 353 , , 16.05 , 12.838 , New , 3.21 32 , 7 , 2 ,0 , 3.75 , 3.752 , Cur , -0.0 32 , 0 , 0 ,1 , 4.283 , 3.834 , New , 0.45 32 , 0 , 0 , , 4.285 , 3.934 , New , 0.35 32 , 0 , 0 ,0 , 4.329 , 3.752 , New , 0.58 4 , 1 , 0 ,1 , 5.005 , 3.751 , New , 1.25 4 , 0 , 1 , , 4.719 , 4.374 , New , 0.35 4 , 1 , 1 ,0 , 4.543 , 4.457 , New , 0.09 32 , 1 , 0 ,1 , 3.751 , 3.768 , Cur , -0.02 32 , 0 , 1 , , 4.373 , 3.9 , New , 0.47 32 , 1 , 1 ,0 , 4.372 , 3.748 , New , 0.62 64 , 6 , 4 ,1 , 4.828 , 5.069 , Cur , -0.24 64 , 0 , 0 , , 5.65 , 5.303 , New , 0.35 64 , 0 , 0 ,0 , 5.752 , 5.259 , New , 0.49 64 , 0 , 0 ,1 , 5.668 , 5.37 , New , 0.3 8 , 2 , 0 , , 5.172 , 3.751 , New , 1.42 8 , 0 , 2 ,0 , 5.329 , 4.373 , New , 0.96 8 , 2 , 2 ,1 , 5.419 , 4.372 , New , 1.05 64 , 2 , 0 , , 4.758 , 5.169 , Cur , -0.41 64 , 0 , 2 ,0 , 6.337 , 5.354 , New , 0.98 64 , 2 , 2 ,1 , 6.2 , 5.58 , New , 0.62 128 , 5 , 6 , , 10.029 , 6.118 , New , 3.91 128 , 0 , 0 ,0 , 7.832 , 6.505 , New , 1.33 128 , 0 , 0 ,1 , 7.768 , 6.477 , New , 1.29 128 , 0 , 0 , , 7.963 , 6.475 , New , 1.49 16 , 3 , 0 ,0 , 5.087 , 3.75 , New , 1.34 16 , 0 , 3 ,1 , 5.629 , 4.374 , New , 1.25 16 , 3 , 3 , , 5.625 , 4.374 , New , 1.25 128 , 3 , 0 ,0 , 9.942 , 5.505 , New , 4.44 128 , 0 , 3 ,1 , 7.867 , 6.391 , New , 1.48 128 , 3 , 3 , , 7.625 , 6.584 , New , 1.04 256 , 4 , 8 ,0 , 9.7 , 10.028 , Cur , -0.33 256 , 0 , 0 ,1 , 9.197 , 8.582 , New , 0.61 256 , 0 , 0 , , 9.269 , 8.518 , New , 0.75 256 , 0 , 0 ,0 , 9.229 , 8.631 , New , 0.6 32 , 4 , 0 ,1 , 3.75 , 3.75 , Eq , 0.0 32 , 0 , 4 , , 4.727 , 3.904 , New , 0.82 32 , 4 , 4 ,0 , 4.373 , 3.749 , New , 0.62 256 , 4 , 0 ,1 , 9.887 , 9.65 , New , 0.24 256 , 0 , 4 , , 10.765 , 9.778 , New , 0.99 256 , 4 , 4 ,0 , 10.593 , 10.665 , Cur , -0.07 512 , 3 , 10 ,1 , 19.203 , 17.996 , New , 1.21 512 , 0 , 0 , , 18.561 , 13.369 , New , 5.19 512 , 0 , 0 ,0 , 18.437 , 13.474 , New , 4.96 512 , 0 , 0 ,1 , 18.577 , 13.486 , New , 5.09 64 , 5 , 0 , , 5.035 , 4.745 , New , 0.29 64 , 0 , 5 ,0 , 5.992 , 5.558 , New , 0.43 64 , 5 , 5 ,1 , 6.184 , 5.701 , New , 0.48 512 , 5 , 0 , , 19.905 , 16.177 , New , 3.73 512 , 0 , 5 ,0 , 20.175 , 17.011 , New , 3.16 512 , 5 , 5 ,1 , 18.967 , 15.303 , New , 3.66 1024, 2 , 12 , , 33.355 , 33.64 , Cur , -0.29 1024, 0 , 0 ,0 , 29.249 , 23.438 , New , 5.81 1024, 0 , 0 ,1 , 28.989 , 23.443 , New , 5.55 1024, 0 , 0 , , 28.902 , 23.47 , New , 5.43 128 , 6 , 0 ,0 , 9.743 , 6.448 , New , 3.29 128 , 0 , 6 ,1 , 7.897 , 6.607 , New , 1.29 128 , 6 , 6 , , 7.735 , 6.869 , New , 0.87 1024, 6 , 0 ,0 , 32.6 , 30.934 , New , 1.67 1024, 0 , 6 ,1 , 33.694 , 31.603 , New , 2.09 1024, 6 , 6 , , 29.754 , 25.188 , New , 4.57 2048, 1 , 14 ,0 , 62.467 , 61.676 , New , 0.79 2048, 0 , 0 ,1 , 49.455 , 42.522 , New , 6.93 2048, 0 , 0 , , 49.536 , 42.801 , New , 6.73 2048, 0 , 0 ,0 , 49.664 , 42.809 , New , 6.86 256 , 7 , 0 ,1 , 9.989 , 9.432 , New , 0.56 256 , 0 , 7 , , 10.357 , 9.473 , New , 0.88 256 , 7 , 7 ,0 , 10.407 , 10.471 , Cur , -0.06 2048, 7 , 0 ,1 , 60.923 , 59.654 , New , 1.27 2048, 0 , 7 , , 62.706 , 60.583 , New , 2.12 2048, 7 , 7 ,0 , 49.465 , 45.001 , New , 4.46 4096, 0 , 16 ,1 , 124.269 , 120.35 , New , 3.92 4096, 0 , 0 , , 100.491 , 91.167 , New , 9.32 4096, 0 , 0 ,0 , 100.748 , 90.715 , New , 10.03 4096, 0 , 0 ,1 , 100.957 , 90.781 , New , 10.18 512 , 8 , 0 , , 19.624 , 16.277 , New , 3.35 512 , 0 , 8 ,0 , 19.849 , 16.93 , New , 2.92 512 , 8 , 8 ,1 , 18.616 , 14.842 , New , 3.77 4096, 8 , 0 , , 124.386 , 120.405 , New , 3.98 4096, 0 , 8 ,0 , 124.678 , 121.095 , New , 3.58 4096, 8 , 8 ,1 , 100.62 , 94.085 , New , 6.54 1024, 9 , 0 , , 32.02 , 30.802 , New , 1.22 1024, 0 , 9 ,0 , 33.254 , 31.166 , New , 2.09 1024, 9 , 9 ,1 , 29.122 , 25.287 , New , 3.84 16 , 1 , 2 , , 5.285 , 4.055 , New , 1.23 16 , 1 , 2 ,0 , 5.312 , 4.06 , New , 1.25 16 , 1 , 2 ,1 , 5.283 , 4.114 , New , 1.17 32 , 2 , 4 , , 4.134 , 3.669 , New , 0.47 32 , 2 , 4 ,0 , 4.113 , 3.669 , New , 0.44 32 , 2 , 4 ,1 , 4.138 , 3.67 , New , 0.47 64 , 3 , 6 , , 5.362 , 5.028 , New , 0.33 64 , 3 , 6 ,0 , 5.651 , 5.101 , New , 0.55 64 , 3 , 6 ,1 , 5.385 , 5.164 , New , 0.22 128 , 4 , 8 , , 8.474 , 6.017 , New , 2.46 128 , 4 , 8 ,0 , 8.189 , 6.329 , New , 1.86 128 , 4 , 8 ,1 , 8.383 , 6.292 , New , 2.09 256 , 5 , 10 , , 10.741 , 10.41 , New , 0.33 256 , 5 , 10 ,0 , 10.805 , 10.379 , New , 0.43 256 , 5 , 10 ,1 , 10.751 , 10.652 , New , 0.1 512 , 6 , 12 , , 19.556 , 18.141 , New , 1.42 512 , 6 , 12 ,0 , 19.706 , 18.164 , New , 1.54 512 , 6 , 12 ,1 , 19.408 , 18.518 , New , 0.89 1024, 7 , 14 , , 33.099 , 32.802 , New , 0.3 1024, 7 , 14 ,0 , 33.417 , 32.662 , New , 0.76 1024, 7 , 14 ,1 , 33.211 , 32.779 , New , 0.43 2048, 8 , 16 , , 62.435 , 61.984 , New , 0.45 2048, 8 , 16 ,0 , 62.606 , 61.979 , New , 0.63 2048, 8 , 16 ,1 , 62.509 , 62.047 , New , 0.46 4096, 9 , 18 , , 124.936 , 123.56 , New , 1.38 4096, 9 , 18 ,0 , 125.084 , 123.496 , New , 1.59 4096, 9 , 18 ,1 , 125.094 , 123.241 , New , 1.85 33 , 33 , 0 , , 3.963 , 3.764 , New , 0.2 33 , 0 , 33 ,0 , 5.16 , 4.378 , New , 0.78 33 , 33 , 33 ,1 , 5.284 , 4.373 , New , 0.91 65 , 65 , 0 , , 7.882 , 5.555 , New , 2.33 65 , 0 , 65 ,0 , 8.791 , 6.453 , New , 2.34 65 , 65 , 65 ,1 , 8.252 , 6.434 , New , 1.82 97 , 97 , 0 , , 7.681 , 6.29 , New , 1.39 97 , 0 , 97 ,0 , 8.375 , 6.557 , New , 1.82 97 , 97 , 97 ,1 , 8.149 , 6.641 , New , 1.51 129 , 129 , 0 , , 10.367 , 9.819 , New , 0.55 129 , 0 , 129 ,0 , 11.788 , 9.297 , New , 2.49 129 , 129 , 129 ,1 , 10.839 , 10.466 , New , 0.37 161 , 161 , 0 , , 11.237 , 9.432 , New , 1.8 161 , 0 , 161 ,0 , 12.041 , 9.937 , New , 2.1 161 , 161 , 161 ,1 , 11.779 , 11.005 , New , 0.77 193 , 193 , 0 , , 10.886 , 10.07 , New , 0.82 193 , 0 , 193 ,0 , 11.757 , 9.504 , New , 2.25 193 , 193 , 193 ,1 , 11.264 , 10.551 , New , 0.71 225 , 225 , 0 , , 11.192 , 9.355 , New , 1.84 225 , 0 , 225 ,0 , 12.056 , 10.2 , New , 1.86 225 , 225 , 225 ,1 , 11.966 , 10.512 , New , 1.45 257 , 257 , 0 , , 12.597 , 9.738 , New , 2.86 257 , 0 , 257 ,0 , 13.47 , 11.24 , New , 2.23 257 , 257 , 257 ,1 , 12.599 , 9.916 , New , 2.68 289 , 289 , 0 , , 13.229 , 10.459 , New , 2.77 289 , 0 , 289 ,0 , 13.72 , 11.797 , New , 1.92 289 , 289 , 289 ,1 , 13.16 , 10.968 , New , 2.19 321 , 321 , 0 , , 13.975 , 11.839 , New , 2.14 321 , 0 , 321 ,0 , 13.943 , 13.65 , New , 0.29 321 , 321 , 321 ,1 , 13.434 , 12.488 , New , 0.95 353 , 353 , 0 , , 16.166 , 11.828 , New , 4.34 353 , 0 , 353 ,0 , 16.24 , 13.553 , New , 2.69 353 , 353 , 353 ,1 , 15.771 , 12.381 , New , 3.39 32 , 7 , 2 , , 3.974 , 3.753 , New , 0.22 4 , 1 , 0 ,0 , 5.006 , 3.767 , New , 1.24 4 , 0 , 1 ,1 , 4.543 , 4.374 , New , 0.17 4 , 1 , 1 , , 4.375 , 4.373 , New , 0.0 32 , 1 , 0 ,0 , 3.973 , 3.751 , New , 0.22 32 , 0 , 1 ,1 , 4.544 , 3.947 , New , 0.6 32 , 1 , 1 , , 4.439 , 3.748 , New , 0.69 64 , 6 , 4 ,0 , 5.148 , 4.869 , New , 0.28 8 , 2 , 0 ,1 , 5.001 , 3.75 , New , 1.25 8 , 0 , 2 , , 5.264 , 4.373 , New , 0.89 8 , 2 , 2 ,0 , 4.997 , 4.471 , New , 0.53 64 , 2 , 0 ,1 , 5.015 , 4.711 , New , 0.3 64 , 0 , 2 , , 6.058 , 5.748 , New , 0.31 64 , 2 , 2 ,0 , 6.103 , 5.439 , New , 0.66 128 , 5 , 6 ,1 , 10.399 , 5.795 , New , 4.6 16 , 3 , 0 , , 4.999 , 3.75 , New , 1.25 16 , 0 , 3 ,0 , 5.627 , 4.374 , New , 1.25 16 , 3 , 3 ,1 , 5.622 , 4.373 , New , 1.25 128 , 3 , 0 , , 10.489 , 6.163 , New , 4.33 128 , 0 , 3 ,0 , 8.342 , 6.595 , New , 1.75 128 , 3 , 3 ,1 , 8.176 , 6.837 , New , 1.34 256 , 4 , 8 , , 10.629 , 10.353 , New , 0.28 32 , 4 , 0 ,0 , 3.989 , 3.754 , New , 0.23 32 , 0 , 4 ,1 , 4.543 , 3.749 , New , 0.79 32 , 4 , 4 , , 4.44 , 3.748 , New , 0.69 256 , 4 , 0 ,0 , 10.954 , 9.435 , New , 1.52 256 , 0 , 4 ,1 , 11.673 , 9.79 , New , 1.88 256 , 4 , 4 , , 11.643 , 10.536 , New , 1.11 512 , 3 , 10 ,0 , 19.302 , 17.955 , New , 1.35 64 , 5 , 0 ,1 , 4.963 , 4.962 , New , 0.0 64 , 0 , 5 , , 6.089 , 5.509 , New , 0.58 64 , 5 , 5 ,0 , 5.956 , 5.546 , New , 0.41 512 , 5 , 0 ,1 , 19.719 , 16.074 , New , 3.64 512 , 0 , 5 , , 20.243 , 16.896 , New , 3.35 512 , 5 , 5 ,0 , 19.024 , 15.115 , New , 3.91 1024, 2 , 12 ,1 , 33.885 , 32.966 , New , 0.92 128 , 6 , 0 , , 10.586 , 6.143 , New , 4.44 128 , 0 , 6 ,0 , 8.168 , 6.787 , New , 1.38 128 , 6 , 6 ,1 , 8.272 , 6.559 , New , 1.71 1024, 6 , 0 , , 33.827 , 30.856 , New , 2.97 1024, 0 , 6 ,0 , 34.217 , 31.688 , New , 2.53 1024, 6 , 6 ,1 , 30.055 , 25.27 , New , 4.79 2048, 1 , 14 , , 63.306 , 61.927 , New , 1.38 256 , 7 , 0 ,0 , 10.445 , 9.501 , New , 0.94 256 , 0 , 7 ,1 , 11.376 , 9.666 , New , 1.71 256 , 7 , 7 , , 11.026 , 10.411 , New , 0.62 2048, 7 , 0 ,0 , 62.515 , 59.618 , New , 2.9 2048, 0 , 7 ,1 , 62.969 , 60.234 , New , 2.73 2048, 7 , 7 , , 49.868 , 44.869 , New , 5.0 4096, 0 , 16 ,0 , 125.093 , 120.518 , New , 4.58 512 , 8 , 0 ,1 , 19.305 , 15.862 , New , 3.44 512 , 0 , 8 , , 19.898 , 16.576 , New , 3.32 512 , 8 , 8 ,0 , 18.657 , 15.372 , New , 3.29 4096, 8 , 0 ,1 , 124.697 , 120.232 , New , 4.47 4096, 0 , 8 , , 125.797 , 120.998 , New , 4.8 4096, 8 , 8 ,0 , 100.697 , 94.669 , New , 6.03 1024, 9 , 0 ,1 , 32.443 , 30.552 , New , 1.89 1024, 0 , 9 , , 33.965 , 31.209 , New , 2.76 1024, 9 , 9 ,0 , 29.323 , 25.104 , New , 4.22 33 , 33 , 0 ,1 , 3.751 , 3.751 , Eq , 0.0 33 , 0 , 33 , , 4.999 , 4.374 , New , 0.62 33 , 33 , 33 ,0 , 4.997 , 4.373 , New , 0.62 65 , 65 , 0 ,1 , 6.958 , 6.112 , New , 0.85 65 , 0 , 65 , , 7.688 , 6.919 , New , 0.77 65 , 65 , 65 ,0 , 7.834 , 7.297 , New , 0.54 97 , 97 , 0 ,1 , 6.842 , 6.356 , New , 0.49 97 , 0 , 97 , , 7.421 , 6.642 , New , 0.78 97 , 97 , 97 ,0 , 7.789 , 6.468 , New , 1.32 129 , 129 , 0 ,1 , 10.691 , 9.664 , New , 1.03 129 , 0 , 129 , , 10.948 , 9.524 , New , 1.42 129 , 129 , 129 ,0 , 11.012 , 10.985 , New , 0.03 161 , 161 , 0 ,1 , 11.062 , 9.395 , New , 1.67 161 , 0 , 161 , , 11.433 , 10.259 , New , 1.17 161 , 161 , 161 ,0 , 11.72 , 10.666 , New , 1.05 193 , 193 , 0 ,1 , 10.471 , 10.16 , New , 0.31 193 , 0 , 193 , , 11.012 , 9.737 , New , 1.28 193 , 193 , 193 ,0 , 11.116 , 10.646 , New , 0.47 225 , 225 , 0 ,1 , 11.221 , 9.32 , New , 1.9 225 , 0 , 225 , , 12.013 , 10.013 , New , 2.0 225 , 225 , 225 ,0 , 11.808 , 10.393 , New , 1.41 257 , 257 , 0 ,1 , 12.361 , 9.967 , New , 2.39 257 , 0 , 257 , , 13.289 , 11.483 , New , 1.81 257 , 257 , 257 ,0 , 12.528 , 10.311 , New , 2.22 289 , 289 , 0 ,1 , 13.113 , 10.486 , New , 2.63 289 , 0 , 289 , , 13.561 , 12.139 , New , 1.42 289 , 289 , 289 ,0 , 12.977 , 11.158 , New , 1.82 321 , 321 , 0 ,1 , 13.445 , 11.908 , New , 1.54 321 , 0 , 321 , , 14.207 , 13.885 , New , 0.32 321 , 321 , 321 ,0 , 13.685 , 12.614 , New , 1.07 353 , 353 , 0 ,1 , 15.676 , 12.025 , New , 3.65 353 , 0 , 353 , , 16.239 , 14.234 , New , 2.01 353 , 353 , 353 ,0 , 15.857 , 12.651 , New , 3.21 32 , 7 , 2 ,1 , 3.751 , 3.752 , Cur , -0.0 4 , 1 , 0 , , 5.284 , 3.75 , New , 1.53 4 , 0 , 1 ,0 , 4.779 , 4.373 , New , 0.41 4 , 1 , 1 ,1 , 4.571 , 4.372 , New , 0.2 32 , 1 , 0 , , 3.751 , 3.751 , Eq , 0.0 32 , 0 , 1 ,0 , 4.562 , 3.75 , New , 0.81 32 , 1 , 1 ,1 , 4.718 , 3.749 , New , 0.97 64 , 6 , 4 , , 4.767 , 5.09 , Cur , -0.32 8 , 2 , 0 ,0 , 5.1 , 3.75 , New , 1.35 8 , 0 , 2 ,1 , 4.998 , 4.457 , New , 0.54 8 , 2 , 2 , , 5.262 , 4.372 , New , 0.89 64 , 2 , 0 ,0 , 4.717 , 5.155 , Cur , -0.44 64 , 0 , 2 ,1 , 6.016 , 5.576 , New , 0.44 64 , 2 , 2 , , 6.139 , 5.759 , New , 0.38 128 , 5 , 6 ,0 , 9.785 , 5.797 , New , 3.99 16 , 3 , 0 ,1 , 5.001 , 3.752 , New , 1.25 16 , 0 , 3 , , 5.623 , 4.374 , New , 1.25 16 , 3 , 3 ,0 , 5.622 , 4.373 , New , 1.25 128 , 3 , 0 ,1 , 9.618 , 6.056 , New , 3.56 128 , 0 , 3 , , 7.676 , 6.704 , New , 0.97 128 , 3 , 3 ,0 , 8.186 , 6.844 , New , 1.34 256 , 4 , 8 ,1 , 10.106 , 10.132 , Cur , -0.03 32 , 4 , 0 , , 3.75 , 3.749 , New , 0.0 32 , 0 , 4 ,0 , 4.791 , 3.749 , New , 1.04 32 , 4 , 4 ,1 , 4.745 , 3.749 , New , 1.0 256 , 4 , 0 , , 10.09 , 9.887 , New , 0.2 256 , 0 , 4 ,0 , 10.751 , 9.79 , New , 0.96 256 , 4 , 4 ,1 , 11.456 , 10.879 , New , 0.58 512 , 3 , 10 , , 19.079 , 18.409 , New , 0.67 64 , 5 , 0 ,0 , 5.018 , 4.814 , New , 0.2 64 , 0 , 5 ,1 , 6.014 , 5.666 , New , 0.35 64 , 5 , 5 , , 6.432 , 5.482 , New , 0.95 512 , 5 , 0 ,0 , 19.467 , 16.533 , New , 2.93 512 , 0 , 5 ,1 , 20.14 , 17.254 , New , 2.89 512 , 5 , 5 , , 19.128 , 15.727 , New , 3.4 1024, 2 , 12 ,0 , 33.448 , 33.758 , Cur , -0.31 128 , 6 , 0 ,1 , 9.7 , 6.236 , New , 3.46 128 , 0 , 6 , , 7.584 , 6.454 , New , 1.13 128 , 6 , 6 ,0 , 7.755 , 6.779 , New , 0.98 1024, 6 , 0 ,1 , 32.179 , 31.385 , New , 0.79 1024, 0 , 6 , , 33.888 , 31.93 , New , 1.96 1024, 6 , 6 ,0 , 29.818 , 25.636 , New , 4.18 2048, 1 , 14 ,1 , 63.486 , 62.535 , New , 0.95 256 , 7 , 0 , , 9.995 , 9.371 , New , 0.62 256 , 0 , 7 ,0 , 10.992 , 9.483 , New , 1.51 256 , 7 , 7 ,1 , 10.595 , 10.592 , New , 0.0 2048, 7 , 0 , , 61.337 , 59.896 , New , 1.44 2048, 0 , 7 ,0 , 62.853 , 60.456 , New , 2.4 2048, 7 , 7 ,1 , 50.073 , 44.909 , New , 5.16 4096, 0 , 16 , , 124.953 , 123.547 , New , 1.41 512 , 8 , 0 ,0 , 19.332 , 16.043 , New , 3.29 512 , 0 , 8 ,1 , 19.79 , 16.585 , New , 3.2 512 , 8 , 8 , , 18.648 , 15.708 , New , 2.94 4096, 8 , 0 ,0 , 123.882 , 120.537 , New , 3.34 4096, 0 , 8 ,1 , 125.77 , 121.482 , New , 4.29 4096, 8 , 8 , , 100.688 , 93.987 , New , 6.7 1024, 9 , 0 ,0 , 32.153 , 30.814 , New , 1.34 1024, 0 , 9 ,1 , 33.59 , 31.362 , New , 2.23 1024, 9 , 9 , , 29.2 , 25.29 , New , 3.91 New Wins: 311 Cur Wins: 16 Equals : 3 Results For Skylake memcmp-avx2 size, al1 , al2 ,res, Cur T , New T , Win , Dif 1 , 1 , 1 ,0 , 3.552 , 4.162 , Cur , -0.61 1 , 1 , 1 ,1 , 3.525 , 4.219 , Cur , -0.69 1 , 1 , 1 , , 3.514 , 4.178 , Cur , -0.66 2 , 2 , 2 ,0 , 3.533 , 4.645 , Cur , -1.11 2 , 2 , 2 ,1 , 3.482 , 4.658 , Cur , -1.18 2 , 2 , 2 , , 3.521 , 4.692 , Cur , -1.17 3 , 3 , 3 ,0 , 3.54 , 4.788 , Cur , -1.25 3 , 3 , 3 ,1 , 3.553 , 4.766 , Cur , -1.21 3 , 3 , 3 , , 3.559 , 4.93 , Cur , -1.37 4 , 4 , 4 ,0 , 4.724 , 5.187 , Cur , -0.46 4 , 4 , 4 ,1 , 4.748 , 4.621 , New , 0.13 4 , 4 , 4 , , 4.961 , 4.895 , New , 0.07 5 , 5 , 5 ,0 , 4.813 , 4.878 , Cur , -0.07 5 , 5 , 5 ,1 , 4.821 , 4.735 , New , 0.09 5 , 5 , 5 , , 4.795 , 4.829 , Cur , -0.03 6 , 6 , 6 ,0 , 4.781 , 4.627 , New , 0.15 6 , 6 , 6 ,1 , 4.664 , 4.627 , New , 0.04 6 , 6 , 6 , , 4.707 , 4.624 , New , 0.08 7 , 7 , 7 ,0 , 4.667 , 4.578 , New , 0.09 7 , 7 , 7 ,1 , 4.825 , 4.554 , New , 0.27 7 , 7 , 7 , , 4.645 , 4.572 , New , 0.07 8 , 8 , 8 ,0 , 5.065 , 4.618 , New , 0.45 8 , 8 , 8 ,1 , 5.066 , 4.578 , New , 0.49 8 , 8 , 8 , , 4.958 , 4.626 , New , 0.33 9 , 9 , 9 ,0 , 5.594 , 4.625 , New , 0.97 9 , 9 , 9 ,1 , 5.695 , 4.581 , New , 1.11 9 , 9 , 9 , , 5.668 , 4.64 , New , 1.03 10 , 10 , 10 ,0 , 5.717 , 4.596 , New , 1.12 10 , 10 , 10 ,1 , 5.761 , 4.662 , New , 1.1 10 , 10 , 10 , , 5.689 , 4.68 , New , 1.01 11 , 11 , 11 ,0 , 5.714 , 4.656 , New , 1.06 11 , 11 , 11 ,1 , 5.781 , 4.591 , New , 1.19 11 , 11 , 11 , , 5.71 , 4.685 , New , 1.03 12 , 12 , 12 ,0 , 5.937 , 4.719 , New , 1.22 12 , 12 , 12 ,1 , 5.806 , 4.754 , New , 1.05 12 , 12 , 12 , , 5.789 , 4.725 , New , 1.06 13 , 13 , 13 ,0 , 5.684 , 4.608 , New , 1.08 13 , 13 , 13 ,1 , 5.822 , 4.602 , New , 1.22 13 , 13 , 13 , , 5.784 , 4.635 , New , 1.15 14 , 14 , 14 ,0 , 5.684 , 4.62 , New , 1.06 14 , 14 , 14 ,1 , 5.78 , 4.602 , New , 1.18 14 , 14 , 14 , , 5.699 , 4.648 , New , 1.05 15 , 15 , 15 ,0 , 5.771 , 4.662 , New , 1.11 15 , 15 , 15 ,1 , 5.741 , 4.71 , New , 1.03 15 , 15 , 15 , , 5.799 , 4.728 , New , 1.07 16 , 16 , 16 ,0 , 5.023 , 4.684 , New , 0.34 16 , 16 , 16 ,1 , 4.99 , 4.621 , New , 0.37 16 , 16 , 16 , , 5.01 , 4.793 , New , 0.22 17 , 17 , 17 ,0 , 5.699 , 4.692 , New , 1.01 17 , 17 , 17 ,1 , 5.719 , 4.677 , New , 1.04 17 , 17 , 17 , , 5.692 , 4.694 , New , 1.0 18 , 18 , 18 ,0 , 5.746 , 4.62 , New , 1.13 18 , 18 , 18 ,1 , 5.787 , 4.644 , New , 1.14 18 , 18 , 18 , , 5.763 , 4.66 , New , 1.1 19 , 19 , 19 ,0 , 5.829 , 4.645 , New , 1.18 19 , 19 , 19 ,1 , 5.765 , 4.651 , New , 1.11 19 , 19 , 19 , , 5.714 , 4.673 , New , 1.04 20 , 20 , 20 ,0 , 5.707 , 4.632 , New , 1.08 20 , 20 , 20 ,1 , 5.764 , 4.664 , New , 1.1 20 , 20 , 20 , , 5.73 , 4.666 , New , 1.06 21 , 21 , 21 ,0 , 5.704 , 4.614 , New , 1.09 21 , 21 , 21 ,1 , 5.704 , 4.608 , New , 1.1 21 , 21 , 21 , , 5.706 , 4.617 , New , 1.09 22 , 22 , 22 ,0 , 5.672 , 4.618 , New , 1.05 22 , 22 , 22 ,1 , 5.699 , 4.566 , New , 1.13 22 , 22 , 22 , , 5.653 , 4.613 , New , 1.04 23 , 23 , 23 ,0 , 5.631 , 4.572 , New , 1.06 23 , 23 , 23 ,1 , 5.658 , 4.571 , New , 1.09 23 , 23 , 23 , , 5.644 , 4.61 , New , 1.03 24 , 24 , 24 ,0 , 5.652 , 4.577 , New , 1.08 24 , 24 , 24 ,1 , 5.67 , 4.577 , New , 1.09 24 , 24 , 24 , , 5.645 , 4.604 , New , 1.04 25 , 25 , 25 ,0 , 5.65 , 4.565 , New , 1.08 25 , 25 , 25 ,1 , 5.665 , 4.565 , New , 1.1 25 , 25 , 25 , , 5.64 , 4.597 , New , 1.04 26 , 26 , 26 ,0 , 5.65 , 4.553 , New , 1.1 26 , 26 , 26 ,1 , 5.681 , 4.64 , New , 1.04 26 , 26 , 26 , , 5.647 , 4.643 , New , 1.0 27 , 27 , 27 ,0 , 5.639 , 4.571 , New , 1.07 27 , 27 , 27 ,1 , 5.679 , 4.612 , New , 1.07 27 , 27 , 27 , , 5.645 , 4.633 , New , 1.01 28 , 28 , 28 ,0 , 5.71 , 4.879 , New , 0.83 28 , 28 , 28 ,1 , 5.717 , 4.952 , New , 0.76 28 , 28 , 28 , , 5.677 , 4.993 , New , 0.68 29 , 29 , 29 ,0 , 5.646 , 5.052 , New , 0.59 29 , 29 , 29 ,1 , 5.673 , 4.675 , New , 1.0 29 , 29 , 29 , , 5.654 , 4.901 , New , 0.75 30 , 30 , 30 ,0 , 5.654 , 5.5 , New , 0.15 30 , 30 , 30 ,1 , 5.732 , 5.223 , New , 0.51 30 , 30 , 30 , , 5.63 , 5.018 , New , 0.61 31 , 31 , 31 ,0 , 5.617 , 4.952 , New , 0.67 31 , 31 , 31 ,1 , 5.672 , 4.938 , New , 0.73 31 , 31 , 31 , , 5.644 , 4.801 , New , 0.84 1 , 0 , 0 ,0 , 3.735 , 4.2 , Cur , -0.47 1 , 0 , 0 ,1 , 3.694 , 4.2 , Cur , -0.51 1 , 0 , 0 , , 3.699 , 4.194 , Cur , -0.5 1 , 4095, 0 ,0 , 3.68 , 4.183 , Cur , -0.5 1 , 4095, 0 ,1 , 3.68 , 4.188 , Cur , -0.51 1 , 4095, 0 , , 3.743 , 4.188 , Cur , -0.44 2 , 0 , 0 ,0 , 3.679 , 4.5 , Cur , -0.82 2 , 0 , 0 ,1 , 3.684 , 4.586 , Cur , -0.9 2 , 0 , 0 , , 3.73 , 4.6 , Cur , -0.87 2 , 4094, 0 ,0 , 3.692 , 4.723 , Cur , -1.03 2 , 4094, 0 ,1 , 3.699 , 4.701 , Cur , -1.0 2 , 4094, 0 , , 3.705 , 4.744 , Cur , -1.04 3 , 0 , 0 ,0 , 3.703 , 4.523 , Cur , -0.82 3 , 0 , 0 ,1 , 3.697 , 4.528 , Cur , -0.83 3 , 0 , 0 , , 3.702 , 4.556 , Cur , -0.85 3 , 4093, 0 ,0 , 3.731 , 4.713 , Cur , -0.98 3 , 4093, 0 ,1 , 3.692 , 4.712 , Cur , -1.02 3 , 4093, 0 , , 3.711 , 4.718 , Cur , -1.01 4 , 0 , 0 ,0 , 4.675 , 4.526 , New , 0.15 4 , 0 , 0 ,1 , 4.688 , 4.523 , New , 0.17 4 , 0 , 0 , , 4.632 , 4.547 , New , 0.08 4 , 4092, 0 ,0 , 4.628 , 4.897 , Cur , -0.27 4 , 4092, 0 ,1 , 4.549 , 4.91 , Cur , -0.36 4 , 4092, 0 , , 4.572 , 4.922 , Cur , -0.35 5 , 0 , 0 ,0 , 4.728 , 4.559 , New , 0.17 5 , 0 , 0 ,1 , 4.781 , 4.535 , New , 0.25 5 , 0 , 0 , , 4.686 , 4.593 , New , 0.09 5 , 4091, 0 ,0 , 4.606 , 4.93 , Cur , -0.32 5 , 4091, 0 ,1 , 4.528 , 4.931 , Cur , -0.4 5 , 4091, 0 , , 4.61 , 4.911 , Cur , -0.3 6 , 0 , 0 ,0 , 4.73 , 4.588 , New , 0.14 6 , 0 , 0 ,1 , 4.696 , 4.577 , New , 0.12 6 , 0 , 0 , , 4.687 , 4.598 , New , 0.09 6 , 4090, 0 ,0 , 4.59 , 5.006 , Cur , -0.42 6 , 4090, 0 ,1 , 4.539 , 4.954 , Cur , -0.42 6 , 4090, 0 , , 4.617 , 4.936 , Cur , -0.32 7 , 0 , 0 ,0 , 4.758 , 4.589 , New , 0.17 7 , 0 , 0 ,1 , 4.728 , 4.59 , New , 0.14 7 , 0 , 0 , , 4.712 , 4.635 , New , 0.08 7 , 4089, 0 ,0 , 4.614 , 4.992 , Cur , -0.38 7 , 4089, 0 ,1 , 4.552 , 4.973 , Cur , -0.42 7 , 4089, 0 , , 4.636 , 4.946 , Cur , -0.31 8 , 0 , 0 ,0 , 4.921 , 4.546 , New , 0.38 8 , 0 , 0 ,1 , 4.905 , 4.53 , New , 0.38 8 , 0 , 0 , , 4.912 , 4.543 , New , 0.37 8 , 4088, 0 ,0 , 4.97 , 5.661 , Cur , -0.69 8 , 4088, 0 ,1 , 4.949 , 5.677 , Cur , -0.73 8 , 4088, 0 , , 4.97 , 5.731 , Cur , -0.76 9 , 0 , 0 ,0 , 5.674 , 4.609 , New , 1.07 9 , 0 , 0 ,1 , 5.706 , 4.662 , New , 1.04 9 , 0 , 0 , , 5.668 , 4.63 , New , 1.04 9 , 4087, 0 ,0 , 5.676 , 5.675 , New , 0.0 9 , 4087, 0 ,1 , 5.759 , 5.862 , Cur , -0.1 9 , 4087, 0 , , 5.682 , 5.9 , Cur , -0.22 10 , 0 , 0 ,0 , 5.693 , 4.648 , New , 1.04 10 , 0 , 0 ,1 , 5.747 , 4.616 , New , 1.13 10 , 0 , 0 , , 5.713 , 4.631 , New , 1.08 10 , 4086, 0 ,0 , 5.751 , 5.69 , New , 0.06 10 , 4086, 0 ,1 , 5.834 , 5.686 , New , 0.15 10 , 4086, 0 , , 5.728 , 5.725 , New , 0.0 11 , 0 , 0 ,0 , 5.75 , 4.617 , New , 1.13 11 , 0 , 0 ,1 , 5.773 , 4.618 , New , 1.15 11 , 0 , 0 , , 5.764 , 4.658 , New , 1.11 11 , 4085, 0 ,0 , 5.772 , 5.713 , New , 0.06 11 , 4085, 0 ,1 , 5.751 , 5.722 , New , 0.03 11 , 4085, 0 , , 5.736 , 5.93 , Cur , -0.19 12 , 0 , 0 ,0 , 5.765 , 4.646 , New , 1.12 12 , 0 , 0 ,1 , 5.798 , 4.641 , New , 1.16 12 , 0 , 0 , , 5.823 , 4.668 , New , 1.16 12 , 4084, 0 ,0 , 5.752 , 6.317 , Cur , -0.57 12 , 4084, 0 ,1 , 5.818 , 5.749 , New , 0.07 12 , 4084, 0 , , 5.736 , 6.129 , Cur , -0.39 13 , 0 , 0 ,0 , 5.749 , 4.634 , New , 1.11 13 , 0 , 0 ,1 , 5.778 , 4.635 , New , 1.14 13 , 0 , 0 , , 5.722 , 4.655 , New , 1.07 13 , 4083, 0 ,0 , 5.784 , 5.73 , New , 0.05 13 , 4083, 0 ,1 , 5.772 , 5.928 , Cur , -0.16 13 , 4083, 0 , , 5.743 , 5.951 , Cur , -0.21 14 , 0 , 0 ,0 , 5.781 , 4.646 , New , 1.13 14 , 0 , 0 ,1 , 5.784 , 4.664 , New , 1.12 14 , 0 , 0 , , 5.729 , 4.667 , New , 1.06 14 , 4082, 0 ,0 , 5.752 , 5.924 , Cur , -0.17 14 , 4082, 0 ,1 , 5.778 , 5.909 , Cur , -0.13 14 , 4082, 0 , , 5.806 , 5.76 , New , 0.05 15 , 0 , 0 ,0 , 5.77 , 4.657 , New , 1.11 15 , 0 , 0 ,1 , 5.857 , 4.71 , New , 1.15 15 , 0 , 0 , , 5.753 , 4.687 , New , 1.07 15 , 4081, 0 ,0 , 5.76 , 5.724 , New , 0.04 15 , 4081, 0 ,1 , 5.788 , 5.926 , Cur , -0.14 15 , 4081, 0 , , 5.758 , 5.959 , Cur , -0.2 16 , 0 , 0 ,0 , 4.984 , 4.677 , New , 0.31 16 , 0 , 0 ,1 , 4.983 , 4.662 , New , 0.32 16 , 0 , 0 , , 5.013 , 4.762 , New , 0.25 16 , 4080, 0 ,0 , 5.056 , 5.37 , Cur , -0.31 16 , 4080, 0 ,1 , 5.023 , 5.357 , Cur , -0.33 16 , 4080, 0 , , 5.057 , 5.366 , Cur , -0.31 17 , 0 , 0 ,0 , 5.758 , 4.609 , New , 1.15 17 , 0 , 0 ,1 , 5.791 , 4.628 , New , 1.16 17 , 0 , 0 , , 5.763 , 4.665 , New , 1.1 17 , 4079, 0 ,0 , 5.767 , 6.09 , Cur , -0.32 17 , 4079, 0 ,1 , 5.786 , 6.07 , Cur , -0.28 17 , 4079, 0 , , 5.753 , 6.099 , Cur , -0.35 18 , 0 , 0 ,0 , 5.816 , 4.699 , New , 1.12 18 , 0 , 0 ,1 , 5.776 , 4.628 , New , 1.15 18 , 0 , 0 , , 5.758 , 4.664 , New , 1.09 18 , 4078, 0 ,0 , 5.757 , 6.071 , Cur , -0.31 18 , 4078, 0 ,1 , 5.81 , 6.117 , Cur , -0.31 18 , 4078, 0 , , 5.947 , 6.118 , Cur , -0.17 19 , 0 , 0 ,0 , 5.756 , 4.677 , New , 1.08 19 , 0 , 0 ,1 , 5.783 , 4.658 , New , 1.12 19 , 0 , 0 , , 5.755 , 4.73 , New , 1.02 19 , 4077, 0 ,0 , 5.76 , 6.055 , Cur , -0.29 19 , 4077, 0 ,1 , 5.786 , 6.054 , Cur , -0.27 19 , 4077, 0 , , 5.801 , 6.137 , Cur , -0.34 20 , 0 , 0 ,0 , 5.78 , 4.634 , New , 1.15 20 , 0 , 0 ,1 , 5.799 , 4.658 , New , 1.14 20 , 0 , 0 , , 5.766 , 4.673 , New , 1.09 20 , 4076, 0 ,0 , 5.663 , 5.991 , Cur , -0.33 20 , 4076, 0 ,1 , 5.802 , 5.944 , Cur , -0.14 20 , 4076, 0 , , 5.647 , 6.006 , Cur , -0.36 21 , 0 , 0 ,0 , 5.643 , 4.553 , New , 1.09 21 , 0 , 0 ,1 , 5.704 , 4.553 , New , 1.15 21 , 0 , 0 , , 5.683 , 4.622 , New , 1.06 21 , 4075, 0 ,0 , 5.643 , 5.956 , Cur , -0.31 21 , 4075, 0 ,1 , 5.68 , 5.958 , Cur , -0.28 21 , 4075, 0 , , 5.653 , 6.004 , Cur , -0.35 22 , 0 , 0 ,0 , 5.634 , 4.566 , New , 1.07 22 , 0 , 0 ,1 , 5.669 , 4.566 , New , 1.1 22 , 0 , 0 , , 5.672 , 4.592 , New , 1.08 22 , 4074, 0 ,0 , 5.63 , 5.958 , Cur , -0.33 22 , 4074, 0 ,1 , 5.666 , 5.95 , Cur , -0.28 22 , 4074, 0 , , 5.63 , 6.02 , Cur , -0.39 23 , 0 , 0 ,0 , 5.718 , 4.571 , New , 1.15 23 , 0 , 0 ,1 , 5.654 , 4.571 , New , 1.08 23 , 0 , 0 , , 5.658 , 4.598 , New , 1.06 23 , 4073, 0 ,0 , 5.636 , 5.977 , Cur , -0.34 23 , 4073, 0 ,1 , 5.663 , 5.967 , Cur , -0.3 23 , 4073, 0 , , 5.63 , 6.027 , Cur , -0.4 24 , 0 , 0 ,0 , 5.634 , 4.61 , New , 1.02 24 , 0 , 0 ,1 , 5.661 , 4.571 , New , 1.09 24 , 0 , 0 , , 5.636 , 4.593 , New , 1.04 24 , 4072, 0 ,0 , 5.628 , 5.928 , Cur , -0.3 24 , 4072, 0 ,1 , 5.655 , 5.959 , Cur , -0.3 24 , 4072, 0 , , 5.63 , 6.0 , Cur , -0.37 25 , 0 , 0 ,0 , 5.626 , 4.613 , New , 1.01 25 , 0 , 0 ,1 , 5.654 , 4.553 , New , 1.1 25 , 0 , 0 , , 5.62 , 4.6 , New , 1.02 25 , 4071, 0 ,0 , 5.628 , 5.95 , Cur , -0.32 25 , 4071, 0 ,1 , 5.65 , 5.928 , Cur , -0.28 25 , 4071, 0 , , 5.629 , 6.003 , Cur , -0.37 26 , 0 , 0 ,0 , 5.642 , 4.594 , New , 1.05 26 , 0 , 0 ,1 , 5.661 , 4.609 , New , 1.05 26 , 0 , 0 , , 5.634 , 4.639 , New , 1.0 26 , 4070, 0 ,0 , 5.636 , 5.955 , Cur , -0.32 26 , 4070, 0 ,1 , 5.663 , 5.96 , Cur , -0.3 26 , 4070, 0 , , 5.835 , 6.01 , Cur , -0.17 27 , 0 , 0 ,0 , 5.67 , 4.561 , New , 1.11 27 , 0 , 0 ,1 , 5.674 , 4.585 , New , 1.09 27 , 0 , 0 , , 5.649 , 4.593 , New , 1.06 27 , 4069, 0 ,0 , 5.676 , 5.966 , Cur , -0.29 27 , 4069, 0 ,1 , 5.701 , 5.98 , Cur , -0.28 27 , 4069, 0 , , 5.784 , 6.021 , Cur , -0.24 28 , 0 , 0 ,0 , 5.672 , 4.852 , New , 0.82 28 , 0 , 0 ,1 , 5.705 , 5.032 , New , 0.67 28 , 0 , 0 , , 5.682 , 4.982 , New , 0.7 28 , 4068, 0 ,0 , 5.675 , 5.974 , Cur , -0.3 28 , 4068, 0 ,1 , 5.687 , 5.928 , Cur , -0.24 28 , 4068, 0 , , 5.639 , 5.998 , Cur , -0.36 29 , 0 , 0 ,0 , 5.612 , 4.883 , New , 0.73 29 , 0 , 0 ,1 , 5.654 , 4.774 , New , 0.88 29 , 0 , 0 , , 5.621 , 4.753 , New , 0.87 29 , 4067, 0 ,0 , 5.631 , 5.927 , Cur , -0.3 29 , 4067, 0 ,1 , 5.645 , 6.017 , Cur , -0.37 29 , 4067, 0 , , 5.63 , 5.974 , Cur , -0.34 30 , 0 , 0 ,0 , 5.681 , 4.99 , New , 0.69 30 , 0 , 0 ,1 , 5.675 , 4.84 , New , 0.83 30 , 0 , 0 , , 5.63 , 4.989 , New , 0.64 30 , 4066, 0 ,0 , 5.623 , 5.929 , Cur , -0.31 30 , 4066, 0 ,1 , 5.666 , 5.912 , Cur , -0.25 30 , 4066, 0 , , 5.646 , 6.0 , Cur , -0.35 31 , 0 , 0 ,0 , 5.653 , 4.908 , New , 0.74 31 , 0 , 0 ,1 , 5.664 , 4.743 , New , 0.92 31 , 0 , 0 , , 5.618 , 5.023 , New , 0.6 31 , 4065, 0 ,0 , 5.608 , 5.914 , Cur , -0.31 31 , 4065, 0 ,1 , 5.635 , 5.895 , Cur , -0.26 31 , 4065, 0 , , 5.624 , 5.941 , Cur , -0.32 33 , 0 , 0 ,0 , 4.74 , 4.383 , New , 0.36 33 , 0 , 0 ,1 , 4.684 , 4.604 , New , 0.08 33 , 0 , 0 , , 4.999 , 4.404 , New , 0.59 33 , 33 , 0 ,0 , 4.453 , 3.771 , New , 0.68 33 , 0 , 33 ,1 , 4.712 , 4.695 , New , 0.02 33 , 33 , 33 , , 4.527 , 4.631 , Cur , -0.1 65 , 0 , 0 ,0 , 8.33 , 6.262 , New , 2.07 65 , 0 , 0 ,1 , 8.51 , 6.201 , New , 2.31 65 , 0 , 0 , , 8.375 , 6.293 , New , 2.08 65 , 65 , 0 ,0 , 7.836 , 6.27 , New , 1.57 65 , 0 , 65 ,1 , 8.87 , 6.407 , New , 2.46 65 , 65 , 65 , , 8.938 , 6.598 , New , 2.34 97 , 0 , 0 ,0 , 8.714 , 6.321 , New , 2.39 97 , 0 , 0 ,1 , 8.454 , 6.317 , New , 2.14 97 , 0 , 0 , , 8.467 , 6.374 , New , 2.09 97 , 97 , 0 ,0 , 8.389 , 5.701 , New , 2.69 97 , 0 , 97 ,1 , 8.79 , 6.409 , New , 2.38 97 , 97 , 97 , , 8.804 , 6.545 , New , 2.26 129 , 0 , 0 ,0 , 9.323 , 8.924 , New , 0.4 129 , 0 , 0 ,1 , 9.444 , 8.978 , New , 0.47 129 , 0 , 0 , , 9.408 , 8.976 , New , 0.43 129 , 129 , 0 ,0 , 8.604 , 8.685 , Cur , -0.08 129 , 0 , 129 ,1 , 9.813 , 9.202 , New , 0.61 129 , 129 , 129 , , 9.976 , 9.113 , New , 0.86 161 , 0 , 0 ,0 , 9.35 , 8.937 , New , 0.41 161 , 0 , 0 ,1 , 9.41 , 9.198 , New , 0.21 161 , 0 , 0 , , 9.326 , 9.003 , New , 0.32 161 , 161 , 0 ,0 , 8.733 , 8.534 , New , 0.2 161 , 0 , 161 ,1 , 11.141 , 9.113 , New , 2.03 161 , 161 , 161 , , 11.052 , 9.458 , New , 1.59 193 , 0 , 0 ,0 , 9.325 , 8.98 , New , 0.34 193 , 0 , 0 ,1 , 9.491 , 8.91 , New , 0.58 193 , 0 , 0 , , 9.686 , 9.075 , New , 0.61 193 , 193 , 0 ,0 , 8.803 , 8.67 , New , 0.13 193 , 0 , 193 ,1 , 9.969 , 9.139 , New , 0.83 193 , 193 , 193 , , 9.836 , 9.187 , New , 0.65 225 , 0 , 0 ,0 , 9.65 , 8.944 , New , 0.71 225 , 0 , 0 ,1 , 9.987 , 8.86 , New , 1.13 225 , 0 , 0 , , 9.31 , 8.878 , New , 0.43 225 , 225 , 0 ,0 , 8.738 , 8.529 , New , 0.21 225 , 0 , 225 ,1 , 9.959 , 9.138 , New , 0.82 225 , 225 , 225 , , 10.514 , 9.242 , New , 1.27 257 , 0 , 0 ,0 , 13.256 , 9.848 , New , 3.41 257 , 0 , 0 ,1 , 13.971 , 9.992 , New , 3.98 257 , 0 , 0 , , 13.191 , 10.214 , New , 2.98 257 , 257 , 0 ,0 , 12.725 , 9.571 , New , 3.15 257 , 0 , 257 ,1 , 13.264 , 11.481 , New , 1.78 257 , 257 , 257 , , 13.255 , 10.156 , New , 3.1 289 , 0 , 0 ,0 , 14.151 , 10.855 , New , 3.3 289 , 0 , 0 ,1 , 13.971 , 10.83 , New , 3.14 289 , 0 , 0 , , 13.813 , 10.534 , New , 3.28 289 , 289 , 0 ,0 , 13.66 , 10.255 , New , 3.4 289 , 0 , 289 ,1 , 13.737 , 11.848 , New , 1.89 289 , 289 , 289 , , 13.759 , 11.698 , New , 2.06 321 , 0 , 0 ,0 , 15.307 , 10.631 , New , 4.68 321 , 0 , 0 ,1 , 15.842 , 11.634 , New , 4.21 321 , 0 , 0 , , 15.418 , 11.008 , New , 4.41 321 , 321 , 0 ,0 , 14.807 , 9.567 , New , 5.24 321 , 0 , 321 ,1 , 15.38 , 11.601 , New , 3.78 321 , 321 , 321 , , 15.295 , 11.45 , New , 3.85 353 , 0 , 0 ,0 , 16.58 , 10.886 , New , 5.69 353 , 0 , 0 ,1 , 16.871 , 11.326 , New , 5.54 353 , 0 , 0 , , 17.02 , 10.978 , New , 6.04 353 , 353 , 0 ,0 , 16.204 , 9.537 , New , 6.67 353 , 0 , 353 ,1 , 16.909 , 11.527 , New , 5.38 353 , 353 , 353 , , 17.032 , 11.309 , New , 5.72 32 , 7 , 2 ,0 , 4.455 , 3.683 , New , 0.77 32 , 0 , 0 ,1 , 4.459 , 4.092 , New , 0.37 32 , 0 , 0 , , 4.256 , 4.02 , New , 0.24 32 , 0 , 0 ,0 , 4.415 , 4.063 , New , 0.35 4 , 1 , 0 ,1 , 5.26 , 4.367 , New , 0.89 4 , 0 , 1 , , 4.447 , 4.645 , Cur , -0.2 4 , 1 , 1 ,0 , 4.355 , 4.868 , Cur , -0.51 32 , 1 , 0 ,1 , 4.378 , 3.602 , New , 0.78 32 , 0 , 1 , , 4.832 , 4.079 , New , 0.75 32 , 1 , 1 ,0 , 3.994 , 4.141 , Cur , -0.15 64 , 6 , 4 ,1 , 4.946 , 4.332 , New , 0.61 64 , 0 , 0 , , 5.075 , 4.713 , New , 0.36 64 , 0 , 0 ,0 , 5.184 , 4.696 , New , 0.49 64 , 0 , 0 ,1 , 4.915 , 4.714 , New , 0.2 8 , 2 , 0 , , 5.316 , 4.207 , New , 1.11 8 , 0 , 2 ,0 , 4.768 , 4.732 , New , 0.04 8 , 2 , 2 ,1 , 4.768 , 4.731 , New , 0.04 64 , 2 , 0 , , 4.886 , 4.628 , New , 0.26 64 , 0 , 2 ,0 , 4.962 , 4.801 , New , 0.16 64 , 2 , 2 ,1 , 4.827 , 5.607 , Cur , -0.78 128 , 5 , 6 , , 8.831 , 6.046 , New , 2.78 128 , 0 , 0 ,0 , 7.88 , 6.31 , New , 1.57 128 , 0 , 0 ,1 , 8.008 , 6.463 , New , 1.54 128 , 0 , 0 , , 7.947 , 6.369 , New , 1.58 16 , 3 , 0 ,0 , 5.291 , 4.208 , New , 1.08 16 , 0 , 3 ,1 , 4.751 , 4.927 , Cur , -0.18 16 , 3 , 3 , , 4.75 , 5.659 , Cur , -0.91 128 , 3 , 0 ,0 , 8.767 , 5.999 , New , 2.77 128 , 0 , 3 ,1 , 7.603 , 6.601 , New , 1.0 128 , 3 , 3 , , 7.668 , 6.484 , New , 1.18 256 , 4 , 8 ,0 , 8.631 , 8.488 , New , 0.14 256 , 0 , 0 ,1 , 9.737 , 9.073 , New , 0.66 256 , 0 , 0 , , 9.445 , 9.064 , New , 0.38 256 , 0 , 0 ,0 , 9.359 , 8.851 , New , 0.51 32 , 4 , 0 ,1 , 4.161 , 3.655 , New , 0.51 32 , 0 , 4 , , 4.268 , 4.308 , Cur , -0.04 32 , 4 , 4 ,0 , 4.154 , 4.158 , Cur , -0.0 256 , 4 , 0 ,1 , 8.532 , 9.569 , Cur , -1.04 256 , 0 , 4 , , 9.859 , 9.355 , New , 0.5 256 , 4 , 4 ,0 , 9.868 , 9.04 , New , 0.83 512 , 3 , 10 ,1 , 21.41 , 14.598 , New , 6.81 512 , 0 , 0 , , 21.031 , 12.889 , New , 8.14 512 , 0 , 0 ,0 , 20.574 , 13.316 , New , 7.26 512 , 0 , 0 ,1 , 20.648 , 13.173 , New , 7.47 64 , 5 , 0 , , 4.834 , 4.413 , New , 0.42 64 , 0 , 5 ,0 , 4.918 , 4.874 , New , 0.04 64 , 5 , 5 ,1 , 4.908 , 5.487 , Cur , -0.58 512 , 5 , 0 , , 19.94 , 13.705 , New , 6.24 512 , 0 , 5 ,0 , 20.276 , 13.937 , New , 6.34 512 , 5 , 5 ,1 , 20.611 , 14.697 , New , 5.91 1024, 2 , 12 , , 34.398 , 26.836 , New , 7.56 1024, 0 , 0 ,0 , 35.057 , 22.14 , New , 12.92 1024, 0 , 0 ,1 , 34.785 , 21.935 , New , 12.85 1024, 0 , 0 , , 34.418 , 22.28 , New , 12.14 128 , 6 , 0 ,0 , 8.987 , 5.92 , New , 3.07 128 , 0 , 6 ,1 , 7.604 , 6.54 , New , 1.06 128 , 6 , 6 , , 7.663 , 6.593 , New , 1.07 1024, 6 , 0 ,0 , 34.605 , 25.436 , New , 9.17 1024, 0 , 6 ,1 , 34.451 , 25.904 , New , 8.55 1024, 6 , 6 , , 35.102 , 25.303 , New , 9.8 2048, 1 , 14 ,0 , 62.883 , 55.538 , New , 7.35 2048, 0 , 0 ,1 , 63.068 , 46.421 , New , 16.65 2048, 0 , 0 , , 63.645 , 43.724 , New , 19.92 2048, 0 , 0 ,0 , 63.224 , 44.468 , New , 18.76 256 , 7 , 0 ,1 , 8.492 , 8.441 , New , 0.05 256 , 0 , 7 , , 9.789 , 9.195 , New , 0.59 256 , 7 , 7 ,0 , 9.848 , 8.993 , New , 0.86 2048, 7 , 0 ,1 , 62.837 , 52.995 , New , 9.84 2048, 0 , 7 , , 63.135 , 50.775 , New , 12.36 2048, 7 , 7 ,0 , 63.441 , 49.864 , New , 13.58 4096, 0 , 16 ,1 , 120.458 , 103.131 , New , 17.33 4096, 0 , 0 , , 120.607 , 83.008 , New , 37.6 4096, 0 , 0 ,0 , 120.305 , 83.258 , New , 37.05 4096, 0 , 0 ,1 , 120.403 , 83.177 , New , 37.23 512 , 8 , 0 , , 19.682 , 13.785 , New , 5.9 512 , 0 , 8 ,0 , 22.067 , 13.778 , New , 8.29 512 , 8 , 8 ,1 , 20.175 , 14.554 , New , 5.62 4096, 8 , 0 , , 120.556 , 106.73 , New , 13.83 4096, 0 , 8 ,0 , 121.202 , 103.95 , New , 17.25 4096, 8 , 8 ,1 , 120.732 , 86.615 , New , 34.12 1024, 9 , 0 , , 33.656 , 25.701 , New , 7.95 1024, 0 , 9 ,0 , 37.069 , 25.817 , New , 11.25 1024, 9 , 9 ,1 , 34.705 , 25.305 , New , 9.4 16 , 1 , 2 , , 4.879 , 4.523 , New , 0.36 16 , 1 , 2 ,0 , 4.854 , 4.489 , New , 0.37 16 , 1 , 2 ,1 , 4.955 , 4.51 , New , 0.45 32 , 2 , 4 , , 4.261 , 4.066 , New , 0.2 32 , 2 , 4 ,0 , 4.222 , 3.854 , New , 0.37 32 , 2 , 4 ,1 , 4.206 , 4.066 , New , 0.14 64 , 3 , 6 , , 4.89 , 4.604 , New , 0.29 64 , 3 , 6 ,0 , 5.019 , 4.669 , New , 0.35 64 , 3 , 6 ,1 , 4.845 , 4.655 , New , 0.19 128 , 4 , 8 , , 7.995 , 6.336 , New , 1.66 128 , 4 , 8 ,0 , 7.856 , 6.497 , New , 1.36 128 , 4 , 8 ,1 , 8.002 , 6.367 , New , 1.64 256 , 5 , 10 , , 9.337 , 8.879 , New , 0.46 256 , 5 , 10 ,0 , 9.815 , 9.046 , New , 0.77 256 , 5 , 10 ,1 , 9.285 , 8.894 , New , 0.39 512 , 6 , 12 , , 20.535 , 15.594 , New , 4.94 512 , 6 , 12 ,0 , 20.863 , 15.067 , New , 5.8 512 , 6 , 12 ,1 , 20.189 , 15.343 , New , 4.85 1024, 7 , 14 , , 34.464 , 27.036 , New , 7.43 1024, 7 , 14 ,0 , 34.99 , 27.177 , New , 7.81 1024, 7 , 14 ,1 , 34.359 , 27.57 , New , 6.79 2048, 8 , 16 , , 63.344 , 56.32 , New , 7.02 2048, 8 , 16 ,0 , 63.724 , 56.368 , New , 7.36 2048, 8 , 16 ,1 , 63.681 , 57.731 , New , 5.95 4096, 9 , 18 , , 120.436 , 107.662 , New , 12.77 4096, 9 , 18 ,0 , 120.629 , 107.447 , New , 13.18 4096, 9 , 18 ,1 , 120.567 , 108.704 , New , 11.86 33 , 33 , 0 , , 4.404 , 3.651 , New , 0.75 33 , 0 , 33 ,0 , 4.645 , 5.005 , Cur , -0.36 33 , 33 , 33 ,1 , 4.724 , 4.612 , New , 0.11 65 , 65 , 0 , , 8.125 , 5.888 , New , 2.24 65 , 0 , 65 ,0 , 8.694 , 6.431 , New , 2.26 65 , 65 , 65 ,1 , 8.417 , 6.458 , New , 1.96 97 , 97 , 0 , , 8.085 , 5.955 , New , 2.13 97 , 0 , 97 ,0 , 8.559 , 7.204 , New , 1.35 97 , 97 , 97 ,1 , 8.651 , 6.585 , New , 2.07 129 , 129 , 0 , , 8.799 , 8.554 , New , 0.24 129 , 0 , 129 ,0 , 9.816 , 9.001 , New , 0.82 129 , 129 , 129 ,1 , 9.655 , 9.059 , New , 0.6 161 , 161 , 0 , , 8.627 , 8.406 , New , 0.22 161 , 0 , 161 ,0 , 11.047 , 9.008 , New , 2.04 161 , 161 , 161 ,1 , 9.98 , 8.976 , New , 1.0 193 , 193 , 0 , , 8.674 , 8.459 , New , 0.21 193 , 0 , 193 ,0 , 11.102 , 10.099 , New , 1.0 193 , 193 , 193 ,1 , 9.927 , 8.975 , New , 0.95 225 , 225 , 0 , , 8.629 , 8.531 , New , 0.1 225 , 0 , 225 ,0 , 9.993 , 9.171 , New , 0.82 225 , 225 , 225 ,1 , 9.674 , 9.038 , New , 0.64 257 , 257 , 0 , , 12.761 , 9.657 , New , 3.1 257 , 0 , 257 ,0 , 13.285 , 10.106 , New , 3.18 257 , 257 , 257 ,1 , 13.407 , 10.023 , New , 3.38 289 , 289 , 0 , , 13.689 , 9.943 , New , 3.75 289 , 0 , 289 ,0 , 13.697 , 10.604 , New , 3.09 289 , 289 , 289 ,1 , 13.702 , 10.616 , New , 3.09 321 , 321 , 0 , , 14.645 , 9.427 , New , 5.22 321 , 0 , 321 ,0 , 15.331 , 11.424 , New , 3.91 321 , 321 , 321 ,1 , 15.211 , 11.107 , New , 4.1 353 , 353 , 0 , , 16.26 , 9.541 , New , 6.72 353 , 0 , 353 ,0 , 16.903 , 11.364 , New , 5.54 353 , 353 , 353 ,1 , 16.786 , 11.15 , New , 5.64 32 , 7 , 2 , , 4.674 , 3.651 , New , 1.02 4 , 1 , 0 ,0 , 5.24 , 4.135 , New , 1.11 4 , 0 , 1 ,1 , 4.318 , 4.65 , Cur , -0.33 4 , 1 , 1 , , 4.245 , 4.793 , Cur , -0.55 32 , 1 , 0 ,0 , 4.406 , 3.643 , New , 0.76 32 , 0 , 1 ,1 , 4.29 , 4.035 , New , 0.25 32 , 1 , 1 , , 4.3 , 4.102 , New , 0.2 64 , 6 , 4 ,0 , 4.843 , 4.407 , New , 0.44 8 , 2 , 0 ,1 , 5.299 , 4.152 , New , 1.15 8 , 0 , 2 , , 4.769 , 4.67 , New , 0.1 8 , 2 , 2 ,0 , 4.819 , 4.669 , New , 0.15 64 , 2 , 0 ,1 , 4.941 , 4.381 , New , 0.56 64 , 0 , 2 , , 4.968 , 4.855 , New , 0.11 64 , 2 , 2 ,0 , 5.669 , 4.845 , New , 0.82 128 , 5 , 6 ,1 , 9.037 , 5.978 , New , 3.06 16 , 3 , 0 , , 5.298 , 4.144 , New , 1.15 16 , 0 , 3 ,0 , 4.849 , 4.691 , New , 0.16 16 , 3 , 3 ,1 , 4.749 , 4.69 , New , 0.06 128 , 3 , 0 , , 8.757 , 5.965 , New , 2.79 128 , 0 , 3 ,0 , 7.523 , 6.483 , New , 1.04 128 , 3 , 3 ,1 , 7.603 , 6.442 , New , 1.16 256 , 4 , 8 , , 8.656 , 8.411 , New , 0.25 32 , 4 , 0 ,0 , 4.292 , 3.62 , New , 0.67 32 , 0 , 4 ,1 , 4.117 , 4.153 , Cur , -0.04 32 , 4 , 4 , , 4.308 , 4.53 , Cur , -0.22 256 , 4 , 0 ,0 , 8.567 , 8.463 , New , 0.1 256 , 0 , 4 ,1 , 9.764 , 9.003 , New , 0.76 256 , 4 , 4 , , 9.732 , 9.091 , New , 0.64 512 , 3 , 10 ,0 , 19.848 , 14.553 , New , 5.29 64 , 5 , 0 ,1 , 5.066 , 4.431 , New , 0.63 64 , 0 , 5 , , 5.022 , 4.81 , New , 0.21 64 , 5 , 5 ,0 , 5.086 , 4.883 , New , 0.2 512 , 5 , 0 ,1 , 19.863 , 14.061 , New , 5.8 512 , 0 , 5 , , 20.768 , 13.676 , New , 7.09 512 , 5 , 5 ,0 , 24.446 , 14.556 , New , 9.89 1024, 2 , 12 ,1 , 34.296 , 26.979 , New , 7.32 128 , 6 , 0 , , 8.864 , 6.071 , New , 2.79 128 , 0 , 6 ,0 , 7.549 , 6.508 , New , 1.04 128 , 6 , 6 ,1 , 7.644 , 6.426 , New , 1.22 1024, 6 , 0 , , 34.168 , 25.297 , New , 8.87 1024, 0 , 6 ,0 , 34.821 , 25.647 , New , 9.17 1024, 6 , 6 ,1 , 34.731 , 25.159 , New , 9.57 2048, 1 , 14 , , 63.117 , 56.177 , New , 6.94 256 , 7 , 0 ,0 , 8.628 , 8.421 , New , 0.21 256 , 0 , 7 ,1 , 9.857 , 9.043 , New , 0.81 256 , 7 , 7 , , 9.718 , 9.059 , New , 0.66 2048, 7 , 0 ,0 , 62.768 , 53.523 , New , 9.24 2048, 0 , 7 ,1 , 63.575 , 52.985 , New , 10.59 2048, 7 , 7 , , 63.773 , 53.991 , New , 9.78 4096, 0 , 16 ,0 , 120.134 , 101.443 , New , 18.69 512 , 8 , 0 ,1 , 20.369 , 13.724 , New , 6.64 512 , 0 , 8 , , 21.394 , 13.563 , New , 7.83 512 , 8 , 8 ,0 , 20.405 , 14.43 , New , 5.98 4096, 8 , 0 ,1 , 120.28 , 104.984 , New , 15.3 4096, 0 , 8 , , 120.958 , 103.005 , New , 17.95 4096, 8 , 8 ,0 , 120.714 , 85.338 , New , 35.38 1024, 9 , 0 ,1 , 35.123 , 26.281 , New , 8.84 1024, 0 , 9 , , 35.679 , 26.332 , New , 9.35 1024, 9 , 9 ,0 , 36.311 , 25.47 , New , 10.84 33 , 33 , 0 ,1 , 4.209 , 3.765 , New , 0.44 33 , 0 , 33 , , 4.83 , 4.729 , New , 0.1 33 , 33 , 33 ,0 , 4.449 , 4.632 , Cur , -0.18 65 , 65 , 0 ,1 , 8.263 , 6.047 , New , 2.22 65 , 0 , 65 , , 8.737 , 6.479 , New , 2.26 65 , 65 , 65 ,0 , 8.639 , 6.434 , New , 2.2 97 , 97 , 0 ,1 , 7.937 , 5.991 , New , 1.95 97 , 0 , 97 , , 8.526 , 6.496 , New , 2.03 97 , 97 , 97 ,0 , 8.494 , 6.579 , New , 1.92 129 , 129 , 0 ,1 , 8.692 , 8.555 , New , 0.14 129 , 0 , 129 , , 9.906 , 9.104 , New , 0.8 129 , 129 , 129 ,0 , 10.015 , 9.358 , New , 0.66 161 , 161 , 0 ,1 , 8.838 , 8.559 , New , 0.28 161 , 0 , 161 , , 10.249 , 9.168 , New , 1.08 161 , 161 , 161 ,0 , 10.069 , 9.111 , New , 0.96 193 , 193 , 0 ,1 , 8.644 , 9.64 , Cur , -1.0 193 , 0 , 193 , , 9.819 , 9.114 , New , 0.71 193 , 193 , 193 ,0 , 9.79 , 9.259 , New , 0.53 225 , 225 , 0 ,1 , 8.727 , 8.546 , New , 0.18 225 , 0 , 225 , , 10.166 , 9.018 , New , 1.15 225 , 225 , 225 ,0 , 9.862 , 9.228 , New , 0.63 257 , 257 , 0 ,1 , 12.624 , 9.579 , New , 3.04 257 , 0 , 257 , , 13.071 , 10.885 , New , 2.19 257 , 257 , 257 ,0 , 13.332 , 10.269 , New , 3.06 289 , 289 , 0 ,1 , 13.595 , 10.054 , New , 3.54 289 , 0 , 289 , , 13.667 , 10.679 , New , 2.99 289 , 289 , 289 ,0 , 15.239 , 11.285 , New , 3.95 321 , 321 , 0 ,1 , 14.513 , 9.683 , New , 4.83 321 , 0 , 321 , , 16.052 , 11.554 , New , 4.5 321 , 321 , 321 ,0 , 15.15 , 11.516 , New , 3.63 353 , 353 , 0 ,1 , 16.331 , 9.589 , New , 6.74 353 , 0 , 353 , , 17.284 , 11.586 , New , 5.7 353 , 353 , 353 ,0 , 16.651 , 11.408 , New , 5.24 32 , 7 , 2 ,1 , 4.358 , 3.687 , New , 0.67 4 , 1 , 0 , , 5.235 , 4.176 , New , 1.06 4 , 0 , 1 ,0 , 4.271 , 4.697 , Cur , -0.43 4 , 1 , 1 ,1 , 4.207 , 4.711 , Cur , -0.5 32 , 1 , 0 , , 4.444 , 3.629 , New , 0.81 32 , 0 , 1 ,0 , 4.388 , 4.089 , New , 0.3 32 , 1 , 1 ,1 , 4.957 , 4.225 , New , 0.73 64 , 6 , 4 , , 4.801 , 4.378 , New , 0.42 8 , 2 , 0 ,0 , 5.212 , 4.238 , New , 0.97 8 , 0 , 2 ,1 , 4.804 , 4.733 , New , 0.07 8 , 2 , 2 , , 4.711 , 4.732 , Cur , -0.02 64 , 2 , 0 ,0 , 4.812 , 4.247 , New , 0.57 64 , 0 , 2 ,1 , 4.932 , 4.948 , Cur , -0.02 64 , 2 , 2 , , 4.86 , 4.869 , Cur , -0.01 128 , 5 , 6 ,0 , 8.718 , 5.911 , New , 2.81 16 , 3 , 0 ,1 , 5.26 , 4.207 , New , 1.05 16 , 0 , 3 , , 4.733 , 4.908 , Cur , -0.18 16 , 3 , 3 ,0 , 4.751 , 4.733 , New , 0.02 128 , 3 , 0 ,1 , 8.467 , 5.975 , New , 2.49 128 , 0 , 3 , , 7.521 , 6.431 , New , 1.09 128 , 3 , 3 ,0 , 7.582 , 7.461 , New , 0.12 256 , 4 , 8 ,1 , 8.456 , 8.425 , New , 0.03 32 , 4 , 0 , , 4.172 , 3.615 , New , 0.56 32 , 0 , 4 ,0 , 4.247 , 4.105 , New , 0.14 32 , 4 , 4 ,1 , 4.157 , 4.029 , New , 0.13 256 , 4 , 0 , , 8.542 , 8.454 , New , 0.09 256 , 0 , 4 ,0 , 9.672 , 8.944 , New , 0.73 256 , 4 , 4 ,1 , 10.323 , 9.056 , New , 1.27 512 , 3 , 10 , , 21.111 , 14.933 , New , 6.18 64 , 5 , 0 ,0 , 4.892 , 4.401 , New , 0.49 64 , 0 , 5 ,1 , 4.85 , 4.838 , New , 0.01 64 , 5 , 5 , , 5.162 , 5.846 , Cur , -0.68 512 , 5 , 0 ,0 , 19.674 , 14.743 , New , 4.93 512 , 0 , 5 ,1 , 22.848 , 13.68 , New , 9.17 512 , 5 , 5 , , 20.301 , 14.838 , New , 5.46 1024, 2 , 12 ,0 , 34.205 , 27.007 , New , 7.2 128 , 6 , 0 ,1 , 8.59 , 5.922 , New , 2.67 128 , 0 , 6 , , 7.507 , 6.459 , New , 1.05 128 , 6 , 6 ,0 , 7.535 , 6.922 , New , 0.61 1024, 6 , 0 ,1 , 34.681 , 26.27 , New , 8.41 1024, 0 , 6 , , 34.181 , 26.477 , New , 7.7 1024, 6 , 6 ,0 , 34.65 , 25.299 , New , 9.35 2048, 1 , 14 ,1 , 62.625 , 56.355 , New , 6.27 256 , 7 , 0 , , 8.637 , 8.44 , New , 0.2 256 , 0 , 7 ,0 , 9.659 , 9.03 , New , 0.63 256 , 7 , 7 ,1 , 9.716 , 9.02 , New , 0.7 2048, 7 , 0 , , 62.464 , 51.871 , New , 10.59 2048, 0 , 7 ,0 , 62.829 , 52.658 , New , 10.17 2048, 7 , 7 ,1 , 62.911 , 52.87 , New , 10.04 4096, 0 , 16 , , 119.068 , 102.305 , New , 16.76 512 , 8 , 0 ,0 , 19.363 , 13.73 , New , 5.63 512 , 0 , 8 ,1 , 20.424 , 13.659 , New , 6.76 512 , 8 , 8 , , 23.17 , 14.604 , New , 8.57 4096, 8 , 0 ,0 , 119.531 , 106.727 , New , 12.8 4096, 0 , 8 ,1 , 119.783 , 102.922 , New , 16.86 4096, 8 , 8 , , 119.754 , 87.175 , New , 32.58 1024, 9 , 0 ,0 , 33.982 , 25.289 , New , 8.69 1024, 0 , 9 ,1 , 34.498 , 26.907 , New , 7.59 1024, 9 , 9 , , 35.044 , 25.115 , New , 9.93 New Wins: 314 Cur Wins: 16 Equals : 0 Results For Icelake memcmp-avx2 size, al1 , al2 ,res, Cur T , New T , Win , Dif 1 , 1 , 1 ,0 , 3.72 , 3.58 , New , 0.14 1 , 1 , 1 ,1 , 3.673 , 3.539 , New , 0.13 1 , 1 , 1 , , 3.653 , 3.545 , New , 0.11 2 , 2 , 2 ,0 , 4.199 , 4.048 , New , 0.15 2 , 2 , 2 ,1 , 4.209 , 4.228 , Cur , -0.02 2 , 2 , 2 , , 4.112 , 4.306 , Cur , -0.19 3 , 3 , 3 ,0 , 3.923 , 3.897 , New , 0.03 3 , 3 , 3 ,1 , 3.898 , 4.125 , Cur , -0.23 3 , 3 , 3 , , 4.061 , 3.961 , New , 0.1 4 , 4 , 4 ,0 , 4.722 , 3.835 , New , 0.89 4 , 4 , 4 ,1 , 4.623 , 3.979 , New , 0.64 4 , 4 , 4 , , 4.656 , 3.839 , New , 0.82 5 , 5 , 5 ,0 , 4.806 , 3.855 , New , 0.95 5 , 5 , 5 ,1 , 4.666 , 4.072 , New , 0.59 5 , 5 , 5 , , 4.646 , 3.775 , New , 0.87 6 , 6 , 6 ,0 , 4.823 , 3.881 , New , 0.94 6 , 6 , 6 ,1 , 4.824 , 3.87 , New , 0.95 6 , 6 , 6 , , 4.705 , 3.881 , New , 0.82 7 , 7 , 7 ,0 , 4.708 , 3.863 , New , 0.85 7 , 7 , 7 ,1 , 4.681 , 3.865 , New , 0.82 7 , 7 , 7 , , 4.755 , 3.891 , New , 0.86 8 , 8 , 8 ,0 , 4.592 , 3.828 , New , 0.76 8 , 8 , 8 ,1 , 4.591 , 3.834 , New , 0.76 8 , 8 , 8 , , 4.554 , 3.959 , New , 0.6 9 , 9 , 9 ,0 , 5.305 , 4.002 , New , 1.3 9 , 9 , 9 ,1 , 5.044 , 3.824 , New , 1.22 9 , 9 , 9 , , 5.346 , 3.868 , New , 1.48 10 , 10 , 10 ,0 , 5.028 , 3.97 , New , 1.06 10 , 10 , 10 ,1 , 5.177 , 4.011 , New , 1.17 10 , 10 , 10 , , 5.11 , 3.925 , New , 1.19 11 , 11 , 11 ,0 , 5.033 , 4.073 , New , 0.96 11 , 11 , 11 ,1 , 5.028 , 3.959 , New , 1.07 11 , 11 , 11 , , 5.233 , 4.018 , New , 1.21 12 , 12 , 12 ,0 , 5.039 , 3.992 , New , 1.05 12 , 12 , 12 ,1 , 5.138 , 3.961 , New , 1.18 12 , 12 , 12 , , 5.244 , 3.984 , New , 1.26 13 , 13 , 13 ,0 , 5.067 , 4.057 , New , 1.01 13 , 13 , 13 ,1 , 5.18 , 4.028 , New , 1.15 13 , 13 , 13 , , 5.023 , 4.053 , New , 0.97 14 , 14 , 14 ,0 , 5.086 , 4.036 , New , 1.05 14 , 14 , 14 ,1 , 5.147 , 3.981 , New , 1.17 14 , 14 , 14 , , 5.193 , 3.977 , New , 1.22 15 , 15 , 15 ,0 , 5.083 , 3.924 , New , 1.16 15 , 15 , 15 ,1 , 5.164 , 3.895 , New , 1.27 15 , 15 , 15 , , 5.08 , 3.974 , New , 1.11 16 , 16 , 16 ,0 , 4.656 , 3.966 , New , 0.69 16 , 16 , 16 ,1 , 4.583 , 3.864 , New , 0.72 16 , 16 , 16 , , 4.575 , 3.993 , New , 0.58 17 , 17 , 17 ,0 , 4.996 , 3.886 , New , 1.11 17 , 17 , 17 ,1 , 5.042 , 3.917 , New , 1.12 17 , 17 , 17 , , 5.032 , 3.956 , New , 1.08 18 , 18 , 18 ,0 , 5.052 , 3.881 , New , 1.17 18 , 18 , 18 ,1 , 4.981 , 3.925 , New , 1.06 18 , 18 , 18 , , 4.961 , 3.92 , New , 1.04 19 , 19 , 19 ,0 , 4.967 , 4.023 , New , 0.94 19 , 19 , 19 ,1 , 5.007 , 3.946 , New , 1.06 19 , 19 , 19 , , 4.978 , 4.105 , New , 0.87 20 , 20 , 20 ,0 , 4.962 , 3.936 , New , 1.03 20 , 20 , 20 ,1 , 5.033 , 3.956 , New , 1.08 20 , 20 , 20 , , 4.998 , 4.101 , New , 0.9 21 , 21 , 21 ,0 , 5.012 , 3.983 , New , 1.03 21 , 21 , 21 ,1 , 4.99 , 4.099 , New , 0.89 21 , 21 , 21 , , 5.029 , 4.007 , New , 1.02 22 , 22 , 22 ,0 , 5.002 , 4.146 , New , 0.86 22 , 22 , 22 ,1 , 4.94 , 4.091 , New , 0.85 22 , 22 , 22 , , 5.021 , 4.292 , New , 0.73 23 , 23 , 23 ,0 , 5.062 , 4.224 , New , 0.84 23 , 23 , 23 ,1 , 5.058 , 4.182 , New , 0.88 23 , 23 , 23 , , 5.081 , 4.214 , New , 0.87 24 , 24 , 24 ,0 , 5.144 , 4.087 , New , 1.06 24 , 24 , 24 ,1 , 5.085 , 4.115 , New , 0.97 24 , 24 , 24 , , 5.091 , 4.105 , New , 0.99 25 , 25 , 25 ,0 , 5.133 , 4.097 , New , 1.04 25 , 25 , 25 ,1 , 5.115 , 4.16 , New , 0.96 25 , 25 , 25 , , 5.02 , 4.159 , New , 0.86 26 , 26 , 26 ,0 , 5.049 , 4.277 , New , 0.77 26 , 26 , 26 ,1 , 5.032 , 4.097 , New , 0.93 26 , 26 , 26 , , 5.057 , 4.088 , New , 0.97 27 , 27 , 27 ,0 , 5.14 , 4.043 , New , 1.1 27 , 27 , 27 ,1 , 5.141 , 3.996 , New , 1.15 27 , 27 , 27 , , 5.037 , 4.056 , New , 0.98 28 , 28 , 28 ,0 , 5.046 , 4.016 , New , 1.03 28 , 28 , 28 ,1 , 5.03 , 4.067 , New , 0.96 28 , 28 , 28 , , 5.002 , 4.086 , New , 0.92 29 , 29 , 29 ,0 , 4.991 , 4.0 , New , 0.99 29 , 29 , 29 ,1 , 4.945 , 4.05 , New , 0.9 29 , 29 , 29 , , 5.04 , 4.062 , New , 0.98 30 , 30 , 30 ,0 , 4.901 , 4.067 , New , 0.83 30 , 30 , 30 ,1 , 4.976 , 3.931 , New , 1.04 30 , 30 , 30 , , 4.978 , 4.019 , New , 0.96 31 , 31 , 31 ,0 , 4.968 , 3.904 , New , 1.06 31 , 31 , 31 ,1 , 4.954 , 3.924 , New , 1.03 31 , 31 , 31 , , 4.921 , 4.09 , New , 0.83 1 , 0 , 0 ,0 , 3.327 , 3.338 , Cur , -0.01 1 , 0 , 0 ,1 , 3.334 , 3.339 , Cur , -0.0 1 , 0 , 0 , , 3.32 , 3.312 , New , 0.01 1 , 4095, 0 ,0 , 3.323 , 3.312 , New , 0.01 1 , 4095, 0 ,1 , 3.316 , 3.316 , Eq , 0.0 1 , 4095, 0 , , 3.328 , 3.363 , Cur , -0.04 2 , 0 , 0 ,0 , 3.872 , 3.902 , Cur , -0.03 2 , 0 , 0 ,1 , 3.85 , 3.9 , Cur , -0.05 2 , 0 , 0 , , 3.876 , 3.796 , New , 0.08 2 , 4094, 0 ,0 , 3.912 , 4.01 , Cur , -0.1 2 , 4094, 0 ,1 , 3.879 , 4.078 , Cur , -0.2 2 , 4094, 0 , , 3.865 , 3.988 , Cur , -0.12 3 , 0 , 0 ,0 , 3.992 , 3.868 , New , 0.12 3 , 0 , 0 ,1 , 4.012 , 3.929 , New , 0.08 3 , 0 , 0 , , 3.886 , 3.84 , New , 0.05 3 , 4093, 0 ,0 , 3.898 , 4.018 , Cur , -0.12 3 , 4093, 0 ,1 , 3.89 , 4.022 , Cur , -0.13 3 , 4093, 0 , , 3.893 , 4.039 , Cur , -0.15 4 , 0 , 0 ,0 , 4.601 , 3.708 , New , 0.89 4 , 0 , 0 ,1 , 4.612 , 3.806 , New , 0.81 4 , 0 , 0 , , 4.606 , 3.795 , New , 0.81 4 , 4092, 0 ,0 , 4.667 , 4.682 , Cur , -0.02 4 , 4092, 0 ,1 , 4.646 , 4.619 , New , 0.03 4 , 4092, 0 , , 4.671 , 4.663 , New , 0.01 5 , 0 , 0 ,0 , 4.679 , 3.825 , New , 0.85 5 , 0 , 0 ,1 , 4.671 , 3.896 , New , 0.78 5 , 0 , 0 , , 4.678 , 3.87 , New , 0.81 5 , 4091, 0 ,0 , 4.687 , 4.656 , New , 0.03 5 , 4091, 0 ,1 , 4.656 , 4.693 , Cur , -0.04 5 , 4091, 0 , , 4.681 , 4.68 , New , 0.0 6 , 0 , 0 ,0 , 4.682 , 3.852 , New , 0.83 6 , 0 , 0 ,1 , 4.674 , 3.869 , New , 0.81 6 , 0 , 0 , , 4.722 , 3.912 , New , 0.81 6 , 4090, 0 ,0 , 4.682 , 4.796 , Cur , -0.11 6 , 4090, 0 ,1 , 4.665 , 4.782 , Cur , -0.12 6 , 4090, 0 , , 4.724 , 4.702 , New , 0.02 7 , 0 , 0 ,0 , 4.716 , 3.951 , New , 0.77 7 , 0 , 0 ,1 , 4.676 , 3.846 , New , 0.83 7 , 0 , 0 , , 4.702 , 3.962 , New , 0.74 7 , 4089, 0 ,0 , 4.7 , 4.834 , Cur , -0.13 7 , 4089, 0 ,1 , 4.655 , 4.808 , Cur , -0.15 7 , 4089, 0 , , 4.712 , 4.807 , Cur , -0.1 8 , 0 , 0 ,0 , 4.64 , 3.815 , New , 0.82 8 , 0 , 0 ,1 , 4.58 , 3.786 , New , 0.79 8 , 0 , 0 , , 4.586 , 3.935 , New , 0.65 8 , 4088, 0 ,0 , 4.645 , 4.922 , Cur , -0.28 8 , 4088, 0 ,1 , 4.608 , 4.927 , Cur , -0.32 8 , 4088, 0 , , 4.658 , 4.962 , Cur , -0.3 9 , 0 , 0 ,0 , 5.073 , 4.028 , New , 1.05 9 , 0 , 0 ,1 , 5.274 , 3.995 , New , 1.28 9 , 0 , 0 , , 5.11 , 3.899 , New , 1.21 9 , 4087, 0 ,0 , 5.143 , 5.174 , Cur , -0.03 9 , 4087, 0 ,1 , 5.128 , 5.167 , Cur , -0.04 9 , 4087, 0 , , 5.066 , 5.095 , Cur , -0.03 10 , 0 , 0 ,0 , 5.163 , 4.072 , New , 1.09 10 , 0 , 0 ,1 , 5.28 , 3.976 , New , 1.3 10 , 0 , 0 , , 5.112 , 4.019 , New , 1.09 10 , 4086, 0 ,0 , 5.203 , 5.148 , New , 0.06 10 , 4086, 0 ,1 , 5.22 , 5.036 , New , 0.18 10 , 4086, 0 , , 5.187 , 5.265 , Cur , -0.08 11 , 0 , 0 ,0 , 5.141 , 3.936 , New , 1.21 11 , 0 , 0 ,1 , 5.161 , 3.881 , New , 1.28 11 , 0 , 0 , , 5.098 , 3.947 , New , 1.15 11 , 4085, 0 ,0 , 5.017 , 5.046 , Cur , -0.03 11 , 4085, 0 ,1 , 5.249 , 5.153 , New , 0.1 11 , 4085, 0 , , 5.114 , 5.174 , Cur , -0.06 12 , 0 , 0 ,0 , 5.161 , 3.989 , New , 1.17 12 , 0 , 0 ,1 , 5.098 , 3.913 , New , 1.19 12 , 0 , 0 , , 5.12 , 4.053 , New , 1.07 12 , 4084, 0 ,0 , 5.029 , 5.114 , Cur , -0.08 12 , 4084, 0 ,1 , 5.081 , 5.039 , New , 0.04 12 , 4084, 0 , , 5.002 , 5.104 , Cur , -0.1 13 , 0 , 0 ,0 , 5.181 , 3.95 , New , 1.23 13 , 0 , 0 ,1 , 5.088 , 3.985 , New , 1.1 13 , 0 , 0 , , 5.171 , 3.917 , New , 1.25 13 , 4083, 0 ,0 , 5.047 , 5.136 , Cur , -0.09 13 , 4083, 0 ,1 , 5.245 , 5.05 , New , 0.2 13 , 4083, 0 , , 5.207 , 5.111 , New , 0.1 14 , 0 , 0 ,0 , 5.123 , 4.034 , New , 1.09 14 , 0 , 0 ,1 , 5.114 , 3.892 , New , 1.22 14 , 0 , 0 , , 5.118 , 4.056 , New , 1.06 14 , 4082, 0 ,0 , 5.162 , 5.108 , New , 0.05 14 , 4082, 0 ,1 , 5.263 , 5.145 , New , 0.12 14 , 4082, 0 , , 4.991 , 5.364 , Cur , -0.37 15 , 0 , 0 ,0 , 5.049 , 3.817 , New , 1.23 15 , 0 , 0 ,1 , 5.264 , 4.005 , New , 1.26 15 , 0 , 0 , , 5.099 , 3.936 , New , 1.16 15 , 4081, 0 ,0 , 5.129 , 5.08 , New , 0.05 15 , 4081, 0 ,1 , 5.199 , 5.187 , New , 0.01 15 , 4081, 0 , , 5.183 , 5.164 , New , 0.02 16 , 0 , 0 ,0 , 4.592 , 3.86 , New , 0.73 16 , 0 , 0 ,1 , 4.545 , 3.876 , New , 0.67 16 , 0 , 0 , , 4.557 , 3.86 , New , 0.7 16 , 4080, 0 ,0 , 4.615 , 4.564 , New , 0.05 16 , 4080, 0 ,1 , 4.625 , 4.533 , New , 0.09 16 , 4080, 0 , , 4.695 , 4.651 , New , 0.04 17 , 0 , 0 ,0 , 4.974 , 3.938 , New , 1.04 17 , 0 , 0 ,1 , 5.011 , 4.038 , New , 0.97 17 , 0 , 0 , , 4.942 , 3.933 , New , 1.01 17 , 4079, 0 ,0 , 4.988 , 4.963 , New , 0.03 17 , 4079, 0 ,1 , 5.106 , 4.941 , New , 0.17 17 , 4079, 0 , , 4.966 , 4.991 , Cur , -0.02 18 , 0 , 0 ,0 , 5.132 , 4.019 , New , 1.11 18 , 0 , 0 ,1 , 5.015 , 3.998 , New , 1.02 18 , 0 , 0 , , 4.992 , 4.033 , New , 0.96 18 , 4078, 0 ,0 , 4.933 , 5.014 , Cur , -0.08 18 , 4078, 0 ,1 , 4.998 , 4.913 , New , 0.08 18 , 4078, 0 , , 5.009 , 4.975 , New , 0.03 19 , 0 , 0 ,0 , 5.018 , 4.012 , New , 1.01 19 , 0 , 0 ,1 , 4.98 , 3.96 , New , 1.02 19 , 0 , 0 , , 4.974 , 4.143 , New , 0.83 19 , 4077, 0 ,0 , 4.981 , 4.913 , New , 0.07 19 , 4077, 0 ,1 , 5.046 , 4.918 , New , 0.13 19 , 4077, 0 , , 4.983 , 4.933 , New , 0.05 20 , 0 , 0 ,0 , 4.976 , 3.926 , New , 1.05 20 , 0 , 0 ,1 , 5.002 , 4.066 , New , 0.94 20 , 0 , 0 , , 5.01 , 4.032 , New , 0.98 20 , 4076, 0 ,0 , 4.996 , 4.959 , New , 0.04 20 , 4076, 0 ,1 , 5.043 , 4.993 , New , 0.05 20 , 4076, 0 , , 4.93 , 4.994 , Cur , -0.06 21 , 0 , 0 ,0 , 5.0 , 4.089 , New , 0.91 21 , 0 , 0 ,1 , 5.054 , 4.161 , New , 0.89 21 , 0 , 0 , , 4.976 , 3.951 , New , 1.02 21 , 4075, 0 ,0 , 4.934 , 4.94 , Cur , -0.01 21 , 4075, 0 ,1 , 5.057 , 4.984 , New , 0.07 21 , 4075, 0 , , 4.979 , 4.955 , New , 0.02 22 , 0 , 0 ,0 , 5.231 , 4.011 , New , 1.22 22 , 0 , 0 ,1 , 5.059 , 4.061 , New , 1.0 22 , 0 , 0 , , 5.177 , 4.182 , New , 0.99 22 , 4074, 0 ,0 , 4.96 , 4.936 , New , 0.02 22 , 4074, 0 ,1 , 4.997 , 4.942 , New , 0.05 22 , 4074, 0 , , 4.968 , 4.992 , Cur , -0.02 23 , 0 , 0 ,0 , 5.024 , 4.297 , New , 0.73 23 , 0 , 0 ,1 , 5.083 , 4.271 , New , 0.81 23 , 0 , 0 , , 5.079 , 4.318 , New , 0.76 23 , 4073, 0 ,0 , 4.982 , 5.075 , Cur , -0.09 23 , 4073, 0 ,1 , 5.08 , 4.964 , New , 0.12 23 , 4073, 0 , , 5.03 , 4.993 , New , 0.04 24 , 0 , 0 ,0 , 5.061 , 4.116 , New , 0.95 24 , 0 , 0 ,1 , 5.044 , 3.994 , New , 1.05 24 , 0 , 0 , , 4.992 , 4.159 , New , 0.83 24 , 4072, 0 ,0 , 5.019 , 4.985 , New , 0.03 24 , 4072, 0 ,1 , 5.044 , 4.993 , New , 0.05 24 , 4072, 0 , , 5.076 , 4.982 , New , 0.09 25 , 0 , 0 ,0 , 5.16 , 4.287 , New , 0.87 25 , 0 , 0 ,1 , 5.015 , 4.119 , New , 0.9 25 , 0 , 0 , , 5.07 , 4.013 , New , 1.06 25 , 4071, 0 ,0 , 4.937 , 4.897 , New , 0.04 25 , 4071, 0 ,1 , 5.034 , 4.951 , New , 0.08 25 , 4071, 0 , , 5.0 , 4.938 , New , 0.06 26 , 0 , 0 ,0 , 5.024 , 3.957 , New , 1.07 26 , 0 , 0 ,1 , 5.047 , 4.099 , New , 0.95 26 , 0 , 0 , , 5.05 , 4.087 , New , 0.96 26 , 4070, 0 ,0 , 4.991 , 4.931 , New , 0.06 26 , 4070, 0 ,1 , 5.056 , 4.961 , New , 0.09 26 , 4070, 0 , , 4.986 , 4.994 , Cur , -0.01 27 , 0 , 0 ,0 , 5.02 , 4.047 , New , 0.97 27 , 0 , 0 ,1 , 5.052 , 3.977 , New , 1.07 27 , 0 , 0 , , 4.999 , 4.017 , New , 0.98 27 , 4069, 0 ,0 , 4.924 , 4.951 , Cur , -0.03 27 , 4069, 0 ,1 , 4.904 , 4.929 , Cur , -0.03 27 , 4069, 0 , , 4.958 , 4.94 , New , 0.02 28 , 0 , 0 ,0 , 5.039 , 3.973 , New , 1.07 28 , 0 , 0 ,1 , 5.049 , 4.107 , New , 0.94 28 , 0 , 0 , , 4.978 , 4.003 , New , 0.97 28 , 4068, 0 ,0 , 4.979 , 4.853 , New , 0.13 28 , 4068, 0 ,1 , 4.995 , 4.993 , New , 0.0 28 , 4068, 0 , , 4.926 , 4.877 , New , 0.05 29 , 0 , 0 ,0 , 5.017 , 3.952 , New , 1.07 29 , 0 , 0 ,1 , 5.059 , 3.994 , New , 1.06 29 , 0 , 0 , , 4.969 , 4.191 , New , 0.78 29 , 4067, 0 ,0 , 4.933 , 4.805 , New , 0.13 29 , 4067, 0 ,1 , 4.873 , 4.868 , New , 0.0 29 , 4067, 0 , , 4.875 , 4.903 , Cur , -0.03 30 , 0 , 0 ,0 , 4.934 , 4.054 , New , 0.88 30 , 0 , 0 ,1 , 4.988 , 4.082 , New , 0.91 30 , 0 , 0 , , 4.999 , 4.046 , New , 0.95 30 , 4066, 0 ,0 , 4.818 , 4.912 , Cur , -0.09 30 , 4066, 0 ,1 , 4.93 , 4.844 , New , 0.09 30 , 4066, 0 , , 4.917 , 4.915 , New , 0.0 31 , 0 , 0 ,0 , 4.959 , 4.02 , New , 0.94 31 , 0 , 0 ,1 , 4.94 , 3.892 , New , 1.05 31 , 0 , 0 , , 5.008 , 4.087 , New , 0.92 31 , 4065, 0 ,0 , 4.876 , 4.883 , Cur , -0.01 31 , 4065, 0 ,1 , 5.056 , 4.877 , New , 0.18 31 , 4065, 0 , , 4.926 , 4.979 , Cur , -0.05 33 , 0 , 0 ,0 , 4.022 , 3.524 , New , 0.5 33 , 0 , 0 ,1 , 3.999 , 3.516 , New , 0.48 33 , 0 , 0 , , 3.991 , 3.5 , New , 0.49 33 , 33 , 0 ,0 , 3.54 , 3.333 , New , 0.21 33 , 0 , 33 ,1 , 4.264 , 3.699 , New , 0.57 33 , 33 , 33 , , 4.22 , 3.663 , New , 0.56 65 , 0 , 0 ,0 , 6.156 , 4.733 , New , 1.42 65 , 0 , 0 ,1 , 6.289 , 5.036 , New , 1.25 65 , 0 , 0 , , 6.455 , 5.035 , New , 1.42 65 , 65 , 0 ,0 , 5.885 , 4.296 , New , 1.59 65 , 0 , 65 ,1 , 6.608 , 5.002 , New , 1.61 65 , 65 , 65 , , 6.33 , 5.196 , New , 1.13 97 , 0 , 0 ,0 , 6.388 , 4.925 , New , 1.46 97 , 0 , 0 ,1 , 6.39 , 4.831 , New , 1.56 97 , 0 , 0 , , 6.376 , 4.987 , New , 1.39 97 , 97 , 0 ,0 , 6.015 , 4.611 , New , 1.4 97 , 0 , 97 ,1 , 6.624 , 5.297 , New , 1.33 97 , 97 , 97 , , 6.209 , 5.177 , New , 1.03 129 , 0 , 0 ,0 , 7.818 , 7.245 , New , 0.57 129 , 0 , 0 ,1 , 7.646 , 7.236 , New , 0.41 129 , 0 , 0 , , 7.756 , 7.247 , New , 0.51 129 , 129 , 0 ,0 , 7.796 , 7.869 , Cur , -0.07 129 , 0 , 129 ,1 , 8.487 , 7.548 , New , 0.94 129 , 129 , 129 , , 8.488 , 8.347 , New , 0.14 161 , 0 , 0 ,0 , 7.53 , 7.129 , New , 0.4 161 , 0 , 0 ,1 , 7.873 , 7.002 , New , 0.87 161 , 0 , 0 , , 7.722 , 7.078 , New , 0.64 161 , 161 , 0 ,0 , 8.193 , 7.335 , New , 0.86 161 , 0 , 161 ,1 , 9.01 , 7.9 , New , 1.11 161 , 161 , 161 , , 8.744 , 8.306 , New , 0.44 193 , 0 , 0 ,0 , 7.712 , 7.122 , New , 0.59 193 , 0 , 0 ,1 , 7.921 , 7.018 , New , 0.9 193 , 0 , 0 , , 7.623 , 7.275 , New , 0.35 193 , 193 , 0 ,0 , 7.698 , 7.828 , Cur , -0.13 193 , 0 , 193 ,1 , 8.429 , 7.196 , New , 1.23 193 , 193 , 193 , , 8.513 , 8.475 , New , 0.04 225 , 0 , 0 ,0 , 7.611 , 7.102 , New , 0.51 225 , 0 , 0 ,1 , 7.743 , 7.089 , New , 0.65 225 , 0 , 0 , , 7.579 , 7.071 , New , 0.51 225 , 225 , 0 ,0 , 8.251 , 7.435 , New , 0.82 225 , 0 , 225 ,1 , 8.963 , 7.841 , New , 1.12 225 , 225 , 225 , , 8.994 , 8.502 , New , 0.49 257 , 0 , 0 ,0 , 9.707 , 7.257 , New , 2.45 257 , 0 , 0 ,1 , 9.772 , 7.095 , New , 2.68 257 , 0 , 0 , , 9.811 , 7.254 , New , 2.56 257 , 257 , 0 ,0 , 10.311 , 7.08 , New , 3.23 257 , 0 , 257 ,1 , 10.863 , 9.112 , New , 1.75 257 , 257 , 257 , , 9.83 , 7.946 , New , 1.88 289 , 0 , 0 ,0 , 9.713 , 7.793 , New , 1.92 289 , 0 , 0 ,1 , 9.529 , 7.814 , New , 1.71 289 , 0 , 0 , , 9.599 , 7.833 , New , 1.77 289 , 289 , 0 ,0 , 10.544 , 7.968 , New , 2.58 289 , 0 , 289 ,1 , 10.884 , 9.342 , New , 1.54 289 , 289 , 289 , , 10.37 , 8.479 , New , 1.89 321 , 0 , 0 ,0 , 10.409 , 9.138 , New , 1.27 321 , 0 , 0 ,1 , 10.552 , 9.137 , New , 1.41 321 , 0 , 0 , , 10.542 , 9.12 , New , 1.42 321 , 321 , 0 ,0 , 10.91 , 9.397 , New , 1.51 321 , 0 , 321 ,1 , 11.48 , 11.321 , New , 0.16 321 , 321 , 321 , , 10.803 , 10.074 , New , 0.73 353 , 0 , 0 ,0 , 12.219 , 9.251 , New , 2.97 353 , 0 , 0 ,1 , 12.086 , 9.158 , New , 2.93 353 , 0 , 0 , , 12.085 , 9.149 , New , 2.94 353 , 353 , 0 ,0 , 12.545 , 9.733 , New , 2.81 353 , 0 , 353 ,1 , 13.162 , 11.116 , New , 2.05 353 , 353 , 353 , , 12.564 , 10.083 , New , 2.48 32 , 7 , 2 ,0 , 3.461 , 3.065 , New , 0.4 32 , 0 , 0 ,1 , 3.232 , 3.032 , New , 0.2 32 , 0 , 0 , , 3.243 , 3.095 , New , 0.15 32 , 0 , 0 ,0 , 3.22 , 3.036 , New , 0.18 4 , 1 , 0 ,1 , 4.942 , 3.307 , New , 1.64 4 , 0 , 1 , , 4.38 , 3.907 , New , 0.47 4 , 1 , 1 ,0 , 4.379 , 3.927 , New , 0.45 32 , 1 , 0 ,1 , 3.73 , 3.072 , New , 0.66 32 , 0 , 1 , , 3.148 , 3.076 , New , 0.07 32 , 1 , 1 ,0 , 3.063 , 2.792 , New , 0.27 64 , 6 , 4 ,1 , 3.777 , 3.147 , New , 0.63 64 , 0 , 0 , , 3.922 , 3.471 , New , 0.45 64 , 0 , 0 ,0 , 4.102 , 3.519 , New , 0.58 64 , 0 , 0 ,1 , 4.033 , 3.468 , New , 0.57 8 , 2 , 0 , , 4.531 , 3.56 , New , 0.97 8 , 0 , 2 ,0 , 4.38 , 3.832 , New , 0.55 8 , 2 , 2 ,1 , 4.421 , 3.906 , New , 0.52 64 , 2 , 0 , , 3.686 , 3.122 , New , 0.56 64 , 0 , 2 ,0 , 4.06 , 3.638 , New , 0.42 64 , 2 , 2 ,1 , 4.1 , 3.633 , New , 0.47 128 , 5 , 6 , , 8.141 , 4.278 , New , 3.86 128 , 0 , 0 ,0 , 6.859 , 4.807 , New , 2.05 128 , 0 , 0 ,1 , 6.851 , 4.806 , New , 2.04 128 , 0 , 0 , , 6.745 , 4.757 , New , 1.99 16 , 3 , 0 ,0 , 4.458 , 3.439 , New , 1.02 16 , 0 , 3 ,1 , 4.404 , 3.847 , New , 0.56 16 , 3 , 3 , , 4.706 , 3.813 , New , 0.89 128 , 3 , 0 ,0 , 8.225 , 4.335 , New , 3.89 128 , 0 , 3 ,1 , 6.828 , 5.165 , New , 1.66 128 , 3 , 3 , , 6.98 , 5.163 , New , 1.82 256 , 4 , 8 ,0 , 7.896 , 7.742 , New , 0.15 256 , 0 , 0 ,1 , 7.557 , 6.462 , New , 1.1 256 , 0 , 0 , , 7.557 , 6.335 , New , 1.22 256 , 0 , 0 ,0 , 7.492 , 6.284 , New , 1.21 32 , 4 , 0 ,1 , 3.578 , 3.093 , New , 0.48 32 , 0 , 4 , , 2.904 , 2.898 , New , 0.01 32 , 4 , 4 ,0 , 2.915 , 3.102 , Cur , -0.19 256 , 4 , 0 ,1 , 7.896 , 7.123 , New , 0.77 256 , 0 , 4 , , 8.385 , 7.013 , New , 1.37 256 , 4 , 4 ,0 , 8.166 , 8.764 , Cur , -0.6 512 , 3 , 10 ,1 , 15.811 , 14.743 , New , 1.07 512 , 0 , 0 , , 15.106 , 11.044 , New , 4.06 512 , 0 , 0 ,0 , 15.112 , 11.038 , New , 4.07 512 , 0 , 0 ,1 , 15.119 , 10.8 , New , 4.32 64 , 5 , 0 , , 3.851 , 2.949 , New , 0.9 64 , 0 , 5 ,0 , 4.028 , 3.473 , New , 0.55 64 , 5 , 5 ,1 , 4.38 , 3.454 , New , 0.93 512 , 5 , 0 , , 16.344 , 13.367 , New , 2.98 512 , 0 , 5 ,0 , 16.52 , 13.495 , New , 3.03 512 , 5 , 5 ,1 , 15.349 , 12.118 , New , 3.23 1024, 2 , 12 , , 27.29 , 27.395 , Cur , -0.11 1024, 0 , 0 ,0 , 23.971 , 19.163 , New , 4.81 1024, 0 , 0 ,1 , 24.05 , 19.279 , New , 4.77 1024, 0 , 0 , , 23.877 , 19.212 , New , 4.66 128 , 6 , 0 ,0 , 7.664 , 4.329 , New , 3.33 128 , 0 , 6 ,1 , 6.758 , 4.901 , New , 1.86 128 , 6 , 6 , , 6.588 , 4.848 , New , 1.74 1024, 6 , 0 ,0 , 26.621 , 25.639 , New , 0.98 1024, 0 , 6 ,1 , 27.643 , 25.658 , New , 1.98 1024, 6 , 6 , , 24.542 , 20.584 , New , 3.96 2048, 1 , 14 ,0 , 53.634 , 51.329 , New , 2.3 2048, 0 , 0 ,1 , 42.23 , 35.612 , New , 6.62 2048, 0 , 0 , , 41.934 , 35.471 , New , 6.46 2048, 0 , 0 ,0 , 41.542 , 35.521 , New , 6.02 256 , 7 , 0 ,1 , 7.655 , 7.184 , New , 0.47 256 , 0 , 7 , , 8.3 , 7.371 , New , 0.93 256 , 7 , 7 ,0 , 8.296 , 8.482 , Cur , -0.19 2048, 7 , 0 ,1 , 51.896 , 49.651 , New , 2.24 2048, 0 , 7 , , 52.143 , 50.359 , New , 1.78 2048, 7 , 7 ,0 , 42.261 , 38.558 , New , 3.7 4096, 0 , 16 ,1 , 104.132 , 100.955 , New , 3.18 4096, 0 , 0 , , 83.859 , 74.954 , New , 8.91 4096, 0 , 0 ,0 , 84.309 , 75.023 , New , 9.29 4096, 0 , 0 ,1 , 84.075 , 75.498 , New , 8.58 512 , 8 , 0 , , 16.754 , 13.172 , New , 3.58 512 , 0 , 8 ,0 , 16.631 , 13.554 , New , 3.08 512 , 8 , 8 ,1 , 15.274 , 12.151 , New , 3.12 4096, 8 , 0 , , 103.385 , 100.292 , New , 3.09 4096, 0 , 8 ,0 , 104.883 , 102.001 , New , 2.88 4096, 8 , 8 ,1 , 84.031 , 79.645 , New , 4.39 1024, 9 , 0 , , 26.643 , 25.628 , New , 1.02 1024, 0 , 9 ,0 , 27.979 , 26.238 , New , 1.74 1024, 9 , 9 ,1 , 24.332 , 20.927 , New , 3.41 16 , 1 , 2 , , 4.341 , 3.753 , New , 0.59 16 , 1 , 2 ,0 , 4.382 , 3.736 , New , 0.65 16 , 1 , 2 ,1 , 4.357 , 3.756 , New , 0.6 32 , 2 , 4 , , 3.248 , 3.011 , New , 0.24 32 , 2 , 4 ,0 , 3.324 , 2.967 , New , 0.36 32 , 2 , 4 ,1 , 3.261 , 3.049 , New , 0.21 64 , 3 , 6 , , 3.999 , 3.497 , New , 0.5 64 , 3 , 6 ,0 , 4.068 , 3.449 , New , 0.62 64 , 3 , 6 ,1 , 3.982 , 3.554 , New , 0.43 128 , 4 , 8 , , 7.128 , 4.599 , New , 2.53 128 , 4 , 8 ,0 , 7.048 , 4.797 , New , 2.25 128 , 4 , 8 ,1 , 7.069 , 4.753 , New , 2.32 256 , 5 , 10 , , 8.003 , 8.21 , Cur , -0.21 256 , 5 , 10 ,0 , 8.074 , 8.152 , Cur , -0.08 256 , 5 , 10 ,1 , 8.237 , 8.149 , New , 0.09 512 , 6 , 12 , , 16.204 , 15.073 , New , 1.13 512 , 6 , 12 ,0 , 16.362 , 15.027 , New , 1.33 512 , 6 , 12 ,1 , 16.274 , 15.148 , New , 1.13 1024, 7 , 14 , , 27.513 , 27.351 , New , 0.16 1024, 7 , 14 ,0 , 27.828 , 27.428 , New , 0.4 1024, 7 , 14 ,1 , 27.61 , 27.65 , Cur , -0.04 2048, 8 , 16 , , 52.774 , 52.012 , New , 0.76 2048, 8 , 16 ,0 , 53.088 , 52.275 , New , 0.81 2048, 8 , 16 ,1 , 52.453 , 52.196 , New , 0.26 4096, 9 , 18 , , 104.786 , 102.882 , New , 1.9 4096, 9 , 18 ,0 , 105.091 , 103.061 , New , 2.03 4096, 9 , 18 ,1 , 104.574 , 102.566 , New , 2.01 33 , 33 , 0 , , 3.522 , 3.068 , New , 0.45 33 , 0 , 33 ,0 , 4.206 , 3.589 , New , 0.62 33 , 33 , 33 ,1 , 4.213 , 3.827 , New , 0.39 65 , 65 , 0 , , 6.119 , 4.602 , New , 1.52 65 , 0 , 65 ,0 , 6.439 , 5.271 , New , 1.17 65 , 65 , 65 ,1 , 6.925 , 5.254 , New , 1.67 97 , 97 , 0 , , 5.458 , 4.719 , New , 0.74 97 , 0 , 97 ,0 , 6.883 , 5.207 , New , 1.68 97 , 97 , 97 ,1 , 6.659 , 4.654 , New , 2.0 129 , 129 , 0 , , 7.976 , 7.972 , New , 0.0 129 , 0 , 129 ,0 , 8.583 , 7.311 , New , 1.27 129 , 129 , 129 ,1 , 8.531 , 8.605 , Cur , -0.07 161 , 161 , 0 , , 8.603 , 7.393 , New , 1.21 161 , 0 , 161 ,0 , 9.053 , 7.878 , New , 1.18 161 , 161 , 161 ,1 , 9.096 , 8.333 , New , 0.76 193 , 193 , 0 , , 7.79 , 8.104 , Cur , -0.31 193 , 0 , 193 ,0 , 8.414 , 7.238 , New , 1.18 193 , 193 , 193 ,1 , 8.485 , 8.274 , New , 0.21 225 , 225 , 0 , , 8.538 , 7.435 , New , 1.1 225 , 0 , 225 ,0 , 9.036 , 8.19 , New , 0.85 225 , 225 , 225 ,1 , 9.299 , 8.841 , New , 0.46 257 , 257 , 0 , , 10.08 , 7.207 , New , 2.87 257 , 0 , 257 ,0 , 10.737 , 8.942 , New , 1.79 257 , 257 , 257 ,1 , 10.146 , 8.095 , New , 2.05 289 , 289 , 0 , , 10.433 , 7.683 , New , 2.75 289 , 0 , 289 ,0 , 10.975 , 9.462 , New , 1.51 289 , 289 , 289 ,1 , 10.426 , 8.411 , New , 2.02 321 , 321 , 0 , , 10.985 , 9.36 , New , 1.62 321 , 0 , 321 ,0 , 11.523 , 11.224 , New , 0.3 321 , 321 , 321 ,1 , 10.647 , 10.636 , New , 0.01 353 , 353 , 0 , , 12.73 , 9.463 , New , 3.27 353 , 0 , 353 ,0 , 13.411 , 11.239 , New , 2.17 353 , 353 , 353 ,1 , 12.886 , 10.099 , New , 2.79 32 , 7 , 2 , , 3.501 , 3.127 , New , 0.37 4 , 1 , 0 ,0 , 5.046 , 3.45 , New , 1.6 4 , 0 , 1 ,1 , 4.405 , 4.01 , New , 0.4 4 , 1 , 1 , , 4.405 , 3.909 , New , 0.5 32 , 1 , 0 ,0 , 3.739 , 3.064 , New , 0.67 32 , 0 , 1 ,1 , 3.07 , 3.043 , New , 0.03 32 , 1 , 1 , , 3.002 , 3.119 , Cur , -0.12 64 , 6 , 4 ,0 , 3.845 , 3.162 , New , 0.68 8 , 2 , 0 ,1 , 4.448 , 3.465 , New , 0.98 8 , 0 , 2 , , 4.76 , 4.162 , New , 0.6 8 , 2 , 2 ,0 , 4.758 , 3.869 , New , 0.89 64 , 2 , 0 ,1 , 3.723 , 3.008 , New , 0.71 64 , 0 , 2 , , 4.296 , 3.607 , New , 0.69 64 , 2 , 2 ,0 , 4.103 , 3.728 , New , 0.37 128 , 5 , 6 ,1 , 8.103 , 4.516 , New , 3.59 16 , 3 , 0 , , 4.48 , 3.43 , New , 1.05 16 , 0 , 3 ,0 , 4.404 , 3.886 , New , 0.52 16 , 3 , 3 ,1 , 4.502 , 4.054 , New , 0.45 128 , 3 , 0 , , 7.972 , 4.358 , New , 3.61 128 , 0 , 3 ,0 , 6.897 , 4.811 , New , 2.09 128 , 3 , 3 ,1 , 7.089 , 5.047 , New , 2.04 256 , 4 , 8 , , 7.922 , 7.82 , New , 0.1 32 , 4 , 0 ,0 , 3.44 , 3.113 , New , 0.33 32 , 0 , 4 ,1 , 2.932 , 3.124 , Cur , -0.19 32 , 4 , 4 , , 2.881 , 2.99 , Cur , -0.11 256 , 4 , 0 ,0 , 7.791 , 7.181 , New , 0.61 256 , 0 , 4 ,1 , 8.258 , 7.419 , New , 0.84 256 , 4 , 4 , , 8.196 , 8.216 , Cur , -0.02 512 , 3 , 10 ,0 , 15.952 , 14.844 , New , 1.11 64 , 5 , 0 ,1 , 3.741 , 3.411 , New , 0.33 64 , 0 , 5 , , 4.266 , 3.569 , New , 0.7 64 , 5 , 5 ,0 , 4.229 , 3.677 , New , 0.55 512 , 5 , 0 ,1 , 16.38 , 13.462 , New , 2.92 512 , 0 , 5 , , 16.273 , 13.677 , New , 2.6 512 , 5 , 5 ,0 , 15.272 , 12.164 , New , 3.11 1024, 2 , 12 ,1 , 27.748 , 27.391 , New , 0.36 128 , 6 , 0 , , 7.842 , 4.431 , New , 3.41 128 , 0 , 6 ,0 , 6.561 , 5.028 , New , 1.53 128 , 6 , 6 ,1 , 6.76 , 4.964 , New , 1.8 1024, 6 , 0 , , 27.164 , 26.021 , New , 1.14 1024, 0 , 6 ,0 , 28.388 , 26.454 , New , 1.93 1024, 6 , 6 ,1 , 24.858 , 21.184 , New , 3.67 2048, 1 , 14 , , 52.334 , 51.828 , New , 0.51 256 , 7 , 0 ,0 , 7.802 , 7.23 , New , 0.57 256 , 0 , 7 ,1 , 8.267 , 7.116 , New , 1.15 256 , 7 , 7 , , 8.274 , 8.133 , New , 0.14 2048, 7 , 0 ,0 , 51.264 , 50.271 , New , 0.99 2048, 0 , 7 ,1 , 53.566 , 50.707 , New , 2.86 2048, 7 , 7 , , 42.153 , 38.343 , New , 3.81 4096, 0 , 16 ,0 , 105.056 , 99.921 , New , 5.13 512 , 8 , 0 ,1 , 16.511 , 13.235 , New , 3.28 512 , 0 , 8 , , 16.491 , 13.687 , New , 2.8 512 , 8 , 8 ,0 , 15.222 , 12.179 , New , 3.04 4096, 8 , 0 ,1 , 104.548 , 98.83 , New , 5.72 4096, 0 , 8 , , 106.038 , 102.359 , New , 3.68 4096, 8 , 8 ,0 , 84.37 , 78.416 , New , 5.95 1024, 9 , 0 ,1 , 26.856 , 25.824 , New , 1.03 1024, 0 , 9 , , 28.684 , 25.95 , New , 2.73 1024, 9 , 9 ,0 , 24.812 , 21.249 , New , 3.56 33 , 33 , 0 ,1 , 3.792 , 3.118 , New , 0.67 33 , 0 , 33 , , 4.41 , 3.614 , New , 0.8 33 , 33 , 33 ,0 , 4.171 , 3.694 , New , 0.48 65 , 65 , 0 ,1 , 5.762 , 4.552 , New , 1.21 65 , 0 , 65 , , 6.943 , 5.095 , New , 1.85 65 , 65 , 65 ,0 , 6.643 , 4.712 , New , 1.93 97 , 97 , 0 ,1 , 5.698 , 4.513 , New , 1.19 97 , 0 , 97 , , 6.623 , 5.05 , New , 1.57 97 , 97 , 97 ,0 , 6.839 , 5.124 , New , 1.72 129 , 129 , 0 ,1 , 7.867 , 8.131 , Cur , -0.26 129 , 0 , 129 , , 8.155 , 7.612 , New , 0.54 129 , 129 , 129 ,0 , 8.323 , 8.655 , Cur , -0.33 161 , 161 , 0 ,1 , 8.44 , 7.316 , New , 1.12 161 , 0 , 161 , , 8.998 , 8.074 , New , 0.92 161 , 161 , 161 ,0 , 8.997 , 8.535 , New , 0.46 193 , 193 , 0 ,1 , 8.233 , 8.23 , New , 0.0 193 , 0 , 193 , , 8.443 , 7.563 , New , 0.88 193 , 193 , 193 ,0 , 8.274 , 8.602 , Cur , -0.33 225 , 225 , 0 ,1 , 8.381 , 7.114 , New , 1.27 225 , 0 , 225 , , 8.824 , 7.98 , New , 0.84 225 , 225 , 225 ,0 , 8.949 , 8.45 , New , 0.5 257 , 257 , 0 ,1 , 10.179 , 7.548 , New , 2.63 257 , 0 , 257 , , 10.809 , 8.881 , New , 1.93 257 , 257 , 257 ,0 , 9.939 , 8.161 , New , 1.78 289 , 289 , 0 ,1 , 10.633 , 8.006 , New , 2.63 289 , 0 , 289 , , 10.803 , 9.479 , New , 1.32 289 , 289 , 289 ,0 , 10.793 , 8.399 , New , 2.39 321 , 321 , 0 ,1 , 10.962 , 9.489 , New , 1.47 321 , 0 , 321 , , 11.178 , 11.196 , Cur , -0.02 321 , 321 , 321 ,0 , 10.756 , 10.064 , New , 0.69 353 , 353 , 0 ,1 , 12.707 , 9.527 , New , 3.18 353 , 0 , 353 , , 13.115 , 10.932 , New , 2.18 353 , 353 , 353 ,0 , 12.756 , 9.88 , New , 2.88 32 , 7 , 2 ,1 , 3.516 , 3.115 , New , 0.4 4 , 1 , 0 , , 4.916 , 3.343 , New , 1.57 4 , 0 , 1 ,0 , 4.371 , 3.814 , New , 0.56 4 , 1 , 1 ,1 , 4.414 , 3.918 , New , 0.5 32 , 1 , 0 , , 3.683 , 3.07 , New , 0.61 32 , 0 , 1 ,0 , 3.157 , 2.842 , New , 0.31 32 , 1 , 1 ,1 , 3.082 , 2.99 , New , 0.09 64 , 6 , 4 , , 3.435 , 3.034 , New , 0.4 8 , 2 , 0 ,0 , 4.445 , 3.304 , New , 1.14 8 , 0 , 2 ,1 , 4.571 , 4.07 , New , 0.5 8 , 2 , 2 , , 4.509 , 4.079 , New , 0.43 64 , 2 , 0 ,0 , 3.637 , 3.071 , New , 0.57 64 , 0 , 2 ,1 , 4.275 , 3.63 , New , 0.65 64 , 2 , 2 , , 4.355 , 3.742 , New , 0.61 128 , 5 , 6 ,0 , 7.947 , 4.472 , New , 3.47 16 , 3 , 0 ,1 , 4.371 , 3.394 , New , 0.98 16 , 0 , 3 , , 4.423 , 4.031 , New , 0.39 16 , 3 , 3 ,0 , 4.513 , 3.928 , New , 0.58 128 , 3 , 0 ,1 , 8.005 , 4.529 , New , 3.48 128 , 0 , 3 , , 6.832 , 5.262 , New , 1.57 128 , 3 , 3 ,0 , 6.897 , 5.022 , New , 1.88 256 , 4 , 8 ,1 , 7.875 , 7.751 , New , 0.12 32 , 4 , 0 , , 3.66 , 2.985 , New , 0.68 32 , 0 , 4 ,0 , 2.955 , 2.871 , New , 0.08 32 , 4 , 4 ,1 , 3.037 , 3.467 , Cur , -0.43 256 , 4 , 0 , , 7.85 , 7.186 , New , 0.66 256 , 0 , 4 ,0 , 8.262 , 7.31 , New , 0.95 256 , 4 , 4 ,1 , 8.123 , 8.32 , Cur , -0.2 512 , 3 , 10 , , 15.851 , 14.638 , New , 1.21 64 , 5 , 0 ,0 , 3.476 , 3.045 , New , 0.43 64 , 0 , 5 ,1 , 4.204 , 3.633 , New , 0.57 64 , 5 , 5 , , 4.083 , 3.639 , New , 0.44 512 , 5 , 0 ,0 , 16.13 , 13.253 , New , 2.88 512 , 0 , 5 ,1 , 16.282 , 13.708 , New , 2.57 512 , 5 , 5 , , 15.429 , 12.363 , New , 3.07 1024, 2 , 12 ,0 , 27.715 , 27.331 , New , 0.38 128 , 6 , 0 ,1 , 7.644 , 4.35 , New , 3.29 128 , 0 , 6 , , 6.558 , 5.193 , New , 1.37 128 , 6 , 6 ,0 , 6.961 , 5.062 , New , 1.9 1024, 6 , 0 ,1 , 26.773 , 25.907 , New , 0.87 1024, 0 , 6 , , 27.772 , 25.913 , New , 1.86 1024, 6 , 6 ,0 , 24.184 , 21.284 , New , 2.9 2048, 1 , 14 ,1 , 51.933 , 51.572 , New , 0.36 256 , 7 , 0 , , 7.612 , 7.508 , New , 0.1 256 , 0 , 7 ,0 , 8.335 , 7.455 , New , 0.88 256 , 7 , 7 ,1 , 8.445 , 8.551 , Cur , -0.11 2048, 7 , 0 , , 50.911 , 50.347 , New , 0.56 2048, 0 , 7 ,0 , 52.772 , 50.605 , New , 2.17 2048, 7 , 7 ,1 , 42.114 , 39.691 , New , 2.42 4096, 0 , 16 , , 102.63 , 100.025 , New , 2.6 512 , 8 , 0 ,0 , 16.68 , 13.539 , New , 3.14 512 , 0 , 8 ,1 , 16.444 , 13.647 , New , 2.8 512 , 8 , 8 , , 15.254 , 12.528 , New , 2.73 4096, 8 , 0 ,0 , 102.645 , 98.927 , New , 3.72 4096, 0 , 8 ,1 , 104.46 , 102.374 , New , 2.09 4096, 8 , 8 , , 83.773 , 79.341 , New , 4.43 1024, 9 , 0 ,0 , 26.774 , 25.414 , New , 1.36 1024, 0 , 9 ,1 , 27.935 , 26.699 , New , 1.24 1024, 9 , 9 , , 24.264 , 21.184 , New , 3.08 New Wins: 308 Cur Wins: 22 Equals : 0 ---- EVEX Results ---- Results For Tigerlake memcmp-evex size, al1 , al2 ,res, Cur T , New T , Win , Dif 1 , 1 , 1 ,0 , 4.702 , 3.967 , New , 0.73 1 , 1 , 1 ,1 , 4.644 , 3.895 , New , 0.75 1 , 1 , 1 , , 4.744 , 3.907 , New , 0.84 2 , 2 , 2 ,0 , 3.954 , 4.194 , Cur , -0.24 2 , 2 , 2 ,1 , 3.889 , 4.215 , Cur , -0.33 2 , 2 , 2 , , 3.911 , 4.251 , Cur , -0.34 3 , 3 , 3 ,0 , 3.955 , 4.313 , Cur , -0.36 3 , 3 , 3 ,1 , 4.128 , 4.198 , Cur , -0.07 3 , 3 , 3 , , 3.947 , 4.226 , Cur , -0.28 4 , 4 , 4 ,0 , 5.423 , 4.516 , New , 0.91 4 , 4 , 4 ,1 , 5.347 , 4.809 , New , 0.54 4 , 4 , 4 , , 5.67 , 4.647 , New , 1.02 5 , 5 , 5 ,0 , 5.037 , 4.34 , New , 0.7 5 , 5 , 5 ,1 , 5.351 , 4.251 , New , 1.1 5 , 5 , 5 , , 5.009 , 4.287 , New , 0.72 6 , 6 , 6 ,0 , 4.744 , 4.158 , New , 0.59 6 , 6 , 6 ,1 , 4.845 , 4.073 , New , 0.77 6 , 6 , 6 , , 4.746 , 4.14 , New , 0.61 7 , 7 , 7 ,0 , 4.707 , 4.079 , New , 0.63 7 , 7 , 7 ,1 , 4.877 , 4.101 , New , 0.78 7 , 7 , 7 , , 4.864 , 4.183 , New , 0.68 8 , 8 , 8 ,0 , 4.567 , 4.053 , New , 0.51 8 , 8 , 8 ,1 , 4.628 , 4.142 , New , 0.49 8 , 8 , 8 , , 4.665 , 4.085 , New , 0.58 9 , 9 , 9 ,0 , 5.282 , 4.079 , New , 1.2 9 , 9 , 9 ,1 , 5.41 , 4.096 , New , 1.31 9 , 9 , 9 , , 5.208 , 4.136 , New , 1.07 10 , 10 , 10 ,0 , 5.293 , 4.093 , New , 1.2 10 , 10 , 10 ,1 , 5.213 , 4.143 , New , 1.07 10 , 10 , 10 , , 5.372 , 4.206 , New , 1.17 11 , 11 , 11 ,0 , 5.486 , 4.087 , New , 1.4 11 , 11 , 11 ,1 , 5.131 , 4.122 , New , 1.01 11 , 11 , 11 , , 5.224 , 4.133 , New , 1.09 12 , 12 , 12 ,0 , 5.264 , 4.079 , New , 1.19 12 , 12 , 12 ,1 , 5.136 , 4.053 , New , 1.08 12 , 12 , 12 , , 5.21 , 4.109 , New , 1.1 13 , 13 , 13 ,0 , 5.304 , 4.067 , New , 1.24 13 , 13 , 13 ,1 , 5.355 , 4.129 , New , 1.23 13 , 13 , 13 , , 5.287 , 4.084 , New , 1.2 14 , 14 , 14 ,0 , 5.273 , 4.128 , New , 1.14 14 , 14 , 14 ,1 , 5.203 , 4.066 , New , 1.14 14 , 14 , 14 , , 5.037 , 4.111 , New , 0.93 15 , 15 , 15 ,0 , 5.202 , 4.053 , New , 1.15 15 , 15 , 15 ,1 , 5.205 , 4.054 , New , 1.15 15 , 15 , 15 , , 5.096 , 4.085 , New , 1.01 16 , 16 , 16 ,0 , 4.641 , 4.113 , New , 0.53 16 , 16 , 16 ,1 , 4.693 , 4.139 , New , 0.55 16 , 16 , 16 , , 4.596 , 4.091 , New , 0.5 17 , 17 , 17 ,0 , 5.433 , 4.11 , New , 1.32 17 , 17 , 17 ,1 , 5.442 , 4.077 , New , 1.37 17 , 17 , 17 , , 5.399 , 4.085 , New , 1.31 18 , 18 , 18 ,0 , 5.377 , 4.066 , New , 1.31 18 , 18 , 18 ,1 , 5.469 , 4.102 , New , 1.37 18 , 18 , 18 , , 5.441 , 4.085 , New , 1.36 19 , 19 , 19 ,0 , 5.328 , 4.089 , New , 1.24 19 , 19 , 19 ,1 , 5.378 , 4.053 , New , 1.33 19 , 19 , 19 , , 5.338 , 4.085 , New , 1.25 20 , 20 , 20 ,0 , 5.372 , 4.053 , New , 1.32 20 , 20 , 20 ,1 , 5.405 , 4.183 , New , 1.22 20 , 20 , 20 , , 5.401 , 4.108 , New , 1.29 21 , 21 , 21 ,0 , 5.387 , 4.054 , New , 1.33 21 , 21 , 21 ,1 , 5.405 , 4.053 , New , 1.35 21 , 21 , 21 , , 5.427 , 4.194 , New , 1.23 22 , 22 , 22 ,0 , 5.38 , 4.054 , New , 1.33 22 , 22 , 22 ,1 , 5.449 , 4.116 , New , 1.33 22 , 22 , 22 , , 5.348 , 4.084 , New , 1.26 23 , 23 , 23 ,0 , 5.408 , 4.053 , New , 1.36 23 , 23 , 23 ,1 , 5.368 , 4.065 , New , 1.3 23 , 23 , 23 , , 5.31 , 4.108 , New , 1.2 24 , 24 , 24 ,0 , 5.295 , 4.077 , New , 1.22 24 , 24 , 24 ,1 , 5.372 , 4.054 , New , 1.32 24 , 24 , 24 , , 5.337 , 4.085 , New , 1.25 25 , 25 , 25 ,0 , 5.371 , 4.139 , New , 1.23 25 , 25 , 25 ,1 , 5.34 , 4.077 , New , 1.26 25 , 25 , 25 , , 5.334 , 4.121 , New , 1.21 26 , 26 , 26 ,0 , 5.315 , 4.116 , New , 1.2 26 , 26 , 26 ,1 , 5.43 , 4.182 , New , 1.25 26 , 26 , 26 , , 5.345 , 4.165 , New , 1.18 27 , 27 , 27 ,0 , 5.384 , 4.077 , New , 1.31 27 , 27 , 27 ,1 , 5.315 , 4.077 , New , 1.24 27 , 27 , 27 , , 5.425 , 4.108 , New , 1.32 28 , 28 , 28 ,0 , 5.403 , 4.077 , New , 1.33 28 , 28 , 28 ,1 , 5.459 , 4.091 , New , 1.37 28 , 28 , 28 , , 5.341 , 4.109 , New , 1.23 29 , 29 , 29 ,0 , 5.29 , 4.077 , New , 1.21 29 , 29 , 29 ,1 , 5.316 , 4.082 , New , 1.23 29 , 29 , 29 , , 5.343 , 4.127 , New , 1.22 30 , 30 , 30 ,0 , 5.357 , 4.058 , New , 1.3 30 , 30 , 30 ,1 , 5.415 , 4.077 , New , 1.34 30 , 30 , 30 , , 5.328 , 4.089 , New , 1.24 31 , 31 , 31 ,0 , 5.34 , 4.058 , New , 1.28 31 , 31 , 31 ,1 , 5.421 , 4.058 , New , 1.36 31 , 31 , 31 , , 5.38 , 4.14 , New , 1.24 1 , 0 , 0 ,0 , 4.325 , 3.691 , New , 0.63 1 , 0 , 0 ,1 , 4.412 , 3.67 , New , 0.74 1 , 0 , 0 , , 4.354 , 3.67 , New , 0.68 1 , 4095, 0 ,0 , 4.295 , 3.7 , New , 0.59 1 , 4095, 0 ,1 , 4.324 , 3.674 , New , 0.65 1 , 4095, 0 , , 4.362 , 3.686 , New , 0.68 2 , 0 , 0 ,0 , 3.741 , 4.063 , Cur , -0.32 2 , 0 , 0 ,1 , 3.741 , 4.082 , Cur , -0.34 2 , 0 , 0 , , 3.712 , 4.107 , Cur , -0.4 2 , 4094, 0 ,0 , 3.768 , 4.438 , Cur , -0.67 2 , 4094, 0 ,1 , 3.715 , 4.344 , Cur , -0.63 2 , 4094, 0 , , 3.773 , 4.465 , Cur , -0.69 3 , 0 , 0 ,0 , 3.744 , 4.062 , Cur , -0.32 3 , 0 , 0 ,1 , 3.744 , 4.063 , Cur , -0.32 3 , 0 , 0 , , 3.691 , 4.094 , Cur , -0.4 3 , 4093, 0 ,0 , 3.806 , 4.347 , Cur , -0.54 3 , 4093, 0 ,1 , 3.777 , 4.376 , Cur , -0.6 3 , 4093, 0 , , 3.773 , 4.38 , Cur , -0.61 4 , 0 , 0 ,0 , 4.751 , 4.109 , New , 0.64 4 , 0 , 0 ,1 , 4.703 , 4.11 , New , 0.59 4 , 0 , 0 , , 4.798 , 4.137 , New , 0.66 4 , 4092, 0 ,0 , 4.696 , 5.161 , Cur , -0.46 4 , 4092, 0 ,1 , 4.667 , 5.141 , Cur , -0.47 4 , 4092, 0 , , 4.728 , 5.211 , Cur , -0.48 5 , 0 , 0 ,0 , 4.806 , 4.072 , New , 0.73 5 , 0 , 0 ,1 , 4.765 , 4.062 , New , 0.7 5 , 0 , 0 , , 4.728 , 4.094 , New , 0.63 5 , 4091, 0 ,0 , 4.915 , 5.166 , Cur , -0.25 5 , 4091, 0 ,1 , 4.766 , 5.044 , Cur , -0.28 5 , 4091, 0 , , 4.703 , 5.052 , Cur , -0.35 6 , 0 , 0 ,0 , 4.739 , 4.066 , New , 0.67 6 , 0 , 0 ,1 , 4.613 , 4.066 , New , 0.55 6 , 0 , 0 , , 4.68 , 4.117 , New , 0.56 6 , 4090, 0 ,0 , 4.716 , 5.172 , Cur , -0.46 6 , 4090, 0 ,1 , 4.738 , 5.291 , Cur , -0.55 6 , 4090, 0 , , 4.742 , 5.124 , Cur , -0.38 7 , 0 , 0 ,0 , 4.707 , 4.07 , New , 0.64 7 , 0 , 0 ,1 , 4.77 , 4.071 , New , 0.7 7 , 0 , 0 , , 4.675 , 4.102 , New , 0.57 7 , 4089, 0 ,0 , 4.77 , 5.034 , Cur , -0.26 7 , 4089, 0 ,1 , 4.797 , 5.207 , Cur , -0.41 7 , 4089, 0 , , 4.77 , 5.093 , Cur , -0.32 8 , 0 , 0 ,0 , 4.702 , 4.134 , New , 0.57 8 , 0 , 0 ,1 , 4.693 , 4.109 , New , 0.58 8 , 0 , 0 , , 4.659 , 4.125 , New , 0.53 8 , 4088, 0 ,0 , 4.759 , 5.32 , Cur , -0.56 8 , 4088, 0 ,1 , 4.641 , 5.319 , Cur , -0.68 8 , 4088, 0 , , 4.641 , 5.357 , Cur , -0.72 9 , 0 , 0 ,0 , 5.67 , 4.08 , New , 1.59 9 , 0 , 0 ,1 , 5.638 , 4.08 , New , 1.56 9 , 0 , 0 , , 5.444 , 4.112 , New , 1.33 9 , 4087, 0 ,0 , 5.515 , 5.319 , New , 0.2 9 , 4087, 0 ,1 , 5.474 , 5.316 , New , 0.16 9 , 4087, 0 , , 5.507 , 5.348 , New , 0.16 10 , 0 , 0 ,0 , 5.475 , 4.081 , New , 1.39 10 , 0 , 0 ,1 , 5.598 , 4.103 , New , 1.5 10 , 0 , 0 , , 5.258 , 4.112 , New , 1.15 10 , 4086, 0 ,0 , 5.415 , 5.316 , New , 0.1 10 , 4086, 0 ,1 , 5.445 , 5.318 , New , 0.13 10 , 4086, 0 , , 5.353 , 5.353 , Eq , 0.0 11 , 0 , 0 ,0 , 5.417 , 4.084 , New , 1.33 11 , 0 , 0 ,1 , 5.414 , 4.085 , New , 1.33 11 , 0 , 0 , , 5.624 , 4.232 , New , 1.39 11 , 4085, 0 ,0 , 5.508 , 5.322 , New , 0.19 11 , 4085, 0 ,1 , 5.413 , 5.33 , New , 0.08 11 , 4085, 0 , , 5.503 , 5.354 , New , 0.15 12 , 0 , 0 ,0 , 5.472 , 4.094 , New , 1.38 12 , 0 , 0 ,1 , 5.383 , 4.093 , New , 1.29 12 , 0 , 0 , , 5.532 , 4.125 , New , 1.41 12 , 4084, 0 ,0 , 5.543 , 5.336 , New , 0.21 12 , 4084, 0 ,1 , 5.512 , 5.336 , New , 0.18 12 , 4084, 0 , , 5.397 , 5.364 , New , 0.03 13 , 0 , 0 ,0 , 5.594 , 4.093 , New , 1.5 13 , 0 , 0 ,1 , 5.506 , 4.098 , New , 1.41 13 , 0 , 0 , , 5.353 , 4.125 , New , 1.23 13 , 4083, 0 ,0 , 5.491 , 5.338 , New , 0.15 13 , 4083, 0 ,1 , 5.431 , 5.388 , New , 0.04 13 , 4083, 0 , , 5.369 , 5.374 , Cur , -0.0 14 , 0 , 0 ,0 , 5.404 , 4.115 , New , 1.29 14 , 0 , 0 ,1 , 5.468 , 4.106 , New , 1.36 14 , 0 , 0 , , 5.374 , 4.138 , New , 1.24 14 , 4082, 0 ,0 , 5.465 , 5.358 , New , 0.11 14 , 4082, 0 ,1 , 5.436 , 5.357 , New , 0.08 14 , 4082, 0 , , 5.372 , 5.391 , Cur , -0.02 15 , 0 , 0 ,0 , 5.409 , 4.112 , New , 1.3 15 , 0 , 0 ,1 , 5.432 , 4.112 , New , 1.32 15 , 0 , 0 , , 5.369 , 4.144 , New , 1.22 15 , 4081, 0 ,0 , 5.558 , 5.36 , New , 0.2 15 , 4081, 0 ,1 , 5.441 , 5.361 , New , 0.08 15 , 4081, 0 , , 5.584 , 5.393 , New , 0.19 16 , 0 , 0 ,0 , 4.64 , 4.128 , New , 0.51 16 , 0 , 0 ,1 , 4.62 , 4.149 , New , 0.47 16 , 0 , 0 , , 4.679 , 4.148 , New , 0.53 16 , 4080, 0 ,0 , 4.623 , 4.965 , Cur , -0.34 16 , 4080, 0 ,1 , 4.63 , 4.972 , Cur , -0.34 16 , 4080, 0 , , 4.716 , 4.97 , Cur , -0.25 17 , 0 , 0 ,0 , 5.407 , 4.117 , New , 1.29 17 , 0 , 0 ,1 , 5.458 , 4.116 , New , 1.34 17 , 0 , 0 , , 5.405 , 4.167 , New , 1.24 17 , 4079, 0 ,0 , 5.463 , 5.372 , New , 0.09 17 , 4079, 0 ,1 , 5.501 , 5.371 , New , 0.13 17 , 4079, 0 , , 5.515 , 5.397 , New , 0.12 18 , 0 , 0 ,0 , 5.505 , 4.145 , New , 1.36 18 , 0 , 0 ,1 , 5.464 , 4.121 , New , 1.34 18 , 0 , 0 , , 5.439 , 4.152 , New , 1.29 18 , 4078, 0 ,0 , 5.56 , 5.37 , New , 0.19 18 , 4078, 0 ,1 , 5.498 , 5.373 , New , 0.12 18 , 4078, 0 , , 5.53 , 5.402 , New , 0.13 19 , 0 , 0 ,0 , 5.378 , 4.137 , New , 1.24 19 , 0 , 0 ,1 , 5.498 , 4.14 , New , 1.36 19 , 0 , 0 , , 5.467 , 4.162 , New , 1.3 19 , 4077, 0 ,0 , 5.453 , 5.383 , New , 0.07 19 , 4077, 0 ,1 , 5.528 , 5.383 , New , 0.14 19 , 4077, 0 , , 5.428 , 5.405 , New , 0.02 20 , 0 , 0 ,0 , 5.466 , 4.147 , New , 1.32 20 , 0 , 0 ,1 , 5.411 , 4.125 , New , 1.29 20 , 0 , 0 , , 5.47 , 4.157 , New , 1.31 20 , 4076, 0 ,0 , 5.498 , 5.417 , New , 0.08 20 , 4076, 0 ,1 , 5.527 , 5.379 , New , 0.15 20 , 4076, 0 , , 5.501 , 5.406 , New , 0.1 21 , 0 , 0 ,0 , 5.488 , 4.134 , New , 1.35 21 , 0 , 0 ,1 , 5.467 , 4.13 , New , 1.34 21 , 0 , 0 , , 5.407 , 4.162 , New , 1.25 21 , 4075, 0 ,0 , 5.635 , 5.387 , New , 0.25 21 , 4075, 0 ,1 , 5.5 , 5.386 , New , 0.11 21 , 4075, 0 , , 5.468 , 5.416 , New , 0.05 22 , 0 , 0 ,0 , 5.403 , 4.134 , New , 1.27 22 , 0 , 0 ,1 , 5.463 , 4.134 , New , 1.33 22 , 0 , 0 , , 5.404 , 4.166 , New , 1.24 22 , 4074, 0 ,0 , 5.524 , 5.385 , New , 0.14 22 , 4074, 0 ,1 , 5.522 , 5.386 , New , 0.14 22 , 4074, 0 , , 5.557 , 5.417 , New , 0.14 23 , 0 , 0 ,0 , 5.463 , 4.138 , New , 1.33 23 , 0 , 0 ,1 , 5.47 , 4.134 , New , 1.34 23 , 0 , 0 , , 5.431 , 4.166 , New , 1.26 23 , 4073, 0 ,0 , 5.573 , 5.387 , New , 0.19 23 , 4073, 0 ,1 , 5.527 , 5.393 , New , 0.13 23 , 4073, 0 , , 5.56 , 5.417 , New , 0.14 24 , 0 , 0 ,0 , 5.434 , 4.158 , New , 1.28 24 , 0 , 0 ,1 , 5.525 , 4.134 , New , 1.39 24 , 0 , 0 , , 5.437 , 4.171 , New , 1.27 24 , 4072, 0 ,0 , 5.473 , 5.391 , New , 0.08 24 , 4072, 0 ,1 , 5.437 , 5.391 , New , 0.05 24 , 4072, 0 , , 5.466 , 5.433 , New , 0.03 25 , 0 , 0 ,0 , 5.43 , 4.143 , New , 1.29 25 , 0 , 0 ,1 , 5.429 , 4.139 , New , 1.29 25 , 0 , 0 , , 5.409 , 4.171 , New , 1.24 25 , 4071, 0 ,0 , 5.47 , 5.391 , New , 0.08 25 , 4071, 0 ,1 , 5.538 , 5.392 , New , 0.15 25 , 4071, 0 , , 5.533 , 5.422 , New , 0.11 26 , 0 , 0 ,0 , 5.435 , 4.139 , New , 1.3 26 , 0 , 0 ,1 , 5.496 , 4.139 , New , 1.36 26 , 0 , 0 , , 5.384 , 4.171 , New , 1.21 26 , 4070, 0 ,0 , 5.446 , 5.392 , New , 0.05 26 , 4070, 0 ,1 , 5.478 , 5.392 , New , 0.09 26 , 4070, 0 , , 5.53 , 5.421 , New , 0.11 27 , 0 , 0 ,0 , 5.496 , 4.146 , New , 1.35 27 , 0 , 0 ,1 , 5.499 , 4.144 , New , 1.35 27 , 0 , 0 , , 5.445 , 4.176 , New , 1.27 27 , 4069, 0 ,0 , 5.513 , 5.398 , New , 0.12 27 , 4069, 0 ,1 , 5.486 , 5.395 , New , 0.09 27 , 4069, 0 , , 5.446 , 5.425 , New , 0.02 28 , 0 , 0 ,0 , 5.431 , 4.158 , New , 1.27 28 , 0 , 0 ,1 , 5.465 , 4.139 , New , 1.33 28 , 0 , 0 , , 5.48 , 4.171 , New , 1.31 28 , 4068, 0 ,0 , 5.417 , 5.392 , New , 0.02 28 , 4068, 0 ,1 , 5.511 , 5.391 , New , 0.12 28 , 4068, 0 , , 5.415 , 5.453 , Cur , -0.04 29 , 0 , 0 ,0 , 5.502 , 4.139 , New , 1.36 29 , 0 , 0 ,1 , 5.451 , 4.139 , New , 1.31 29 , 0 , 0 , , 5.449 , 4.171 , New , 1.28 29 , 4067, 0 ,0 , 5.453 , 5.391 , New , 0.06 29 , 4067, 0 ,1 , 5.432 , 5.466 , Cur , -0.03 29 , 4067, 0 , , 5.467 , 5.432 , New , 0.03 30 , 0 , 0 ,0 , 5.498 , 4.139 , New , 1.36 30 , 0 , 0 ,1 , 5.476 , 4.159 , New , 1.32 30 , 0 , 0 , , 5.419 , 4.171 , New , 1.25 30 , 4066, 0 ,0 , 5.488 , 5.39 , New , 0.1 30 , 4066, 0 ,1 , 5.521 , 5.392 , New , 0.13 30 , 4066, 0 , , 5.442 , 5.427 , New , 0.02 31 , 0 , 0 ,0 , 5.441 , 4.142 , New , 1.3 31 , 0 , 0 ,1 , 5.479 , 4.139 , New , 1.34 31 , 0 , 0 , , 5.39 , 4.171 , New , 1.22 31 , 4065, 0 ,0 , 5.485 , 5.391 , New , 0.09 31 , 4065, 0 ,1 , 5.497 , 5.461 , New , 0.04 31 , 4065, 0 , , 5.421 , 5.47 , Cur , -0.05 33 , 0 , 0 ,0 , 4.832 , 3.524 , New , 1.31 33 , 0 , 0 ,1 , 4.886 , 3.52 , New , 1.37 33 , 0 , 0 , , 4.861 , 3.552 , New , 1.31 33 , 33 , 0 ,0 , 4.433 , 3.128 , New , 1.3 33 , 0 , 33 ,1 , 4.997 , 3.75 , New , 1.25 33 , 33 , 33 , , 4.997 , 3.761 , New , 1.24 65 , 0 , 0 ,0 , 6.562 , 4.794 , New , 1.77 65 , 0 , 0 ,1 , 6.559 , 4.827 , New , 1.73 65 , 0 , 0 , , 6.632 , 4.823 , New , 1.81 65 , 65 , 0 ,0 , 6.164 , 4.405 , New , 1.76 65 , 0 , 65 ,1 , 6.524 , 4.999 , New , 1.53 65 , 65 , 65 , , 6.696 , 4.998 , New , 1.7 97 , 0 , 0 ,0 , 6.61 , 4.848 , New , 1.76 97 , 0 , 0 ,1 , 6.608 , 4.856 , New , 1.75 97 , 0 , 0 , , 6.48 , 5.047 , New , 1.43 97 , 97 , 0 ,0 , 6.346 , 4.427 , New , 1.92 97 , 0 , 97 ,1 , 6.778 , 4.998 , New , 1.78 97 , 97 , 97 , , 6.779 , 5.172 , New , 1.61 129 , 0 , 0 ,0 , 8.512 , 8.092 , New , 0.42 129 , 0 , 0 ,1 , 8.607 , 8.055 , New , 0.55 129 , 0 , 0 , , 8.528 , 8.11 , New , 0.42 129 , 129 , 0 ,0 , 8.745 , 8.746 , Cur , -0.0 129 , 0 , 129 ,1 , 9.369 , 8.378 , New , 0.99 129 , 129 , 129 , , 9.369 , 9.369 , Eq , 0.0 161 , 0 , 0 ,0 , 8.468 , 8.138 , New , 0.33 161 , 0 , 0 ,1 , 8.533 , 8.118 , New , 0.41 161 , 0 , 0 , , 8.518 , 8.174 , New , 0.34 161 , 161 , 0 ,0 , 9.369 , 8.12 , New , 1.25 161 , 0 , 161 ,1 , 9.993 , 8.748 , New , 1.25 161 , 161 , 161 , , 9.993 , 9.381 , New , 0.61 193 , 0 , 0 ,0 , 8.439 , 8.067 , New , 0.37 193 , 0 , 0 ,1 , 8.533 , 8.053 , New , 0.48 193 , 0 , 0 , , 8.511 , 8.13 , New , 0.38 193 , 193 , 0 ,0 , 8.745 , 8.744 , New , 0.0 193 , 0 , 193 ,1 , 9.37 , 8.375 , New , 0.99 193 , 193 , 193 , , 9.368 , 9.368 , Eq , 0.0 225 , 0 , 0 ,0 , 8.467 , 8.08 , New , 0.39 225 , 0 , 0 ,1 , 8.578 , 8.091 , New , 0.49 225 , 0 , 0 , , 8.531 , 8.123 , New , 0.41 225 , 225 , 0 ,0 , 9.369 , 8.288 , New , 1.08 225 , 0 , 225 ,1 , 9.993 , 9.067 , New , 0.93 225 , 225 , 225 , , 9.993 , 9.704 , New , 0.29 257 , 0 , 0 ,0 , 11.108 , 8.546 , New , 2.56 257 , 0 , 0 ,1 , 11.099 , 8.492 , New , 2.61 257 , 0 , 0 , , 11.046 , 8.527 , New , 2.52 257 , 257 , 0 ,0 , 10.575 , 8.31 , New , 2.26 257 , 0 , 257 ,1 , 11.743 , 10.166 , New , 1.58 257 , 257 , 257 , , 11.321 , 8.977 , New , 2.34 289 , 0 , 0 ,0 , 11.369 , 9.177 , New , 2.19 289 , 0 , 0 ,1 , 11.519 , 9.155 , New , 2.36 289 , 0 , 0 , , 11.331 , 9.187 , New , 2.14 289 , 289 , 0 ,0 , 11.597 , 8.917 , New , 2.68 289 , 0 , 289 ,1 , 12.492 , 10.79 , New , 1.7 289 , 289 , 289 , , 11.555 , 9.613 , New , 1.94 321 , 0 , 0 ,0 , 11.969 , 10.689 , New , 1.28 321 , 0 , 0 ,1 , 12.06 , 10.721 , New , 1.34 321 , 0 , 0 , , 12.003 , 10.795 , New , 1.21 321 , 321 , 0 ,0 , 11.504 , 10.79 , New , 0.71 321 , 0 , 321 ,1 , 12.506 , 12.699 , Cur , -0.19 321 , 321 , 321 , , 12.027 , 11.887 , New , 0.14 353 , 0 , 0 ,0 , 14.359 , 10.707 , New , 3.65 353 , 0 , 0 ,1 , 14.41 , 10.767 , New , 3.64 353 , 0 , 0 , , 14.408 , 10.832 , New , 3.58 353 , 353 , 0 ,0 , 13.538 , 10.788 , New , 2.75 353 , 0 , 353 ,1 , 15.056 , 12.74 , New , 2.32 353 , 353 , 353 , , 14.895 , 11.916 , New , 2.98 32 , 7 , 2 ,0 , 4.376 , 3.129 , New , 1.25 32 , 0 , 0 ,1 , 3.621 , 3.171 , New , 0.45 32 , 0 , 0 , , 3.56 , 3.125 , New , 0.44 32 , 0 , 0 ,0 , 3.613 , 3.126 , New , 0.49 4 , 1 , 0 ,1 , 5.0 , 3.752 , New , 1.25 4 , 0 , 1 , , 4.631 , 4.373 , New , 0.26 4 , 1 , 1 ,0 , 4.72 , 4.372 , New , 0.35 32 , 1 , 0 ,1 , 4.538 , 3.126 , New , 1.41 32 , 0 , 1 , , 3.125 , 3.125 , Eq , 0.0 32 , 1 , 1 ,0 , 3.125 , 3.125 , Eq , 0.0 64 , 6 , 4 ,1 , 4.7 , 3.126 , New , 1.57 64 , 0 , 0 , , 4.908 , 3.579 , New , 1.33 64 , 0 , 0 ,0 , 4.888 , 3.535 , New , 1.35 64 , 0 , 0 ,1 , 4.827 , 3.538 , New , 1.29 8 , 2 , 0 , , 5.437 , 3.749 , New , 1.69 8 , 0 , 2 ,0 , 4.473 , 4.372 , New , 0.1 8 , 2 , 2 ,1 , 4.374 , 4.372 , New , 0.0 64 , 2 , 0 , , 4.533 , 3.126 , New , 1.41 64 , 0 , 2 ,0 , 4.998 , 3.751 , New , 1.25 64 , 2 , 2 ,1 , 5.011 , 3.75 , New , 1.26 128 , 5 , 6 , , 8.761 , 4.484 , New , 4.28 128 , 0 , 0 ,0 , 6.934 , 4.816 , New , 2.12 128 , 0 , 0 ,1 , 6.94 , 4.834 , New , 2.11 128 , 0 , 0 , , 6.953 , 4.847 , New , 2.11 16 , 3 , 0 ,0 , 5.005 , 3.749 , New , 1.26 16 , 0 , 3 ,1 , 4.546 , 4.373 , New , 0.17 16 , 3 , 3 , , 4.459 , 4.372 , New , 0.09 128 , 3 , 0 ,0 , 8.746 , 4.405 , New , 4.34 128 , 0 , 3 ,1 , 6.655 , 4.999 , New , 1.66 128 , 3 , 3 , , 6.667 , 4.999 , New , 1.67 256 , 4 , 8 ,0 , 8.863 , 8.762 , New , 0.1 256 , 0 , 0 ,1 , 8.21 , 7.234 , New , 0.98 256 , 0 , 0 , , 8.31 , 7.271 , New , 1.04 256 , 0 , 0 ,0 , 8.305 , 7.277 , New , 1.03 32 , 4 , 0 ,1 , 4.533 , 3.126 , New , 1.41 32 , 0 , 4 , , 3.125 , 3.126 , Cur , -0.0 32 , 4 , 4 ,0 , 3.125 , 3.125 , Eq , 0.0 256 , 4 , 0 ,1 , 8.745 , 8.122 , New , 0.62 256 , 0 , 4 , , 9.37 , 8.246 , New , 1.12 256 , 4 , 4 ,0 , 9.37 , 9.37 , Eq , 0.0 512 , 3 , 10 ,1 , 16.865 , 17.039 , Cur , -0.17 512 , 0 , 0 , , 16.194 , 12.452 , New , 3.74 512 , 0 , 0 ,0 , 16.261 , 12.786 , New , 3.47 512 , 0 , 0 ,1 , 16.202 , 12.685 , New , 3.52 64 , 5 , 0 , , 4.373 , 3.127 , New , 1.25 64 , 0 , 5 ,0 , 4.998 , 3.751 , New , 1.25 64 , 5 , 5 ,1 , 4.998 , 3.751 , New , 1.25 512 , 5 , 0 , , 16.256 , 15.1 , New , 1.16 512 , 0 , 5 ,0 , 17.499 , 15.702 , New , 1.8 512 , 5 , 5 ,1 , 16.674 , 14.132 , New , 2.54 1024, 2 , 12 , , 31.942 , 32.147 , Cur , -0.2 1024, 0 , 0 ,0 , 26.097 , 22.511 , New , 3.59 1024, 0 , 0 ,1 , 25.833 , 22.524 , New , 3.31 1024, 0 , 0 , , 25.876 , 22.558 , New , 3.32 128 , 6 , 0 ,0 , 8.718 , 4.459 , New , 4.26 128 , 0 , 6 ,1 , 6.55 , 5.053 , New , 1.5 128 , 6 , 6 , , 6.567 , 5.052 , New , 1.52 1024, 6 , 0 ,0 , 31.127 , 29.707 , New , 1.42 1024, 0 , 6 ,1 , 32.282 , 30.294 , New , 1.99 1024, 6 , 6 , , 26.176 , 24.136 , New , 2.04 2048, 1 , 14 ,0 , 61.447 , 60.972 , New , 0.48 2048, 0 , 0 ,1 , 46.732 , 41.878 , New , 4.85 2048, 0 , 0 , , 46.772 , 41.921 , New , 4.85 2048, 0 , 0 ,0 , 46.752 , 42.183 , New , 4.57 256 , 7 , 0 ,1 , 8.608 , 8.069 , New , 0.54 256 , 0 , 7 , , 9.224 , 8.068 , New , 1.16 256 , 7 , 7 ,0 , 9.223 , 9.165 , New , 0.06 2048, 7 , 0 ,1 , 59.901 , 58.841 , New , 1.06 2048, 0 , 7 , , 61.121 , 59.434 , New , 1.69 2048, 7 , 7 ,0 , 46.438 , 43.448 , New , 2.99 4096, 0 , 16 ,1 , 122.168 , 119.788 , New , 2.38 4096, 0 , 0 , , 104.497 , 91.785 , New , 12.71 4096, 0 , 0 ,0 , 104.382 , 92.07 , New , 12.31 4096, 0 , 0 ,1 , 104.364 , 91.905 , New , 12.46 512 , 8 , 0 , , 15.888 , 14.751 , New , 1.14 512 , 0 , 8 ,0 , 17.12 , 15.374 , New , 1.75 512 , 8 , 8 ,1 , 16.189 , 13.809 , New , 2.38 4096, 8 , 0 , , 121.734 , 119.523 , New , 2.21 4096, 0 , 8 ,0 , 122.988 , 120.46 , New , 2.53 4096, 8 , 8 ,1 , 104.393 , 93.971 , New , 10.42 1024, 9 , 0 , , 30.544 , 29.422 , New , 1.12 1024, 0 , 9 ,0 , 31.765 , 30.187 , New , 1.58 1024, 9 , 9 ,1 , 25.862 , 24.009 , New , 1.85 16 , 1 , 2 , , 4.608 , 4.054 , New , 0.55 16 , 1 , 2 ,0 , 4.51 , 4.058 , New , 0.45 16 , 1 , 2 ,1 , 4.639 , 4.085 , New , 0.55 32 , 2 , 4 , , 3.655 , 3.058 , New , 0.6 32 , 2 , 4 ,0 , 3.55 , 3.061 , New , 0.49 32 , 2 , 4 ,1 , 3.571 , 3.058 , New , 0.51 64 , 3 , 6 , , 4.787 , 3.443 , New , 1.34 64 , 3 , 6 ,0 , 4.872 , 3.502 , New , 1.37 64 , 3 , 6 ,1 , 4.839 , 3.48 , New , 1.36 128 , 4 , 8 , , 7.399 , 4.739 , New , 2.66 128 , 4 , 8 ,0 , 7.247 , 4.751 , New , 2.5 128 , 4 , 8 ,1 , 7.389 , 4.769 , New , 2.62 256 , 5 , 10 , , 9.468 , 9.042 , New , 0.43 256 , 5 , 10 ,0 , 9.455 , 9.023 , New , 0.43 256 , 5 , 10 ,1 , 9.642 , 9.073 , New , 0.57 512 , 6 , 12 , , 17.158 , 17.067 , New , 0.09 512 , 6 , 12 ,0 , 17.216 , 17.069 , New , 0.15 512 , 6 , 12 ,1 , 17.175 , 17.117 , New , 0.06 1024, 7 , 14 , , 31.918 , 31.75 , New , 0.17 1024, 7 , 14 ,0 , 31.851 , 31.702 , New , 0.15 1024, 7 , 14 ,1 , 31.823 , 31.764 , New , 0.06 2048, 8 , 16 , , 61.154 , 61.034 , New , 0.12 2048, 8 , 16 ,0 , 61.206 , 61.01 , New , 0.2 2048, 8 , 16 ,1 , 61.161 , 61.246 , Cur , -0.09 4096, 9 , 18 , , 123.544 , 122.486 , New , 1.06 4096, 9 , 18 ,0 , 123.325 , 122.613 , New , 0.71 4096, 9 , 18 ,1 , 123.404 , 122.507 , New , 0.9 33 , 33 , 0 , , 4.533 , 3.129 , New , 1.4 33 , 0 , 33 ,0 , 5.197 , 3.765 , New , 1.43 33 , 33 , 33 ,1 , 4.982 , 3.749 , New , 1.23 65 , 65 , 0 , , 6.852 , 4.404 , New , 2.45 65 , 0 , 65 ,0 , 7.351 , 4.999 , New , 2.35 65 , 65 , 65 ,1 , 7.02 , 4.998 , New , 2.02 97 , 97 , 0 , , 6.729 , 4.427 , New , 2.3 97 , 0 , 97 ,0 , 7.218 , 4.998 , New , 2.22 97 , 97 , 97 ,1 , 7.209 , 4.998 , New , 2.21 129 , 129 , 0 , , 9.345 , 8.745 , New , 0.6 129 , 0 , 129 ,0 , 10.473 , 8.376 , New , 2.1 129 , 129 , 129 ,1 , 9.956 , 9.369 , New , 0.59 161 , 161 , 0 , , 10.017 , 8.12 , New , 1.9 161 , 0 , 161 ,0 , 10.661 , 8.748 , New , 1.91 161 , 161 , 161 ,1 , 10.459 , 9.369 , New , 1.09 193 , 193 , 0 , , 9.323 , 8.744 , New , 0.58 193 , 0 , 193 ,0 , 10.276 , 8.376 , New , 1.9 193 , 193 , 193 ,1 , 10.006 , 9.369 , New , 0.64 225 , 225 , 0 , , 9.974 , 8.12 , New , 1.85 225 , 0 , 225 ,0 , 10.967 , 8.747 , New , 2.22 225 , 225 , 225 ,1 , 10.889 , 9.368 , New , 1.52 257 , 257 , 0 , , 10.959 , 8.128 , New , 2.83 257 , 0 , 257 ,0 , 12.032 , 9.994 , New , 2.04 257 , 257 , 257 ,1 , 11.426 , 8.899 , New , 2.53 289 , 289 , 0 , , 11.574 , 8.772 , New , 2.8 289 , 0 , 289 ,0 , 12.463 , 10.618 , New , 1.84 289 , 289 , 289 ,1 , 11.529 , 9.442 , New , 2.09 321 , 321 , 0 , , 12.172 , 10.62 , New , 1.55 321 , 0 , 321 ,0 , 12.455 , 12.509 , Cur , -0.05 321 , 321 , 321 ,1 , 12.122 , 11.684 , New , 0.44 353 , 353 , 0 , , 14.06 , 10.618 , New , 3.44 353 , 0 , 353 ,0 , 14.957 , 12.514 , New , 2.44 353 , 353 , 353 ,1 , 14.844 , 11.65 , New , 3.19 32 , 7 , 2 , , 4.535 , 3.128 , New , 1.41 4 , 1 , 0 ,0 , 5.01 , 3.749 , New , 1.26 4 , 0 , 1 ,1 , 4.543 , 4.373 , New , 0.17 4 , 1 , 1 , , 4.543 , 4.373 , New , 0.17 32 , 1 , 0 ,0 , 4.704 , 3.126 , New , 1.58 32 , 0 , 1 ,1 , 3.401 , 3.125 , New , 0.28 32 , 1 , 1 , , 3.328 , 3.125 , New , 0.2 64 , 6 , 4 ,0 , 4.374 , 3.126 , New , 1.25 8 , 2 , 0 ,1 , 5.257 , 3.749 , New , 1.51 8 , 0 , 2 , , 4.377 , 4.372 , New , 0.0 8 , 2 , 2 ,0 , 4.459 , 4.372 , New , 0.09 64 , 2 , 0 ,1 , 4.374 , 3.126 , New , 1.25 64 , 0 , 2 , , 4.998 , 3.751 , New , 1.25 64 , 2 , 2 ,0 , 4.998 , 3.75 , New , 1.25 128 , 5 , 6 ,1 , 9.321 , 4.426 , New , 4.89 16 , 3 , 0 , , 5.008 , 3.749 , New , 1.26 16 , 0 , 3 ,0 , 4.378 , 4.373 , New , 0.0 16 , 3 , 3 ,1 , 4.543 , 4.373 , New , 0.17 128 , 3 , 0 , , 9.321 , 4.405 , New , 4.92 128 , 0 , 3 ,0 , 7.192 , 4.999 , New , 2.19 128 , 3 , 3 ,1 , 7.268 , 4.998 , New , 2.27 256 , 4 , 8 , , 9.423 , 8.748 , New , 0.68 32 , 4 , 0 ,0 , 4.533 , 3.126 , New , 1.41 32 , 0 , 4 ,1 , 3.401 , 3.125 , New , 0.28 32 , 4 , 4 , , 3.329 , 3.125 , New , 0.2 256 , 4 , 0 ,0 , 9.422 , 8.122 , New , 1.3 256 , 0 , 4 ,1 , 10.336 , 8.385 , New , 1.95 256 , 4 , 4 , , 10.347 , 9.393 , New , 0.95 512 , 3 , 10 ,0 , 17.479 , 16.881 , New , 0.6 64 , 5 , 0 ,1 , 4.374 , 3.127 , New , 1.25 64 , 0 , 5 , , 4.999 , 3.751 , New , 1.25 64 , 5 , 5 ,0 , 4.998 , 3.75 , New , 1.25 512 , 5 , 0 ,1 , 17.111 , 14.99 , New , 2.12 512 , 0 , 5 , , 18.208 , 15.614 , New , 2.59 512 , 5 , 5 ,0 , 16.862 , 14.059 , New , 2.8 1024, 2 , 12 ,1 , 32.727 , 31.85 , New , 0.88 128 , 6 , 0 , , 9.32 , 4.39 , New , 4.93 128 , 0 , 6 ,0 , 7.284 , 4.981 , New , 2.3 128 , 6 , 6 ,1 , 7.182 , 4.981 , New , 2.2 1024, 6 , 0 , , 32.118 , 29.756 , New , 2.36 1024, 0 , 6 ,0 , 33.091 , 30.388 , New , 2.7 1024, 6 , 6 ,1 , 26.321 , 24.308 , New , 2.01 2048, 1 , 14 , , 62.156 , 60.93 , New , 1.23 256 , 7 , 0 ,0 , 9.246 , 7.944 , New , 1.3 256 , 0 , 7 ,1 , 10.143 , 8.07 , New , 2.07 256 , 7 , 7 , , 10.143 , 9.165 , New , 0.98 2048, 7 , 0 ,0 , 60.92 , 58.692 , New , 2.23 2048, 0 , 7 ,1 , 61.886 , 59.25 , New , 2.64 2048, 7 , 7 , , 46.498 , 43.415 , New , 3.08 4096, 0 , 16 ,0 , 122.847 , 120.089 , New , 2.76 512 , 8 , 0 ,1 , 16.574 , 14.665 , New , 1.91 512 , 0 , 8 , , 17.71 , 15.274 , New , 2.44 512 , 8 , 8 ,0 , 16.45 , 13.751 , New , 2.7 4096, 8 , 0 ,1 , 121.773 , 119.497 , New , 2.28 4096, 0 , 8 , , 123.615 , 120.279 , New , 3.34 4096, 8 , 8 ,0 , 107.077 , 93.907 , New , 13.17 1024, 9 , 0 ,1 , 31.148 , 29.324 , New , 1.82 1024, 0 , 9 , , 32.489 , 29.933 , New , 2.56 1024, 9 , 9 ,0 , 25.817 , 23.979 , New , 1.84 33 , 33 , 0 ,1 , 4.374 , 3.128 , New , 1.25 33 , 0 , 33 , , 4.998 , 3.763 , New , 1.24 33 , 33 , 33 ,0 , 4.997 , 3.75 , New , 1.25 65 , 65 , 0 ,1 , 6.054 , 4.694 , New , 1.36 65 , 0 , 65 , , 6.679 , 5.297 , New , 1.38 65 , 65 , 65 ,0 , 6.666 , 5.297 , New , 1.37 97 , 97 , 0 ,1 , 5.944 , 4.581 , New , 1.36 97 , 0 , 97 , , 6.871 , 5.173 , New , 1.7 97 , 97 , 97 ,0 , 6.553 , 4.999 , New , 1.55 129 , 129 , 0 ,1 , 9.12 , 8.746 , New , 0.37 129 , 0 , 129 , , 9.987 , 8.665 , New , 1.32 129 , 129 , 129 ,0 , 9.91 , 9.368 , New , 0.54 161 , 161 , 0 ,1 , 9.745 , 8.207 , New , 1.54 161 , 0 , 161 , , 10.372 , 8.939 , New , 1.43 161 , 161 , 161 ,0 , 10.371 , 9.383 , New , 0.99 193 , 193 , 0 ,1 , 8.942 , 8.758 , New , 0.18 193 , 0 , 193 , , 9.745 , 8.588 , New , 1.16 193 , 193 , 193 ,0 , 9.745 , 9.37 , New , 0.38 225 , 225 , 0 ,1 , 9.744 , 8.12 , New , 1.62 225 , 0 , 225 , , 10.691 , 8.755 , New , 1.94 225 , 225 , 225 ,0 , 10.691 , 9.369 , New , 1.32 257 , 257 , 0 ,1 , 10.59 , 8.469 , New , 2.12 257 , 0 , 257 , , 11.756 , 10.096 , New , 1.66 257 , 257 , 257 ,0 , 11.313 , 9.148 , New , 2.17 289 , 289 , 0 ,1 , 11.34 , 9.07 , New , 2.27 289 , 0 , 289 , , 12.492 , 10.707 , New , 1.79 289 , 289 , 289 ,0 , 11.503 , 9.588 , New , 1.92 321 , 321 , 0 ,1 , 11.718 , 10.796 , New , 0.92 321 , 0 , 321 , , 12.491 , 12.609 , Cur , -0.12 321 , 321 , 321 ,0 , 12.194 , 11.788 , New , 0.41 353 , 353 , 0 ,1 , 13.549 , 10.793 , New , 2.76 353 , 0 , 353 , , 14.99 , 12.632 , New , 2.36 353 , 353 , 353 ,0 , 14.868 , 11.713 , New , 3.16 32 , 7 , 2 ,1 , 4.375 , 3.129 , New , 1.25 4 , 1 , 0 , , 4.999 , 3.75 , New , 1.25 4 , 0 , 1 ,0 , 4.675 , 4.372 , New , 0.3 4 , 1 , 1 ,1 , 4.471 , 4.372 , New , 0.1 32 , 1 , 0 , , 4.561 , 3.127 , New , 1.43 32 , 0 , 1 ,0 , 3.125 , 3.125 , Eq , 0.0 32 , 1 , 1 ,1 , 3.124 , 3.125 , Cur , -0.0 64 , 6 , 4 , , 4.756 , 3.126 , New , 1.63 8 , 2 , 0 ,0 , 5.305 , 3.764 , New , 1.54 8 , 0 , 2 ,1 , 4.388 , 4.372 , New , 0.02 8 , 2 , 2 , , 4.373 , 4.372 , New , 0.0 64 , 2 , 0 ,0 , 4.758 , 3.126 , New , 1.63 64 , 0 , 2 ,1 , 5.012 , 3.751 , New , 1.26 64 , 2 , 2 , , 4.998 , 3.75 , New , 1.25 128 , 5 , 6 ,0 , 8.746 , 4.582 , New , 4.16 16 , 3 , 0 ,1 , 5.001 , 3.749 , New , 1.25 16 , 0 , 3 , , 4.476 , 4.373 , New , 0.1 16 , 3 , 3 ,0 , 4.797 , 4.373 , New , 0.42 128 , 3 , 0 ,1 , 8.746 , 4.562 , New , 4.18 128 , 0 , 3 , , 6.784 , 5.161 , New , 1.62 128 , 3 , 3 ,0 , 6.693 , 5.161 , New , 1.53 256 , 4 , 8 ,1 , 8.943 , 8.847 , New , 0.1 32 , 4 , 0 , , 4.959 , 3.442 , New , 1.52 32 , 0 , 4 ,0 , 3.125 , 3.125 , Eq , 0.0 32 , 4 , 4 ,1 , 3.124 , 3.124 , Eq , 0.0 256 , 4 , 0 , , 8.956 , 8.264 , New , 0.69 256 , 0 , 4 ,0 , 9.763 , 8.399 , New , 1.36 256 , 4 , 4 ,1 , 9.745 , 9.538 , New , 0.21 512 , 3 , 10 , , 17.067 , 17.211 , Cur , -0.14 64 , 5 , 0 ,0 , 4.755 , 3.318 , New , 1.44 64 , 0 , 5 ,1 , 5.188 , 3.752 , New , 1.44 64 , 5 , 5 , , 5.187 , 3.751 , New , 1.44 512 , 5 , 0 ,0 , 16.447 , 15.268 , New , 1.18 512 , 0 , 5 ,1 , 17.691 , 15.811 , New , 1.88 512 , 5 , 5 , , 16.785 , 14.212 , New , 2.57 1024, 2 , 12 ,0 , 32.155 , 32.311 , Cur , -0.16 128 , 6 , 0 ,1 , 8.883 , 4.535 , New , 4.35 128 , 0 , 6 , , 6.774 , 5.133 , New , 1.64 128 , 6 , 6 ,0 , 6.846 , 5.197 , New , 1.65 1024, 6 , 0 ,1 , 31.328 , 30.453 , New , 0.88 1024, 0 , 6 , , 32.814 , 30.876 , New , 1.94 1024, 6 , 6 ,0 , 26.456 , 24.519 , New , 1.94 2048, 1 , 14 ,1 , 61.675 , 61.5 , New , 0.17 256 , 7 , 0 , , 8.844 , 8.095 , New , 0.75 256 , 0 , 7 ,0 , 9.64 , 8.243 , New , 1.4 256 , 7 , 7 ,1 , 9.639 , 9.372 , New , 0.27 2048, 7 , 0 , , 60.436 , 59.127 , New , 1.31 2048, 0 , 7 ,0 , 61.769 , 59.425 , New , 2.34 2048, 7 , 7 ,1 , 46.635 , 43.63 , New , 3.0 4096, 0 , 16 , , 121.844 , 123.305 , Cur , -1.46 512 , 8 , 0 ,0 , 16.089 , 14.933 , New , 1.16 512 , 0 , 8 ,1 , 17.306 , 15.463 , New , 1.84 512 , 8 , 8 , , 16.383 , 13.905 , New , 2.48 4096, 8 , 0 ,0 , 121.263 , 119.66 , New , 1.6 4096, 0 , 8 ,1 , 124.039 , 120.479 , New , 3.56 4096, 8 , 8 , , 104.925 , 93.98 , New , 10.94 1024, 9 , 0 ,0 , 30.645 , 29.582 , New , 1.06 1024, 0 , 9 ,1 , 32.063 , 30.445 , New , 1.62 1024, 9 , 9 , , 25.784 , 24.224 , New , 1.56 New Wins: 309 Cur Wins: 12 Equals : 9 Results For Icelake memcmp-evex size, al1 , al2 ,res, Cur T , New T , Win , Dif 1 , 1 , 1 ,0 , 3.624 , 3.489 , New , 0.14 1 , 1 , 1 ,1 , 3.653 , 3.525 , New , 0.13 1 , 1 , 1 , , 3.622 , 3.513 , New , 0.11 2 , 2 , 2 ,0 , 4.366 , 3.35 , New , 1.02 2 , 2 , 2 ,1 , 4.215 , 3.429 , New , 0.79 2 , 2 , 2 , , 4.103 , 3.564 , New , 0.54 3 , 3 , 3 ,0 , 3.981 , 3.386 , New , 0.59 3 , 3 , 3 ,1 , 4.05 , 3.238 , New , 0.81 3 , 3 , 3 , , 4.041 , 3.247 , New , 0.79 4 , 4 , 4 ,0 , 4.739 , 3.158 , New , 1.58 4 , 4 , 4 ,1 , 4.682 , 3.15 , New , 1.53 4 , 4 , 4 , , 4.653 , 3.156 , New , 1.5 5 , 5 , 5 ,0 , 4.81 , 3.138 , New , 1.67 5 , 5 , 5 ,1 , 4.62 , 3.264 , New , 1.36 5 , 5 , 5 , , 4.709 , 3.166 , New , 1.54 6 , 6 , 6 ,0 , 4.869 , 3.163 , New , 1.71 6 , 6 , 6 ,1 , 4.804 , 3.15 , New , 1.65 6 , 6 , 6 , , 4.699 , 3.188 , New , 1.51 7 , 7 , 7 ,0 , 4.707 , 3.161 , New , 1.55 7 , 7 , 7 ,1 , 4.69 , 3.208 , New , 1.48 7 , 7 , 7 , , 4.712 , 3.197 , New , 1.51 8 , 8 , 8 ,0 , 4.13 , 3.18 , New , 0.95 8 , 8 , 8 ,1 , 4.045 , 3.173 , New , 0.87 8 , 8 , 8 , , 4.231 , 3.207 , New , 1.02 9 , 9 , 9 ,0 , 4.678 , 3.197 , New , 1.48 9 , 9 , 9 ,1 , 4.656 , 3.179 , New , 1.48 9 , 9 , 9 , , 4.631 , 3.202 , New , 1.43 10 , 10 , 10 ,0 , 4.756 , 3.272 , New , 1.48 10 , 10 , 10 ,1 , 4.83 , 3.215 , New , 1.62 10 , 10 , 10 , , 4.752 , 3.233 , New , 1.52 11 , 11 , 11 ,0 , 4.796 , 3.242 , New , 1.55 11 , 11 , 11 ,1 , 4.7 , 3.243 , New , 1.46 11 , 11 , 11 , , 4.872 , 3.258 , New , 1.61 12 , 12 , 12 ,0 , 4.803 , 3.246 , New , 1.56 12 , 12 , 12 ,1 , 4.744 , 3.246 , New , 1.5 12 , 12 , 12 , , 4.75 , 3.291 , New , 1.46 13 , 13 , 13 ,0 , 4.698 , 3.253 , New , 1.45 13 , 13 , 13 ,1 , 4.751 , 3.252 , New , 1.5 13 , 13 , 13 , , 4.762 , 3.291 , New , 1.47 14 , 14 , 14 ,0 , 4.902 , 3.276 , New , 1.63 14 , 14 , 14 ,1 , 4.855 , 3.244 , New , 1.61 14 , 14 , 14 , , 4.794 , 3.276 , New , 1.52 15 , 15 , 15 ,0 , 4.748 , 3.253 , New , 1.5 15 , 15 , 15 ,1 , 4.815 , 3.245 , New , 1.57 15 , 15 , 15 , , 4.678 , 3.282 , New , 1.4 16 , 16 , 16 ,0 , 4.708 , 3.229 , New , 1.48 16 , 16 , 16 ,1 , 4.692 , 3.235 , New , 1.46 16 , 16 , 16 , , 4.726 , 3.258 , New , 1.47 17 , 17 , 17 ,0 , 5.346 , 3.235 , New , 2.11 17 , 17 , 17 ,1 , 5.23 , 3.241 , New , 1.99 17 , 17 , 17 , , 5.268 , 3.27 , New , 2.0 18 , 18 , 18 ,0 , 5.351 , 3.204 , New , 2.15 18 , 18 , 18 ,1 , 5.458 , 3.229 , New , 2.23 18 , 18 , 18 , , 5.359 , 3.263 , New , 2.1 19 , 19 , 19 ,0 , 5.299 , 3.21 , New , 2.09 19 , 19 , 19 ,1 , 5.281 , 3.216 , New , 2.06 19 , 19 , 19 , , 5.279 , 3.281 , New , 2.0 20 , 20 , 20 ,0 , 5.127 , 3.23 , New , 1.9 20 , 20 , 20 ,1 , 5.337 , 3.244 , New , 2.09 20 , 20 , 20 , , 5.289 , 3.233 , New , 2.06 21 , 21 , 21 ,0 , 5.202 , 3.215 , New , 1.99 21 , 21 , 21 ,1 , 5.248 , 3.223 , New , 2.03 21 , 21 , 21 , , 5.247 , 3.249 , New , 2.0 22 , 22 , 22 ,0 , 5.249 , 3.192 , New , 2.06 22 , 22 , 22 ,1 , 5.188 , 3.23 , New , 1.96 22 , 22 , 22 , , 5.331 , 3.307 , New , 2.02 23 , 23 , 23 ,0 , 5.17 , 3.192 , New , 1.98 23 , 23 , 23 ,1 , 5.386 , 3.309 , New , 2.08 23 , 23 , 23 , , 5.23 , 3.21 , New , 2.02 24 , 24 , 24 ,0 , 5.286 , 3.193 , New , 2.09 24 , 24 , 24 ,1 , 5.177 , 3.19 , New , 1.99 24 , 24 , 24 , , 5.116 , 3.209 , New , 1.91 25 , 25 , 25 ,0 , 5.157 , 3.196 , New , 1.96 25 , 25 , 25 ,1 , 5.365 , 3.181 , New , 2.18 25 , 25 , 25 , , 5.159 , 3.213 , New , 1.95 26 , 26 , 26 ,0 , 5.113 , 3.204 , New , 1.91 26 , 26 , 26 ,1 , 5.211 , 3.193 , New , 2.02 26 , 26 , 26 , , 5.236 , 3.235 , New , 2.0 27 , 27 , 27 ,0 , 5.071 , 3.16 , New , 1.91 27 , 27 , 27 ,1 , 5.208 , 3.185 , New , 2.02 27 , 27 , 27 , , 5.266 , 3.209 , New , 2.06 28 , 28 , 28 ,0 , 5.162 , 3.138 , New , 2.02 28 , 28 , 28 ,1 , 5.113 , 3.148 , New , 1.97 28 , 28 , 28 , , 5.151 , 3.177 , New , 1.97 29 , 29 , 29 ,0 , 5.125 , 3.146 , New , 1.98 29 , 29 , 29 ,1 , 5.193 , 3.171 , New , 2.02 29 , 29 , 29 , , 5.215 , 3.155 , New , 2.06 30 , 30 , 30 ,0 , 4.997 , 3.131 , New , 1.87 30 , 30 , 30 ,1 , 5.074 , 3.166 , New , 1.91 30 , 30 , 30 , , 5.037 , 3.237 , New , 1.8 31 , 31 , 31 ,0 , 4.982 , 3.135 , New , 1.85 31 , 31 , 31 ,1 , 5.06 , 3.121 , New , 1.94 31 , 31 , 31 , , 4.966 , 3.192 , New , 1.77 1 , 0 , 0 ,0 , 3.34 , 3.312 , New , 0.03 1 , 0 , 0 ,1 , 3.306 , 3.327 , Cur , -0.02 1 , 0 , 0 , , 3.3 , 3.325 , Cur , -0.03 1 , 4095, 0 ,0 , 3.312 , 3.312 , Eq , 0.0 1 , 4095, 0 ,1 , 3.347 , 3.352 , Cur , -0.0 1 , 4095, 0 , , 3.33 , 3.312 , New , 0.02 2 , 0 , 0 ,0 , 3.872 , 3.109 , New , 0.76 2 , 0 , 0 ,1 , 3.873 , 3.136 , New , 0.74 2 , 0 , 0 , , 3.92 , 3.158 , New , 0.76 2 , 4094, 0 ,0 , 3.869 , 4.152 , Cur , -0.28 2 , 4094, 0 ,1 , 3.879 , 3.948 , Cur , -0.07 2 , 4094, 0 , , 3.904 , 4.011 , Cur , -0.11 3 , 0 , 0 ,0 , 4.073 , 3.139 , New , 0.93 3 , 0 , 0 ,1 , 3.901 , 3.136 , New , 0.76 3 , 0 , 0 , , 3.933 , 3.199 , New , 0.73 3 , 4093, 0 ,0 , 3.899 , 3.964 , Cur , -0.06 3 , 4093, 0 ,1 , 3.913 , 3.919 , Cur , -0.01 3 , 4093, 0 , , 3.897 , 4.002 , Cur , -0.1 4 , 0 , 0 ,0 , 4.606 , 3.077 , New , 1.53 4 , 0 , 0 ,1 , 4.587 , 3.079 , New , 1.51 4 , 0 , 0 , , 4.626 , 3.102 , New , 1.52 4 , 4092, 0 ,0 , 4.703 , 4.679 , New , 0.02 4 , 4092, 0 ,1 , 4.683 , 4.646 , New , 0.04 4 , 4092, 0 , , 4.663 , 4.639 , New , 0.02 5 , 0 , 0 ,0 , 4.712 , 3.156 , New , 1.56 5 , 0 , 0 ,1 , 4.695 , 3.144 , New , 1.55 5 , 0 , 0 , , 4.658 , 3.173 , New , 1.49 5 , 4091, 0 ,0 , 4.684 , 4.715 , Cur , -0.03 5 , 4091, 0 ,1 , 4.658 , 4.727 , Cur , -0.07 5 , 4091, 0 , , 4.686 , 4.675 , New , 0.01 6 , 0 , 0 ,0 , 4.763 , 3.159 , New , 1.6 6 , 0 , 0 ,1 , 4.663 , 3.169 , New , 1.49 6 , 0 , 0 , , 4.711 , 3.172 , New , 1.54 6 , 4090, 0 ,0 , 4.694 , 4.699 , Cur , -0.0 6 , 4090, 0 ,1 , 4.665 , 4.732 , Cur , -0.07 6 , 4090, 0 , , 4.719 , 4.662 , New , 0.06 7 , 0 , 0 ,0 , 4.746 , 3.211 , New , 1.54 7 , 0 , 0 ,1 , 4.707 , 3.168 , New , 1.54 7 , 0 , 0 , , 4.714 , 3.209 , New , 1.51 7 , 4089, 0 ,0 , 4.685 , 4.73 , Cur , -0.05 7 , 4089, 0 ,1 , 4.674 , 4.821 , Cur , -0.15 7 , 4089, 0 , , 4.721 , 4.81 , Cur , -0.09 8 , 0 , 0 ,0 , 4.275 , 3.178 , New , 1.1 8 , 0 , 0 ,1 , 4.07 , 3.149 , New , 0.92 8 , 0 , 0 , , 4.222 , 3.209 , New , 1.01 8 , 4088, 0 ,0 , 4.193 , 4.517 , Cur , -0.32 8 , 4088, 0 ,1 , 4.244 , 4.518 , Cur , -0.27 8 , 4088, 0 , , 4.187 , 4.526 , Cur , -0.34 9 , 0 , 0 ,0 , 4.931 , 3.246 , New , 1.69 9 , 0 , 0 ,1 , 4.748 , 3.198 , New , 1.55 9 , 0 , 0 , , 4.742 , 3.235 , New , 1.51 9 , 4087, 0 ,0 , 4.777 , 4.945 , Cur , -0.17 9 , 4087, 0 ,1 , 4.778 , 4.942 , Cur , -0.16 9 , 4087, 0 , , 4.779 , 4.972 , Cur , -0.19 10 , 0 , 0 ,0 , 4.693 , 3.216 , New , 1.48 10 , 0 , 0 ,1 , 4.959 , 3.255 , New , 1.7 10 , 0 , 0 , , 4.866 , 3.253 , New , 1.61 10 , 4086, 0 ,0 , 4.85 , 4.92 , Cur , -0.07 10 , 4086, 0 ,1 , 4.788 , 4.917 , Cur , -0.13 10 , 4086, 0 , , 4.777 , 4.95 , Cur , -0.17 11 , 0 , 0 ,0 , 4.787 , 3.226 , New , 1.56 11 , 0 , 0 ,1 , 4.73 , 3.203 , New , 1.53 11 , 0 , 0 , , 4.934 , 3.239 , New , 1.7 11 , 4085, 0 ,0 , 4.771 , 4.916 , Cur , -0.15 11 , 4085, 0 ,1 , 5.0 , 4.931 , New , 0.07 11 , 4085, 0 , , 4.76 , 4.982 , Cur , -0.22 12 , 0 , 0 ,0 , 4.694 , 3.219 , New , 1.48 12 , 0 , 0 ,1 , 4.642 , 3.209 , New , 1.43 12 , 0 , 0 , , 4.81 , 3.266 , New , 1.54 12 , 4084, 0 ,0 , 4.779 , 4.961 , Cur , -0.18 12 , 4084, 0 ,1 , 4.942 , 5.012 , Cur , -0.07 12 , 4084, 0 , , 4.745 , 5.005 , Cur , -0.26 13 , 0 , 0 ,0 , 4.66 , 3.216 , New , 1.44 13 , 0 , 0 ,1 , 4.689 , 3.244 , New , 1.44 13 , 0 , 0 , , 4.629 , 3.245 , New , 1.38 13 , 4083, 0 ,0 , 4.749 , 4.911 , Cur , -0.16 13 , 4083, 0 ,1 , 4.723 , 4.957 , Cur , -0.23 13 , 4083, 0 , , 4.782 , 4.989 , Cur , -0.21 14 , 0 , 0 ,0 , 4.799 , 3.198 , New , 1.6 14 , 0 , 0 ,1 , 4.852 , 3.204 , New , 1.65 14 , 0 , 0 , , 4.791 , 3.345 , New , 1.45 14 , 4082, 0 ,0 , 4.71 , 4.969 , Cur , -0.26 14 , 4082, 0 ,1 , 4.84 , 5.026 , Cur , -0.19 14 , 4082, 0 , , 4.788 , 4.971 , Cur , -0.18 15 , 0 , 0 ,0 , 4.623 , 3.198 , New , 1.43 15 , 0 , 0 ,1 , 4.826 , 3.242 , New , 1.58 15 , 0 , 0 , , 4.85 , 3.238 , New , 1.61 15 , 4081, 0 ,0 , 4.798 , 4.932 , Cur , -0.13 15 , 4081, 0 ,1 , 4.801 , 4.916 , Cur , -0.12 15 , 4081, 0 , , 4.817 , 5.039 , Cur , -0.22 16 , 0 , 0 ,0 , 4.569 , 3.159 , New , 1.41 16 , 0 , 0 ,1 , 4.609 , 3.171 , New , 1.44 16 , 0 , 0 , , 4.675 , 3.184 , New , 1.49 16 , 4080, 0 ,0 , 4.758 , 4.921 , Cur , -0.16 16 , 4080, 0 ,1 , 4.694 , 4.886 , Cur , -0.19 16 , 4080, 0 , , 4.669 , 4.934 , Cur , -0.27 17 , 0 , 0 ,0 , 5.142 , 3.191 , New , 1.95 17 , 0 , 0 ,1 , 5.272 , 3.223 , New , 2.05 17 , 0 , 0 , , 5.29 , 3.255 , New , 2.04 17 , 4079, 0 ,0 , 5.249 , 4.911 , New , 0.34 17 , 4079, 0 ,1 , 5.302 , 4.99 , New , 0.31 17 , 4079, 0 , , 5.314 , 4.99 , New , 0.32 18 , 0 , 0 ,0 , 5.237 , 3.35 , New , 1.89 18 , 0 , 0 ,1 , 5.258 , 3.204 , New , 2.05 18 , 0 , 0 , , 5.3 , 3.252 , New , 2.05 18 , 4078, 0 ,0 , 5.311 , 4.972 , New , 0.34 18 , 4078, 0 ,1 , 5.437 , 4.914 , New , 0.52 18 , 4078, 0 , , 5.276 , 4.997 , New , 0.28 19 , 0 , 0 ,0 , 5.274 , 3.245 , New , 2.03 19 , 0 , 0 ,1 , 5.379 , 3.192 , New , 2.19 19 , 0 , 0 , , 5.194 , 3.225 , New , 1.97 19 , 4077, 0 ,0 , 5.307 , 4.939 , New , 0.37 19 , 4077, 0 ,1 , 5.208 , 4.935 , New , 0.27 19 , 4077, 0 , , 5.273 , 4.978 , New , 0.29 20 , 0 , 0 ,0 , 5.324 , 3.21 , New , 2.11 20 , 0 , 0 ,1 , 5.281 , 3.234 , New , 2.05 20 , 0 , 0 , , 5.208 , 3.221 , New , 1.99 20 , 4076, 0 ,0 , 5.186 , 4.919 , New , 0.27 20 , 4076, 0 ,1 , 5.354 , 4.903 , New , 0.45 20 , 4076, 0 , , 5.155 , 5.018 , New , 0.14 21 , 0 , 0 ,0 , 5.268 , 3.233 , New , 2.03 21 , 0 , 0 ,1 , 5.216 , 3.207 , New , 2.01 21 , 0 , 0 , , 5.136 , 3.209 , New , 1.93 21 , 4075, 0 ,0 , 5.199 , 4.892 , New , 0.31 21 , 4075, 0 ,1 , 5.255 , 4.942 , New , 0.31 21 , 4075, 0 , , 5.236 , 4.931 , New , 0.3 22 , 0 , 0 ,0 , 5.423 , 3.23 , New , 2.19 22 , 0 , 0 ,1 , 5.211 , 3.186 , New , 2.03 22 , 0 , 0 , , 5.313 , 3.257 , New , 2.06 22 , 4074, 0 ,0 , 5.163 , 4.89 , New , 0.27 22 , 4074, 0 ,1 , 5.275 , 4.89 , New , 0.39 22 , 4074, 0 , , 5.226 , 4.936 , New , 0.29 23 , 0 , 0 ,0 , 5.205 , 3.161 , New , 2.04 23 , 0 , 0 ,1 , 5.358 , 3.202 , New , 2.16 23 , 0 , 0 , , 5.231 , 3.185 , New , 2.05 23 , 4073, 0 ,0 , 5.226 , 4.861 , New , 0.37 23 , 4073, 0 ,1 , 5.145 , 4.861 , New , 0.28 23 , 4073, 0 , , 5.224 , 4.926 , New , 0.3 24 , 0 , 0 ,0 , 5.251 , 3.162 , New , 2.09 24 , 0 , 0 ,1 , 5.251 , 3.178 , New , 2.07 24 , 0 , 0 , , 5.147 , 3.225 , New , 1.92 24 , 4072, 0 ,0 , 5.28 , 4.853 , New , 0.43 24 , 4072, 0 ,1 , 5.237 , 4.83 , New , 0.41 24 , 4072, 0 , , 5.285 , 4.931 , New , 0.35 25 , 0 , 0 ,0 , 5.198 , 3.156 , New , 2.04 25 , 0 , 0 ,1 , 5.139 , 3.147 , New , 1.99 25 , 0 , 0 , , 5.064 , 3.195 , New , 1.87 25 , 4071, 0 ,0 , 5.155 , 4.812 , New , 0.34 25 , 4071, 0 ,1 , 5.101 , 4.804 , New , 0.3 25 , 4071, 0 , , 5.228 , 4.832 , New , 0.4 26 , 0 , 0 ,0 , 5.129 , 3.152 , New , 1.98 26 , 0 , 0 ,1 , 5.213 , 3.152 , New , 2.06 26 , 0 , 0 , , 5.113 , 3.19 , New , 1.92 26 , 4070, 0 ,0 , 5.118 , 4.825 , New , 0.29 26 , 4070, 0 ,1 , 5.167 , 4.905 , New , 0.26 26 , 4070, 0 , , 5.237 , 4.869 , New , 0.37 27 , 0 , 0 ,0 , 5.146 , 3.151 , New , 2.0 27 , 0 , 0 ,1 , 5.233 , 3.19 , New , 2.04 27 , 0 , 0 , , 5.147 , 3.185 , New , 1.96 27 , 4069, 0 ,0 , 5.168 , 4.786 , New , 0.38 27 , 4069, 0 ,1 , 5.193 , 4.813 , New , 0.38 27 , 4069, 0 , , 4.975 , 4.805 , New , 0.17 28 , 0 , 0 ,0 , 5.144 , 3.11 , New , 2.03 28 , 0 , 0 ,1 , 5.1 , 3.123 , New , 1.98 28 , 0 , 0 , , 5.196 , 3.15 , New , 2.05 28 , 4068, 0 ,0 , 5.084 , 4.77 , New , 0.31 28 , 4068, 0 ,1 , 5.169 , 4.843 , New , 0.33 28 , 4068, 0 , , 5.259 , 4.788 , New , 0.47 29 , 0 , 0 ,0 , 5.151 , 3.108 , New , 2.04 29 , 0 , 0 ,1 , 5.031 , 3.11 , New , 1.92 29 , 0 , 0 , , 5.155 , 3.243 , New , 1.91 29 , 4067, 0 ,0 , 4.931 , 4.764 , New , 0.17 29 , 4067, 0 ,1 , 5.137 , 4.772 , New , 0.36 29 , 4067, 0 , , 5.147 , 4.815 , New , 0.33 30 , 0 , 0 ,0 , 4.949 , 3.151 , New , 1.8 30 , 0 , 0 ,1 , 5.215 , 3.099 , New , 2.12 30 , 0 , 0 , , 5.176 , 3.126 , New , 2.05 30 , 4066, 0 ,0 , 5.206 , 4.768 , New , 0.44 30 , 4066, 0 ,1 , 5.23 , 4.778 , New , 0.45 30 , 4066, 0 , , 5.124 , 4.78 , New , 0.34 31 , 0 , 0 ,0 , 5.044 , 3.109 , New , 1.93 31 , 0 , 0 ,1 , 5.029 , 3.122 , New , 1.91 31 , 0 , 0 , , 4.955 , 3.154 , New , 1.8 31 , 4065, 0 ,0 , 5.038 , 4.716 , New , 0.32 31 , 4065, 0 ,1 , 5.441 , 4.722 , New , 0.72 31 , 4065, 0 , , 5.176 , 4.797 , New , 0.38 33 , 0 , 0 ,0 , 4.202 , 3.677 , New , 0.52 33 , 0 , 0 ,1 , 4.273 , 3.64 , New , 0.63 33 , 0 , 0 , , 4.221 , 3.668 , New , 0.55 33 , 33 , 0 ,0 , 3.835 , 3.257 , New , 0.58 33 , 0 , 33 ,1 , 4.444 , 3.826 , New , 0.62 33 , 33 , 33 , , 4.562 , 3.833 , New , 0.73 65 , 0 , 0 ,0 , 6.092 , 4.234 , New , 1.86 65 , 0 , 0 ,1 , 6.027 , 4.285 , New , 1.74 65 , 0 , 0 , , 6.041 , 4.413 , New , 1.63 65 , 65 , 0 ,0 , 6.382 , 3.868 , New , 2.51 65 , 0 , 65 ,1 , 5.827 , 4.456 , New , 1.37 65 , 65 , 65 , , 6.199 , 4.533 , New , 1.67 97 , 0 , 0 ,0 , 6.024 , 4.265 , New , 1.76 97 , 0 , 0 ,1 , 6.314 , 4.32 , New , 1.99 97 , 0 , 0 , , 6.238 , 4.309 , New , 1.93 97 , 97 , 0 ,0 , 5.919 , 4.207 , New , 1.71 97 , 0 , 97 ,1 , 6.056 , 4.404 , New , 1.65 97 , 97 , 97 , , 6.144 , 4.382 , New , 1.76 129 , 0 , 0 ,0 , 7.364 , 7.013 , New , 0.35 129 , 0 , 0 ,1 , 7.436 , 7.065 , New , 0.37 129 , 0 , 0 , , 7.397 , 7.068 , New , 0.33 129 , 129 , 0 ,0 , 7.791 , 7.548 , New , 0.24 129 , 0 , 129 ,1 , 8.249 , 7.412 , New , 0.84 129 , 129 , 129 , , 8.278 , 8.277 , New , 0.0 161 , 0 , 0 ,0 , 7.377 , 7.031 , New , 0.35 161 , 0 , 0 ,1 , 7.474 , 6.99 , New , 0.48 161 , 0 , 0 , , 7.376 , 7.058 , New , 0.32 161 , 161 , 0 ,0 , 8.127 , 7.031 , New , 1.1 161 , 0 , 161 ,1 , 8.714 , 7.618 , New , 1.1 161 , 161 , 161 , , 8.697 , 8.126 , New , 0.57 193 , 0 , 0 ,0 , 7.246 , 6.934 , New , 0.31 193 , 0 , 0 ,1 , 7.417 , 6.922 , New , 0.5 193 , 0 , 0 , , 7.231 , 7.059 , New , 0.17 193 , 193 , 0 ,0 , 7.587 , 7.647 , Cur , -0.06 193 , 0 , 193 ,1 , 8.168 , 7.275 , New , 0.89 193 , 193 , 193 , , 8.358 , 8.08 , New , 0.28 225 , 0 , 0 ,0 , 7.157 , 7.078 , New , 0.08 225 , 0 , 0 ,1 , 7.411 , 7.003 , New , 0.41 225 , 0 , 0 , , 7.263 , 7.097 , New , 0.17 225 , 225 , 0 ,0 , 8.206 , 7.141 , New , 1.06 225 , 0 , 225 ,1 , 8.706 , 7.657 , New , 1.05 225 , 225 , 225 , , 8.698 , 8.23 , New , 0.47 257 , 0 , 0 ,0 , 9.479 , 7.259 , New , 2.22 257 , 0 , 0 ,1 , 9.548 , 7.205 , New , 2.34 257 , 0 , 0 , , 9.673 , 7.266 , New , 2.41 257 , 257 , 0 ,0 , 9.255 , 7.342 , New , 1.91 257 , 0 , 257 ,1 , 10.109 , 8.759 , New , 1.35 257 , 257 , 257 , , 9.788 , 7.751 , New , 2.04 289 , 0 , 0 ,0 , 9.213 , 7.788 , New , 1.42 289 , 0 , 0 ,1 , 9.301 , 7.827 , New , 1.47 289 , 0 , 0 , , 9.417 , 7.884 , New , 1.53 289 , 289 , 0 ,0 , 8.902 , 7.676 , New , 1.23 289 , 0 , 289 ,1 , 10.727 , 9.28 , New , 1.45 289 , 289 , 289 , , 9.598 , 8.302 , New , 1.3 321 , 0 , 0 ,0 , 9.955 , 9.346 , New , 0.61 321 , 0 , 0 ,1 , 10.028 , 9.294 , New , 0.73 321 , 0 , 0 , , 9.97 , 9.373 , New , 0.6 321 , 321 , 0 ,0 , 9.839 , 9.146 , New , 0.69 321 , 0 , 321 ,1 , 10.899 , 10.874 , New , 0.02 321 , 321 , 321 , , 10.225 , 10.133 , New , 0.09 353 , 0 , 0 ,0 , 12.481 , 9.302 , New , 3.18 353 , 0 , 0 ,1 , 12.512 , 9.337 , New , 3.18 353 , 0 , 0 , , 12.303 , 9.388 , New , 2.92 353 , 353 , 0 ,0 , 11.275 , 9.239 , New , 2.04 353 , 0 , 353 ,1 , 12.997 , 10.91 , New , 2.09 353 , 353 , 353 , , 12.742 , 10.158 , New , 2.58 32 , 7 , 2 ,0 , 3.876 , 3.249 , New , 0.63 32 , 0 , 0 ,1 , 3.456 , 3.278 , New , 0.18 32 , 0 , 0 , , 3.469 , 3.284 , New , 0.19 32 , 0 , 0 ,0 , 3.495 , 3.295 , New , 0.2 4 , 1 , 0 ,1 , 4.928 , 2.762 , New , 2.17 4 , 0 , 1 , , 4.409 , 3.399 , New , 1.01 4 , 1 , 1 ,0 , 4.379 , 3.303 , New , 1.08 32 , 1 , 0 ,1 , 3.835 , 3.305 , New , 0.53 32 , 0 , 1 , , 3.303 , 3.304 , Cur , -0.0 32 , 1 , 1 ,0 , 3.286 , 3.252 , New , 0.03 64 , 6 , 4 ,1 , 3.854 , 3.333 , New , 0.52 64 , 0 , 0 , , 4.196 , 3.658 , New , 0.54 64 , 0 , 0 ,0 , 4.249 , 3.678 , New , 0.57 64 , 0 , 0 ,1 , 4.204 , 3.715 , New , 0.49 8 , 2 , 0 , , 4.138 , 2.74 , New , 1.4 8 , 0 , 2 ,0 , 3.856 , 3.32 , New , 0.54 8 , 2 , 2 ,1 , 3.947 , 3.285 , New , 0.66 64 , 2 , 0 , , 3.854 , 3.287 , New , 0.57 64 , 0 , 2 ,0 , 4.404 , 3.882 , New , 0.52 64 , 2 , 2 ,1 , 4.432 , 3.864 , New , 0.57 128 , 5 , 6 , , 7.814 , 4.042 , New , 3.77 128 , 0 , 0 ,0 , 6.12 , 4.321 , New , 1.8 128 , 0 , 0 ,1 , 6.102 , 4.266 , New , 1.84 128 , 0 , 0 , , 6.12 , 4.28 , New , 1.84 16 , 3 , 0 ,0 , 4.662 , 2.684 , New , 1.98 16 , 0 , 3 ,1 , 4.404 , 3.388 , New , 1.02 16 , 3 , 3 , , 4.462 , 3.269 , New , 1.19 128 , 3 , 0 ,0 , 7.706 , 3.985 , New , 3.72 128 , 0 , 3 ,1 , 5.901 , 4.592 , New , 1.31 128 , 3 , 3 , , 5.809 , 4.479 , New , 1.33 256 , 4 , 8 ,0 , 7.724 , 7.561 , New , 0.16 256 , 0 , 0 ,1 , 7.369 , 6.514 , New , 0.85 256 , 0 , 0 , , 7.163 , 6.615 , New , 0.55 256 , 0 , 0 ,0 , 7.319 , 6.498 , New , 0.82 32 , 4 , 0 ,1 , 3.781 , 3.222 , New , 0.56 32 , 0 , 4 , , 3.336 , 3.22 , New , 0.12 32 , 4 , 4 ,0 , 3.235 , 3.252 , Cur , -0.02 256 , 4 , 0 ,1 , 7.712 , 6.997 , New , 0.71 256 , 0 , 4 , , 8.09 , 7.273 , New , 0.82 256 , 4 , 4 ,0 , 8.155 , 8.868 , Cur , -0.71 512 , 3 , 10 ,1 , 14.53 , 14.576 , Cur , -0.05 512 , 0 , 0 , , 14.013 , 11.124 , New , 2.89 512 , 0 , 0 ,0 , 13.87 , 10.918 , New , 2.95 512 , 0 , 0 ,1 , 13.855 , 11.298 , New , 2.56 64 , 5 , 0 , , 3.836 , 3.22 , New , 0.62 64 , 0 , 5 ,0 , 4.382 , 3.756 , New , 0.63 64 , 5 , 5 ,1 , 4.382 , 3.755 , New , 0.63 512 , 5 , 0 , , 14.074 , 13.056 , New , 1.02 512 , 0 , 5 ,0 , 15.418 , 13.448 , New , 1.97 512 , 5 , 5 ,1 , 13.931 , 12.165 , New , 1.77 1024, 2 , 12 , , 27.063 , 26.964 , New , 0.1 1024, 0 , 0 ,0 , 22.229 , 19.258 , New , 2.97 1024, 0 , 0 ,1 , 22.249 , 19.276 , New , 2.97 1024, 0 , 0 , , 22.139 , 19.236 , New , 2.9 128 , 6 , 0 ,0 , 7.548 , 3.858 , New , 3.69 128 , 0 , 6 ,1 , 5.821 , 4.595 , New , 1.23 128 , 6 , 6 , , 5.844 , 4.431 , New , 1.41 1024, 6 , 0 ,0 , 26.642 , 25.261 , New , 1.38 1024, 0 , 6 ,1 , 27.498 , 25.587 , New , 1.91 1024, 6 , 6 , , 22.966 , 20.443 , New , 2.52 2048, 1 , 14 ,0 , 51.684 , 51.199 , New , 0.48 2048, 0 , 0 ,1 , 39.728 , 35.987 , New , 3.74 2048, 0 , 0 , , 39.537 , 35.86 , New , 3.68 2048, 0 , 0 ,0 , 39.764 , 36.714 , New , 3.05 256 , 7 , 0 ,1 , 7.6 , 6.973 , New , 0.63 256 , 0 , 7 , , 8.281 , 7.107 , New , 1.17 256 , 7 , 7 ,0 , 8.152 , 8.128 , New , 0.02 2048, 7 , 0 ,1 , 51.052 , 49.548 , New , 1.5 2048, 0 , 7 , , 52.5 , 49.921 , New , 2.58 2048, 7 , 7 ,0 , 39.93 , 38.448 , New , 1.48 4096, 0 , 16 ,1 , 103.145 , 101.41 , New , 1.73 4096, 0 , 0 , , 88.809 , 78.128 , New , 10.68 4096, 0 , 0 ,0 , 88.19 , 78.126 , New , 10.06 4096, 0 , 0 ,1 , 87.958 , 78.164 , New , 9.79 512 , 8 , 0 , , 14.322 , 13.155 , New , 1.17 512 , 0 , 8 ,0 , 15.104 , 13.567 , New , 1.54 512 , 8 , 8 ,1 , 14.029 , 12.597 , New , 1.43 4096, 8 , 0 , , 102.813 , 100.915 , New , 1.9 4096, 0 , 8 ,0 , 104.097 , 103.022 , New , 1.07 4096, 8 , 8 ,1 , 88.112 , 79.695 , New , 8.42 1024, 9 , 0 , , 26.435 , 25.534 , New , 0.9 1024, 0 , 9 ,0 , 27.609 , 26.107 , New , 1.5 1024, 9 , 9 ,1 , 22.365 , 20.783 , New , 1.58 16 , 1 , 2 , , 4.437 , 3.027 , New , 1.41 16 , 1 , 2 ,0 , 4.466 , 3.022 , New , 1.44 16 , 1 , 2 ,1 , 4.495 , 3.057 , New , 1.44 32 , 2 , 4 , , 3.466 , 3.253 , New , 0.21 32 , 2 , 4 ,0 , 3.458 , 3.243 , New , 0.22 32 , 2 , 4 ,1 , 3.47 , 3.249 , New , 0.22 64 , 3 , 6 , , 4.21 , 3.611 , New , 0.6 64 , 3 , 6 ,0 , 4.222 , 3.687 , New , 0.54 64 , 3 , 6 ,1 , 4.213 , 3.646 , New , 0.57 128 , 4 , 8 , , 6.564 , 4.347 , New , 2.22 128 , 4 , 8 ,0 , 6.422 , 4.393 , New , 2.03 128 , 4 , 8 ,1 , 6.526 , 4.367 , New , 2.16 256 , 5 , 10 , , 7.949 , 8.145 , Cur , -0.2 256 , 5 , 10 ,0 , 7.917 , 8.03 , Cur , -0.11 256 , 5 , 10 ,1 , 7.972 , 8.102 , Cur , -0.13 512 , 6 , 12 , , 14.915 , 14.829 , New , 0.09 512 , 6 , 12 ,0 , 14.904 , 14.957 , Cur , -0.05 512 , 6 , 12 ,1 , 14.838 , 14.869 , Cur , -0.03 1024, 7 , 14 , , 27.427 , 27.208 , New , 0.22 1024, 7 , 14 ,0 , 27.635 , 27.474 , New , 0.16 1024, 7 , 14 ,1 , 27.537 , 27.639 , Cur , -0.1 2048, 8 , 16 , , 52.298 , 51.989 , New , 0.31 2048, 8 , 16 ,0 , 52.398 , 52.089 , New , 0.31 2048, 8 , 16 ,1 , 52.222 , 51.96 , New , 0.26 4096, 9 , 18 , , 104.757 , 103.877 , New , 0.88 4096, 9 , 18 ,0 , 104.667 , 103.523 , New , 1.14 4096, 9 , 18 ,1 , 104.441 , 103.636 , New , 0.81 33 , 33 , 0 , , 3.875 , 3.279 , New , 0.6 33 , 0 , 33 ,0 , 4.505 , 3.836 , New , 0.67 33 , 33 , 33 ,1 , 4.381 , 3.8 , New , 0.58 65 , 65 , 0 , , 5.916 , 3.858 , New , 2.06 65 , 0 , 65 ,0 , 6.286 , 4.484 , New , 1.8 65 , 65 , 65 ,1 , 5.977 , 4.484 , New , 1.49 97 , 97 , 0 , , 5.997 , 3.955 , New , 2.04 97 , 0 , 97 ,0 , 6.255 , 4.48 , New , 1.77 97 , 97 , 97 ,1 , 6.187 , 4.37 , New , 1.82 129 , 129 , 0 , , 7.813 , 7.626 , New , 0.19 129 , 0 , 129 ,0 , 8.377 , 7.364 , New , 1.01 129 , 129 , 129 ,1 , 8.255 , 8.289 , Cur , -0.03 161 , 161 , 0 , , 8.372 , 6.972 , New , 1.4 161 , 0 , 161 ,0 , 8.858 , 7.571 , New , 1.29 161 , 161 , 161 ,1 , 8.831 , 8.093 , New , 0.74 193 , 193 , 0 , , 7.622 , 7.693 , Cur , -0.07 193 , 0 , 193 ,0 , 8.139 , 7.428 , New , 0.71 193 , 193 , 193 ,1 , 8.294 , 8.105 , New , 0.19 225 , 225 , 0 , , 8.363 , 7.269 , New , 1.09 225 , 0 , 225 ,0 , 8.741 , 7.877 , New , 0.86 225 , 225 , 225 ,1 , 8.749 , 8.501 , New , 0.25 257 , 257 , 0 , , 9.234 , 7.232 , New , 2.0 257 , 0 , 257 ,0 , 10.178 , 8.878 , New , 1.3 257 , 257 , 257 ,1 , 9.972 , 7.902 , New , 2.07 289 , 289 , 0 , , 9.138 , 7.721 , New , 1.42 289 , 0 , 289 ,0 , 10.929 , 9.328 , New , 1.6 289 , 289 , 289 ,1 , 9.919 , 8.321 , New , 1.6 321 , 321 , 0 , , 9.716 , 9.383 , New , 0.33 321 , 0 , 321 ,0 , 11.072 , 11.033 , New , 0.04 321 , 321 , 321 ,1 , 10.381 , 10.193 , New , 0.19 353 , 353 , 0 , , 11.622 , 9.319 , New , 2.3 353 , 0 , 353 ,0 , 13.445 , 11.063 , New , 2.38 353 , 353 , 353 ,1 , 12.924 , 10.366 , New , 2.56 32 , 7 , 2 , , 3.876 , 3.26 , New , 0.62 4 , 1 , 0 ,0 , 4.98 , 2.733 , New , 2.25 4 , 0 , 1 ,1 , 4.405 , 3.278 , New , 1.13 4 , 1 , 1 , , 4.526 , 3.277 , New , 1.25 32 , 1 , 0 ,0 , 3.886 , 3.28 , New , 0.61 32 , 0 , 1 ,1 , 3.348 , 3.31 , New , 0.04 32 , 1 , 1 , , 3.348 , 3.297 , New , 0.05 64 , 6 , 4 ,0 , 3.876 , 3.32 , New , 0.56 8 , 2 , 0 ,1 , 4.431 , 2.783 , New , 1.65 8 , 0 , 2 , , 3.968 , 3.338 , New , 0.63 8 , 2 , 2 ,0 , 4.122 , 3.318 , New , 0.8 64 , 2 , 0 ,1 , 3.895 , 3.339 , New , 0.56 64 , 0 , 2 , , 4.45 , 3.894 , New , 0.56 64 , 2 , 2 ,0 , 4.45 , 3.824 , New , 0.63 128 , 5 , 6 ,1 , 7.807 , 3.923 , New , 3.88 16 , 3 , 0 , , 4.713 , 2.717 , New , 2.0 16 , 0 , 3 ,0 , 4.404 , 3.259 , New , 1.15 16 , 3 , 3 ,1 , 4.426 , 3.239 , New , 1.19 128 , 3 , 0 , , 7.821 , 3.93 , New , 3.89 128 , 0 , 3 ,0 , 6.051 , 4.583 , New , 1.47 128 , 3 , 3 ,1 , 6.172 , 4.444 , New , 1.73 256 , 4 , 8 , , 7.804 , 7.576 , New , 0.23 32 , 4 , 0 ,0 , 3.814 , 3.22 , New , 0.59 32 , 0 , 4 ,1 , 3.31 , 3.259 , New , 0.05 32 , 4 , 4 , , 3.283 , 3.238 , New , 0.04 256 , 4 , 0 ,0 , 7.659 , 6.973 , New , 0.69 256 , 0 , 4 ,1 , 8.152 , 7.334 , New , 0.82 256 , 4 , 4 , , 8.198 , 8.044 , New , 0.15 512 , 3 , 10 ,0 , 14.722 , 14.692 , New , 0.03 64 , 5 , 0 ,1 , 3.855 , 3.239 , New , 0.62 64 , 0 , 5 , , 4.404 , 3.778 , New , 0.63 64 , 5 , 5 ,0 , 4.404 , 3.778 , New , 0.63 512 , 5 , 0 ,1 , 13.982 , 13.377 , New , 0.6 512 , 0 , 5 , , 15.136 , 13.492 , New , 1.64 512 , 5 , 5 ,0 , 14.028 , 11.994 , New , 2.03 1024, 2 , 12 ,1 , 27.25 , 27.158 , New , 0.09 128 , 6 , 0 , , 7.588 , 4.109 , New , 3.48 128 , 0 , 6 ,0 , 5.736 , 4.318 , New , 1.42 128 , 6 , 6 ,1 , 5.814 , 4.318 , New , 1.5 1024, 6 , 0 , , 26.921 , 25.683 , New , 1.24 1024, 0 , 6 ,0 , 28.066 , 26.073 , New , 1.99 1024, 6 , 6 ,1 , 22.6 , 20.933 , New , 1.67 2048, 1 , 14 , , 51.808 , 51.743 , New , 0.06 256 , 7 , 0 ,0 , 7.673 , 6.932 , New , 0.74 256 , 0 , 7 ,1 , 8.13 , 7.191 , New , 0.94 256 , 7 , 7 , , 8.205 , 8.134 , New , 0.07 2048, 7 , 0 ,0 , 51.152 , 50.125 , New , 1.03 2048, 0 , 7 ,1 , 53.603 , 50.588 , New , 3.02 2048, 7 , 7 , , 40.171 , 37.272 , New , 2.9 4096, 0 , 16 ,0 , 104.171 , 101.016 , New , 3.16 512 , 8 , 0 ,1 , 14.225 , 13.161 , New , 1.06 512 , 0 , 8 , , 15.089 , 13.507 , New , 1.58 512 , 8 , 8 ,0 , 14.164 , 12.244 , New , 1.92 4096, 8 , 0 ,1 , 103.781 , 100.332 , New , 3.45 4096, 0 , 8 , , 105.094 , 102.532 , New , 2.56 4096, 8 , 8 ,0 , 89.142 , 79.539 , New , 9.6 1024, 9 , 0 ,1 , 26.818 , 25.571 , New , 1.25 1024, 0 , 9 , , 28.283 , 25.596 , New , 2.69 1024, 9 , 9 ,0 , 22.577 , 20.749 , New , 1.83 33 , 33 , 0 ,1 , 3.97 , 3.238 , New , 0.73 33 , 0 , 33 , , 4.397 , 3.814 , New , 0.58 33 , 33 , 33 ,0 , 4.402 , 3.834 , New , 0.57 65 , 65 , 0 ,1 , 6.26 , 4.008 , New , 2.25 65 , 0 , 65 , , 6.096 , 4.479 , New , 1.62 65 , 65 , 65 ,0 , 6.146 , 4.532 , New , 1.61 97 , 97 , 0 ,1 , 6.015 , 3.846 , New , 2.17 97 , 0 , 97 , , 6.327 , 4.336 , New , 1.99 97 , 97 , 97 ,0 , 6.178 , 4.359 , New , 1.82 129 , 129 , 0 ,1 , 7.711 , 7.925 , Cur , -0.21 129 , 0 , 129 , , 8.141 , 7.758 , New , 0.38 129 , 129 , 129 ,0 , 8.184 , 8.396 , Cur , -0.21 161 , 161 , 0 ,1 , 8.142 , 7.343 , New , 0.8 161 , 0 , 161 , , 8.789 , 7.867 , New , 0.92 161 , 161 , 161 ,0 , 8.854 , 8.508 , New , 0.35 193 , 193 , 0 ,1 , 7.739 , 7.738 , New , 0.0 193 , 0 , 193 , , 8.233 , 7.637 , New , 0.6 193 , 193 , 193 ,0 , 8.178 , 8.431 , Cur , -0.25 225 , 225 , 0 ,1 , 8.287 , 7.18 , New , 1.11 225 , 0 , 225 , , 8.579 , 7.935 , New , 0.64 225 , 225 , 225 ,0 , 8.696 , 8.321 , New , 0.38 257 , 257 , 0 ,1 , 9.158 , 7.49 , New , 1.67 257 , 0 , 257 , , 10.045 , 8.816 , New , 1.23 257 , 257 , 257 ,0 , 9.694 , 8.138 , New , 1.56 289 , 289 , 0 ,1 , 8.881 , 8.13 , New , 0.75 289 , 0 , 289 , , 10.764 , 9.272 , New , 1.49 289 , 289 , 289 ,0 , 9.588 , 8.352 , New , 1.24 321 , 321 , 0 ,1 , 9.731 , 9.41 , New , 0.32 321 , 0 , 321 , , 10.739 , 11.01 , Cur , -0.27 321 , 321 , 321 ,0 , 10.186 , 10.207 , Cur , -0.02 353 , 353 , 0 ,1 , 11.425 , 9.405 , New , 2.02 353 , 0 , 353 , , 12.98 , 10.872 , New , 2.11 353 , 353 , 353 ,0 , 12.636 , 10.143 , New , 2.49 32 , 7 , 2 ,1 , 3.78 , 3.222 , New , 0.56 4 , 1 , 0 , , 4.929 , 2.726 , New , 2.2 4 , 0 , 1 ,0 , 4.368 , 3.372 , New , 1.0 4 , 1 , 1 ,1 , 4.382 , 3.274 , New , 1.11 32 , 1 , 0 , , 3.825 , 3.404 , New , 0.42 32 , 0 , 1 ,0 , 3.278 , 3.367 , Cur , -0.09 32 , 1 , 1 ,1 , 3.277 , 3.383 , Cur , -0.11 64 , 6 , 4 , , 3.847 , 3.462 , New , 0.38 8 , 2 , 0 ,0 , 4.359 , 2.754 , New , 1.6 8 , 0 , 2 ,1 , 4.021 , 3.315 , New , 0.71 8 , 2 , 2 , , 3.957 , 3.411 , New , 0.55 64 , 2 , 0 ,0 , 3.871 , 3.339 , New , 0.53 64 , 0 , 2 ,1 , 4.45 , 3.874 , New , 0.58 64 , 2 , 2 , , 4.396 , 4.001 , New , 0.39 128 , 5 , 6 ,0 , 7.838 , 3.918 , New , 3.92 16 , 3 , 0 ,1 , 4.636 , 2.698 , New , 1.94 16 , 0 , 3 , , 4.423 , 3.27 , New , 1.15 16 , 3 , 3 ,0 , 4.423 , 3.303 , New , 1.12 128 , 3 , 0 ,1 , 7.836 , 4.337 , New , 3.5 128 , 0 , 3 , , 6.005 , 4.544 , New , 1.46 128 , 3 , 3 ,0 , 5.967 , 4.53 , New , 1.44 256 , 4 , 8 ,1 , 7.733 , 7.665 , New , 0.07 32 , 4 , 0 , , 3.801 , 3.219 , New , 0.58 32 , 0 , 4 ,0 , 3.238 , 3.219 , New , 0.02 32 , 4 , 4 ,1 , 3.258 , 3.235 , New , 0.02 256 , 4 , 0 , , 7.509 , 7.088 , New , 0.42 256 , 0 , 4 ,0 , 8.045 , 7.356 , New , 0.69 256 , 4 , 4 ,1 , 8.134 , 8.229 , Cur , -0.09 512 , 3 , 10 , , 14.532 , 14.609 , Cur , -0.08 64 , 5 , 0 ,0 , 3.756 , 3.219 , New , 0.54 64 , 0 , 5 ,1 , 4.317 , 3.756 , New , 0.56 64 , 5 , 5 , , 4.369 , 3.737 , New , 0.63 512 , 5 , 0 ,0 , 13.862 , 13.047 , New , 0.81 512 , 0 , 5 ,1 , 14.939 , 13.378 , New , 1.56 512 , 5 , 5 , , 14.016 , 12.286 , New , 1.73 1024, 2 , 12 ,0 , 27.305 , 27.221 , New , 0.08 128 , 6 , 0 ,1 , 7.576 , 3.791 , New , 3.78 128 , 0 , 6 , , 5.844 , 4.292 , New , 1.55 128 , 6 , 6 ,0 , 5.724 , 4.365 , New , 1.36 1024, 6 , 0 ,1 , 26.42 , 25.585 , New , 0.84 1024, 0 , 6 , , 27.517 , 25.935 , New , 1.58 1024, 6 , 6 ,0 , 22.224 , 20.832 , New , 1.39 2048, 1 , 14 ,1 , 51.403 , 51.378 , New , 0.02 256 , 7 , 0 , , 7.555 , 7.084 , New , 0.47 256 , 0 , 7 ,0 , 8.094 , 7.557 , New , 0.54 256 , 7 , 7 ,1 , 8.142 , 8.407 , Cur , -0.27 2048, 7 , 0 , , 51.067 , 49.678 , New , 1.39 2048, 0 , 7 ,0 , 52.422 , 50.649 , New , 1.77 2048, 7 , 7 ,1 , 40.034 , 37.47 , New , 2.56 4096, 0 , 16 , , 103.022 , 100.619 , New , 2.4 512 , 8 , 0 ,0 , 14.261 , 13.461 , New , 0.8 512 , 0 , 8 ,1 , 15.237 , 13.662 , New , 1.57 512 , 8 , 8 , , 14.201 , 12.259 , New , 1.94 4096, 8 , 0 ,0 , 102.988 , 101.061 , New , 1.93 4096, 0 , 8 ,1 , 103.815 , 102.3 , New , 1.52 4096, 8 , 8 , , 87.71 , 79.816 , New , 7.89 1024, 9 , 0 ,0 , 26.502 , 25.233 , New , 1.27 1024, 0 , 9 ,1 , 27.751 , 26.47 , New , 1.28 1024, 9 , 9 , , 22.346 , 20.9 , New , 1.45 New Wins: 307 Cur Wins: 23 Equals : 0 benchtests/bench-memcmp.c | 32 +++++++++++++++++++++++++------ string/test-memcmp.c | 40 +++++++++++++++++++++++++++++++++------ 2 files changed, 60 insertions(+), 12 deletions(-) diff --git a/benchtests/bench-memcmp.c b/benchtests/bench-memcmp.c index eb0f94a0f1..744c7ec5ba 100644 --- a/benchtests/bench-memcmp.c +++ b/benchtests/bench-memcmp.c @@ -88,11 +88,11 @@ do_test (json_ctx_t *json_ctx, size_t align1, size_t align2, size_t len, if (len == 0) return; - align1 &= 63; + align1 &= (4096 - CHARBYTES); if (align1 + (len + 1) * CHARBYTES >= page_size) return; - align2 &= 63; + align2 &= (4096 - CHARBYTES); if (align2 + (len + 1) * CHARBYTES >= page_size) return; @@ -100,6 +100,7 @@ do_test (json_ctx_t *json_ctx, size_t align1, size_t align2, size_t len, json_attr_uint (json_ctx, "length", (double) len); json_attr_uint (json_ctx, "align1", (double) align1); json_attr_uint (json_ctx, "align2", (double) align2); + json_attr_uint (json_ctx, "result", (double) exp_result); json_array_begin (json_ctx, "timings"); FOR_EACH_IMPL (impl, 0) @@ -145,18 +146,31 @@ test_main (void) json_array_end (&json_ctx); json_array_begin (&json_ctx, "results"); - for (i = 1; i < 16; ++i) + for (i = 1; i < 32; ++i) { do_test (&json_ctx, i * CHARBYTES, i * CHARBYTES, i, 0); do_test (&json_ctx, i * CHARBYTES, i * CHARBYTES, i, 1); do_test (&json_ctx, i * CHARBYTES, i * CHARBYTES, i, -1); } - for (i = 0; i < 16; ++i) + for (i = 0; i < 32; ++i) { do_test (&json_ctx, 0, 0, i, 0); do_test (&json_ctx, 0, 0, i, 1); do_test (&json_ctx, 0, 0, i, -1); + do_test (&json_ctx, 4096 - i, 0, i, 0); + do_test (&json_ctx, 4096 - i, 0, i, 1); + do_test (&json_ctx, 4096 - i, 0, i, -1); + } + + for (i = 33; i < 385; i += 32) + { + do_test (&json_ctx, 0, 0, i, 0); + do_test (&json_ctx, 0, 0, i, 1); + do_test (&json_ctx, 0, 0, i, -1); + do_test (&json_ctx, i, 0, i, 0); + do_test (&json_ctx, 0, i, i, 1); + do_test (&json_ctx, i, i, i, -1); } for (i = 1; i < 10; ++i) @@ -164,13 +178,19 @@ test_main (void) do_test (&json_ctx, 0, 0, 2 << i, 0); do_test (&json_ctx, 0, 0, 2 << i, 1); do_test (&json_ctx, 0, 0, 2 << i, -1); - do_test (&json_ctx, 0, 0, 16 << i, 0); do_test (&json_ctx, (8 - i) * CHARBYTES, (2 * i) * CHARBYTES, 16 << i, 0); + do_test (&json_ctx, 0, 0, 16 << i, 0); do_test (&json_ctx, 0, 0, 16 << i, 1); do_test (&json_ctx, 0, 0, 16 << i, -1); + do_test (&json_ctx, i, 0, 2 << i, 0); + do_test (&json_ctx, 0, i, 2 << i, 1); + do_test (&json_ctx, i, i, 2 << i, -1); + do_test (&json_ctx, i, 0, 16 << i, 0); + do_test (&json_ctx, 0, i, 16 << i, 1); + do_test (&json_ctx, i, i, 16 << i, -1); } - for (i = 1; i < 8; ++i) + for (i = 1; i < 10; ++i) { do_test (&json_ctx, i * CHARBYTES, 2 * (i * CHARBYTES), 8 << i, 0); do_test (&json_ctx, i * CHARBYTES, 2 * (i * CHARBYTES), 8 << i, 1); diff --git a/string/test-memcmp.c b/string/test-memcmp.c index 02ea9b782d..fbda26a41e 100644 --- a/string/test-memcmp.c +++ b/string/test-memcmp.c @@ -111,11 +111,11 @@ do_test (size_t align1, size_t align2, size_t len, int exp_result) if (len == 0) return; - align1 &= 63; + align1 &= (4096 - CHARBYTES); if (align1 + (len + 1) * CHARBYTES >= page_size) return; - align2 &= 63; + align2 &= (4096 - CHARBYTES); if (align2 + (len + 1) * CHARBYTES >= page_size) return; @@ -487,18 +487,40 @@ test_main (void) printf ("\t%s", impl->name); putchar ('\n'); - for (i = 1; i < 16; ++i) + for (i = 1; i < 32; ++i) { do_test (i * CHARBYTES, i * CHARBYTES, i, 0); do_test (i * CHARBYTES, i * CHARBYTES, i, 1); do_test (i * CHARBYTES, i * CHARBYTES, i, -1); } - for (i = 0; i < 16; ++i) + for (i = 0; i < 32; ++i) { do_test (0, 0, i, 0); do_test (0, 0, i, 1); do_test (0, 0, i, -1); + do_test (4096 - i, 0, i, 0); + do_test (4096 - i, 0, i, 1); + do_test (4096 - i, 0, i, -1); + do_test (4095, 0, i, 0); + do_test (4095, 0, i, 1); + do_test (4095, 0, i, -1); + do_test (4095, 4095, i, 0); + do_test (4095, 4095, i, 1); + do_test (4095, 4095, i, -1); + do_test (4000, 95, i, 0); + do_test (4000, 95, i, 1); + do_test (4000, 95, i, -1); + } + + for (i = 33; i < 385; i += 32) + { + do_test (0, 0, i, 0); + do_test (0, 0, i, 1); + do_test (0, 0, i, -1); + do_test (i, 0, i, 0); + do_test (0, i, i, 1); + do_test (i, i, i, -1); } for (i = 1; i < 10; ++i) @@ -506,13 +528,19 @@ test_main (void) do_test (0, 0, 2 << i, 0); do_test (0, 0, 2 << i, 1); do_test (0, 0, 2 << i, -1); - do_test (0, 0, 16 << i, 0); do_test ((8 - i) * CHARBYTES, (2 * i) * CHARBYTES, 16 << i, 0); + do_test (0, 0, 16 << i, 0); do_test (0, 0, 16 << i, 1); do_test (0, 0, 16 << i, -1); + do_test (i, 0, 2 << i, 0); + do_test (0, i, 2 << i, 1); + do_test (i, i, 2 << i, -1); + do_test (i, 0, 16 << i, 0); + do_test (0, i, 16 << i, 1); + do_test (i, i, 16 << i, -1); } - for (i = 1; i < 8; ++i) + for (i = 1; i < 10; ++i) { do_test (i * CHARBYTES, 2 * (i * CHARBYTES), 8 << i, 0); do_test (i * CHARBYTES, 2 * (i * CHARBYTES), 8 << i, 1); From patchwork Mon May 17 18:44:07 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Noah Goldstein X-Patchwork-Id: 43439 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 0B1583938396; Mon, 17 May 2021 19:10:41 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0B1583938396 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1621278641; bh=HHS7fOtGALT3RKDQb1em2IIcDvV1+RAa8LrsRFNF/EI=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=fYaFkDyLKL7LLkEA6l6qjg8s4i+34EI/xCfSZERmrGZaiHpSX7h1cc0my2xuhd8OW 5dmWrIt/YGcZdPtURweC0tCt9yoNIbREAMD9KRwcqCtcUUCgW87uCObQAl9V99bEMq gTn7kpuBB0mO1xeOipvyLsoqqF6hbY8wFJmvfcZE= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-qk1-x72a.google.com (mail-qk1-x72a.google.com [IPv6:2607:f8b0:4864:20::72a]) by sourceware.org (Postfix) with ESMTPS id 20BD1389851E for ; Mon, 17 May 2021 19:10:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 20BD1389851E Received: by mail-qk1-x72a.google.com with SMTP id i67so6889207qkc.4 for ; Mon, 17 May 2021 12:10:37 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=HHS7fOtGALT3RKDQb1em2IIcDvV1+RAa8LrsRFNF/EI=; b=B5/IbsP+q77STJRl3g9mDGulB4Tyy8ohfdN/FxjijbLbNiTf0BWglPVIuYPA4fRWHc puJwFdoO6fTflmri7xb1CwX7aanK3nzs7oz1bBXAfuAgNkY17Pt1cjO6fwjqTFIN41Cx cVHF861xhmMEtflccAQ7iEQ9sHaYObFSk8qfypTPnJL27xCZeAAn5jsCeAy9cWu1Fcn+ XaHT7HJv2YMKCbxQzZ7oTO9Z/Iqc2C5wLw5YZMd4yryParlwZ7cPKWb+jMy8sGPIRi4o XOMAqhIGBZCATDUhSz0ZONRsATwrWDEFirWb4YrHnBsu1YpoYSDL41RAdAAtHFzvtL5o 9eQA== X-Gm-Message-State: AOAM531LNQFFHqi2OSiDz8+8Et95/HGgBgxpfC4zRtxi6ir/Uxu5zDlE P2SPy/HouGcJr2Pl1h7zzkHDiybhIhxOTg== X-Google-Smtp-Source: ABdhPJwY9i3VUDHsXVTLsE99JpHUug25kVBW8BlkyURq3MFUFnKqf8LPa3AEiol0aBP68rYGAfxa5Q== X-Received: by 2002:a05:620a:1410:: with SMTP id d16mr486012qkj.166.1621278635961; Mon, 17 May 2021 12:10:35 -0700 (PDT) Received: from localhost.localdomain (pool-71-245-178-39.pitbpa.fios.verizon.net. [71.245.178.39]) by smtp.googlemail.com with ESMTPSA id v10sm10964155qtf.39.2021.05.17.12.10.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 May 2021 12:10:35 -0700 (PDT) To: libc-alpha@sourceware.org Subject: [PATCH v1 2/3] x86: Optimize memcmp-avx2-movbe.S Date: Mon, 17 May 2021 14:44:07 -0400 Message-Id: <20210517184406.2609574-2-goldstein.w.n@gmail.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210517184406.2609574-1-goldstein.w.n@gmail.com> References: <20210517184406.2609574-1-goldstein.w.n@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-11.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SCC_10_SHORT_WORD_LINES, SCC_5_SHORT_WORD_LINES, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Noah Goldstein via Libc-alpha From: Noah Goldstein Reply-To: Noah Goldstein Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" No bug. This commit optimizes memcmp-avx2.S. The optimizations include adding a new vec compare path for small sizes, reorganizing the entry control flow, and removing some unnecissary ALU instructions from the main loop. test-memcmp and test-wmemcmp are both passing. Signed-off-by: Noah Goldstein --- sysdeps/x86_64/multiarch/ifunc-memcmp.h | 1 + sysdeps/x86_64/multiarch/memcmp-avx2-movbe.S | 676 +++++++++++-------- 2 files changed, 396 insertions(+), 281 deletions(-) diff --git a/sysdeps/x86_64/multiarch/ifunc-memcmp.h b/sysdeps/x86_64/multiarch/ifunc-memcmp.h index 8bee1aff75..89e2129968 100644 --- a/sysdeps/x86_64/multiarch/ifunc-memcmp.h +++ b/sysdeps/x86_64/multiarch/ifunc-memcmp.h @@ -33,6 +33,7 @@ IFUNC_SELECTOR (void) if (CPU_FEATURE_USABLE_P (cpu_features, AVX2) && CPU_FEATURE_USABLE_P (cpu_features, MOVBE) + && CPU_FEATURE_USABLE_P (cpu_features, BMI2) && CPU_FEATURES_ARCH_P (cpu_features, AVX_Fast_Unaligned_Load)) { if (CPU_FEATURE_USABLE_P (cpu_features, AVX512VL) diff --git a/sysdeps/x86_64/multiarch/memcmp-avx2-movbe.S b/sysdeps/x86_64/multiarch/memcmp-avx2-movbe.S index ad0fa962a1..2621ec907a 100644 --- a/sysdeps/x86_64/multiarch/memcmp-avx2-movbe.S +++ b/sysdeps/x86_64/multiarch/memcmp-avx2-movbe.S @@ -19,17 +19,23 @@ #if IS_IN (libc) /* memcmp/wmemcmp is implemented as: - 1. For size from 2 to 7 bytes, load as big endian with movbe and bswap - to avoid branches. - 2. Use overlapping compare to avoid branch. - 3. Use vector compare when size >= 4 bytes for memcmp or size >= 8 - bytes for wmemcmp. - 4. If size is 8 * VEC_SIZE or less, unroll the loop. - 5. Compare 4 * VEC_SIZE at a time with the aligned first memory + 1. Use ymm vector compares when possible. The only case where + vector compares is not possible for when size < VEC_SIZE + and loading from either s1 or s2 would cause a page cross. + 2. For size from 2 to 7 bytes on page cross, load as big endian + with movbe and bswap to avoid branches. + 3. Use xmm vector compare when size >= 4 bytes for memcmp or + size >= 8 bytes for wmemcmp. + 4. Optimistically compare up to first 4 * VEC_SIZE one at a + to check for early mismatches. Only do this if its guranteed the + work is not wasted. + 5. If size is 8 * VEC_SIZE or less, unroll the loop. + 6. Compare 4 * VEC_SIZE at a time with the aligned first memory area. - 6. Use 2 vector compares when size is 2 * VEC_SIZE or less. - 7. Use 4 vector compares when size is 4 * VEC_SIZE or less. - 8. Use 8 vector compares when size is 8 * VEC_SIZE or less. */ + 7. Use 2 vector compares when size is 2 * VEC_SIZE or less. + 8. Use 4 vector compares when size is 4 * VEC_SIZE or less. + 9. Use 8 vector compares when size is 8 * VEC_SIZE or less. */ + # include @@ -38,8 +44,10 @@ # endif # ifdef USE_AS_WMEMCMP +# define CHAR_SIZE 4 # define VPCMPEQ vpcmpeqd # else +# define CHAR_SIZE 1 # define VPCMPEQ vpcmpeqb # endif @@ -52,7 +60,7 @@ # endif # define VEC_SIZE 32 -# define VEC_MASK ((1 << VEC_SIZE) - 1) +# define PAGE_SIZE 4096 /* Warning! wmemcmp has to use SIGNED comparison for elements. @@ -71,136 +79,359 @@ ENTRY (MEMCMP) jb L(less_vec) /* From VEC to 2 * VEC. No branch when size == VEC_SIZE. */ - vmovdqu (%rsi), %ymm2 - VPCMPEQ (%rdi), %ymm2, %ymm2 - vpmovmskb %ymm2, %eax - subl $VEC_MASK, %eax - jnz L(first_vec) + vmovdqu (%rsi), %ymm1 + VPCMPEQ (%rdi), %ymm1, %ymm1 + vpmovmskb %ymm1, %eax + /* NB: eax must be destination register if going to + L(return_vec_[0,2]). For L(return_vec_3 destination register + must be ecx. */ + incl %eax + jnz L(return_vec_0) cmpq $(VEC_SIZE * 2), %rdx - jbe L(last_vec) - - VPCMPEQ %ymm0, %ymm0, %ymm0 - /* More than 2 * VEC. */ - cmpq $(VEC_SIZE * 8), %rdx - ja L(more_8x_vec) - cmpq $(VEC_SIZE * 4), %rdx - jb L(last_4x_vec) - - /* From 4 * VEC to 8 * VEC, inclusively. */ - vmovdqu (%rsi), %ymm1 - VPCMPEQ (%rdi), %ymm1, %ymm1 + jbe L(last_1x_vec) + /* Check second VEC no matter what. */ vmovdqu VEC_SIZE(%rsi), %ymm2 - VPCMPEQ VEC_SIZE(%rdi), %ymm2, %ymm2 + VPCMPEQ VEC_SIZE(%rdi), %ymm2, %ymm2 + vpmovmskb %ymm2, %eax + /* If all 4 VEC where equal eax will be all 1s so incl will + overflow and set zero flag. */ + incl %eax + jnz L(return_vec_1) - vmovdqu (VEC_SIZE * 2)(%rsi), %ymm3 - VPCMPEQ (VEC_SIZE * 2)(%rdi), %ymm3, %ymm3 + /* Less than 4 * VEC. */ + cmpq $(VEC_SIZE * 4), %rdx + jbe L(last_2x_vec) + /* Check third and fourth VEC no matter what. */ + vmovdqu (VEC_SIZE * 2)(%rsi), %ymm3 + VPCMPEQ (VEC_SIZE * 2)(%rdi), %ymm3, %ymm3 + vpmovmskb %ymm3, %eax + incl %eax + jnz L(return_vec_2) vmovdqu (VEC_SIZE * 3)(%rsi), %ymm4 - VPCMPEQ (VEC_SIZE * 3)(%rdi), %ymm4, %ymm4 + VPCMPEQ (VEC_SIZE * 3)(%rdi), %ymm4, %ymm4 + vpmovmskb %ymm4, %ecx + incl %ecx + jnz L(return_vec_3) - vpand %ymm1, %ymm2, %ymm5 - vpand %ymm3, %ymm4, %ymm6 - vpand %ymm5, %ymm6, %ymm5 + /* Go to 4x VEC loop. */ + cmpq $(VEC_SIZE * 8), %rdx + ja L(more_8x_vec) - vptest %ymm0, %ymm5 - jnc L(4x_vec_end) + /* Handle remainder of size = 4 * VEC + 1 to 8 * VEC without any + branches. */ + /* Load first two VEC from s2 before adjusting addresses. */ + vmovdqu -(VEC_SIZE * 4)(%rsi, %rdx), %ymm1 + vmovdqu -(VEC_SIZE * 3)(%rsi, %rdx), %ymm2 leaq -(4 * VEC_SIZE)(%rdi, %rdx), %rdi leaq -(4 * VEC_SIZE)(%rsi, %rdx), %rsi - vmovdqu (%rsi), %ymm1 - VPCMPEQ (%rdi), %ymm1, %ymm1 - vmovdqu VEC_SIZE(%rsi), %ymm2 - VPCMPEQ VEC_SIZE(%rdi), %ymm2, %ymm2 - vpand %ymm2, %ymm1, %ymm5 + /* Wait to load from s1 until addressed adjust due to + unlamination of microfusion with complex address mode. */ + VPCMPEQ (%rdi), %ymm1, %ymm1 + VPCMPEQ (VEC_SIZE)(%rdi), %ymm2, %ymm2 vmovdqu (VEC_SIZE * 2)(%rsi), %ymm3 - VPCMPEQ (VEC_SIZE * 2)(%rdi), %ymm3, %ymm3 - vpand %ymm3, %ymm5, %ymm5 - + VPCMPEQ (VEC_SIZE * 2)(%rdi), %ymm3, %ymm3 vmovdqu (VEC_SIZE * 3)(%rsi), %ymm4 - VPCMPEQ (VEC_SIZE * 3)(%rdi), %ymm4, %ymm4 - vpand %ymm4, %ymm5, %ymm5 + VPCMPEQ (VEC_SIZE * 3)(%rdi), %ymm4, %ymm4 - vptest %ymm0, %ymm5 - jnc L(4x_vec_end) - xorl %eax, %eax + /* Reduce VEC0 - VEC4. */ + vpand %ymm1, %ymm2, %ymm5 + vpand %ymm3, %ymm4, %ymm6 + vpand %ymm5, %ymm6, %ymm7 + vpmovmskb %ymm7, %ecx + incl %ecx + jnz L(return_vec_0_1_2_3) + /* NB: eax must be zero to reach here. */ + VZEROUPPER_RETURN + + .p2align 4 +L(return_vec_0): + tzcntl %eax, %eax +# ifdef USE_AS_WMEMCMP + movl (%rdi, %rax), %ecx + xorl %edx, %edx + cmpl (%rsi, %rax), %ecx + /* NB: no partial register stall here because xorl zero idiom + above. */ + setg %dl + leal -1(%rdx, %rdx), %eax +# else + movzbl (%rsi, %rax), %ecx + movzbl (%rdi, %rax), %eax + subl %ecx, %eax +# endif L(return_vzeroupper): ZERO_UPPER_VEC_REGISTERS_RETURN .p2align 4 -L(last_2x_vec): - /* From VEC to 2 * VEC. No branch when size == VEC_SIZE. */ - vmovdqu (%rsi), %ymm2 - VPCMPEQ (%rdi), %ymm2, %ymm2 - vpmovmskb %ymm2, %eax - subl $VEC_MASK, %eax - jnz L(first_vec) +L(return_vec_1): + tzcntl %eax, %eax +# ifdef USE_AS_WMEMCMP + movl VEC_SIZE(%rdi, %rax), %ecx + xorl %edx, %edx + cmpl VEC_SIZE(%rsi, %rax), %ecx + setg %dl + leal -1(%rdx, %rdx), %eax +# else + movzbl VEC_SIZE(%rsi, %rax), %ecx + movzbl VEC_SIZE(%rdi, %rax), %eax + subl %ecx, %eax +# endif + VZEROUPPER_RETURN + + .p2align 4 +L(return_vec_2): + tzcntl %eax, %eax +# ifdef USE_AS_WMEMCMP + movl (VEC_SIZE * 2)(%rdi, %rax), %ecx + xorl %edx, %edx + cmpl (VEC_SIZE * 2)(%rsi, %rax), %ecx + setg %dl + leal -1(%rdx, %rdx), %eax +# else + movzbl (VEC_SIZE * 2)(%rsi, %rax), %ecx + movzbl (VEC_SIZE * 2)(%rdi, %rax), %eax + subl %ecx, %eax +# endif + VZEROUPPER_RETURN + + /* NB: p2align 5 here to ensure 4x loop is 32 byte aligned. */ + .p2align 5 +L(8x_return_vec_0_1_2_3): + /* Returning from L(more_8x_vec) requires restoring rsi. */ + addq %rdi, %rsi +L(return_vec_0_1_2_3): + vpmovmskb %ymm1, %eax + incl %eax + jnz L(return_vec_0) -L(last_vec): - /* Use overlapping loads to avoid branches. */ - leaq -VEC_SIZE(%rdi, %rdx), %rdi - leaq -VEC_SIZE(%rsi, %rdx), %rsi - vmovdqu (%rsi), %ymm2 - VPCMPEQ (%rdi), %ymm2, %ymm2 vpmovmskb %ymm2, %eax - subl $VEC_MASK, %eax - jnz L(first_vec) + incl %eax + jnz L(return_vec_1) + + vpmovmskb %ymm3, %eax + incl %eax + jnz L(return_vec_2) +L(return_vec_3): + tzcntl %ecx, %ecx +# ifdef USE_AS_WMEMCMP + movl (VEC_SIZE * 3)(%rdi, %rcx), %eax + xorl %edx, %edx + cmpl (VEC_SIZE * 3)(%rsi, %rcx), %eax + setg %dl + leal -1(%rdx, %rdx), %eax +# else + movzbl (VEC_SIZE * 3)(%rdi, %rcx), %eax + movzbl (VEC_SIZE * 3)(%rsi, %rcx), %ecx + subl %ecx, %eax +# endif + VZEROUPPER_RETURN + + .p2align 4 +L(more_8x_vec): + /* Set end of s1 in rdx. */ + leaq -(VEC_SIZE * 4)(%rdi, %rdx), %rdx + /* rsi stores s2 - s1. This allows loop to only update one + pointer. */ + subq %rdi, %rsi + /* Align s1 pointer. */ + andq $-VEC_SIZE, %rdi + /* Adjust because first 4x vec where check already. */ + subq $-(VEC_SIZE * 4), %rdi + .p2align 4 +L(loop_4x_vec): + /* rsi has s2 - s1 so get correct address by adding s1 (in rdi). + */ + vmovdqu (%rsi, %rdi), %ymm1 + VPCMPEQ (%rdi), %ymm1, %ymm1 + + vmovdqu VEC_SIZE(%rsi, %rdi), %ymm2 + VPCMPEQ VEC_SIZE(%rdi), %ymm2, %ymm2 + + vmovdqu (VEC_SIZE * 2)(%rsi, %rdi), %ymm3 + VPCMPEQ (VEC_SIZE * 2)(%rdi), %ymm3, %ymm3 + + vmovdqu (VEC_SIZE * 3)(%rsi, %rdi), %ymm4 + VPCMPEQ (VEC_SIZE * 3)(%rdi), %ymm4, %ymm4 + + vpand %ymm1, %ymm2, %ymm5 + vpand %ymm3, %ymm4, %ymm6 + vpand %ymm5, %ymm6, %ymm7 + vpmovmskb %ymm7, %ecx + incl %ecx + jnz L(8x_return_vec_0_1_2_3) + subq $-(VEC_SIZE * 4), %rdi + /* Check if s1 pointer at end. */ + cmpq %rdx, %rdi + jb L(loop_4x_vec) + + subq %rdx, %rdi + /* rdi has 4 * VEC_SIZE - remaining length. */ + cmpl $(VEC_SIZE * 3), %edi + jae L(8x_last_1x_vec) + /* Load regardless of branch. */ + vmovdqu (VEC_SIZE * 2)(%rsi, %rdx), %ymm3 + cmpl $(VEC_SIZE * 2), %edi + jae L(8x_last_2x_vec) + + /* Check last 4 VEC. */ + vmovdqu (%rsi, %rdx), %ymm1 + VPCMPEQ (%rdx), %ymm1, %ymm1 + + vmovdqu VEC_SIZE(%rsi, %rdx), %ymm2 + VPCMPEQ VEC_SIZE(%rdx), %ymm2, %ymm2 + + VPCMPEQ (VEC_SIZE * 2)(%rdx), %ymm3, %ymm3 + + vmovdqu (VEC_SIZE * 3)(%rsi, %rdx), %ymm4 + VPCMPEQ (VEC_SIZE * 3)(%rdx), %ymm4, %ymm4 + + vpand %ymm1, %ymm2, %ymm5 + vpand %ymm3, %ymm4, %ymm6 + vpand %ymm5, %ymm6, %ymm7 + vpmovmskb %ymm7, %ecx + /* Restore s1 pointer to rdi. */ + movq %rdx, %rdi + incl %ecx + jnz L(8x_return_vec_0_1_2_3) + /* NB: eax must be zero to reach here. */ + VZEROUPPER_RETURN + + /* Only entry is from L(more_8x_vec). */ + .p2align 4 +L(8x_last_2x_vec): + /* Check second to last VEC. rdx store end pointer of s1 and + ymm3 has already been loaded with second to last VEC from s2. + */ + VPCMPEQ (VEC_SIZE * 2)(%rdx), %ymm3, %ymm3 + vpmovmskb %ymm3, %eax + incl %eax + jnz L(8x_return_vec_2) + /* Check last VEC. */ + .p2align 4 +L(8x_last_1x_vec): + vmovdqu (VEC_SIZE * 3)(%rsi, %rdx), %ymm4 + VPCMPEQ (VEC_SIZE * 3)(%rdx), %ymm4, %ymm4 + vpmovmskb %ymm4, %eax + incl %eax + jnz L(8x_return_vec_3) VZEROUPPER_RETURN .p2align 4 -L(first_vec): - /* A byte or int32 is different within 16 or 32 bytes. */ - tzcntl %eax, %ecx +L(last_2x_vec): + /* Check second to last VEC. */ + vmovdqu -(VEC_SIZE * 2)(%rsi, %rdx), %ymm1 + VPCMPEQ -(VEC_SIZE * 2)(%rdi, %rdx), %ymm1, %ymm1 + vpmovmskb %ymm1, %eax + incl %eax + jnz L(return_vec_1_end) + /* Check last VEC. */ +L(last_1x_vec): + vmovdqu -(VEC_SIZE * 1)(%rsi, %rdx), %ymm1 + VPCMPEQ -(VEC_SIZE * 1)(%rdi, %rdx), %ymm1, %ymm1 + vpmovmskb %ymm1, %eax + incl %eax + jnz L(return_vec_0_end) + VZEROUPPER_RETURN + + .p2align 4 +L(8x_return_vec_2): + subq $VEC_SIZE, %rdx +L(8x_return_vec_3): + tzcntl %eax, %eax + addq %rdx, %rax # ifdef USE_AS_WMEMCMP - xorl %eax, %eax - movl (%rdi, %rcx), %edx - cmpl (%rsi, %rcx), %edx -L(wmemcmp_return): - setl %al - negl %eax - orl $1, %eax + movl (VEC_SIZE * 3)(%rax), %ecx + xorl %edx, %edx + cmpl (VEC_SIZE * 3)(%rsi, %rax), %ecx + setg %dl + leal -1(%rdx, %rdx), %eax # else - movzbl (%rdi, %rcx), %eax - movzbl (%rsi, %rcx), %edx - sub %edx, %eax + movzbl (VEC_SIZE * 3)(%rsi, %rax), %ecx + movzbl (VEC_SIZE * 3)(%rax), %eax + subl %ecx, %eax # endif VZEROUPPER_RETURN -# ifdef USE_AS_WMEMCMP .p2align 4 -L(4): - xorl %eax, %eax - movl (%rdi), %edx - cmpl (%rsi), %edx - jne L(wmemcmp_return) - ret +L(return_vec_1_end): + tzcntl %eax, %eax + addl %edx, %eax +# ifdef USE_AS_WMEMCMP + movl -(VEC_SIZE * 2)(%rdi, %rax), %ecx + xorl %edx, %edx + cmpl -(VEC_SIZE * 2)(%rsi, %rax), %ecx + setg %dl + leal -1(%rdx, %rdx), %eax # else + movzbl -(VEC_SIZE * 2)(%rsi, %rax), %ecx + movzbl -(VEC_SIZE * 2)(%rdi, %rax), %eax + subl %ecx, %eax +# endif + VZEROUPPER_RETURN + .p2align 4 -L(between_4_7): - /* Load as big endian with overlapping movbe to avoid branches. */ - movbe (%rdi), %eax - movbe (%rsi), %ecx - shlq $32, %rax - shlq $32, %rcx - movbe -4(%rdi, %rdx), %edi - movbe -4(%rsi, %rdx), %esi - orq %rdi, %rax - orq %rsi, %rcx - subq %rcx, %rax - je L(exit) - sbbl %eax, %eax - orl $1, %eax - ret +L(return_vec_0_end): + tzcntl %eax, %eax + addl %edx, %eax +# ifdef USE_AS_WMEMCMP + movl -VEC_SIZE(%rdi, %rax), %ecx + xorl %edx, %edx + cmpl -VEC_SIZE(%rsi, %rax), %ecx + setg %dl + leal -1(%rdx, %rdx), %eax +# else + movzbl -VEC_SIZE(%rsi, %rax), %ecx + movzbl -VEC_SIZE(%rdi, %rax), %eax + subl %ecx, %eax +# endif + VZEROUPPER_RETURN .p2align 4 -L(exit): - ret +L(less_vec): + /* Check if one or less CHAR. This is necessary for size = 0 but + is also faster for size = CHAR_SIZE. */ + cmpl $CHAR_SIZE, %edx + jbe L(one_or_less) + + /* Check if loading one VEC from either s1 or s2 could cause a + page cross. This can have false positives but is by far the + fastest method. */ + movl %edi, %eax + orl %esi, %eax + andl $(PAGE_SIZE - 1), %eax + cmpl $(PAGE_SIZE - VEC_SIZE), %eax + jg L(page_cross_less_vec) + + /* No page cross possible. */ + vmovdqu (%rsi), %ymm2 + VPCMPEQ (%rdi), %ymm2, %ymm2 + vpmovmskb %ymm2, %eax + incl %eax + /* Result will be zero if s1 and s2 match. Otherwise first set + bit will be first mismatch. */ + bzhil %edx, %eax, %edx + jnz L(return_vec_0) + xorl %eax, %eax + VZEROUPPER_RETURN .p2align 4 -L(between_2_3): +L(page_cross_less_vec): + /* if USE_AS_WMEMCMP it can only be 0, 4, 8, 12, 16, 20, 24, 28 + bytes. */ + cmpl $16, %edx + jae L(between_16_31) +# ifndef USE_AS_WMEMCMP + cmpl $8, %edx + jae L(between_8_15) + cmpl $4, %edx + jae L(between_4_7) + /* Load as big endian to avoid branches. */ movzwl (%rdi), %eax movzwl (%rsi), %ecx @@ -208,223 +439,106 @@ L(between_2_3): shll $8, %ecx bswap %eax bswap %ecx - movb -1(%rdi, %rdx), %al - movb -1(%rsi, %rdx), %cl + movzbl -1(%rdi, %rdx), %edi + movzbl -1(%rsi, %rdx), %esi + orl %edi, %eax + orl %esi, %ecx /* Subtraction is okay because the upper 8 bits are zero. */ subl %ecx, %eax + /* No ymm register was touched. */ ret .p2align 4 -L(1): - movzbl (%rdi), %eax +L(one_or_less): + jb L(zero) movzbl (%rsi), %ecx + movzbl (%rdi), %eax subl %ecx, %eax - ret -# endif - - .p2align 4 -L(zero): - xorl %eax, %eax + /* No ymm register was touched. */ ret .p2align 4 -L(less_vec): -# ifdef USE_AS_WMEMCMP - /* It can only be 0, 4, 8, 12, 16, 20, 24, 28 bytes. */ - cmpb $4, %dl - je L(4) - jb L(zero) -# else - cmpb $1, %dl - je L(1) - jb L(zero) - cmpb $4, %dl - jb L(between_2_3) - cmpb $8, %dl - jb L(between_4_7) +L(between_8_15): # endif - cmpb $16, %dl - jae L(between_16_31) - /* It is between 8 and 15 bytes. */ + /* If USE_AS_WMEMCMP fall through into 8-15 byte case. */ vmovq (%rdi), %xmm1 vmovq (%rsi), %xmm2 - VPCMPEQ %xmm1, %xmm2, %xmm2 + VPCMPEQ %xmm1, %xmm2, %xmm2 vpmovmskb %xmm2, %eax - subl $0xffff, %eax - jnz L(first_vec) + subl $0xffff, %eax + jnz L(return_vec_0) /* Use overlapping loads to avoid branches. */ leaq -8(%rdi, %rdx), %rdi leaq -8(%rsi, %rdx), %rsi vmovq (%rdi), %xmm1 vmovq (%rsi), %xmm2 - VPCMPEQ %xmm1, %xmm2, %xmm2 + VPCMPEQ %xmm1, %xmm2, %xmm2 vpmovmskb %xmm2, %eax - subl $0xffff, %eax - jnz L(first_vec) + subl $0xffff, %eax + jnz L(return_vec_0) + /* No ymm register was touched. */ + ret + + .p2align 4 +L(zero): + xorl %eax, %eax ret .p2align 4 L(between_16_31): /* From 16 to 31 bytes. No branch when size == 16. */ vmovdqu (%rsi), %xmm2 - VPCMPEQ (%rdi), %xmm2, %xmm2 + VPCMPEQ (%rdi), %xmm2, %xmm2 vpmovmskb %xmm2, %eax - subl $0xffff, %eax - jnz L(first_vec) + subl $0xffff, %eax + jnz L(return_vec_0) /* Use overlapping loads to avoid branches. */ + + vmovdqu -16(%rsi, %rdx), %xmm2 leaq -16(%rdi, %rdx), %rdi leaq -16(%rsi, %rdx), %rsi - vmovdqu (%rsi), %xmm2 - VPCMPEQ (%rdi), %xmm2, %xmm2 + VPCMPEQ (%rdi), %xmm2, %xmm2 vpmovmskb %xmm2, %eax - subl $0xffff, %eax - jnz L(first_vec) + subl $0xffff, %eax + jnz L(return_vec_0) + /* No ymm register was touched. */ ret - .p2align 4 -L(more_8x_vec): - /* More than 8 * VEC. Check the first VEC. */ - vmovdqu (%rsi), %ymm2 - VPCMPEQ (%rdi), %ymm2, %ymm2 - vpmovmskb %ymm2, %eax - subl $VEC_MASK, %eax - jnz L(first_vec) - - /* Align the first memory area for aligned loads in the loop. - Compute how much the first memory area is misaligned. */ - movq %rdi, %rcx - andl $(VEC_SIZE - 1), %ecx - /* Get the negative of offset for alignment. */ - subq $VEC_SIZE, %rcx - /* Adjust the second memory area. */ - subq %rcx, %rsi - /* Adjust the first memory area which should be aligned now. */ - subq %rcx, %rdi - /* Adjust length. */ - addq %rcx, %rdx - -L(loop_4x_vec): - /* Compare 4 * VEC at a time forward. */ - vmovdqu (%rsi), %ymm1 - VPCMPEQ (%rdi), %ymm1, %ymm1 - - vmovdqu VEC_SIZE(%rsi), %ymm2 - VPCMPEQ VEC_SIZE(%rdi), %ymm2, %ymm2 - vpand %ymm2, %ymm1, %ymm5 - - vmovdqu (VEC_SIZE * 2)(%rsi), %ymm3 - VPCMPEQ (VEC_SIZE * 2)(%rdi), %ymm3, %ymm3 - vpand %ymm3, %ymm5, %ymm5 - - vmovdqu (VEC_SIZE * 3)(%rsi), %ymm4 - VPCMPEQ (VEC_SIZE * 3)(%rdi), %ymm4, %ymm4 - vpand %ymm4, %ymm5, %ymm5 - - vptest %ymm0, %ymm5 - jnc L(4x_vec_end) - - addq $(VEC_SIZE * 4), %rdi - addq $(VEC_SIZE * 4), %rsi - - subq $(VEC_SIZE * 4), %rdx - cmpq $(VEC_SIZE * 4), %rdx - jae L(loop_4x_vec) - - /* Less than 4 * VEC. */ - cmpq $VEC_SIZE, %rdx - jbe L(last_vec) - cmpq $(VEC_SIZE * 2), %rdx - jbe L(last_2x_vec) - -L(last_4x_vec): - /* From 2 * VEC to 4 * VEC. */ - vmovdqu (%rsi), %ymm2 - VPCMPEQ (%rdi), %ymm2, %ymm2 - vpmovmskb %ymm2, %eax - subl $VEC_MASK, %eax - jnz L(first_vec) - - addq $VEC_SIZE, %rdi - addq $VEC_SIZE, %rsi - vmovdqu (%rsi), %ymm2 - VPCMPEQ (%rdi), %ymm2, %ymm2 - vpmovmskb %ymm2, %eax - subl $VEC_MASK, %eax - jnz L(first_vec) - - /* Use overlapping loads to avoid branches. */ - leaq -(3 * VEC_SIZE)(%rdi, %rdx), %rdi - leaq -(3 * VEC_SIZE)(%rsi, %rdx), %rsi - vmovdqu (%rsi), %ymm2 - VPCMPEQ (%rdi), %ymm2, %ymm2 - vpmovmskb %ymm2, %eax - subl $VEC_MASK, %eax - jnz L(first_vec) - - addq $VEC_SIZE, %rdi - addq $VEC_SIZE, %rsi - vmovdqu (%rsi), %ymm2 - VPCMPEQ (%rdi), %ymm2, %ymm2 - vpmovmskb %ymm2, %eax - subl $VEC_MASK, %eax - jnz L(first_vec) - VZEROUPPER_RETURN - - .p2align 4 -L(4x_vec_end): - vpmovmskb %ymm1, %eax - subl $VEC_MASK, %eax - jnz L(first_vec) - vpmovmskb %ymm2, %eax - subl $VEC_MASK, %eax - jnz L(first_vec_x1) - vpmovmskb %ymm3, %eax - subl $VEC_MASK, %eax - jnz L(first_vec_x2) - vpmovmskb %ymm4, %eax - subl $VEC_MASK, %eax - tzcntl %eax, %ecx # ifdef USE_AS_WMEMCMP - xorl %eax, %eax - movl (VEC_SIZE * 3)(%rdi, %rcx), %edx - cmpl (VEC_SIZE * 3)(%rsi, %rcx), %edx - jmp L(wmemcmp_return) -# else - movzbl (VEC_SIZE * 3)(%rdi, %rcx), %eax - movzbl (VEC_SIZE * 3)(%rsi, %rcx), %edx - sub %edx, %eax -# endif - VZEROUPPER_RETURN - .p2align 4 -L(first_vec_x1): - tzcntl %eax, %ecx -# ifdef USE_AS_WMEMCMP - xorl %eax, %eax - movl VEC_SIZE(%rdi, %rcx), %edx - cmpl VEC_SIZE(%rsi, %rcx), %edx - jmp L(wmemcmp_return) +L(one_or_less): + jb L(zero) + movl (%rdi), %ecx + xorl %edx, %edx + cmpl (%rsi), %ecx + je L(zero) + setg %dl + leal -1(%rdx, %rdx), %eax + /* No ymm register was touched. */ + ret # else - movzbl VEC_SIZE(%rdi, %rcx), %eax - movzbl VEC_SIZE(%rsi, %rcx), %edx - sub %edx, %eax -# endif - VZEROUPPER_RETURN .p2align 4 -L(first_vec_x2): - tzcntl %eax, %ecx -# ifdef USE_AS_WMEMCMP - xorl %eax, %eax - movl (VEC_SIZE * 2)(%rdi, %rcx), %edx - cmpl (VEC_SIZE * 2)(%rsi, %rcx), %edx - jmp L(wmemcmp_return) -# else - movzbl (VEC_SIZE * 2)(%rdi, %rcx), %eax - movzbl (VEC_SIZE * 2)(%rsi, %rcx), %edx - sub %edx, %eax +L(between_4_7): + /* Load as big endian with overlapping movbe to avoid branches. + */ + movbe (%rdi), %eax + movbe (%rsi), %ecx + shlq $32, %rax + shlq $32, %rcx + movbe -4(%rdi, %rdx), %edi + movbe -4(%rsi, %rdx), %esi + orq %rdi, %rax + orq %rsi, %rcx + subq %rcx, %rax + jz L(zero_4_7) + sbbl %eax, %eax + orl $1, %eax +L(zero_4_7): + /* No ymm register was touched. */ + ret # endif - VZEROUPPER_RETURN + END (MEMCMP) #endif From patchwork Mon May 17 18:44:08 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Noah Goldstein X-Patchwork-Id: 43440 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id ABE453898533; Mon, 17 May 2021 19:10:43 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org ABE453898533 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1621278643; bh=1YX6A12brAsK0X6o0bQ2g5g2hp/Bytfi9p304jtlJDw=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=n9cNaCd9pL6RnoTBH1QxiOcI9KUI+vRWxx2dwy96rWiRyLLdv64tyNyijJrlyQIdJ R7xR4fVgYcvzVg9Te8ByCJswj+b2qJgb7q9wMZi3rm4Bp1EdR+i/W8e5S0X4VHlc/f ZoEw9/lKlKvCo75HE24Zc+nhO2Mx6q7GQfWlNKEU= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-qv1-xf30.google.com (mail-qv1-xf30.google.com [IPv6:2607:f8b0:4864:20::f30]) by sourceware.org (Postfix) with ESMTPS id B90BE3898533 for ; Mon, 17 May 2021 19:10:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org B90BE3898533 Received: by mail-qv1-xf30.google.com with SMTP id h7so3030613qvs.12 for ; Mon, 17 May 2021 12:10:38 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=1YX6A12brAsK0X6o0bQ2g5g2hp/Bytfi9p304jtlJDw=; b=gbG4O3Gx/Far2aDzUXk8V0ZFjJpsoq4re1eQalE4qT3nXLe/fqBZgPJMtdyx/qJaEt +9+fzBrsRM4WePxGEeazQXL6pdFriTsp2Zn2fvwkaVNidp/0zC6ZNKoF7d0r7Jm0rG8F aLox3tSqPbHXBGtRvSv30SXsyryD2+5Bet6j11orLo2EzGfSH7wqllpPDsg4OZQU76Wv aq2QCN1JEp2hLi8hjIUsugayCh7sohAjVBimdMP50dGZXSq2pft3P7YLy1BLdL3QouFF LRPDhBBBc38LL9kdZqycTMAdxmztVnZ9TLPXhEAr1cI7QrBJKb8hpQeBzRB1hB5mM+J0 js4Q== X-Gm-Message-State: AOAM531/DlIVvqiJllfW1TJgNuMSGHmHVxgV4Rb+HHzSS7xjXMSEsXm+ Tsc38YsOsHcXCxTFpn6c1k6bhbBiSGRsJw== X-Google-Smtp-Source: ABdhPJy5hulx5aOiMWBkFQfu0vQqEjkSzcL03wiy/hGQOGJp6XxnCpwEY1gNEDhoIUSk7lOExBO2fA== X-Received: by 2002:a05:6214:a43:: with SMTP id ee3mr1516947qvb.61.1621278637585; Mon, 17 May 2021 12:10:37 -0700 (PDT) Received: from localhost.localdomain (pool-71-245-178-39.pitbpa.fios.verizon.net. [71.245.178.39]) by smtp.googlemail.com with ESMTPSA id v10sm10964155qtf.39.2021.05.17.12.10.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 May 2021 12:10:37 -0700 (PDT) To: libc-alpha@sourceware.org Subject: [PATCH v1 3/3] x86: Optimize memcmp-evex-movbe.S Date: Mon, 17 May 2021 14:44:08 -0400 Message-Id: <20210517184406.2609574-3-goldstein.w.n@gmail.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210517184406.2609574-1-goldstein.w.n@gmail.com> References: <20210517184406.2609574-1-goldstein.w.n@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-12.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SCC_5_SHORT_WORD_LINES, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Noah Goldstein via Libc-alpha From: Noah Goldstein Reply-To: Noah Goldstein Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" No bug. This commit optimizes memcmp-evex.S. The optimizations include adding a new vec compare path for small sizes, reorganizing the entry control flow, removing some unnecissary ALU instructions from the main loop, and most importantly replacing the heavy use of vpcmp + kand logic with vpxor + vptern. test-memcmp and test-wmemcmp are both passing. Signed-off-by: Noah Goldstein --- sysdeps/x86_64/multiarch/memcmp-evex-movbe.S | 710 +++++++++++-------- 1 file changed, 408 insertions(+), 302 deletions(-) diff --git a/sysdeps/x86_64/multiarch/memcmp-evex-movbe.S b/sysdeps/x86_64/multiarch/memcmp-evex-movbe.S index 9c093972e1..654dc7ac8c 100644 --- a/sysdeps/x86_64/multiarch/memcmp-evex-movbe.S +++ b/sysdeps/x86_64/multiarch/memcmp-evex-movbe.S @@ -19,17 +19,22 @@ #if IS_IN (libc) /* memcmp/wmemcmp is implemented as: - 1. For size from 2 to 7 bytes, load as big endian with movbe and bswap - to avoid branches. - 2. Use overlapping compare to avoid branch. - 3. Use vector compare when size >= 4 bytes for memcmp or size >= 8 - bytes for wmemcmp. - 4. If size is 8 * VEC_SIZE or less, unroll the loop. - 5. Compare 4 * VEC_SIZE at a time with the aligned first memory + 1. Use ymm vector compares when possible. The only case where + vector compares is not possible for when size < CHAR_PER_VEC + and loading from either s1 or s2 would cause a page cross. + 2. For size from 2 to 7 bytes on page cross, load as big endian + with movbe and bswap to avoid branches. + 3. Use xmm vector compare when size >= 4 bytes for memcmp or + size >= 8 bytes for wmemcmp. + 4. Optimistically compare up to first 4 * CHAR_PER_VEC one at a + to check for early mismatches. Only do this if its guranteed the + work is not wasted. + 5. If size is 8 * VEC_SIZE or less, unroll the loop. + 6. Compare 4 * VEC_SIZE at a time with the aligned first memory area. - 6. Use 2 vector compares when size is 2 * VEC_SIZE or less. - 7. Use 4 vector compares when size is 4 * VEC_SIZE or less. - 8. Use 8 vector compares when size is 8 * VEC_SIZE or less. */ + 7. Use 2 vector compares when size is 2 * CHAR_PER_VEC or less. + 8. Use 4 vector compares when size is 4 * CHAR_PER_VEC or less. + 9. Use 8 vector compares when size is 8 * CHAR_PER_VEC or less. */ # include @@ -40,11 +45,21 @@ # define VMOVU vmovdqu64 # ifdef USE_AS_WMEMCMP -# define VPCMPEQ vpcmpeqd +# define CHAR_SIZE 4 +# define VPCMP vpcmpd # else -# define VPCMPEQ vpcmpeqb +# define CHAR_SIZE 1 +# define VPCMP vpcmpub # endif +# define VEC_SIZE 32 +# define PAGE_SIZE 4096 +# define CHAR_PER_VEC (VEC_SIZE / CHAR_SIZE) + +# define XMM0 xmm16 +# define XMM1 xmm17 +# define XMM2 xmm18 +# define YMM0 ymm16 # define XMM1 xmm17 # define XMM2 xmm18 # define YMM1 ymm17 @@ -54,15 +69,6 @@ # define YMM5 ymm21 # define YMM6 ymm22 -# define VEC_SIZE 32 -# ifdef USE_AS_WMEMCMP -# define VEC_MASK 0xff -# define XMM_MASK 0xf -# else -# define VEC_MASK 0xffffffff -# define XMM_MASK 0xffff -# endif - /* Warning! wmemcmp has to use SIGNED comparison for elements. memcmp has to use UNSIGNED comparison for elemnts. @@ -70,145 +76,370 @@ .section .text.evex,"ax",@progbits ENTRY (MEMCMP) -# ifdef USE_AS_WMEMCMP - shl $2, %RDX_LP -# elif defined __ILP32__ +# ifdef __ILP32__ /* Clear the upper 32 bits. */ movl %edx, %edx # endif - cmp $VEC_SIZE, %RDX_LP + cmp $CHAR_PER_VEC, %RDX_LP jb L(less_vec) /* From VEC to 2 * VEC. No branch when size == VEC_SIZE. */ - VMOVU (%rsi), %YMM2 - VPCMPEQ (%rdi), %YMM2, %k1 + VMOVU (%rsi), %YMM1 + /* Use compare not equals to directly check for mismatch. */ + VPCMP $4, (%rdi), %YMM1, %k1 kmovd %k1, %eax - subl $VEC_MASK, %eax - jnz L(first_vec) - - cmpq $(VEC_SIZE * 2), %rdx - jbe L(last_vec) - - /* More than 2 * VEC. */ - cmpq $(VEC_SIZE * 8), %rdx - ja L(more_8x_vec) - cmpq $(VEC_SIZE * 4), %rdx - jb L(last_4x_vec) + /* NB: eax must be destination register if going to + L(return_vec_[0,2]). For L(return_vec_3 destination register + must be ecx. */ + testl %eax, %eax + jnz L(return_vec_0) - /* From 4 * VEC to 8 * VEC, inclusively. */ - VMOVU (%rsi), %YMM1 - VPCMPEQ (%rdi), %YMM1, %k1 + cmpq $(CHAR_PER_VEC * 2), %rdx + jbe L(last_1x_vec) + /* Check second VEC no matter what. */ VMOVU VEC_SIZE(%rsi), %YMM2 - VPCMPEQ VEC_SIZE(%rdi), %YMM2, %k2 + VPCMP $4, VEC_SIZE(%rdi), %YMM2, %k1 + kmovd %k1, %eax + testl %eax, %eax + jnz L(return_vec_1) + + /* Less than 4 * VEC. */ + cmpq $(CHAR_PER_VEC * 4), %rdx + jbe L(last_2x_vec) + /* Check third and fourth VEC no matter what. */ VMOVU (VEC_SIZE * 2)(%rsi), %YMM3 - VPCMPEQ (VEC_SIZE * 2)(%rdi), %YMM3, %k3 + VPCMP $4, (VEC_SIZE * 2)(%rdi), %YMM3, %k1 + kmovd %k1, %eax + testl %eax, %eax + jnz L(return_vec_2) VMOVU (VEC_SIZE * 3)(%rsi), %YMM4 - VPCMPEQ (VEC_SIZE * 3)(%rdi), %YMM4, %k4 + VPCMP $4, (VEC_SIZE * 3)(%rdi), %YMM4, %k1 + kmovd %k1, %ecx + testl %ecx, %ecx + jnz L(return_vec_3) - kandd %k1, %k2, %k5 - kandd %k3, %k4, %k6 - kandd %k5, %k6, %k6 + /* Zero YMM0. 4x VEC reduction is done with vpxor + vtern so + compare with zero to get a mask is needed. */ + vpxorq %XMM0, %XMM0, %XMM0 - kmovd %k6, %eax - cmpl $VEC_MASK, %eax - jne L(4x_vec_end) + /* Go to 4x VEC loop. */ + cmpq $(CHAR_PER_VEC * 8), %rdx + ja L(more_8x_vec) - leaq -(4 * VEC_SIZE)(%rdi, %rdx), %rdi - leaq -(4 * VEC_SIZE)(%rsi, %rdx), %rsi - VMOVU (%rsi), %YMM1 - VPCMPEQ (%rdi), %YMM1, %k1 + /* Handle remainder of size = 4 * VEC + 1 to 8 * VEC without any + branches. */ - VMOVU VEC_SIZE(%rsi), %YMM2 - VPCMPEQ VEC_SIZE(%rdi), %YMM2, %k2 - kandd %k1, %k2, %k5 + /* Load first two VEC from s2 before adjusting addresses. */ + VMOVU -(VEC_SIZE * 4)(%rsi, %rdx, CHAR_SIZE), %YMM1 + VMOVU -(VEC_SIZE * 3)(%rsi, %rdx, CHAR_SIZE), %YMM2 + leaq -(4 * VEC_SIZE)(%rdi, %rdx, CHAR_SIZE), %rdi + leaq -(4 * VEC_SIZE)(%rsi, %rdx, CHAR_SIZE), %rsi + + /* Wait to load from s1 until addressed adjust due to + unlamination of microfusion with complex address mode. */ + + /* vpxor will be all 0s if s1 and s2 are equal. Otherwise it + will have some 1s. */ + vpxorq (%rdi), %YMM1, %YMM1 + vpxorq (VEC_SIZE)(%rdi), %YMM2, %YMM2 VMOVU (VEC_SIZE * 2)(%rsi), %YMM3 - VPCMPEQ (VEC_SIZE * 2)(%rdi), %YMM3, %k3 - kandd %k3, %k5, %k5 + vpxorq (VEC_SIZE * 2)(%rdi), %YMM3, %YMM3 + /* Or together YMM1, YMM2, and YMM3 into YMM3. */ + vpternlogd $0xfe, %YMM1, %YMM2, %YMM3 VMOVU (VEC_SIZE * 3)(%rsi), %YMM4 - VPCMPEQ (VEC_SIZE * 3)(%rdi), %YMM4, %k4 - kandd %k4, %k5, %k5 + /* Ternary logic to xor (VEC_SIZE * 3)(%rdi) with YMM4 while + oring with YMM3. Result is stored in YMM4. */ + vpternlogd $0xde, (VEC_SIZE * 3)(%rdi), %YMM3, %YMM4 + /* Compare YMM4 with 0. If any 1s s1 and s2 don't match. */ + VPCMP $4, %YMM4, %YMM0, %k1 + kmovd %k1, %ecx + testl %ecx, %ecx + jnz L(return_vec_0_1_2_3) + /* NB: eax must be zero to reach here. */ + ret - kmovd %k5, %eax - cmpl $VEC_MASK, %eax - jne L(4x_vec_end) - xorl %eax, %eax + /* NB: aligning 32 here allows for the rest of the jump targets + to be tuned for 32 byte alignment. Most important this ensures + the L(more_8x_vec) loop is 32 byte aligned. */ + .p2align 5 +L(less_vec): + /* Check if one or less CHAR. This is necessary for size = 0 but + is also faster for size = CHAR_SIZE. */ + cmpl $1, %edx + jbe L(one_or_less) + + /* Check if loading one VEC from either s1 or s2 could cause a + page cross. This can have false positives but is by far the + fastest method. */ + movl %edi, %eax + orl %esi, %eax + andl $(PAGE_SIZE - 1), %eax + cmpl $(PAGE_SIZE - VEC_SIZE), %eax + jg L(page_cross_less_vec) + + /* No page cross possible. */ + VMOVU (%rsi), %YMM2 + VPCMP $4, (%rdi), %YMM2, %k1 + kmovd %k1, %eax + /* Create mask in ecx for potentially in bound matches. */ + bzhil %edx, %eax, %eax + jnz L(return_vec_0) ret .p2align 4 -L(last_2x_vec): - /* From VEC to 2 * VEC. No branch when size == VEC_SIZE. */ - VMOVU (%rsi), %YMM2 - VPCMPEQ (%rdi), %YMM2, %k2 - kmovd %k2, %eax - subl $VEC_MASK, %eax - jnz L(first_vec) +L(return_vec_0): + tzcntl %eax, %eax +# ifdef USE_AS_WMEMCMP + movl (%rdi, %rax, CHAR_SIZE), %ecx + xorl %edx, %edx + cmpl (%rsi, %rax, CHAR_SIZE), %ecx + /* NB: no partial register stall here because xorl zero idiom + above. */ + setg %dl + leal -1(%rdx, %rdx), %eax +# else + movzbl (%rsi, %rax), %ecx + movzbl (%rdi, %rax), %eax + subl %ecx, %eax +# endif + ret -L(last_vec): - /* Use overlapping loads to avoid branches. */ - leaq -VEC_SIZE(%rdi, %rdx), %rdi - leaq -VEC_SIZE(%rsi, %rdx), %rsi - VMOVU (%rsi), %YMM2 - VPCMPEQ (%rdi), %YMM2, %k2 - kmovd %k2, %eax - subl $VEC_MASK, %eax - jnz L(first_vec) + /* NB: No p2align necessary. Alignment % 16 is naturally 1 + which is good enough for a target not in a loop. */ +L(return_vec_1): + tzcntl %eax, %eax +# ifdef USE_AS_WMEMCMP + movl VEC_SIZE(%rdi, %rax, CHAR_SIZE), %ecx + xorl %edx, %edx + cmpl VEC_SIZE(%rsi, %rax, CHAR_SIZE), %ecx + setg %dl + leal -1(%rdx, %rdx), %eax +# else + movzbl VEC_SIZE(%rsi, %rax), %ecx + movzbl VEC_SIZE(%rdi, %rax), %eax + subl %ecx, %eax +# endif ret - .p2align 4 -L(first_vec): - /* A byte or int32 is different within 16 or 32 bytes. */ - tzcntl %eax, %ecx + /* NB: No p2align necessary. Alignment % 16 is naturally 2 + which is good enough for a target not in a loop. */ +L(return_vec_2): + tzcntl %eax, %eax # ifdef USE_AS_WMEMCMP - xorl %eax, %eax - movl (%rdi, %rcx, 4), %edx - cmpl (%rsi, %rcx, 4), %edx -L(wmemcmp_return): - setl %al - negl %eax - orl $1, %eax + movl (VEC_SIZE * 2)(%rdi, %rax, CHAR_SIZE), %ecx + xorl %edx, %edx + cmpl (VEC_SIZE * 2)(%rsi, %rax, CHAR_SIZE), %ecx + setg %dl + leal -1(%rdx, %rdx), %eax # else - movzbl (%rdi, %rcx), %eax - movzbl (%rsi, %rcx), %edx - sub %edx, %eax + movzbl (VEC_SIZE * 2)(%rsi, %rax), %ecx + movzbl (VEC_SIZE * 2)(%rdi, %rax), %eax + subl %ecx, %eax # endif ret + .p2align 4 +L(8x_return_vec_0_1_2_3): + /* Returning from L(more_8x_vec) requires restoring rsi. */ + addq %rdi, %rsi +L(return_vec_0_1_2_3): + VPCMP $4, %YMM1, %YMM0, %k0 + kmovd %k0, %eax + testl %eax, %eax + jnz L(return_vec_0) + + VPCMP $4, %YMM2, %YMM0, %k0 + kmovd %k0, %eax + testl %eax, %eax + jnz L(return_vec_1) + + VPCMP $4, %YMM3, %YMM0, %k0 + kmovd %k0, %eax + testl %eax, %eax + jnz L(return_vec_2) +L(return_vec_3): + tzcntl %ecx, %ecx # ifdef USE_AS_WMEMCMP + movl (VEC_SIZE * 3)(%rdi, %rcx, CHAR_SIZE), %eax + xorl %edx, %edx + cmpl (VEC_SIZE * 3)(%rsi, %rcx, CHAR_SIZE), %eax + setg %dl + leal -1(%rdx, %rdx), %eax +# else + movzbl (VEC_SIZE * 3)(%rdi, %rcx), %eax + movzbl (VEC_SIZE * 3)(%rsi, %rcx), %ecx + subl %ecx, %eax +# endif + ret + .p2align 4 -L(4): - xorl %eax, %eax - movl (%rdi), %edx - cmpl (%rsi), %edx - jne L(wmemcmp_return) +L(more_8x_vec): + /* Set end of s1 in rdx. */ + leaq -(VEC_SIZE * 4)(%rdi, %rdx, CHAR_SIZE), %rdx + /* rsi stores s2 - s1. This allows loop to only update one + pointer. */ + subq %rdi, %rsi + /* Align s1 pointer. */ + andq $-VEC_SIZE, %rdi + /* Adjust because first 4x vec where check already. */ + subq $-(VEC_SIZE * 4), %rdi + .p2align 4 +L(loop_4x_vec): + VMOVU (%rsi, %rdi), %YMM1 + vpxorq (%rdi), %YMM1, %YMM1 + + VMOVU VEC_SIZE(%rsi, %rdi), %YMM2 + vpxorq VEC_SIZE(%rdi), %YMM2, %YMM2 + + VMOVU (VEC_SIZE * 2)(%rsi, %rdi), %YMM3 + vpxorq (VEC_SIZE * 2)(%rdi), %YMM3, %YMM3 + vpternlogd $0xfe, %YMM1, %YMM2, %YMM3 + + VMOVU (VEC_SIZE * 3)(%rsi, %rdi), %YMM4 + vpternlogd $0xde, (VEC_SIZE * 3)(%rdi), %YMM3, %YMM4 + VPCMP $4, %YMM4, %YMM0, %k1 + kmovd %k1, %ecx + testl %ecx, %ecx + jnz L(8x_return_vec_0_1_2_3) + subq $-(VEC_SIZE * 4), %rdi + cmpq %rdx, %rdi + jb L(loop_4x_vec) + + subq %rdx, %rdi + /* rdi has 4 * VEC_SIZE - remaining length. */ + cmpl $(VEC_SIZE * 3), %edi + jae L(8x_last_1x_vec) + /* Load regardless of branch. */ + VMOVU (VEC_SIZE * 2)(%rsi, %rdx), %YMM3 + cmpl $(VEC_SIZE * 2), %edi + jae L(8x_last_2x_vec) + + VMOVU (%rsi, %rdx), %YMM1 + vpxorq (%rdx), %YMM1, %YMM1 + + VMOVU VEC_SIZE(%rsi, %rdx), %YMM2 + vpxorq VEC_SIZE(%rdx), %YMM2, %YMM2 + + vpxorq (VEC_SIZE * 2)(%rdx), %YMM3, %YMM3 + vpternlogd $0xfe, %YMM1, %YMM2, %YMM3 + + VMOVU (VEC_SIZE * 3)(%rsi, %rdx), %YMM4 + vpternlogd $0xde, (VEC_SIZE * 3)(%rdx), %YMM3, %YMM4 + VPCMP $4, %YMM4, %YMM0, %k1 + kmovd %k1, %ecx + /* Restore s1 pointer to rdi. */ + movq %rdx, %rdi + testl %ecx, %ecx + jnz L(8x_return_vec_0_1_2_3) + /* NB: eax must be zero to reach here. */ + ret + + /* Only entry is from L(more_8x_vec). */ + .p2align 4 +L(8x_last_2x_vec): + VPCMP $4, (VEC_SIZE * 2)(%rdx), %YMM3, %k1 + kmovd %k1, %eax + testl %eax, %eax + jnz L(8x_return_vec_2) + /* Naturally aligned to 16 bytes. */ +L(8x_last_1x_vec): + VMOVU (VEC_SIZE * 3)(%rsi, %rdx), %YMM1 + VPCMP $4, (VEC_SIZE * 3)(%rdx), %YMM1, %k1 + kmovd %k1, %eax + testl %eax, %eax + jnz L(8x_return_vec_3) + ret + + .p2align 4 +L(last_2x_vec): + /* Check second to last VEC. */ + VMOVU -(VEC_SIZE * 2)(%rsi, %rdx, CHAR_SIZE), %YMM1 + VPCMP $4, -(VEC_SIZE * 2)(%rdi, %rdx, CHAR_SIZE), %YMM1, %k1 + kmovd %k1, %eax + testl %eax, %eax + jnz L(return_vec_1_end) + + /* Check last VEC. */ + .p2align 4 +L(last_1x_vec): + VMOVU -(VEC_SIZE * 1)(%rsi, %rdx, CHAR_SIZE), %YMM1 + VPCMP $4, -(VEC_SIZE * 1)(%rdi, %rdx, CHAR_SIZE), %YMM1, %k1 + kmovd %k1, %eax + testl %eax, %eax + jnz L(return_vec_0_end) ret + + .p2align 4 +L(8x_return_vec_2): + subq $VEC_SIZE, %rdx +L(8x_return_vec_3): + tzcntl %eax, %eax +# ifdef USE_AS_WMEMCMP + leaq (%rdx, %rax, CHAR_SIZE), %rax + movl (VEC_SIZE * 3)(%rax), %ecx + xorl %edx, %edx + cmpl (VEC_SIZE * 3)(%rsi, %rax), %ecx + setg %dl + leal -1(%rdx, %rdx), %eax # else + addq %rdx, %rax + movzbl (VEC_SIZE * 3)(%rsi, %rax), %ecx + movzbl (VEC_SIZE * 3)(%rax), %eax + subl %ecx, %eax +# endif + ret + .p2align 4 -L(between_4_7): - /* Load as big endian with overlapping movbe to avoid branches. */ - movbe (%rdi), %eax - movbe (%rsi), %ecx - shlq $32, %rax - shlq $32, %rcx - movbe -4(%rdi, %rdx), %edi - movbe -4(%rsi, %rdx), %esi - orq %rdi, %rax - orq %rsi, %rcx - subq %rcx, %rax - je L(exit) - sbbl %eax, %eax - orl $1, %eax +L(return_vec_0_end): + tzcntl %eax, %eax + addl %edx, %eax +# ifdef USE_AS_WMEMCMP + movl -VEC_SIZE(%rdi, %rax, CHAR_SIZE), %ecx + xorl %edx, %edx + cmpl -VEC_SIZE(%rsi, %rax, CHAR_SIZE), %ecx + setg %dl + leal -1(%rdx, %rdx), %eax +# else + movzbl -VEC_SIZE(%rsi, %rax), %ecx + movzbl -VEC_SIZE(%rdi, %rax), %eax + subl %ecx, %eax +# endif ret .p2align 4 -L(exit): +L(return_vec_1_end): + tzcntl %eax, %eax + addl %edx, %eax +# ifdef USE_AS_WMEMCMP + movl -(VEC_SIZE * 2)(%rdi, %rax, CHAR_SIZE), %ecx + xorl %edx, %edx + cmpl -(VEC_SIZE * 2)(%rsi, %rax, CHAR_SIZE), %ecx + setg %dl + leal -1(%rdx, %rdx), %eax +# else + movzbl -(VEC_SIZE * 2)(%rsi, %rax), %ecx + movzbl -(VEC_SIZE * 2)(%rdi, %rax), %eax + subl %ecx, %eax +# endif ret + .p2align 4 +L(page_cross_less_vec): + /* if USE_AS_WMEMCMP it can only be 0, 4, 8, 12, 16, 20, 24, 28 + bytes. */ + cmpl $(16 / CHAR_SIZE), %edx + jae L(between_16_31) +# ifndef USE_AS_WMEMCMP + cmpl $8, %edx + jae L(between_8_15) + cmpl $4, %edx + jae L(between_4_7) L(between_2_3): /* Load as big endian to avoid branches. */ movzwl (%rdi), %eax @@ -217,224 +448,99 @@ L(between_2_3): shll $8, %ecx bswap %eax bswap %ecx - movb -1(%rdi, %rdx), %al - movb -1(%rsi, %rdx), %cl + movzbl -1(%rdi, %rdx), %edi + movzbl -1(%rsi, %rdx), %esi + orl %edi, %eax + orl %esi, %ecx /* Subtraction is okay because the upper 8 bits are zero. */ subl %ecx, %eax ret - .p2align 4 -L(1): - movzbl (%rdi), %eax +L(one_or_less): + jb L(zero) movzbl (%rsi), %ecx + movzbl (%rdi), %eax subl %ecx, %eax ret -# endif - - .p2align 4 -L(zero): - xorl %eax, %eax - ret .p2align 4 -L(less_vec): -# ifdef USE_AS_WMEMCMP - /* It can only be 0, 4, 8, 12, 16, 20, 24, 28 bytes. */ - cmpb $4, %dl - je L(4) - jb L(zero) -# else - cmpb $1, %dl - je L(1) - jb L(zero) - cmpb $4, %dl - jb L(between_2_3) - cmpb $8, %dl - jb L(between_4_7) +L(between_8_15): # endif - cmpb $16, %dl - jae L(between_16_31) - /* It is between 8 and 15 bytes. */ + /* If USE_AS_WMEMCMP fall through into 8-15 byte case. */ vmovq (%rdi), %XMM1 vmovq (%rsi), %XMM2 - VPCMPEQ %XMM1, %XMM2, %k2 - kmovw %k2, %eax - subl $XMM_MASK, %eax - jnz L(first_vec) + VPCMP $4, %XMM1, %XMM2, %k1 + kmovd %k1, %eax + testl %eax, %eax + jnz L(return_vec_0) /* Use overlapping loads to avoid branches. */ - leaq -8(%rdi, %rdx), %rdi - leaq -8(%rsi, %rdx), %rsi + leaq -8(%rdi, %rdx, CHAR_SIZE), %rdi + leaq -8(%rsi, %rdx, CHAR_SIZE), %rsi vmovq (%rdi), %XMM1 vmovq (%rsi), %XMM2 - VPCMPEQ %XMM1, %XMM2, %k2 - kmovw %k2, %eax - subl $XMM_MASK, %eax - jnz L(first_vec) + VPCMP $4, %XMM1, %XMM2, %k1 + kmovd %k1, %eax + testl %eax, %eax + jnz L(return_vec_0) ret .p2align 4 -L(between_16_31): - /* From 16 to 31 bytes. No branch when size == 16. */ - VMOVU (%rsi), %XMM2 - VPCMPEQ (%rdi), %XMM2, %k2 - kmovw %k2, %eax - subl $XMM_MASK, %eax - jnz L(first_vec) - - /* Use overlapping loads to avoid branches. */ - leaq -16(%rdi, %rdx), %rdi - leaq -16(%rsi, %rdx), %rsi - VMOVU (%rsi), %XMM2 - VPCMPEQ (%rdi), %XMM2, %k2 - kmovw %k2, %eax - subl $XMM_MASK, %eax - jnz L(first_vec) +L(zero): + xorl %eax, %eax ret .p2align 4 -L(more_8x_vec): - /* More than 8 * VEC. Check the first VEC. */ - VMOVU (%rsi), %YMM2 - VPCMPEQ (%rdi), %YMM2, %k2 - kmovd %k2, %eax - subl $VEC_MASK, %eax - jnz L(first_vec) - - /* Align the first memory area for aligned loads in the loop. - Compute how much the first memory area is misaligned. */ - movq %rdi, %rcx - andl $(VEC_SIZE - 1), %ecx - /* Get the negative of offset for alignment. */ - subq $VEC_SIZE, %rcx - /* Adjust the second memory area. */ - subq %rcx, %rsi - /* Adjust the first memory area which should be aligned now. */ - subq %rcx, %rdi - /* Adjust length. */ - addq %rcx, %rdx - -L(loop_4x_vec): - /* Compare 4 * VEC at a time forward. */ - VMOVU (%rsi), %YMM1 - VPCMPEQ (%rdi), %YMM1, %k1 - - VMOVU VEC_SIZE(%rsi), %YMM2 - VPCMPEQ VEC_SIZE(%rdi), %YMM2, %k2 - kandd %k2, %k1, %k5 - - VMOVU (VEC_SIZE * 2)(%rsi), %YMM3 - VPCMPEQ (VEC_SIZE * 2)(%rdi), %YMM3, %k3 - kandd %k3, %k5, %k5 - - VMOVU (VEC_SIZE * 3)(%rsi), %YMM4 - VPCMPEQ (VEC_SIZE * 3)(%rdi), %YMM4, %k4 - kandd %k4, %k5, %k5 - - kmovd %k5, %eax - cmpl $VEC_MASK, %eax - jne L(4x_vec_end) - - addq $(VEC_SIZE * 4), %rdi - addq $(VEC_SIZE * 4), %rsi - - subq $(VEC_SIZE * 4), %rdx - cmpq $(VEC_SIZE * 4), %rdx - jae L(loop_4x_vec) - - /* Less than 4 * VEC. */ - cmpq $VEC_SIZE, %rdx - jbe L(last_vec) - cmpq $(VEC_SIZE * 2), %rdx - jbe L(last_2x_vec) - -L(last_4x_vec): - /* From 2 * VEC to 4 * VEC. */ - VMOVU (%rsi), %YMM2 - VPCMPEQ (%rdi), %YMM2, %k2 - kmovd %k2, %eax - subl $VEC_MASK, %eax - jnz L(first_vec) - - addq $VEC_SIZE, %rdi - addq $VEC_SIZE, %rsi - VMOVU (%rsi), %YMM2 - VPCMPEQ (%rdi), %YMM2, %k2 - kmovd %k2, %eax - subl $VEC_MASK, %eax - jnz L(first_vec) +L(between_16_31): + /* From 16 to 31 bytes. No branch when size == 16. */ + VMOVU (%rsi), %XMM2 + VPCMP $4, (%rdi), %XMM2, %k1 + kmovd %k1, %eax + testl %eax, %eax + jnz L(return_vec_0) /* Use overlapping loads to avoid branches. */ - leaq -(3 * VEC_SIZE)(%rdi, %rdx), %rdi - leaq -(3 * VEC_SIZE)(%rsi, %rdx), %rsi - VMOVU (%rsi), %YMM2 - VPCMPEQ (%rdi), %YMM2, %k2 - kmovd %k2, %eax - subl $VEC_MASK, %eax - jnz L(first_vec) - addq $VEC_SIZE, %rdi - addq $VEC_SIZE, %rsi - VMOVU (%rsi), %YMM2 - VPCMPEQ (%rdi), %YMM2, %k2 - kmovd %k2, %eax - subl $VEC_MASK, %eax - jnz L(first_vec) - ret - - .p2align 4 -L(4x_vec_end): + VMOVU -16(%rsi, %rdx, CHAR_SIZE), %XMM2 + leaq -16(%rdi, %rdx, CHAR_SIZE), %rdi + leaq -16(%rsi, %rdx, CHAR_SIZE), %rsi + VPCMP $4, (%rdi), %XMM2, %k1 kmovd %k1, %eax - subl $VEC_MASK, %eax - jnz L(first_vec) - kmovd %k2, %eax - subl $VEC_MASK, %eax - jnz L(first_vec_x1) - kmovd %k3, %eax - subl $VEC_MASK, %eax - jnz L(first_vec_x2) - kmovd %k4, %eax - subl $VEC_MASK, %eax - tzcntl %eax, %ecx -# ifdef USE_AS_WMEMCMP - xorl %eax, %eax - movl (VEC_SIZE * 3)(%rdi, %rcx, 4), %edx - cmpl (VEC_SIZE * 3)(%rsi, %rcx, 4), %edx - jmp L(wmemcmp_return) -# else - movzbl (VEC_SIZE * 3)(%rdi, %rcx), %eax - movzbl (VEC_SIZE * 3)(%rsi, %rcx), %edx - sub %edx, %eax -# endif + testl %eax, %eax + jnz L(return_vec_0) ret - .p2align 4 -L(first_vec_x1): - tzcntl %eax, %ecx # ifdef USE_AS_WMEMCMP - xorl %eax, %eax - movl VEC_SIZE(%rdi, %rcx, 4), %edx - cmpl VEC_SIZE(%rsi, %rcx, 4), %edx - jmp L(wmemcmp_return) -# else - movzbl VEC_SIZE(%rdi, %rcx), %eax - movzbl VEC_SIZE(%rsi, %rcx), %edx - sub %edx, %eax -# endif + .p2align 4 +L(one_or_less): + jb L(zero) + movl (%rdi), %ecx + xorl %edx, %edx + cmpl (%rsi), %ecx + je L(zero) + setg %dl + leal -1(%rdx, %rdx), %eax ret +# else .p2align 4 -L(first_vec_x2): - tzcntl %eax, %ecx -# ifdef USE_AS_WMEMCMP - xorl %eax, %eax - movl (VEC_SIZE * 2)(%rdi, %rcx, 4), %edx - cmpl (VEC_SIZE * 2)(%rsi, %rcx, 4), %edx - jmp L(wmemcmp_return) -# else - movzbl (VEC_SIZE * 2)(%rdi, %rcx), %eax - movzbl (VEC_SIZE * 2)(%rsi, %rcx), %edx - sub %edx, %eax -# endif +L(between_4_7): + /* Load as big endian with overlapping movbe to avoid branches. + */ + movbe (%rdi), %eax + movbe (%rsi), %ecx + shlq $32, %rax + shlq $32, %rcx + movbe -4(%rdi, %rdx), %edi + movbe -4(%rsi, %rdx), %esi + orq %rdi, %rax + orq %rsi, %rcx + subq %rcx, %rax + jz L(zero_4_7) + sbbl %eax, %eax + orl $1, %eax +L(zero_4_7): ret +# endif + END (MEMCMP) #endif