Implementation notes: aarch64, hikey960, crypto_hash/fugue256

Computer: hikey960
Architecture: aarch64
CPU ID: 410fd034
SUPERCOP version: 20190816
Operation: crypto_hash
Primitive: fugue256
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
0123080 0 0135598 904 744ANSI_opt32cc2019112620190816
044668 0 054930 920 744ANSI_opt32gcc_-O_-fomit-frame-pointer2019112620190816
042780 0 052350 904 744ANSI_opt32gcc_-Os_-fomit-frame-pointer2019112620190816
042780 0 052350 904 744ANSI_opt32gcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112620190816
043856 0 057322 920 776ANSI_opt32gcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112620190816
050516 0 061624 816 760ANSI_opt64clang_-O3_-fomit-frame-pointer_-Qunused-arguments2019112620190816
052988 0 064826 920 776ANSI_opt64gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019112620190816
052116 0 061686 904 744ANSI_opt64gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019112620190816
032736 0 046019 920 744sphlibgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112620190816
032300 0 042563 920 744sphlibgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019112620190816
030908 0 040471 904 744sphlibgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019112620190816
3330043416 0 053642 920 744ANSI_opt32gcc_-O2_-fomit-frame-pointer2019112620190816
3330044668 0 054930 920 744ANSI_opt32gcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019112620190816
3330043496 0 056730 920 744ANSI_opt32gcc_-funroll-loops_-O2_-fomit-frame-pointer2019112620190816
3330053416 0 066690 920 744ANSI_opt64gcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112620190816
3330031360 0 042570 824 760sphlibclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019112620190816
3330032644 0 044572 928 776sphlibgcc_-O3_-fomit-frame-pointer2019112620190816
3330031864 0 042059 920 744sphlibgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112620190816
3507953328 0 063554 920 744ANSI_opt64gcc_-O2_-fomit-frame-pointer2019112620190816
3746733004 0 046556 928 776sphlibgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112620190816
4162543588 0 055434 920 776ANSI_opt32gcc_-O3_-fomit-frame-pointer2019112620190816
4162550516 0 061648 816 760ANSI_opt64clang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019112620190816
4162531360 0 042570 824 760sphlibclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019112620190816
4162532364 0 042627 920 744sphlibgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019112620190816
4162533884 0 047347 920 744sphlibgcc_-funroll-loops_-O_-fomit-frame-pointer2019112620190816
4162532016 0 042251 920 744sphlibgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019112620190816
4166043776 0 057050 920 744ANSI_opt32gcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112620190816
4677240612 0 051744 816 760ANSI_opt32clang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019112620190816
4677242772 0 052374 904 744ANSI_opt32gcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112620190816
4677243020 0 054858 920 776ANSI_opt32gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019112620190816
4677250516 0 061648 816 760ANSI_opt64clang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019112620190816
4677253592 0 065434 920 776ANSI_opt64gcc_-O3_-fomit-frame-pointer2019112620190816
4677253536 0 065354 920 776ANSI_opt64gcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112620190816
4677254188 0 064450 920 744ANSI_opt64gcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019112620190816
4677253580 0 067082 920 776ANSI_opt64gcc_-funroll-loops_-O3_-fomit-frame-pointer2019112620190816
4677251868 0 061470 904 744ANSI_opt64gcc_-funroll-loops_-Os_-fomit-frame-pointer2019112620190816
4677254360 0 067818 920 744ANSI_opt64gcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019112620190816
4677231360 0 042546 824 760sphlibclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019112620190816
4677232952 0 046195 920 744sphlibgcc_-funroll-loops_-O2_-fomit-frame-pointer2019112620190816
4995053504 0 066738 920 744ANSI_opt64gcc_-funroll-loops_-O2_-fomit-frame-pointer2019112620190816
4995032476 0 044380 928 776sphlibgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112620190816
5827540612 0 051744 816 760ANSI_opt32clang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019112620190816
5827530904 0 040503 904 744sphlibgcc_-funroll-loops_-Os_-fomit-frame-pointer2019112620190816
5827530904 0 040503 904 744sphlibgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112620190816
5846543584 0 057082 920 776ANSI_opt32gcc_-funroll-loops_-O3_-fomit-frame-pointer2019112620190816
5846542856 0 053082 920 744ANSI_opt32gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019112620190816
5846553496 0 066962 920 776ANSI_opt64gcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112620190816
5846552824 0 063050 920 744ANSI_opt64gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019112620190816
6230033180 0 046764 928 776sphlibgcc_-funroll-loops_-O3_-fomit-frame-pointer2019112620190816
6660044076 0 054338 920 744ANSI_opt32gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019112620190816
6660053280 0 063466 920 744ANSI_opt64gcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112620190816
7492543656 0 053842 920 744ANSI_opt32gcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019112620190816
7492544784 0 058242 920 744ANSI_opt32gcc_-funroll-loops_-O_-fomit-frame-pointer2019112620190816
7492532364 0 042627 920 744sphlibgcc_-O_-fomit-frame-pointer2019112620190816
7498830908 0 040471 904 744sphlibgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112620190816
7909743916 0 055738 920 776ANSI_opt32gcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019112620190816
8185142772 0 052374 904 744ANSI_opt32gcc_-funroll-loops_-Os_-fomit-frame-pointer2019112620190816
8185151868 0 061470 904 744ANSI_opt64gcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112620190816
8185131360 0 042570 824 760sphlibclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019112620190816
8185130908 0 040471 904 744sphlibgcc_-Os_-fomit-frame-pointer2019112620190816
8325042780 0 052350 904 744ANSI_opt32gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019112620190816
9345240612 0 051744 816 760ANSI_opt32clang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019112620190816
9354440612 0 051720 816 760ANSI_opt32clang_-O3_-fomit-frame-pointer_-Qunused-arguments2019112620190816
9354432080 0 042315 920 744sphlibgcc_-O2_-fomit-frame-pointer2019112620190816
9354432636 0 044556 928 776sphlibgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019112620190816
9990054188 0 064450 920 744ANSI_opt64gcc_-O_-fomit-frame-pointer2019112620190816
9990054360 0 067818 920 744ANSI_opt64gcc_-funroll-loops_-O_-fomit-frame-pointer2019112620190816
9990053544 0 063810 920 744ANSI_opt64gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019112620190816
9990079576 0 092103 904 744sphlibgcc_-funroll-loops2019112620190816
10523744784 0 058242 920 744ANSI_opt32gcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019112620190816
10949750516 0 061648 816 760ANSI_opt64clang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019112620190816
124875123080 0 0135598 904 744ANSI_opt32gcc_-funroll-loops2019112620190816
13320051868 0 061438 904 744ANSI_opt64gcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019112620190816
14031633884 0 047347 920 744sphlibgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019112620190816
152009171824 0 0184342 904 744ANSI_opt64cc2019112620190816
187088171824 0 0184342 904 744ANSI_opt64gcc2019112620190816
18708851868 0 061438 904 744ANSI_opt64gcc_-Os_-fomit-frame-pointer2019112620190816
24975079576 0 092103 904 744sphlibcc2019112620190816
34965079576 0 092103 904 744sphlibgcc2019112620190816
366300123080 0 0135598 904 744ANSI_opt32gcc2019112620190816
441225171824 0 0184342 904 744ANSI_opt64gcc_-funroll-loops2019112620190816

