From patchwork Wed Jun 7 16:07:49 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "H.J. Lu" X-Patchwork-Id: 20827 Received: (qmail 124890 invoked by alias); 7 Jun 2017 16:07:50 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 121741 invoked by uid 89); 7 Jun 2017 16:07:48 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.8 required=5.0 tests=AWL, BAYES_00, FREEMAIL_FROM, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_STOCKGEN, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.2 spammy=Hx-languages-length:4336 X-HELO: mail-qt0-f170.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=YQT2yU1qbKO36ptPnCoGnDBHiTA7ckohsLvfbL4h0fc=; b=qbYcng7yGUWlhRsrbSYEh/de+VSPdZl/e0Nyjs7SQj+NlIYGYF7YsDO3inWpdJbBOZ eKRv0rOPd00AZJKzF2CLu6sCULNRFnvlR+tj9M1aS4TPsOF0vHj4xT/Eg7/gwgdfE1Rz xKIp3orzLg2rBJ+UgV2dEP1oFnYkyVmJiqrMU2eHKH+T1e6/exD2iJ7kfUPRmGM40Pl9 ExqIC4bhgr7197wcexGXBhpWuGAHrdiZPFlUqpKgWzFPv5SiBF6JdS3JuOioRceaE/r7 0+1wpjv1D1M7DEgmFxqo2QbnLh4IrNF/4UWGmQenA6s8Pf3aWTx3fa2X4WM5TByKi/wB Y6YA== X-Gm-Message-State: AODbwcAMYXhf2WOAmB/eZbCyaReOMKtoUbup2x51CU+XVV5YYg5uRzPV floCPqbfUeBznpo0oMiI3iSFbhWyowau X-Received: by 10.200.37.165 with SMTP id e34mr40946002qte.112.1496851669707; Wed, 07 Jun 2017 09:07:49 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: References: <20170520135619.GA17481@gmail.com> <20170606053710.GA283@x4> <20170606125907.GA5960@x4> From: "H.J. Lu" Date: Wed, 7 Jun 2017 09:07:49 -0700 Message-ID: Subject: Re: [PATCH] x86-64: Update strlen.S to support wcslen/wcsnlen To: Markus Trippelsdorf Cc: GNU C Library On Tue, Jun 6, 2017 at 6:13 AM, H.J. Lu wrote: > On Tue, Jun 6, 2017 at 5:59 AM, Markus Trippelsdorf > wrote: >> On 2017.06.06 at 05:37 -0700, H.J. Lu wrote: >>> On Mon, Jun 5, 2017 at 10:37 PM, Markus Trippelsdorf >>> wrote: >>> > >>> > It doesn't work on old machines without SSE4.1: >>> > >>> > FAIL: stdio-common/tstdiomisc >>> > FAIL: wcsmbs/test-wcpncpy >>> > FAIL: wcsmbs/test-wcsncmp >>> > FAIL: wcsmbs/test-wcsncpy >>> > FAIL: wcsmbs/test-wcsnlen >>> > FAIL: wcsmbs/wcsatcliff >>> >>> Please try this. Sorry for the breakage. >> >> It works fine now. Thanks for the quick patch. >> > > I checked it in. > I checked in this patch to fold ifunc-sse4_1.h into wcsnlen.c. From 2e87c7d1582461044f8cd983fd9be121cf23803f Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Wed, 7 Jun 2017 09:04:40 -0700 Subject: [PATCH] x86-64: Fold ifunc-sse4_1.h into wcsnlen.c Since ifunc-sse4_1.h is included only by wcsnlen.c, we can fold it into wcsnlen.c. No code changes in wcsnlen.o. 2017-06-07 H.J. Lu * sysdeps/x86_64/multiarch/ifunc-sse4_1.h: Removed and folded into ... * sysdeps/x86_64/multiarch/wcsnlen.c: Here. Don't include ifunc-sse4_1.h. --- ChangeLog | 7 +++++++ sysdeps/x86_64/multiarch/ifunc-sse4_1.h | 34 --------------------------------- sysdeps/x86_64/multiarch/wcsnlen.c | 16 +++++++++++++++- 3 files changed, 22 insertions(+), 35 deletions(-) delete mode 100644 sysdeps/x86_64/multiarch/ifunc-sse4_1.h diff --git a/ChangeLog b/ChangeLog index 4c06d7e..1106110 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2017-06-07 H.J. Lu + + * sysdeps/x86_64/multiarch/ifunc-sse4_1.h: Removed and folded + into ... + * sysdeps/x86_64/multiarch/wcsnlen.c: Here. Don't include + ifunc-sse4_1.h. + 2017-06-07 Arjun Shankar * sysdeps/unix/sysv/linux/ptsname.c (__ptsname_internal): diff --git a/sysdeps/x86_64/multiarch/ifunc-sse4_1.h b/sysdeps/x86_64/multiarch/ifunc-sse4_1.h deleted file mode 100644 index 2b89231..0000000 --- a/sysdeps/x86_64/multiarch/ifunc-sse4_1.h +++ /dev/null @@ -1,34 +0,0 @@ -/* Common definition for ifunc selections optimized with SSE2 and SSE4.1. - All versions must be listed in ifunc-impl-list.c. - Copyright (C) 2017 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 - . */ - -#include - -extern __typeof (REDIRECT_NAME) OPTIMIZE (sse2) attribute_hidden; -extern __typeof (REDIRECT_NAME) OPTIMIZE (sse4_1) attribute_hidden; - -static inline void * -IFUNC_SELECTOR (void) -{ - const struct cpu_features* cpu_features = __get_cpu_features (); - - if (CPU_FEATURES_CPU_P (cpu_features, SSE4_1)) - return OPTIMIZE (sse4_1); - - return OPTIMIZE (sse2); -} diff --git a/sysdeps/x86_64/multiarch/wcsnlen.c b/sysdeps/x86_64/multiarch/wcsnlen.c index 5f74d2c..304f62e 100644 --- a/sysdeps/x86_64/multiarch/wcsnlen.c +++ b/sysdeps/x86_64/multiarch/wcsnlen.c @@ -24,7 +24,21 @@ # undef __wcsnlen # define SYMBOL_NAME wcsnlen -# include "ifunc-sse4_1.h" +# include + +extern __typeof (REDIRECT_NAME) OPTIMIZE (sse2) attribute_hidden; +extern __typeof (REDIRECT_NAME) OPTIMIZE (sse4_1) attribute_hidden; + +static inline void * +IFUNC_SELECTOR (void) +{ + const struct cpu_features* cpu_features = __get_cpu_features (); + + if (CPU_FEATURES_CPU_P (cpu_features, SSE4_1)) + return OPTIMIZE (sse4_1); + + return OPTIMIZE (sse2); +} libc_ifunc_redirected (__redirect_wcsnlen, __wcsnlen, IFUNC_SELECTOR ()); weak_alias (__wcsnlen, wcsnlen); -- 2.9.4