Implementation notes: amd64, cel02, crypto_core/invsntrup857

Computer: cel02
Architecture: amd64
CPU ID: GenuineIntel-00050657-bfebfbff
SUPERCOP version: 20201130
Operation: crypto_core
Primitive: invsntrup857
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
9841681539 0 012420 792 760avxclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
10019961765 0 013868 816 800avxgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
10206984180 0 019541 824 864avxgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
18448221706 0 013548 816 800avxgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
19369401482 0 012332 808 800avxgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
75933902645 0 018071 832 864refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
480863842251 0 014994 800 760refclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
55633800899 0 011756 792 760refclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
64809510978 0 012788 816 800refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
701042161129 0 013196 816 800refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
802125701025 0 011804 808 800refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130

Compiler output

Implementation: avx
Security model: constbranchindex
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: fatal error: error in backend: Cannot select: 0x56527c5746b0: v4i64 = X86ISD::VTRUNC 0x56527c574580
try.c: 0x56527c574580: v16i32 = vselect 0x56527c56f080, 0x56527c512c40, 0x56527c574450
try.c: 0x56527c56f080: v4i1 = X86ISD::PCMPGTM 0x56527c56a850, 0x56527c5663e0
try.c: 0x56527c56a850: v4i64 = X86ISD::VBROADCAST 0x56527c50ebd0
try.c: 0x56527c50ebd0: i64,ch = load<LD8[%lsr.iv6971]> 0x56527c47b940, 0x56527c556490, undef:i64
try.c: 0x56527c556490: i64,ch = CopyFromReg 0x56527c47b940, Register:i64 %vreg50
try.c: 0x56527c566640: i64 = Register %vreg50
try.c: 0x56527c5112b0: i64 = undef
try.c: 0x56527c5663e0: v4i64,ch = CopyFromReg 0x56527c47b940, Register:v4i64 %vreg13
try.c: 0x56527c56b0a0: v4i64 = Register %vreg13
try.c: 0x56527c512c40: v16i32 = X86ISD::VBROADCAST 0x56527c56aab0
try.c: 0x56527c56aab0: i32,ch = load<LD4[ConstantPool]> 0x56527c47b940, 0x56527c50e1b0, undef:i64
try.c: 0x56527c50e1b0: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x56527c5542f0: i64 = TargetConstantPool<i32 1> 0
try.c: 0x56527c5112b0: i64 = undef
try.c: 0x56527c574450: 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: 0x56527c574320: i32 = Constant<0>
try.c: 0x56527c574320: i32 = Constant<0>
try.c: 0x56527c574320: i32 = Constant<0>
try.c: 0x56527c574320: i32 = Constant<0>
try.c: 0x56527c574320: i32 = Constant<0>
try.c: 0x56527c574320: i32 = Constant<0>
try.c: 0x56527c574320: i32 = Constant<0>
try.c: 0x56527c574320: i32 = Constant<0>
try.c: 0x56527c574320: i32 = Constant<0>
try.c: ...

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

Compiler output

Implementation: avx
Security model: constbranchindex
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: fatal error: error in backend: Cannot select: 0x55a3c9cdc1d0: v4i64 = X86ISD::VTRUNC 0x55a3c9cdc0a0
try.c: 0x55a3c9cdc0a0: v16i32 = vselect 0x55a3c9ceeb50, 0x55a3c9c6dfb0, 0x55a3c9cdbf70
try.c: 0x55a3c9ceeb50: v4i1 = X86ISD::PCMPGTM 0x55a3c9cd6ba0, 0x55a3c9cd2730
try.c: 0x55a3c9cd6ba0: v4i64 = X86ISD::VBROADCAST 0x55a3c9c6e470
try.c: 0x55a3c9c6e470: i64,ch = load<LD8[%lsr.iv6971]> 0x55a3c9bcfa10, 0x55a3c9c6a7e0, undef:i64
try.c: 0x55a3c9c6a7e0: i64,ch = CopyFromReg 0x55a3c9bcfa10, Register:i64 %vreg50
try.c: 0x55a3c9cd2990: i64 = Register %vreg50
try.c: 0x55a3c9c78580: i64 = undef
try.c: 0x55a3c9cd2730: v4i64,ch = CopyFromReg 0x55a3c9bcfa10, Register:v4i64 %vreg13
try.c: 0x55a3c9cd73f0: v4i64 = Register %vreg13
try.c: 0x55a3c9c6dfb0: v16i32 = X86ISD::VBROADCAST 0x55a3c9cd6e00
try.c: 0x55a3c9cd6e00: i32,ch = load<LD4[ConstantPool]> 0x55a3c9bcfa10, 0x55a3c9c68db0, undef:i64
try.c: 0x55a3c9c68db0: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55a3c9c78f00: i64 = TargetConstantPool<i32 1> 0
try.c: 0x55a3c9c78580: i64 = undef
try.c: 0x55a3c9cdbf70: 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: 0x55a3c9cdbe40: i32 = Constant<0>
try.c: 0x55a3c9cdbe40: i32 = Constant<0>
try.c: 0x55a3c9cdbe40: i32 = Constant<0>
try.c: 0x55a3c9cdbe40: i32 = Constant<0>
try.c: 0x55a3c9cdbe40: i32 = Constant<0>
try.c: 0x55a3c9cdbe40: i32 = Constant<0>
try.c: 0x55a3c9cdbe40: i32 = Constant<0>
try.c: 0x55a3c9cdbe40: i32 = Constant<0>
try.c: 0x55a3c9cdbe40: i32 = Constant<0>
try.c: ...

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