Compiler output

Implementation: ANSI_opt32
Security model: unknown
Compiler: cc
hash.c: In file included from aestab.h:4:0,
hash.c: from fugue_256_code.h:13,
hash.c: from hash.c:7:
hash.c: hash.c: In function 'crypto_hash_fugue256_ANSI_opt32':
hash.c: aestab_t.h:19:26: warning: result of '1718686559 << 24' requires 56 bits to represent, but 'int' only has 32 bits [-Wshift-overflow=]
hash.c: #define HO2BE_4(_x) ((_x<<24)|((_x<<8)&0xff0000)|((_x>>8)&0xff00)|(_x>>24))
hash.c: ^
hash.c: hash.c:32:27: note: in expansion of macro 'HO2BE_4'
hash.c: HO2BE_4(0xe952bdde),HO2BE_4(0x6671135f),HO2BE_4(0xe0d4f668),HO2BE_4(0xd2b0b594),
hash.c: ^~~~~~~
hash.c: aestab_t.h:19:36: warning: result of '1718686559 << 8' requires 40 bits to represent, but 'int' only has 32 bits [-Wshift-overflow=]
hash.c: #define HO2BE_4(_x) ((_x<<24)|((_x<<8)&0xff0000)|((_x>>8)&0xff00)|(_x>>24))
hash.c: ^
hash.c: hash.c:32:27: note: in expansion of macro 'HO2BE_4'
hash.c: HO2BE_4(0xe952bdde),HO2BE_4(0x6671135f),HO2BE_4(0xe0d4f668),HO2BE_4(0xd2b0b594),
hash.c: ^~~~~~~
hash.c: aestab_t.h:19:26: warning: result of '888717896 << 24' requires 55 bits to represent, but 'int' only has 32 bits [-Wshift-overflow=]
hash.c: #define HO2BE_4(_x) ((_x<<24)|((_x<<8)&0xff0000)|((_x>>8)&0xff00)|(_x>>24))
hash.c: ^
hash.c: hash.c:33:67: note: in expansion of macro 'HO2BE_4'
hash.c: HO2BE_4(0xf96c621d),HO2BE_4(0xfbf929de),HO2BE_4(0x9149e899),HO2BE_4(0x34f8c248)};
hash.c: ^~~~~~~
hash.c: aestab_t.h:19:36: warning: result of '888717896 << 8' requires 39 bits to represent, but 'int' only has 32 bits [-Wshift-overflow=]
hash.c: #define HO2BE_4(_x) ((_x<<24)|((_x<<8)&0xff0000)|((_x>>8)&0xff00)|(_x>>24))
hash.c: ^
hash.c: ...

