Implementation notes: amd64, skylake, crypto_hash/essence256

Computer: skylake
Architecture: amd64
CPU ID: GenuineIntel-000506e3-bfebfbff
SUPERCOP version: 20161026
Operation: crypto_hash
Primitive: essence256
TimeImplementationCompilerBenchmark dateSUPERCOP version
71828gccgcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv2016121520161026
72186gccgcc -m64 -march=core-avx2 -O3 -fomit-frame-pointer2016121520161026
72274gccgcc -m64 -march=native -mtune=native -O3 -fomit-frame-pointer2016121520161026
73096gccgcc -funroll-loops -m64 -march=barcelona -O3 -fomit-frame-pointer2016121520161026
73118gccgcc -O3 -fomit-frame-pointer2016121520161026
73206gccgcc -funroll-loops -march=barcelona -O3 -fomit-frame-pointer2016121520161026
73406gccgcc -m64 -march=corei7 -O3 -fomit-frame-pointer2016121520161026
73420gccgcc -m64 -O3 -fomit-frame-pointer2016121520161026
73654gccgcc -funroll-loops -march=barcelona -O2 -fomit-frame-pointer2016121520161026
73714gccgcc -funroll-loops -m64 -march=barcelona -O2 -fomit-frame-pointer2016121520161026
73820gccgcc -fno-schedule-insns -O3 -fomit-frame-pointer2016121520161026
74266gccclang -O3 -fwrapv -mavx -maes -mpclmul -fomit-frame-pointer -Qunused-arguments2016121520161026
74356gccgcc -funroll-loops -march=k8 -O3 -fomit-frame-pointer2016121520161026
74372gccclang -O3 -fwrapv -mavx -fomit-frame-pointer -Qunused-arguments2016121520161026
74382gccgcc -funroll-loops -m64 -march=k8 -O2 -fomit-frame-pointer2016121520161026
74446gccgcc -march=k8 -O3 -fomit-frame-pointer2016121520161026
74666gccgcc -m64 -march=corei7-avx -O3 -fomit-frame-pointer2016121520161026
74678gccgcc -m64 -march=core-avx-i -O3 -fomit-frame-pointer2016121520161026
74760gccgcc -m64 -march=k8 -O3 -fomit-frame-pointer2016121520161026
74792gccclang -O3 -fwrapv -march=native -fomit-frame-pointer -Qunused-arguments2016121520161026
74914gccgcc -m64 -march=core2 -msse4.1 -O3 -fomit-frame-pointer2016121520161026
74994gccclang -O3 -fwrapv -march=x86-64 -mcpu=core-avx2 -mavx2 -maes -mpclmul -fomit-frame-pointer -Qunused-arguments2016121520161026
75066gccgcc -funroll-loops -m64 -O3 -fomit-frame-pointer2016121520161026
75104gccgcc -funroll-loops -O2 -fomit-frame-pointer2016121520161026
75206gccgcc -m64 -march=core2 -msse4 -O3 -fomit-frame-pointer2016121520161026
75216gccclang -O3 -fwrapv -mavx2 -fomit-frame-pointer -Qunused-arguments2016121520161026
75220gccgcc -funroll-loops -O3 -fomit-frame-pointer2016121520161026
75270gccgcc -funroll-loops -m64 -march=k8 -O3 -fomit-frame-pointer2016121520161026
75292gccgcc -funroll-loops -fno-schedule-insns -O3 -fomit-frame-pointer2016121520161026
75342gccgcc -m64 -march=core2 -O3 -fomit-frame-pointer2016121520161026
75356gccgcc -funroll-loops -m64 -O2 -fomit-frame-pointer2016121520161026
75412gccclang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016121520161026
75450gccgcc -funroll-loops -fno-schedule-insns -O2 -fomit-frame-pointer2016121520161026
75720gccgcc -funroll-loops -march=nocona -O2 -fomit-frame-pointer2016121520161026
75966gccgcc -funroll-loops -march=k8 -O2 -fomit-frame-pointer2016121520161026
76056gccgcc -m64 -march=nocona -O3 -fomit-frame-pointer2016121520161026
76138gccgcc -funroll-loops -m64 -march=nocona -O3 -fomit-frame-pointer2016121520161026
76208gccgcc -m64 -march=barcelona -O3 -fomit-frame-pointer2016121520161026
76266gccgcc -march=nocona -O3 -fomit-frame-pointer2016121520161026
76514gccgcc -funroll-loops -m64 -march=nocona -O2 -fomit-frame-pointer2016121520161026
76528gccgcc -march=barcelona -O3 -fomit-frame-pointer2016121520161026
76542gccgcc -funroll-loops -march=nocona -O3 -fomit-frame-pointer2016121520161026
78388gccclang -mcpu=cortex-a8 -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016121520161026
78560gccclang -O3 -fomit-frame-pointer -Qunused-arguments2016121520161026
78860gccclang -mcpu=cortex-a9 -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016121520161026
78936gccclang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments2016121520161026
79174gccgcc -m64 -march=core-avx2 -Os -fomit-frame-pointer2016121520161026
79372gccgcc -m64 -march=native -mtune=native -Os -fomit-frame-pointer2016121520161026
80464gccgcc -funroll-loops -march=k8 -O -fomit-frame-pointer2016121520161026
80856gccgcc -m64 -march=corei7-avx -Os -fomit-frame-pointer2016121520161026
81006gccgcc -funroll-loops -m64 -O -fomit-frame-pointer2016121520161026
81130gccgcc -funroll-loops -march=barcelona -O -fomit-frame-pointer2016121520161026
81316gccgcc -funroll-loops -march=nocona -O -fomit-frame-pointer2016121520161026
81328gccgcc -m64 -march=core-avx-i -Os -fomit-frame-pointer2016121520161026
81386gccgcc -funroll-loops -fno-schedule-insns -O -fomit-frame-pointer2016121520161026
81448gccgcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv2016121520161026
81684gccgcc -funroll-loops -m64 -march=k8 -O -fomit-frame-pointer2016121520161026
81698gccgcc -funroll-loops -O -fomit-frame-pointer2016121520161026
81936gccgcc -funroll-loops -m64 -march=nocona -O -fomit-frame-pointer2016121520161026
82508gccgcc -funroll-loops -m64 -march=barcelona -O -fomit-frame-pointer2016121520161026
84990gccgcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv2016121520161026
86360gccgcc -m64 -march=native -mtune=native -O2 -fomit-frame-pointer2016121520161026
87642gccgcc -m64 -march=core-avx2 -O2 -fomit-frame-pointer2016121520161026
88180gccgcc -m64 -march=nocona -O2 -fomit-frame-pointer2016121520161026
90158gccgcc -m64 -march=k8 -Os -fomit-frame-pointer2016121520161026
90388gccgcc -Os -fomit-frame-pointer2016121520161026
90574gccgcc -march=k8 -Os -fomit-frame-pointer2016121520161026
90670gccgcc -march=nocona -O2 -fomit-frame-pointer2016121520161026
90774gccgcc -m64 -Os -fomit-frame-pointer2016121520161026
90904gccgcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv2016121520161026
90918gccgcc -fno-schedule-insns -Os -fomit-frame-pointer2016121520161026
91200gccgcc -m64 -march=corei7-avx -O -fomit-frame-pointer2016121520161026
91258gccgcc -funroll-loops -Os -fomit-frame-pointer2016121520161026
91420gccgcc -m64 -march=corei7-avx -O2 -fomit-frame-pointer2016121520161026
91462gccgcc -funroll-loops -fno-schedule-insns -Os -fomit-frame-pointer2016121520161026
91462gccgcc -m64 -march=k8 -O2 -fomit-frame-pointer2016121520161026
91546gccgcc -funroll-loops -march=k8 -Os -fomit-frame-pointer2016121520161026
91548gccgcc -funroll-loops -m64 -march=k8 -Os -fomit-frame-pointer2016121520161026
91662gccgcc -m64 -march=core2 -Os -fomit-frame-pointer2016121520161026
91700gccgcc -march=barcelona -Os -fomit-frame-pointer2016121520161026
91768gccgcc -funroll-loops -m64 -Os -fomit-frame-pointer2016121520161026
91904gccgcc -m64 -march=core2 -msse4 -Os -fomit-frame-pointer2016121520161026
91952gccgcc -m64 -march=corei7 -O2 -fomit-frame-pointer2016121520161026
92054gccgcc -m64 -march=barcelona -Os -fomit-frame-pointer2016121520161026
92056gccgcc -m64 -march=core2 -msse4.1 -Os -fomit-frame-pointer2016121520161026
92218gccgcc -march=k8 -O2 -fomit-frame-pointer2016121520161026
92252gccgcc -m64 -march=core2 -O2 -fomit-frame-pointer2016121520161026
92274gccgcc -m64 -march=core2 -msse4.1 -O2 -fomit-frame-pointer2016121520161026
92292gccgcc -m64 -march=core2 -msse4 -O2 -fomit-frame-pointer2016121520161026
92352gccgcc -m64 -march=core-avx-i -O -fomit-frame-pointer2016121520161026
92516gccgcc -funroll-loops -march=barcelona -Os -fomit-frame-pointer2016121520161026
92646gccgcc -funroll-loops -m64 -march=barcelona -Os -fomit-frame-pointer2016121520161026
92694gccgcc -m64 -march=core-avx-i -O2 -fomit-frame-pointer2016121520161026
92862gccgcc -m64 -march=nocona -Os -fomit-frame-pointer2016121520161026
92886gccgcc -fno-schedule-insns -O2 -fomit-frame-pointer2016121520161026
92958gccgcc -m64 -march=core-avx2 -O -fomit-frame-pointer2016121520161026
93008gccgcc -m64 -O -fomit-frame-pointer2016121520161026
93026gccgcc -m64 -march=barcelona -O -fomit-frame-pointer2016121520161026
93048gccgcc -m64 -O2 -fomit-frame-pointer2016121520161026
93244gccgcc -O2 -fomit-frame-pointer2016121520161026
93282gccgcc -m64 -march=k8 -O -fomit-frame-pointer2016121520161026
93288gccgcc -m64 -march=core2 -msse4.1 -O -fomit-frame-pointer2016121520161026
93806gccgcc -m64 -march=native -mtune=native -O -fomit-frame-pointer2016121520161026
93964gccgcc -funroll-loops -m64 -march=nocona -Os -fomit-frame-pointer2016121520161026
94118gccgcc -fno-schedule-insns -O -fomit-frame-pointer2016121520161026
94536gccgcc -funroll-loops -march=nocona -Os -fomit-frame-pointer2016121520161026
94656gccgcc -march=nocona -O -fomit-frame-pointer2016121520161026
94772gccgcc -march=nocona -Os -fomit-frame-pointer2016121520161026
94820gccgcc -march=barcelona -O -fomit-frame-pointer2016121520161026
94968gccgcc -m64 -march=core2 -msse4 -O -fomit-frame-pointer2016121520161026
95106gccgcc -m64 -march=nocona -O -fomit-frame-pointer2016121520161026
95268gccgcc -O -fomit-frame-pointer2016121520161026
95466gccgcc -m64 -march=corei7 -O -fomit-frame-pointer2016121520161026
95686gccgcc -march=barcelona -O2 -fomit-frame-pointer2016121520161026
96034gccgcc -m64 -march=core2 -O -fomit-frame-pointer2016121520161026
96074gccgcc -march=k8 -O -fomit-frame-pointer2016121520161026
96404gccgcc -m64 -march=barcelona -O2 -fomit-frame-pointer2016121520161026
97210gccgcc -m64 -march=corei7 -Os -fomit-frame-pointer2016121520161026
321392gccgcc2016121520161026
322254gcccc2016121520161026
322290gccgcc -funroll-loops2016121520161026

