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