Number of similar (compiler,implementation) pairs: 23, namely:
CompilerImplementations
cc ANSI_opt32
gcc ANSI_opt32
gcc -O2 -fomit-frame-pointer ANSI_opt32
gcc -O3 -fomit-frame-pointer ANSI_opt32
gcc -O -fomit-frame-pointer ANSI_opt32
gcc -Os -fomit-frame-pointer ANSI_opt32
gcc -fno-schedule-insns -O2 -fomit-frame-pointer ANSI_opt32
gcc -fno-schedule-insns -O3 -fomit-frame-pointer ANSI_opt32
gcc -fno-schedule-insns -O -fomit-frame-pointer ANSI_opt32
gcc -fno-schedule-insns -Os -fomit-frame-pointer ANSI_opt32
gcc -funroll-loops ANSI_opt32
gcc -funroll-loops -O2 -fomit-frame-pointer ANSI_opt32
gcc -funroll-loops -O3 -fomit-frame-pointer ANSI_opt32
gcc -funroll-loops -O -fomit-frame-pointer ANSI_opt32
gcc -funroll-loops -Os -fomit-frame-pointer ANSI_opt32
gcc -funroll-loops -fno-schedule-insns -O2 -fomit-frame-pointer ANSI_opt32
gcc -funroll-loops -fno-schedule-insns -O3 -fomit-frame-pointer ANSI_opt32
gcc -funroll-loops -fno-schedule-insns -O -fomit-frame-pointer ANSI_opt32
gcc -funroll-loops -fno-schedule-insns -Os -fomit-frame-pointer ANSI_opt32
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv ANSI_opt32
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv ANSI_opt32
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv ANSI_opt32
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv ANSI_opt32

Compiler output

