]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
x86: Remove SSSE3 instruction for broadcast in memset.S (SSE2 Only)
authorNoah Goldstein <goldstein.w.n@gmail.com>
Mon, 7 Feb 2022 06:32:23 +0000 (00:32 -0600)
committerNoah Goldstein <goldstein.w.n@gmail.com>
Mon, 7 Feb 2022 20:18:29 +0000 (14:18 -0600)
commit b62ace2740a106222e124cc86956448fa07abf4d
Author: Noah Goldstein <goldstein.w.n@gmail.com>
Date:   Sun Feb 6 00:54:18 2022 -0600

    x86: Improve vec generation in memset-vec-unaligned-erms.S

Revert usage of 'pshufb' in broadcast logic as it is an SSSE3
instruction and memset.S is restricted to only SSE2 instructions.

sysdeps/x86_64/memset.S

index ccf036be534f7dedb5125cd9a6c5b98a28739af3..3f0517bbfc7d085cf7cfa9b9197406f66fd11d43 100644 (file)
 
 # define MEMSET_SET_VEC0_AND_SET_RETURN(d, r) \
   movd d, %xmm0; \
-  pxor %xmm1, %xmm1; \
-  pshufb %xmm1, %xmm0; \
-  movq r, %rax
+  movq r, %rax; \
+  punpcklbw %xmm0, %xmm0; \
+  punpcklwd %xmm0, %xmm0; \
+  pshufd $0, %xmm0, %xmm0
 
 # define WMEMSET_SET_VEC0_AND_SET_RETURN(d, r) \
   movd d, %xmm0; \