Skip to content
Snippets Groups Projects
  • Jakub Jelinek's avatar
    bf4f40cc
    libiberty: Use x86 HW optimized sha1 · bf4f40cc
    Jakub Jelinek authored
    Nick has approved this patch (+ small ld change to use it for --build-id=),
    so I'm commiting it to GCC as master as well.
    
    If anyone from ARM would be willing to implement it similarly with
    vsha1{cq,mq,pq,h,su0q,su1q}_u32 intrinsics, it could be a useful linker
    speedup on those hosts as well, the intent in sha1.c was that
    sha1_hw_process_bytes, sha1_hw_process_block functions
    would be defined whenever
    defined (HAVE_X86_SHA1_HW_SUPPORT) || defined (HAVE_WHATEVERELSE_SHA1_HW_SUPPORT)
    but the body of sha1_hw_process_block and sha1_choose_process_bytes
    would then have #elif defined (HAVE_WHATEVERELSE_SHA1_HW_SUPPORT) for
    the other arch support, similarly for any target attributes on
    sha1_hw_process_block if needed.
    
    2023-11-28  Jakub Jelinek  <jakub@redhat.com>
    
    include/
    	* sha1.h (sha1_process_bytes_fn): New typedef.
    	(sha1_choose_process_bytes): Declare.
    libiberty/
    	* configure.ac (HAVE_X86_SHA1_HW_SUPPORT): New check.
    	* sha1.c: If HAVE_X86_SHA1_HW_SUPPORT is defined, include x86intrin.h
    	and cpuid.h.
    	(sha1_hw_process_bytes, sha1_hw_process_block,
    	sha1_choose_process_bytes): New functions.
    	* config.in: Regenerated.
    	* configure: Regenerated.
    bf4f40cc
    History
    libiberty: Use x86 HW optimized sha1
    Jakub Jelinek authored
    Nick has approved this patch (+ small ld change to use it for --build-id=),
    so I'm commiting it to GCC as master as well.
    
    If anyone from ARM would be willing to implement it similarly with
    vsha1{cq,mq,pq,h,su0q,su1q}_u32 intrinsics, it could be a useful linker
    speedup on those hosts as well, the intent in sha1.c was that
    sha1_hw_process_bytes, sha1_hw_process_block functions
    would be defined whenever
    defined (HAVE_X86_SHA1_HW_SUPPORT) || defined (HAVE_WHATEVERELSE_SHA1_HW_SUPPORT)
    but the body of sha1_hw_process_block and sha1_choose_process_bytes
    would then have #elif defined (HAVE_WHATEVERELSE_SHA1_HW_SUPPORT) for
    the other arch support, similarly for any target attributes on
    sha1_hw_process_block if needed.
    
    2023-11-28  Jakub Jelinek  <jakub@redhat.com>
    
    include/
    	* sha1.h (sha1_process_bytes_fn): New typedef.
    	(sha1_choose_process_bytes): Declare.
    libiberty/
    	* configure.ac (HAVE_X86_SHA1_HW_SUPPORT): New check.
    	* sha1.c: If HAVE_X86_SHA1_HW_SUPPORT is defined, include x86intrin.h
    	and cpuid.h.
    	(sha1_hw_process_bytes, sha1_hw_process_block,
    	sha1_choose_process_bytes): New functions.
    	* config.in: Regenerated.
    	* configure: Regenerated.