Implementation: ANSI_opt32
Security model: unknown
Compiler: clang -O3 -fomit-frame-pointer -Qunused-arguments
hash.c: hash.c:32:27: warning: signed shift result (0x6671135F000000) requires 56 bits to represent, but 'int' only has 32 bits [-Wshift-overflow]
hash.c: HO2BE_4(0xe952bdde),HO2BE_4(0x6671135f),HO2BE_4(0xe0d4f668),HO2BE_4(0xd2b0b594),
hash.c: ^~~~~~~~~~~~~~~~~~~
hash.c: ./aestab_t.h:19:26: note: expanded from macro 'HO2BE_4'
hash.c: #define HO2BE_4(_x) ((_x<<24)|((_x<<8)&0xff0000)|((_x>>8)&0xff00)|(_x>>24))
hash.c: ~~^ ~~
hash.c: hash.c:32:27: warning: signed shift result (0x6671135F00) requires 40 bits to represent, but 'int' only has 32 bits [-Wshift-overflow]
hash.c: HO2BE_4(0xe952bdde),HO2BE_4(0x6671135f),HO2BE_4(0xe0d4f668),HO2BE_4(0xd2b0b594),
hash.c: ^~~~~~~~~~~~~~~~~~~
hash.c: ./aestab_t.h:19:36: note: expanded from macro 'HO2BE_4'
hash.c: #define HO2BE_4(_x) ((_x<<24)|((_x<<8)&0xff0000)|((_x>>8)&0xff00)|(_x>>24))
hash.c: ~~^ ~
hash.c: hash.c:33:67: warning: signed shift result (0x34F8C248000000) requires 55 bits to represent, but 'int' only has 32 bits [-Wshift-overflow]
hash.c: HO2BE_4(0xf96c621d),HO2BE_4(0xfbf929de),HO2BE_4(0x9149e899),HO2BE_4(0x34f8c248)};
hash.c: ^~~~~~~~~~~~~~~~~~~
hash.c: ./aestab_t.h:19:26: note: expanded from macro 'HO2BE_4'
hash.c: #define HO2BE_4(_x) ((_x<<24)|((_x<<8)&0xff0000)|((_x>>8)&0xff00)|(_x>>24))
hash.c: ~~^ ~~
hash.c: hash.c:33:67: warning: signed shift result (0x34F8C24800) requires 39 bits to represent, but 'int' only has 32 bits [-Wshift-overflow]
hash.c: HO2BE_4(0xf96c621d),HO2BE_4(0xfbf929de),HO2BE_4(0x9149e899),HO2BE_4(0x34f8c248)};
hash.c: ^~~~~~~~~~~~~~~~~~~
hash.c: ./aestab_t.h:19:36: note: expanded from macro 'HO2BE_4'
hash.c: #define HO2BE_4(_x) ((_x<<24)|((_x<<8)&0xff0000)|((_x>>8)&0xff00)|(_x>>24))
hash.c: ~~^ ~
hash.c: 4 warnings generated.

Number of similar (compiler,implementation) pairs: 8, namely:
CompilerImplementations
clang -O3 -fomit-frame-pointer -Qunused-arguments ANSI_opt32
clang -O3 -fwrapv -mavx2 -fomit-frame-pointer -Qunused-arguments ANSI_opt32
clang -O3 -fwrapv -mavx -fomit-frame-pointer -Qunused-arguments ANSI_opt32
clang -O3 -fwrapv -mavx -maes -mpclmul -fomit-frame-pointer -Qunused-arguments ANSI_opt32
clang -O3 -fomit-frame-pointer -Qunused-arguments ANSI_opt64
clang -O3 -fwrapv -mavx2 -fomit-frame-pointer -Qunused-arguments ANSI_opt64
clang -O3 -fwrapv -mavx -fomit-frame-pointer -Qunused-arguments ANSI_opt64
clang -O3 -fwrapv -mavx -maes -mpclmul -fomit-frame-pointer -Qunused-arguments ANSI_opt64

Compiler output