Compiler output

Implementation: avx
Security model: constbranchindex
Compiler: clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: fatal error: error in backend: Cannot select: 0x564ff828a970: v4i64 = X86ISD::VTRUNC 0x564ff828a840
try.c: 0x564ff828a840: v16i32 = vselect 0x564ff827eae0, 0x564ff82191c0, 0x564ff828a710
try.c: 0x564ff827eae0: v4i1 = X86ISD::PCMPGTM 0x564ff8273010, 0x564ff826eba0
try.c: 0x564ff8273010: v4i64 = X86ISD::VBROADCAST 0x564ff82125d0
try.c: 0x564ff82125d0: i64,ch = load<LD8[%lsr.iv6971]> 0x564ff81838f0, 0x564ff8265110, undef:i64
try.c: 0x564ff8265110: i64,ch = CopyFromReg 0x564ff81838f0, Register:i64 %vreg50
try.c: 0x564ff826ee00: i64 = Register %vreg50
try.c: 0x564ff8213aa0: i64 = undef
try.c: 0x564ff826eba0: v4i64,ch = CopyFromReg 0x564ff81838f0, Register:v4i64 %vreg13
try.c: 0x564ff8273860: v4i64 = Register %vreg13
try.c: 0x564ff82191c0: v16i32 = X86ISD::VBROADCAST 0x564ff8273270
try.c: 0x564ff8273270: i32,ch = load<LD4[ConstantPool]> 0x564ff81838f0, 0x564ff8211bb0, undef:i64
try.c: 0x564ff8211bb0: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x564ff823af20: i64 = TargetConstantPool<i32 1> 0
try.c: 0x564ff8213aa0: i64 = undef
try.c: 0x564ff828a710: 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: 0x564ff828a5e0: i32 = Constant<0>
try.c: 0x564ff828a5e0: i32 = Constant<0>
try.c: 0x564ff828a5e0: i32 = Constant<0>
try.c: 0x564ff828a5e0: i32 = Constant<0>
try.c: 0x564ff828a5e0: i32 = Constant<0>
try.c: 0x564ff828a5e0: i32 = Constant<0>
try.c: 0x564ff828a5e0: i32 = Constant<0>
try.c: 0x564ff828a5e0: i32 = Constant<0>
try.c: 0x564ff828a5e0: i32 = Constant<0>
try.c: ...

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

Compiler output

