From patchwork Sun Apr 3 21:38:51 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "H.J. Lu" X-Patchwork-Id: 11611 Received: (qmail 1674 invoked by alias); 3 Apr 2016 21:39:05 -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 1658 invoked by uid 89); 3 Apr 2016 21:39:05 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.7 required=5.0 tests=AWL, BAYES_50, FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.2 spammy=UD:memmove-vec-unaligned-erms.S, __mempcpy_erms, __memmove_erms, __mempcpy_chk X-HELO: mail-pa0-f47.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:subject:message-id:mime-version :content-disposition:user-agent; bh=ppkNL4Qyo136XnGEUY3tblH7tOxvfTZVtmRo2OSzoAM=; b=fYeHqJsWRmrhDcbJ66EjjfOn25dJEDas6B19kz7JU69+OXJphel8HWZ8ney3B3u0jU 7LRTS60zva3LaEvda8ZvKuOA/L/BllcEF3opIQjJkiQgznv8Qdfy+uEjV4edaF32OC+P zE1SKG8pGMIQfqw0QZFfM+TbkSg4X0A0dWK29XhdPdj6Ow3hM/OuKVK3nG8I6pQmuhyi Wh4kbwMhlTojQGupEJBlE/cUYH+2wRIvdn/m173U0/AwSAJlrm2BF75kuyCpGNRRbXNq KIpoCPMVNc8hcQkLt9XKeHMN1kb6rYiOkq9YWJwsvZYmDCebKM7dkPR5cxE7VAGt2M4n yebw== X-Gm-Message-State: AD7BkJLVqcr7BbNcBZY0DzYiohxGCkjLj6pDqWY/CbPYZpUwOW0z4tDamswz3zpGbnNnsw== X-Received: by 10.67.8.100 with SMTP id dj4mr48358279pad.88.1459719533012; Sun, 03 Apr 2016 14:38:53 -0700 (PDT) Date: Sun, 3 Apr 2016 14:38:51 -0700 From: "H.J. Lu" To: GNU C Library Subject: [committed, PATCH] Don't put SSE2/AVX/AVX512 memmove/memset in ld.so Message-ID: <20160403213851.GA12707@gmail.com> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.24 (2015-08-30) Since memmove and memset in ld.so don't use IFUNC, don't put SSE2, AVX and AVX512 memmove and memset in ld.so. Tested on x86-64. Check into master branch. H.J. --- * sysdeps/x86_64/multiarch/memmove-avx-unaligned-erms.S: Skip if not in libc. * sysdeps/x86_64/multiarch/memmove-avx512-unaligned-erms.S: Likewise. * sysdeps/x86_64/multiarch/memset-avx2-unaligned-erms.S: Likewise. * sysdeps/x86_64/multiarch/memset-avx512-unaligned-erms.S: Likewise. --- ChangeLog | 11 +++++++++++ sysdeps/x86_64/multiarch/memmove-avx-unaligned-erms.S | 16 +++++++++------- .../x86_64/multiarch/memmove-avx512-unaligned-erms.S | 2 +- sysdeps/x86_64/multiarch/memmove-sse2-unaligned-erms.S | 16 +++++++++------- sysdeps/x86_64/multiarch/memset-avx2-unaligned-erms.S | 18 ++++++++++-------- .../x86_64/multiarch/memset-avx512-unaligned-erms.S | 2 +- sysdeps/x86_64/multiarch/memset-sse2-unaligned-erms.S | 18 ++++++++++-------- 7 files changed, 51 insertions(+), 32 deletions(-) diff --git a/ChangeLog b/ChangeLog index e93b7bf..befaa41 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,16 @@ 2016-04-03 H.J. Lu + * sysdeps/x86_64/multiarch/memmove-avx-unaligned-erms.S: Skip + if not in libc. + * sysdeps/x86_64/multiarch/memmove-avx512-unaligned-erms.S: + Likewise. + * sysdeps/x86_64/multiarch/memset-avx2-unaligned-erms.S: + Likewise. + * sysdeps/x86_64/multiarch/memset-avx512-unaligned-erms.S: + Likewise. + +2016-04-03 H.J. Lu + * sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S: (__mempcpy_erms, __memmove_erms): Moved before __mempcpy_chk with unaligned_erms. diff --git a/sysdeps/x86_64/multiarch/memmove-avx-unaligned-erms.S b/sysdeps/x86_64/multiarch/memmove-avx-unaligned-erms.S index 3a72c7e..44711c3 100644 --- a/sysdeps/x86_64/multiarch/memmove-avx-unaligned-erms.S +++ b/sysdeps/x86_64/multiarch/memmove-avx-unaligned-erms.S @@ -1,9 +1,11 @@ -#define VEC_SIZE 32 -#define VEC(i) ymm##i -#define VMOVU vmovdqu -#define VMOVA vmovdqa +#if IS_IN (libc) +# define VEC_SIZE 32 +# define VEC(i) ymm##i +# define VMOVU vmovdqu +# define VMOVA vmovdqa -#define SECTION(p) p##.avx -#define MEMMOVE_SYMBOL(p,s) p##_avx_##s +# define SECTION(p) p##.avx +# define MEMMOVE_SYMBOL(p,s) p##_avx_##s -#include "memmove-vec-unaligned-erms.S" +# include "memmove-vec-unaligned-erms.S" +#endif diff --git a/sysdeps/x86_64/multiarch/memmove-avx512-unaligned-erms.S b/sysdeps/x86_64/multiarch/memmove-avx512-unaligned-erms.S index 38358fa..c2c5293 100644 --- a/sysdeps/x86_64/multiarch/memmove-avx512-unaligned-erms.S +++ b/sysdeps/x86_64/multiarch/memmove-avx512-unaligned-erms.S @@ -1,4 +1,4 @@ -#ifdef HAVE_AVX512_ASM_SUPPORT +#if defined HAVE_AVX512_ASM_SUPPORT && IS_IN (libc) # define VEC_SIZE 64 # define VEC(i) zmm##i # define VMOVU vmovdqu64 diff --git a/sysdeps/x86_64/multiarch/memmove-sse2-unaligned-erms.S b/sysdeps/x86_64/multiarch/memmove-sse2-unaligned-erms.S index 52b9ae0..85214fe 100644 --- a/sysdeps/x86_64/multiarch/memmove-sse2-unaligned-erms.S +++ b/sysdeps/x86_64/multiarch/memmove-sse2-unaligned-erms.S @@ -1,9 +1,11 @@ -#define VEC_SIZE 16 -#define VEC(i) xmm##i -#define VMOVU movdqu -#define VMOVA movdqa +#if IS_IN (libc) +# define VEC_SIZE 16 +# define VEC(i) xmm##i +# define VMOVU movdqu +# define VMOVA movdqa -#define SECTION(p) p -#define MEMMOVE_SYMBOL(p,s) p##_sse2_##s +# define SECTION(p) p +# define MEMMOVE_SYMBOL(p,s) p##_sse2_##s -#include "memmove-vec-unaligned-erms.S" +# include "memmove-vec-unaligned-erms.S" +#endif diff --git a/sysdeps/x86_64/multiarch/memset-avx2-unaligned-erms.S b/sysdeps/x86_64/multiarch/memset-avx2-unaligned-erms.S index e0dc565..79975e0 100644 --- a/sysdeps/x86_64/multiarch/memset-avx2-unaligned-erms.S +++ b/sysdeps/x86_64/multiarch/memset-avx2-unaligned-erms.S @@ -1,14 +1,16 @@ -#define VEC_SIZE 32 -#define VEC(i) ymm##i -#define VMOVU vmovdqu -#define VMOVA vmovdqa +#if IS_IN (libc) +# define VEC_SIZE 32 +# define VEC(i) ymm##i +# define VMOVU vmovdqu +# define VMOVA vmovdqa -#define VDUP_TO_VEC0_AND_SET_RETURN(d, r) \ +# define VDUP_TO_VEC0_AND_SET_RETURN(d, r) \ vmovd d, %xmm0; \ movq r, %rax; \ vpbroadcastb %xmm0, %ymm0 -#define SECTION(p) p##.avx -#define MEMSET_SYMBOL(p,s) p##_avx2_##s +# define SECTION(p) p##.avx +# define MEMSET_SYMBOL(p,s) p##_avx2_##s -#include "memset-vec-unaligned-erms.S" +# include "memset-vec-unaligned-erms.S" +#endif diff --git a/sysdeps/x86_64/multiarch/memset-avx512-unaligned-erms.S b/sysdeps/x86_64/multiarch/memset-avx512-unaligned-erms.S index 72f4095..f1b3cb2 100644 --- a/sysdeps/x86_64/multiarch/memset-avx512-unaligned-erms.S +++ b/sysdeps/x86_64/multiarch/memset-avx512-unaligned-erms.S @@ -1,4 +1,4 @@ -#ifdef HAVE_AVX512_ASM_SUPPORT +#if defined HAVE_AVX512_ASM_SUPPORT && IS_IN (libc) # define VEC_SIZE 64 # define VEC(i) zmm##i # define VMOVU vmovdqu64 diff --git a/sysdeps/x86_64/multiarch/memset-sse2-unaligned-erms.S b/sysdeps/x86_64/multiarch/memset-sse2-unaligned-erms.S index 437a858..2deba42 100644 --- a/sysdeps/x86_64/multiarch/memset-sse2-unaligned-erms.S +++ b/sysdeps/x86_64/multiarch/memset-sse2-unaligned-erms.S @@ -1,16 +1,18 @@ -#define VEC_SIZE 16 -#define VEC(i) xmm##i -#define VMOVU movdqu -#define VMOVA movdqa +#if IS_IN (libc) +# define VEC_SIZE 16 +# define VEC(i) xmm##i +# define VMOVU movdqu +# define VMOVA movdqa -#define VDUP_TO_VEC0_AND_SET_RETURN(d, r) \ +# define VDUP_TO_VEC0_AND_SET_RETURN(d, r) \ movd d, %xmm0; \ movq r, %rax; \ punpcklbw %xmm0, %xmm0; \ punpcklwd %xmm0, %xmm0; \ pshufd $0, %xmm0, %xmm0 -#define SECTION(p) p -#define MEMSET_SYMBOL(p,s) p##_sse2_##s +# define SECTION(p) p +# define MEMSET_SYMBOL(p,s) p##_sse2_##s -#include "memset-vec-unaligned-erms.S" +# include "memset-vec-unaligned-erms.S" +#endif