Implementation notes: amd64, oki, crypto_sign/sphincsf256shake256

Computer: oki
Architecture: amd64
CPU ID: GenuineIntel-00050654-bfebfbff
SUPERCOP version: 20181123
Operation: crypto_sign
Primitive: sphincsf256shake256
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
752694298? ? ?? ? ?avx2gcc_-m64_-march=core-avx2_-O3_-fomit-frame-pointer2019011520181123
755789306? ? ?? ? ?avx2clang_-O3_-fwrapv_-march=x86-64_-mcpu=core-avx2_-mavx2_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019011520181123
756380540? ? ?? ? ?avx2clang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019011520181123
821501458? ? ?? ? ?avx2gcc_-m64_-march=native_-mtune=native_-O3_-fomit-frame-pointer2019011520181123
823260144? ? ?? ? ?avx2gcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv2019011520181123
1063214194? ? ?? ? ?avx2gcc_-m64_-march=core-avx2_-O2_-fomit-frame-pointer2019011520181123
1069209306? ? ?? ? ?avx2gcc_-m64_-march=core-avx2_-O_-fomit-frame-pointer2019011520181123
1083901836? ? ?? ? ?avx2gcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv2019011520181123
1088469316? ? ?? ? ?avx2gcc_-m64_-march=core-avx2_-Os_-fomit-frame-pointer2019011520181123
1091023096? ? ?? ? ?avx2gcc_-m64_-march=native_-mtune=native_-O2_-fomit-frame-pointer2019011520181123
1121767386? ? ?? ? ?avx2gcc_-m64_-march=native_-mtune=native_-O_-fomit-frame-pointer2019011520181123
1125767756? ? ?? ? ?avx2gcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv2019011520181123
1189667714? ? ?? ? ?avx2gcc_-m64_-march=native_-mtune=native_-Os_-fomit-frame-pointer2019011520181123
1209544848? ? ?? ? ?avx2gcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv2019011520181123

Compiler output