Implementation: avx
Security model: constbranchindex
Compiler: clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
recip.c: recip.c:83:19: error: always_inline function '_mm256_set1_epi16' requires target feature 'sse4.2', but would be inlined into function 'vectormodq_swapeliminate' that is compiled without support for 'sse4.2'
recip.c: __m256i f0vec = _mm256_set1_epi16(f0);
recip.c: ^
recip.c: recip.c:84:19: error: always_inline function '_mm256_set1_epi16' requires target feature 'sse4.2', but would be inlined into function 'vectormodq_swapeliminate' that is compiled without support for 'sse4.2'
recip.c: __m256i g0vec = _mm256_set1_epi16(g0);
recip.c: ^
recip.c: recip.c:85:23: error: always_inline function '_mm256_mullo_epi16' requires target feature 'sse4.2', but would be inlined into function 'vectormodq_swapeliminate' that is compiled without support for 'sse4.2'
recip.c: __m256i f0vecqinv = _mm256_mullo_epi16(f0vec,qinvvec);
recip.c: ^
recip.c: recip.c:85:48: error: always_inline function '_mm256_set1_epi16' requires target feature 'sse4.2', but would be inlined into function 'vectormodq_swapeliminate' that is compiled without support for 'sse4.2'
recip.c: __m256i f0vecqinv = _mm256_mullo_epi16(f0vec,qinvvec);
recip.c: ^
recip.c: recip.c:69:17: note: expanded from macro 'qinvvec'
recip.c: #define qinvvec _mm256_set1_epi16(qinv)
recip.c: ^
recip.c: recip.c:86:23: error: always_inline function '_mm256_mullo_epi16' requires target feature 'sse4.2', but would be inlined into function 'vectormodq_swapeliminate' that is compiled without support for 'sse4.2'
recip.c: __m256i g0vecqinv = _mm256_mullo_epi16(g0vec,qinvvec);
recip.c: ^
recip.c: recip.c:86:48: error: always_inline function '_mm256_set1_epi16' requires target feature 'sse4.2', but would be inlined into function 'vectormodq_swapeliminate' that is compiled without support for 'sse4.2'
recip.c: __m256i g0vecqinv = _mm256_mullo_epi16(g0vec,qinvvec);
recip.c: ^
recip.c: recip.c:69:17: note: expanded from macro 'qinvvec'
recip.c: #define qinvvec _mm256_set1_epi16(qinv)
recip.c: ^
recip.c: recip.c:87:21: error: always_inline function '_mm256_set1_epi32' requires target feature 'sse4.2', but would be inlined into function 'vectormodq_swapeliminate' that is compiled without support for 'sse4.2'
recip.c: ...

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

Compiler output

Implementation: ref
Security model: constbranchindex
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: fatal error: error in backend: Cannot select: 0x55f8d60782f0: v4i64 = X86ISD::VTRUNC 0x55f8d60781c0
try.c: 0x55f8d60781c0: v16i32 = vselect 0x55f8d6058dc0, 0x55f8d600d670, 0x55f8d6078090
try.c: 0x55f8d6058dc0: v4i1 = X86ISD::PCMPGTM 0x55f8d6060990, 0x55f8d605c520
try.c: 0x55f8d6060990: v4i64 = X86ISD::VBROADCAST 0x55f8d60078d0
try.c: 0x55f8d60078d0: i64,ch = load<LD8[%lsr.iv6971]> 0x55f8d5f71950, 0x55f8d600aaa0, undef:i64
try.c: 0x55f8d600aaa0: i64,ch = CopyFromReg 0x55f8d5f71950, Register:i64 %vreg50
try.c: 0x55f8d605c780: i64 = Register %vreg50
try.c: 0x55f8d6008da0: i64 = undef
try.c: 0x55f8d605c520: v4i64,ch = CopyFromReg 0x55f8d5f71950, Register:v4i64 %vreg13
try.c: 0x55f8d60611e0: v4i64 = Register %vreg13
try.c: 0x55f8d600d670: v16i32 = X86ISD::VBROADCAST 0x55f8d6060bf0
try.c: 0x55f8d6060bf0: i32,ch = load<LD4[ConstantPool]> 0x55f8d5f71950, 0x55f8d6006eb0, undef:i64
try.c: 0x55f8d6006eb0: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55f8d604bd00: i64 = TargetConstantPool<i32 1> 0
try.c: 0x55f8d6008da0: i64 = undef
try.c: 0x55f8d6078090: 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: 0x55f8d6077f60: i32 = Constant<0>
try.c: 0x55f8d6077f60: i32 = Constant<0>
try.c: 0x55f8d6077f60: i32 = Constant<0>
try.c: 0x55f8d6077f60: i32 = Constant<0>
try.c: 0x55f8d6077f60: i32 = Constant<0>
try.c: 0x55f8d6077f60: i32 = Constant<0>
try.c: 0x55f8d6077f60: i32 = Constant<0>
try.c: 0x55f8d6077f60: i32 = Constant<0>
try.c: 0x55f8d6077f60: i32 = Constant<0>
try.c: ...

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

Compiler output

