llvm-project/llvm/lib
Rui Ueyama fe33661ab0 SHA1: unroll loop in hashBlock.
This code is taken from public domain.
https://github.com/jsonn/src/blob/trunk/common/lib/libc/hash/sha1/sha1.c

I wrote a sha1 command and ran it on my Xeon E5-2680 v2 2.80GHz machine.
Here is a result. The new hash function is 37% faster than before.

 Performance counter stats for './llvm-sha1-old /ssd/build/bin/lld' (10 runs):

       6640.503687 task-clock (msec)         #    1.001 CPUs utilized            ( +-  0.03% )
                54 context-switches          #    0.008 K/sec                    ( +-  5.03% )
                 5 cpu-migrations            #    0.001 K/sec                    ( +- 31.73% )
           183,803 page-faults               #    0.028 M/sec                    ( +-  0.00% )
    18,527,954,113 cycles                    #    2.790 GHz                      ( +-  0.03% )
     4,993,237,485 stalled-cycles-frontend   #   26.95% frontend cycles idle     ( +-  0.11% )
   <not supported> stalled-cycles-backend
    50,217,149,423 instructions              #    2.71  insns per cycle
                                             #    0.10  stalled cycles per insn  ( +-  0.00% )
     6,094,322,337 branches                  #  917.750 M/sec                    ( +-  0.00% )
        11,778,239 branch-misses             #    0.19% of all branches          ( +-  0.01% )

       6.634017401 seconds time elapsed                                          ( +-  0.03% )

 Performance counter stats for './llvm-sha1-new /ssd/build/bin/lld' (10 runs):

       4167.062720 task-clock (msec)         #    1.001 CPUs utilized            ( +-  0.02% )
                52 context-switches          #    0.012 K/sec                    ( +- 16.45% )
                 7 cpu-migrations            #    0.002 K/sec                    ( +- 32.20% )
           183,804 page-faults               #    0.044 M/sec                    ( +-  0.00% )
    11,626,611,958 cycles                    #    2.790 GHz                      ( +-  0.02% )
     4,491,897,976 stalled-cycles-frontend   #   38.63% frontend cycles idle     ( +-  0.05% )
   <not supported> stalled-cycles-backend
    24,320,180,617 instructions              #    2.09  insns per cycle
                                             #    0.18  stalled cycles per insn  ( +-  0.00% )
     1,574,674,576 branches                  #  377.886 M/sec                    ( +-  0.00% )
        11,769,693 branch-misses             #    0.75% of all branches          ( +-  0.00% )

       4.163251552 seconds time elapsed                                          ( +-  0.02% )

Differential Revision: https://reviews.llvm.org/D26890

llvm-svn: 287473
2016-11-20 01:03:22 +00:00
..
Analysis [SCEV] limit recursion depth of CompareSCEVComplexity 2016-11-17 16:07:52 +00:00
AsmParser [AsmParser] Avoid recursing when lexing ';'. NFC. 2016-11-16 22:25:05 +00:00
Bitcode [CMake] NFC. Updating CMake dependency specifications 2016-11-17 04:36:50 +00:00
CodeGen [SelectionDAG] Add knowbits support for CONCAT_VECTOR opcode 2016-11-18 22:21:22 +00:00
DebugInfo Align Modi and FileInfo substreams on 32-byte offsets. 2016-11-16 00:59:27 +00:00
Demangle Demangle: remove references to allocator for default allocator 2016-11-20 00:20:27 +00:00
ExecutionEngine [CMake] NFC. Updating CMake dependency specifications 2016-11-17 04:36:50 +00:00
Fuzzer [libFuzzer] replace 'auto' with 'auto *' to better follow the LLVM style 2016-11-14 19:21:38 +00:00
IR Change setDiagnosticsOutputFile to take a unique_ptr from a raw pointer (NFC) 2016-11-19 18:19:41 +00:00
IRReader Timer: Track name and description. 2016-11-18 19:43:18 +00:00
LTO Give some helper classes/functions internal linkage. NFC. 2016-11-19 20:44:26 +00:00
LibDriver Object: Replace NewArchiveIterator with a simpler NewArchiveMember class. NFCI. 2016-06-29 22:27:42 +00:00
LineEditor
Linker [ThinLTO] Fix crash when importing an opaque type 2016-11-19 18:44:16 +00:00
MC Fix 24560: assembler does not share constant pool for same constants 2016-11-04 19:17:32 +00:00
Object Object: Simplify; remove unnecessary use of unique_ptr. 2016-11-18 03:20:36 +00:00
ObjectYAML Fix Clang-tidy readability-redundant-string-cstr warnings 2016-11-02 16:43:50 +00:00
Option Generalize ArgList::AddAllArgs more 2016-09-29 19:47:58 +00:00
Passes [CMake] NFC. Updating CMake dependency specifications 2016-11-17 04:36:50 +00:00
ProfileData Make the Error class constructor protected 2016-11-11 04:28:40 +00:00
Support SHA1: unroll loop in hashBlock. 2016-11-20 01:03:22 +00:00
TableGen TableGen: Add operator !or 2016-11-15 06:49:28 +00:00
Target Give some helper classes/functions internal linkage. NFC. 2016-11-19 20:44:26 +00:00
Transforms Give some helper classes/functions internal linkage. NFC. 2016-11-19 20:44:26 +00:00
CMakeLists.txt Try to fix a circular dependency in the modules build. 2016-09-06 20:16:19 +00:00
LLVMBuild.txt Add an c++ itanium demangler to llvm. 2016-09-06 19:16:48 +00:00