Compiler output

Implementation: crypto_hash/essence256/gcc
Compiler: clang -O3 -fomit-frame-pointer -Qunused-arguments
essence_L_tables.c: In file included from essence_L_tables.c:12:
essence_L_tables.c: ./essence_api.h:13:9: warning: '_ESSENCE_API_H_' is used as a header guard here, followed by #define of a different macro [-Wheader-guard]
essence_L_tables.c: #ifndef _ESSENCE_API_H_
essence_L_tables.c: ^~~~~~~~~~~~~~~
essence_L_tables.c: ./essence_api.h:14:9: note: '_ESSENCE_H_API_' is defined here; did you mean '_ESSENCE_API_H_'?
essence_L_tables.c: #define _ESSENCE_H_API_
essence_L_tables.c: ^~~~~~~~~~~~~~~
essence_L_tables.c: _ESSENCE_API_H_
essence_L_tables.c: 1 warning generated.
essence_api.c: In file included from essence_api.c:11:
essence_api.c: In file included from ./essence.h:11:
essence_api.c: ./essence_api.h:13:9: warning: '_ESSENCE_API_H_' is used as a header guard here, followed by #define of a different macro [-Wheader-guard]
essence_api.c: #ifndef _ESSENCE_API_H_
essence_api.c: ^~~~~~~~~~~~~~~
essence_api.c: ./essence_api.h:14:9: note: '_ESSENCE_H_API_' is defined here; did you mean '_ESSENCE_API_H_'?
essence_api.c: #define _ESSENCE_H_API_
essence_api.c: ^~~~~~~~~~~~~~~
essence_api.c: _ESSENCE_API_H_
essence_api.c: 1 warning generated.
essence_compress_256.c: In file included from essence_compress_256.c:11:
essence_compress_256.c: In file included from ./essence.h:11:
essence_compress_256.c: ./essence_api.h:13:9: warning: '_ESSENCE_API_H_' is used as a header guard here, followed by #define of a different macro [-Wheader-guard]
essence_compress_256.c: #ifndef _ESSENCE_API_H_
essence_compress_256.c: ^~~~~~~~~~~~~~~
essence_compress_256.c: ./essence_api.h:14:9: note: '_ESSENCE_H_API_' is defined here; did you mean '_ESSENCE_API_H_'?
essence_compress_256.c: #define _ESSENCE_H_API_
essence_compress_256.c: ^~~~~~~~~~~~~~~
essence_compress_256.c: _ESSENCE_API_H_
essence_compress_256.c: 1 warning generated.
essence_compress_256_dual.c: In file included from essence_compress_256_dual.c:11:
essence_compress_256_dual.c: In file included from ./essence.h:11:
essence_compress_256_dual.c: ./essence_api.h:13:9: warning: '_ESSENCE_API_H_' is used as a header guard here, followed by #define of a different macro [-Wheader-guard]
essence_compress_256_dual.c: #ifndef _ESSENCE_API_H_
essence_compress_256_dual.c: ^~~~~~~~~~~~~~~
essence_compress_256_dual.c: ./essence_api.h:14:9: note: '_ESSENCE_H_API_' is defined here; did you mean '_ESSENCE_API_H_'?
essence_compress_256_dual.c: #define _ESSENCE_H_API_
essence_compress_256_dual.c: ^~~~~~~~~~~~~~~
essence_compress_256_dual.c: _ESSENCE_API_H_
essence_compress_256_dual.c: 1 warning generated.
essence_compress_512.c: In file included from essence_compress_512.c:10:
essence_compress_512.c: In file included from ./essence.h:11:
essence_compress_512.c: ./essence_api.h:13:9: warning: '_ESSENCE_API_H_' is used as a header guard here, followed by #define of a different macro [-Wheader-guard]
essence_compress_512.c: #ifndef _ESSENCE_API_H_
essence_compress_512.c: ^~~~~~~~~~~~~~~
essence_compress_512.c: ./essence_api.h:14:9: note: '_ESSENCE_H_API_' is defined here; did you mean '_ESSENCE_API_H_'?
essence_compress_512.c: #define _ESSENCE_H_API_
essence_compress_512.c: ^~~~~~~~~~~~~~~
essence_compress_512.c: _ESSENCE_API_H_
essence_compress_512.c: 1 warning generated.
hash.c: In file included from hash.c:2:
hash.c: ./essence_api.h:13:9: warning: '_ESSENCE_API_H_' is used as a header guard here, followed by #define of a different macro [-Wheader-guard]
hash.c: #ifndef _ESSENCE_API_H_
hash.c: ^~~~~~~~~~~~~~~
hash.c: ./essence_api.h:14:9: note: '_ESSENCE_H_API_' is defined here; did you mean '_ESSENCE_API_H_'?
hash.c: #define _ESSENCE_H_API_
hash.c: ^~~~~~~~~~~~~~~
hash.c: _ESSENCE_API_H_
hash.c: 1 warning generated.

Number of similar (compiler,implementation) pairs: 10, namely:
CompilerImplementations
clang -O3 -fomit-frame-pointer -Qunused-arguments gcc
clang -O3 -fwrapv -march=native -fomit-frame-pointer -Qunused-arguments gcc
clang -O3 -fwrapv -march=x86-64 -mcpu=core-avx2 -mavx2 -maes -mpclmul -fomit-frame-pointer -Qunused-arguments gcc
clang -O3 -fwrapv -mavx2 -fomit-frame-pointer -Qunused-arguments gcc
clang -O3 -fwrapv -mavx -fomit-frame-pointer -Qunused-arguments gcc
clang -O3 -fwrapv -mavx -maes -mpclmul -fomit-frame-pointer -Qunused-arguments gcc
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments gcc
clang -mcpu=cortex-a8 -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments gcc
clang -mcpu=cortex-a9 -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments gcc
clang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments gcc