Implementation: ref
Security model: constbranchindex
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: fatal error: error in backend: Cannot select: 0x55794c382970: v4i64 = X86ISD::VTRUNC 0x55794c382840
try.c: 0x55794c382840: v16i32 = vselect 0x55794c363f00, 0x55794c2f4f70, 0x55794c382710
try.c: 0x55794c363f00: v4i1 = X86ISD::PCMPGTM 0x55794c35d360, 0x55794c358ef0
try.c: 0x55794c35d360: v4i64 = X86ISD::VBROADCAST 0x55794c2f5430
try.c: 0x55794c2f5430: i64,ch = load<LD8[%lsr.iv6971]> 0x55794c256a20, 0x55794c2ff630, undef:i64
try.c: 0x55794c2ff630: i64,ch = CopyFromReg 0x55794c256a20, Register:i64 %vreg50
try.c: 0x55794c359150: i64 = Register %vreg50
try.c: 0x55794c305df0: i64 = undef
try.c: 0x55794c358ef0: v4i64,ch = CopyFromReg 0x55794c256a20, Register:v4i64 %vreg13
try.c: 0x55794c35dbb0: v4i64 = Register %vreg13
try.c: 0x55794c2f4f70: v16i32 = X86ISD::VBROADCAST 0x55794c35d5c0
try.c: 0x55794c35d5c0: i32,ch = load<LD4[ConstantPool]> 0x55794c256a20, 0x55794c2f8b00, undef:i64
try.c: 0x55794c2f8b00: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55794c306770: i64 = TargetConstantPool<i32 1> 0
try.c: 0x55794c305df0: i64 = undef
try.c: 0x55794c382710: 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: 0x55794c3825e0: i32 = Constant<0>
try.c: 0x55794c3825e0: i32 = Constant<0>
try.c: 0x55794c3825e0: i32 = Constant<0>
try.c: 0x55794c3825e0: i32 = Constant<0>
try.c: 0x55794c3825e0: i32 = Constant<0>
try.c: 0x55794c3825e0: i32 = Constant<0>
try.c: 0x55794c3825e0: i32 = Constant<0>
try.c: 0x55794c3825e0: i32 = Constant<0>
try.c: 0x55794c3825e0: i32 = Constant<0>
try.c: ...

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

Compiler output

Implementation: ref
Security model: constbranchindex
Compiler: clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: fatal error: error in backend: Cannot select: 0x563a04d4fb00: v4i64 = X86ISD::VTRUNC 0x563a04d4f9d0
try.c: 0x563a04d4f9d0: v16i32 = vselect 0x563a04cef8e0, 0x563a04cf7c40, 0x563a04d4f8a0
try.c: 0x563a04cef8e0: v4i1 = X86ISD::PCMPGTM 0x563a04d2fc50, 0x563a04d2b7e0
try.c: 0x563a04d2fc50: v4i64 = X86ISD::VBROADCAST 0x563a04cf4de0
try.c: 0x563a04cf4de0: i64,ch = load<LD8[%lsr.iv6971]> 0x563a04c40950, 0x563a04d1b5f0, undef:i64
try.c: 0x563a04d1b5f0: i64,ch = CopyFromReg 0x563a04c40950, Register:i64 %vreg50
try.c: 0x563a04d2ba40: i64 = Register %vreg50
try.c: 0x563a04cf62b0: i64 = undef
try.c: 0x563a04d2b7e0: v4i64,ch = CopyFromReg 0x563a04c40950, Register:v4i64 %vreg13
try.c: 0x563a04d304a0: v4i64 = Register %vreg13
try.c: 0x563a04cf7c40: v16i32 = X86ISD::VBROADCAST 0x563a04d2feb0
try.c: 0x563a04d2feb0: i32,ch = load<LD4[ConstantPool]> 0x563a04c40950, 0x563a04cdef40, undef:i64
try.c: 0x563a04cdef40: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x563a04d148b0: i64 = TargetConstantPool<i32 1> 0
try.c: 0x563a04cf62b0: i64 = undef
try.c: 0x563a04d4f8a0: 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: 0x563a04d4f770: i32 = Constant<0>
try.c: 0x563a04d4f770: i32 = Constant<0>
try.c: 0x563a04d4f770: i32 = Constant<0>
try.c: 0x563a04d4f770: i32 = Constant<0>
try.c: 0x563a04d4f770: i32 = Constant<0>
try.c: 0x563a04d4f770: i32 = Constant<0>
try.c: 0x563a04d4f770: i32 = Constant<0>
try.c: 0x563a04d4f770: i32 = Constant<0>
try.c: 0x563a04d4f770: i32 = Constant<0>
try.c: ...

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