Implementation: ANSI_opt64
Security model: unknown
Compiler: cc
hash.c: In file included from aestab.h:4:0,
hash.c: from fugue_256_code.h:13,
hash.c: from hash.c:7:
hash.c: hash.c: In function 'crypto_hash_fugue256_ANSI_opt64':
hash.c: aestab_t.h:19:26: warning: result of '1718686559 << 24' requires 56 bits to represent, but 'int' only has 32 bits [-Wshift-overflow=]
hash.c: #define HO2BE_4(_x) ((_x<<24)|((_x<<8)&0xff0000)|((_x>>8)&0xff00)|(_x>>24))
hash.c: ^
hash.c: hash.c:32:27: note: in expansion of macro 'HO2BE_4'
hash.c: HO2BE_4(0xe952bdde),HO2BE_4(0x6671135f),HO2BE_4(0xe0d4f668),HO2BE_4(0xd2b0b594),
hash.c: ^~~~~~~
hash.c: aestab_t.h:19:36: warning: result of '1718686559 << 8' requires 40 bits to represent, but 'int' only has 32 bits [-Wshift-overflow=]
hash.c: #define HO2BE_4(_x) ((_x<<24)|((_x<<8)&0xff0000)|((_x>>8)&0xff00)|(_x>>24))
hash.c: ^
hash.c: hash.c:32:27: note: in expansion of macro 'HO2BE_4'
hash.c: HO2BE_4(0xe952bdde),HO2BE_4(0x6671135f),HO2BE_4(0xe0d4f668),HO2BE_4(0xd2b0b594),
hash.c: ^~~~~~~
hash.c: aestab_t.h:19:26: warning: result of '888717896 << 24' requires 55 bits to represent, but 'int' only has 32 bits [-Wshift-overflow=]
hash.c: #define HO2BE_4(_x) ((_x<<24)|((_x<<8)&0xff0000)|((_x>>8)&0xff00)|(_x>>24))
hash.c: ^
hash.c: hash.c:33:67: note: in expansion of macro 'HO2BE_4'
hash.c: HO2BE_4(0xf96c621d),HO2BE_4(0xfbf929de),HO2BE_4(0x9149e899),HO2BE_4(0x34f8c248)};
hash.c: ^~~~~~~
hash.c: aestab_t.h:19:36: warning: result of '888717896 << 8' requires 39 bits to represent, but 'int' only has 32 bits [-Wshift-overflow=]
hash.c: #define HO2BE_4(_x) ((_x<<24)|((_x<<8)&0xff0000)|((_x>>8)&0xff00)|(_x>>24))
hash.c: ^
hash.c: ...

Number of similar (compiler,implementation) pairs: 23, namely:
CompilerImplementations
cc ANSI_opt64
gcc ANSI_opt64
gcc -O2 -fomit-frame-pointer ANSI_opt64
gcc -O3 -fomit-frame-pointer ANSI_opt64
gcc -O -fomit-frame-pointer ANSI_opt64
gcc -Os -fomit-frame-pointer ANSI_opt64
gcc -fno-schedule-insns -O2 -fomit-frame-pointer ANSI_opt64
gcc -fno-schedule-insns -O3 -fomit-frame-pointer ANSI_opt64
gcc -fno-schedule-insns -O -fomit-frame-pointer ANSI_opt64
gcc -fno-schedule-insns -Os -fomit-frame-pointer ANSI_opt64
gcc -funroll-loops ANSI_opt64
gcc -funroll-loops -O2 -fomit-frame-pointer ANSI_opt64
gcc -funroll-loops -O3 -fomit-frame-pointer ANSI_opt64
gcc -funroll-loops -O -fomit-frame-pointer ANSI_opt64
gcc -funroll-loops -Os -fomit-frame-pointer ANSI_opt64
gcc -funroll-loops -fno-schedule-insns -O2 -fomit-frame-pointer ANSI_opt64
gcc -funroll-loops -fno-schedule-insns -O3 -fomit-frame-pointer ANSI_opt64
gcc -funroll-loops -fno-schedule-insns -O -fomit-frame-pointer ANSI_opt64
gcc -funroll-loops -fno-schedule-insns -Os -fomit-frame-pointer ANSI_opt64
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv ANSI_opt64
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv ANSI_opt64
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv ANSI_opt64
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv ANSI_opt64