Implementation: avx2
Security model: unknown
Compiler: cc
fips202x4.c: fips202x4.c:30:51: error: unknown type name '__m256i'
fips202x4.c: extern void KeccakP1600times4_PermuteAll_24rounds(__m256i *s);
fips202x4.c: ^
fips202x4.c: fips202x4.c:33:29: error: unknown type name '__m256i'
fips202x4.c: static void keccak_absorb4x(__m256i *s,
fips202x4.c: ^
fips202x4.c: fips202x4.c:109:36: error: unknown type name '__m256i'
fips202x4.c: __m256i *s,
fips202x4.c: ^
fips202x4.c: fips202x4.c: In function 'shake128x4':
fips202x4.c: fips202x4.c:145:3: error: unknown type name '__m256i'
fips202x4.c: __m256i s[25];
fips202x4.c: ^
fips202x4.c: fips202x4.c: In function 'shake256x4':
fips202x4.c: fips202x4.c:190:3: error: unknown type name '__m256i'
fips202x4.c: __m256i s[25];
fips202x4.c: ^

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
cc avx2

Compiler output

Implementation: avx2
Security model: unknown
Compiler: clang -O3 -fomit-frame-pointer -Qunused-arguments
fips202x4.c: fips202x4.c:154:12: error: always_inline function '_mm256_xor_si256' requires target feature 'sse4.2', but would be inlined into function 'shake128x4' that is compiled without support for 'sse4.2'
fips202x4.c: s[i] = _mm256_xor_si256(s[i], s[i]);
fips202x4.c: ^
fips202x4.c: 1 error generated.

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
clang -O3 -fomit-frame-pointer -Qunused-arguments avx2
clang -mcpu=cortex-a8 -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments avx2
clang -mcpu=cortex-a9 -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments avx2
clang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments avx2

Compiler output

Implementation: avx2
Security model: unknown
Compiler: clang -O3 -fwrapv -march=native -fomit-frame-pointer -Qunused-arguments
try.c: fatal error: error in backend: Cannot select: 0xf33070: v4i64 = X86ISD::VTRUNC 0xf32ea0
try.c: 0xf32ea0: v16i32 = vselect 0xf2fae0, 0xeabda0, 0xf32d70
try.c: 0xf2fae0: v4i1 = X86ISD::PCMPGTM 0xf1c560, 0xeb41e0
try.c: 0xf1c560: v4i64 = X86ISD::VBROADCAST 0xeb4570
try.c: 0xeb4570: i64,ch = load<LD8[%uglygep72]> 0xe15dd0, 0xec12a0, undef:i64
try.c: 0xec12a0: i64 = add 0xf1d440, 0xec5560
try.c: 0xf1d440: i64 = X86ISD::Wrapper TargetGlobalAddress:i64<[64 x i64]* @cycles> 0
try.c: 0xf0e180: i64 = TargetGlobalAddress<[64 x i64]* @cycles> 0
try.c: 0xec5560: i64 = shl 0xf0d930, Constant:i8<3>
try.c: 0xf0d930: i64,ch = CopyFromReg 0xe15dd0, Register:i64 %vreg50
try.c: 0xf1d900: i64 = Register %vreg50
try.c: 0xec7360: i8 = Constant<3>
try.c: 0xf1abd0: i64 = undef
try.c: 0xeb41e0: v4i64,ch = CopyFromReg 0xe15dd0, Register:v4i64 %vreg13
try.c: 0xed67e0: v4i64 = Register %vreg13
try.c: 0xeabda0: v16i32 = X86ISD::VBROADCAST 0xf0db90
try.c: 0xf0db90: i32,ch = load<LD4[ConstantPool]> 0xe15dd0, 0xf329e0, undef:i64
try.c: 0xf329e0: i64 = X86ISD::Wrapper TargetConstantPool:i64<i32 1> 0
try.c: 0xed4300: i64 = TargetConstantPool<i32 1> 0
try.c: 0xf1abd0: i64 = undef
try.c: 0xf32d70: v16i32 = BUILD_VECTOR Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>
try.c: 0xf32c40: i32 = Constant<0>
try.c: 0xf32c40: i32 = Constant<0>
try.c: 0xf32c40: i32 = Constant<0>
try.c: 0xf32c40: i32 = Constant<0>
try.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -O3 -fwrapv -march=native -fomit-frame-pointer -Qunused-arguments avx2

Compiler output

Implementation: avx2
Security model: unknown
Compiler: clang -O3 -fwrapv -mavx -fomit-frame-pointer -Qunused-arguments
fips202x4.c: fips202x4.c:154:12: error: always_inline function '_mm256_xor_si256' requires target feature 'avx2', but would be inlined into function 'shake128x4' that is compiled without support for 'avx2'
fips202x4.c: s[i] = _mm256_xor_si256(s[i], s[i]);
fips202x4.c: ^
fips202x4.c: 1 error generated.

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

Compiler output

Implementation: avx2
Security model: unknown
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments
try.c: fatal error: error in backend: Cannot select: 0x10682e0: v4i64 = X86ISD::VTRUNC 0x1068110
try.c: 0x1068110: v16i32 = vselect 0x1056a80, 0xff4250, 0x1067fe0
try.c: 0x1056a80: v4i1 = X86ISD::PCMPGTM 0x104fbc0, 0xff5000
try.c: 0x104fbc0: v4i64 = X86ISD::VBROADCAST 0xff5390
try.c: 0xff5390: i64,ch = load<LD8[%uglygep72]> 0xf49dd0, 0x102f4a0, undef:i64
try.c: 0x102f4a0: i64 = add 0x1050aa0, 0x1011210
try.c: 0x1050aa0: i64 = X86ISD::Wrapper TargetGlobalAddress:i64<[64 x i64]* @cycles> 0
try.c: 0x1043940: i64 = TargetGlobalAddress<[64 x i64]* @cycles> 0
try.c: 0x1011210: i64 = shl 0x10430f0, Constant:i8<3>
try.c: 0x10430f0: i64,ch = CopyFromReg 0xf49dd0, Register:i64 %vreg50
try.c: 0x1050f60: i64 = Register %vreg50
try.c: 0xfff000: i8 = Constant<3>
try.c: 0x104e230: i64 = undef
try.c: 0xff5000: v4i64,ch = CopyFromReg 0xf49dd0, Register:v4i64 %vreg13
try.c: 0xffbe40: v4i64 = Register %vreg13
try.c: 0xff4250: v16i32 = X86ISD::VBROADCAST 0x1043350
try.c: 0x1043350: i32,ch = load<LD4[ConstantPool]> 0xf49dd0, 0x1067c50, undef:i64
try.c: 0x1067c50: i64 = X86ISD::Wrapper TargetConstantPool:i64<i32 1> 0
try.c: 0xff9960: i64 = TargetConstantPool<i32 1> 0
try.c: 0x104e230: i64 = undef
try.c: 0x1067fe0: v16i32 = BUILD_VECTOR Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>, Constant:i32<0>
try.c: 0x1067eb0: i32 = Constant<0>
try.c: 0x1067eb0: i32 = Constant<0>
try.c: 0x1067eb0: i32 = Constant<0>
try.c: 0x1067eb0: i32 = Constant<0>
try.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments avx2

Compiler output

Implementation: avx2
Security model: unknown
Compiler: gcc
fips202x4.c: fips202x4.c: In function 'shake128x4':
fips202x4.c: fips202x4.c:154:10: warning: AVX vector return without AVX enabled changes the ABI [-Wpsabi]
fips202x4.c: s[i] = _mm256_xor_si256(s[i], s[i]);
fips202x4.c: ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fips202x4.c: In file included from /usr/lib64/gcc/x86_64-suse-linux/7/include/immintrin.h:43:0,
fips202x4.c: from fips202x4.c:1:
fips202x4.c: /usr/lib64/gcc/x86_64-suse-linux/7/include/avx2intrin.h:913:1: error: inlining failed in call to always_inline '_mm256_xor_si256': target specific option mismatch
fips202x4.c: _mm256_xor_si256 (__m256i __A, __m256i __B)
fips202x4.c: ^~~~~~~~~~~~~~~~
fips202x4.c: fips202x4.c:154:12: note: called from here
fips202x4.c: s[i] = _mm256_xor_si256(s[i], s[i]);
fips202x4.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~

Number of similar (compiler,implementation) pairs: 86, namely:
CompilerImplementations
gcc avx2
gcc -O2 -fomit-frame-pointer avx2
gcc -O3 -fomit-frame-pointer avx2
gcc -O -fomit-frame-pointer avx2
gcc -Os -fomit-frame-pointer avx2
gcc -fno-schedule-insns -O2 -fomit-frame-pointer avx2
gcc -fno-schedule-insns -O3 -fomit-frame-pointer avx2
gcc -fno-schedule-insns -O -fomit-frame-pointer avx2
gcc -fno-schedule-insns -Os -fomit-frame-pointer avx2
gcc -funroll-loops avx2
gcc -funroll-loops -O2 -fomit-frame-pointer avx2
gcc -funroll-loops -O3 -fomit-frame-pointer avx2
gcc -funroll-loops -O -fomit-frame-pointer avx2
gcc -funroll-loops -Os -fomit-frame-pointer avx2
gcc -funroll-loops -fno-schedule-insns -O2 -fomit-frame-pointer avx2
gcc -funroll-loops -fno-schedule-insns -O3 -fomit-frame-pointer avx2
gcc -funroll-loops -fno-schedule-insns -O -fomit-frame-pointer avx2
gcc -funroll-loops -fno-schedule-insns -Os -fomit-frame-pointer avx2
gcc -funroll-loops -m64 -O2 -fomit-frame-pointer avx2
gcc -funroll-loops -m64 -O3 -fomit-frame-pointer avx2
gcc -funroll-loops -m64 -O -fomit-frame-pointer avx2
gcc -funroll-loops -m64 -Os -fomit-frame-pointer avx2
gcc -funroll-loops -m64 -march=barcelona -O2 -fomit-frame-pointer avx2
gcc -funroll-loops -m64 -march=barcelona -O3 -fomit-frame-pointer avx2
gcc -funroll-loops -m64 -march=barcelona -O -fomit-frame-pointer avx2
gcc -funroll-loops -m64 -march=barcelona -Os -fomit-frame-pointer avx2
gcc -funroll-loops -m64 -march=k8 -O2 -fomit-frame-pointer avx2
gcc -funroll-loops -m64 -march=k8 -O3 -fomit-frame-pointer avx2
gcc -funroll-loops -m64 -march=k8 -O -fomit-frame-pointer avx2
gcc -funroll-loops -m64 -march=k8 -Os -fomit-frame-pointer avx2
gcc -funroll-loops -m64 -march=nocona -O2 -fomit-frame-pointer avx2
gcc -funroll-loops -m64 -march=nocona -O3 -fomit-frame-pointer avx2
gcc -funroll-loops -m64 -march=nocona -O -fomit-frame-pointer avx2
gcc -funroll-loops -m64 -march=nocona -Os -fomit-frame-pointer avx2
gcc -funroll-loops -march=barcelona -O2 -fomit-frame-pointer avx2
gcc -funroll-loops -march=barcelona -O3 -fomit-frame-pointer avx2
gcc -funroll-loops -march=barcelona -O -fomit-frame-pointer avx2
gcc -funroll-loops -march=barcelona -Os -fomit-frame-pointer avx2
gcc -funroll-loops -march=k8 -O2 -fomit-frame-pointer avx2
gcc -funroll-loops -march=k8 -O3 -fomit-frame-pointer avx2
gcc -funroll-loops -march=k8 -O -fomit-frame-pointer avx2
gcc -funroll-loops -march=k8 -Os -fomit-frame-pointer avx2
gcc -funroll-loops -march=nocona -O2 -fomit-frame-pointer avx2
gcc -funroll-loops -march=nocona -O3 -fomit-frame-pointer avx2
gcc -funroll-loops -march=nocona -O -fomit-frame-pointer avx2
gcc -funroll-loops -march=nocona -Os -fomit-frame-pointer avx2
gcc -m64 -O2 -fomit-frame-pointer avx2
gcc -m64 -O3 -fomit-frame-pointer avx2
gcc -m64 -O -fomit-frame-pointer avx2
gcc -m64 -Os -fomit-frame-pointer avx2
gcc -m64 -march=core2 -O2 -fomit-frame-pointer avx2
gcc -m64 -march=core2 -O3 -fomit-frame-pointer avx2
gcc -m64 -march=core2 -O -fomit-frame-pointer avx2
gcc -m64 -march=core2 -Os -fomit-frame-pointer avx2
gcc -m64 -march=core2 -msse4.1 -O2 -fomit-frame-pointer avx2
gcc -m64 -march=core2 -msse4.1 -O3 -fomit-frame-pointer avx2
gcc -m64 -march=core2 -msse4.1 -O -fomit-frame-pointer avx2
gcc -m64 -march=core2 -msse4.1 -Os -fomit-frame-pointer avx2
gcc -m64 -march=core2 -msse4 -O2 -fomit-frame-pointer avx2
gcc -m64 -march=core2 -msse4 -O3 -fomit-frame-pointer avx2
gcc -m64 -march=core2 -msse4 -O -fomit-frame-pointer avx2
gcc -m64 -march=core2 -msse4 -Os -fomit-frame-pointer avx2
gcc -m64 -march=corei7 -O2 -fomit-frame-pointer avx2
gcc -m64 -march=corei7 -O3 -fomit-frame-pointer avx2
gcc -m64 -march=corei7 -O -fomit-frame-pointer avx2
gcc -m64 -march=corei7 -Os -fomit-frame-pointer avx2
gcc -m64 -march=k8 -O2 -fomit-frame-pointer avx2
gcc -m64 -march=k8 -O3 -fomit-frame-pointer avx2
gcc -m64 -march=k8 -O -fomit-frame-pointer avx2
gcc -m64 -march=k8 -Os -fomit-frame-pointer avx2
gcc -m64 -march=nocona -O2 -fomit-frame-pointer avx2
gcc -m64 -march=nocona -O3 -fomit-frame-pointer avx2
gcc -m64 -march=nocona -O -fomit-frame-pointer avx2
gcc -m64 -march=nocona -Os -fomit-frame-pointer avx2
gcc -march=barcelona -O2 -fomit-frame-pointer avx2
gcc -march=barcelona -O3 -fomit-frame-pointer avx2
gcc -march=barcelona -O -fomit-frame-pointer avx2
gcc -march=barcelona -Os -fomit-frame-pointer avx2
gcc -march=k8 -O2 -fomit-frame-pointer avx2
gcc -march=k8 -O3 -fomit-frame-pointer avx2
gcc -march=k8 -O -fomit-frame-pointer avx2
gcc -march=k8 -Os -fomit-frame-pointer avx2
gcc -march=nocona -O2 -fomit-frame-pointer avx2
gcc -march=nocona -O3 -fomit-frame-pointer avx2
gcc -march=nocona -O -fomit-frame-pointer avx2
gcc -march=nocona -Os -fomit-frame-pointer avx2

Compiler output

Implementation: avx2
Security model: unknown
Compiler: gcc -m64 -march=barcelona -O2 -fomit-frame-pointer
fips202x4.c: fips202x4.c: In function 'shake128x4':
fips202x4.c: fips202x4.c:154:10: warning: AVX vector return without AVX enabled changes the ABI [-Wpsabi]
fips202x4.c: s[i] = _mm256_xor_si256(s[i], s[i]);
fips202x4.c: ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fips202x4.c: In file included from /usr/lib64/gcc/x86_64-suse-linux/7/include/immintrin.h:43:0,
fips202x4.c: from fips202x4.c:1:
fips202x4.c: /usr/lib64/gcc/x86_64-suse-linux/7/include/avx2intrin.h:913:1: error: inlining failed in call to always_inline '_mm256_xor_si256': target specific option mismatch
fips202x4.c: _mm256_xor_si256 (__m256i __A, __m256i __B)
fips202x4.c: ^~~~~~~~~~~~~~~~
fips202x4.c: fips202x4.c:154:12: note: called from here
fips202x4.c: s[i] = _mm256_xor_si256(s[i], s[i]);
fips202x4.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
fips202x4.c: fips202x4.c: In function 'shake128x4':
fips202x4.c: fips202x4.c:154:10: warning: AVX vector return without AVX enabled changes the ABI [-Wpsabi]
fips202x4.c: s[i] = _mm256_xor_si256(s[i], s[i]);
fips202x4.c: ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fips202x4.c: In file included from /usr/lib64/gcc/x86_64-suse-linux/7/include/immintrin.h:43:0,
fips202x4.c: from fips202x4.c:1:
fips202x4.c: /usr/lib64/gcc/x86_64-suse-linux/7/include/avx2intrin.h:913:1: error: inlining failed in call to always_inline '_mm256_xor_si256': target specific option mismatch
fips202x4.c: _mm256_xor_si256 (__m256i __A, __m256i __B)
fips202x4.c: ^~~~~~~~~~~~~~~~
fips202x4.c: fips202x4.c:154:12: note: called from here
fips202x4.c: s[i] = _mm256_xor_si256(s[i], s[i]);
fips202x4.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
gcc -m64 -march=barcelona -O2 -fomit-frame-pointer avx2
gcc -m64 -march=barcelona -O3 -fomit-frame-pointer avx2
gcc -m64 -march=barcelona -O -fomit-frame-pointer avx2
gcc -m64 -march=barcelona -Os -fomit-frame-pointer avx2

Compiler output

Implementation: avx2
Security model: unknown
Compiler: gcc -m64 -march=core-avx-i -O2 -fomit-frame-pointer
fips202x4.c: In file included from /usr/lib64/gcc/x86_64-suse-linux/7/include/immintrin.h:43:0,
fips202x4.c: from fips202x4.c:1:
fips202x4.c: fips202x4.c: In function 'shake128x4':
fips202x4.c: /usr/lib64/gcc/x86_64-suse-linux/7/include/avx2intrin.h:913:1: error: inlining failed in call to always_inline '_mm256_xor_si256': target specific option mismatch
fips202x4.c: _mm256_xor_si256 (__m256i __A, __m256i __B)
fips202x4.c: ^~~~~~~~~~~~~~~~
fips202x4.c: fips202x4.c:154:12: note: called from here
fips202x4.c: s[i] = _mm256_xor_si256(s[i], s[i]);
fips202x4.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~

Number of similar (compiler,implementation) pairs: 8, namely:
CompilerImplementations
gcc -m64 -march=core-avx-i -O2 -fomit-frame-pointer avx2
gcc -m64 -march=core-avx-i -O3 -fomit-frame-pointer avx2
gcc -m64 -march=core-avx-i -O -fomit-frame-pointer avx2
gcc -m64 -march=core-avx-i -Os -fomit-frame-pointer avx2
gcc -m64 -march=corei7-avx -O2 -fomit-frame-pointer avx2
gcc -m64 -march=corei7-avx -O3 -fomit-frame-pointer avx2
gcc -m64 -march=corei7-avx -O -fomit-frame-pointer avx2
gcc -m64 -march=corei7-avx -Os -fomit-frame-pointer avx2