Implementation notes: amd64, cel02, crypto_core/inv3sntrup857

Computer: cel02
Architecture: amd64
CPU ID: GenuineIntel-00050657-bfebfbff
SUPERCOP version: 20201130
Operation: crypto_core
Primitive: inv3sntrup857
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
19900217439 0 032741 824 864avxgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
23171812060 0 022892 792 760avxclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
26006411288 0 023332 816 800avxgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
26425411036 0 022812 816 800avxgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
4141026836 0 017616 800 800avxgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
52018527356 0 022727 832 864refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
398981243064 0 015754 800 760refclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
55895982738 0 011352 800 800refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
60947494699 0 011508 792 760refclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
69733566842 0 012596 816 800refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
74760168902 0 012908 816 800refgcc_-march=native_-mtune=native_-O2_-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: 0x560df86e0140: v4i64 = X86ISD::VTRUNC 0x560df86e0010
try.c: 0x560df86e0010: v16i32 = vselect 0x560df86dcb20, 0x560df8674c50, 0x560df86dfee0
try.c: 0x560df86dcb20: v4i1 = X86ISD::PCMPGTM 0x560df86c57b0, 0x560df86c1340
try.c: 0x560df86c57b0: v4i64 = X86ISD::VBROADCAST 0x560df86694b0
try.c: 0x560df86694b0: i64,ch = load<LD8[%lsr.iv6971]> 0x560df85d6940, 0x560df8693050, undef:i64
try.c: 0x560df8693050: i64,ch = CopyFromReg 0x560df85d6940, Register:i64 %vreg50
try.c: 0x560df86c15a0: i64 = Register %vreg50
try.c: 0x560df86732c0: i64 = undef
try.c: 0x560df86c1340: v4i64,ch = CopyFromReg 0x560df85d6940, Register:v4i64 %vreg13
try.c: 0x560df86c6000: v4i64 = Register %vreg13
try.c: 0x560df8674c50: v16i32 = X86ISD::VBROADCAST 0x560df86c5a10
try.c: 0x560df86c5a10: i32,ch = load<LD4[ConstantPool]> 0x560df85d6940, 0x560df8668a90, undef:i64
try.c: 0x560df8668a90: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x560df86ab8e0: i64 = TargetConstantPool<i32 1> 0
try.c: 0x560df86732c0: i64 = undef
try.c: 0x560df86dfee0: 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: 0x560df86dfdb0: i32 = Constant<0>
try.c: 0x560df86dfdb0: i32 = Constant<0>
try.c: 0x560df86dfdb0: i32 = Constant<0>
try.c: 0x560df86dfdb0: i32 = Constant<0>
try.c: 0x560df86dfdb0: i32 = Constant<0>
try.c: 0x560df86dfdb0: i32 = Constant<0>
try.c: 0x560df86dfdb0: i32 = Constant<0>
try.c: 0x560df86dfdb0: i32 = Constant<0>
try.c: 0x560df86dfdb0: 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: 0x5598d0202070: v4i64 = X86ISD::VTRUNC 0x5598d0201f40
try.c: 0x5598d0201f40: v16i32 = vselect 0x5598d0215610, 0x5598d01ab930, 0x5598d0201e10
try.c: 0x5598d0215610: v4i1 = X86ISD::PCMPGTM 0x5598d01fca40, 0x5598d01f95e0
try.c: 0x5598d01fca40: v4i64 = X86ISD::VBROADCAST 0x5598d01abdf0
try.c: 0x5598d01abdf0: i64,ch = load<LD8[%lsr.iv6971]> 0x5598d00f6a00, 0x5598d019e5f0, undef:i64
try.c: 0x5598d019e5f0: i64,ch = CopyFromReg 0x5598d00f6a00, Register:i64 %vreg50
try.c: 0x5598d01f9840: i64 = Register %vreg50
try.c: 0x5598d0197860: i64 = undef
try.c: 0x5598d01f95e0: v4i64,ch = CopyFromReg 0x5598d00f6a00, Register:v4i64 %vreg13
try.c: 0x5598d01fd290: v4i64 = Register %vreg13
try.c: 0x5598d01ab930: v16i32 = X86ISD::VBROADCAST 0x5598d01fcca0
try.c: 0x5598d01fcca0: i32,ch = load<LD4[ConstantPool]> 0x5598d00f6a00, 0x5598d019cbc0, undef:i64
try.c: 0x5598d019cbc0: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x5598d01981e0: i64 = TargetConstantPool<i32 1> 0
try.c: 0x5598d0197860: i64 = undef
try.c: 0x5598d0201e10: 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: 0x5598d0201ce0: i32 = Constant<0>
try.c: 0x5598d0201ce0: i32 = Constant<0>
try.c: 0x5598d0201ce0: i32 = Constant<0>
try.c: 0x5598d0201ce0: i32 = Constant<0>
try.c: 0x5598d0201ce0: i32 = Constant<0>
try.c: 0x5598d0201ce0: i32 = Constant<0>
try.c: 0x5598d0201ce0: i32 = Constant<0>
try.c: 0x5598d0201ce0: i32 = Constant<0>
try.c: 0x5598d0201ce0: 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: 0x564a4b57c1b0: v4i64 = X86ISD::VTRUNC 0x564a4b57c080
try.c: 0x564a4b57c080: v16i32 = vselect 0x564a4b565b80, 0x564a4b51b830, 0x564a4b57bf50
try.c: 0x564a4b565b80: v4i1 = X86ISD::PCMPGTM 0x564a4b576b80, 0x564a4b572710
try.c: 0x564a4b576b80: v4i64 = X86ISD::VBROADCAST 0x564a4b51dbe0
try.c: 0x564a4b51dbe0: i64,ch = load<LD8[%lsr.iv6971]> 0x564a4b487930, 0x564a4b56d570, undef:i64
try.c: 0x564a4b56d570: i64,ch = CopyFromReg 0x564a4b487930, Register:i64 %vreg50
try.c: 0x564a4b572970: i64 = Register %vreg50
try.c: 0x564a4b519ea0: i64 = undef
try.c: 0x564a4b572710: v4i64,ch = CopyFromReg 0x564a4b487930, Register:v4i64 %vreg13
try.c: 0x564a4b5773d0: v4i64 = Register %vreg13
try.c: 0x564a4b51b830: v16i32 = X86ISD::VBROADCAST 0x564a4b576de0
try.c: 0x564a4b576de0: i32,ch = load<LD4[ConstantPool]> 0x564a4b487930, 0x564a4b51d1c0, undef:i64
try.c: 0x564a4b51d1c0: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x564a4b518440: i64 = TargetConstantPool<i32 1> 0
try.c: 0x564a4b519ea0: i64 = undef
try.c: 0x564a4b57bf50: 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: 0x564a4b57be20: i32 = Constant<0>
try.c: 0x564a4b57be20: i32 = Constant<0>
try.c: 0x564a4b57be20: i32 = Constant<0>
try.c: 0x564a4b57be20: i32 = Constant<0>
try.c: 0x564a4b57be20: i32 = Constant<0>
try.c: 0x564a4b57be20: i32 = Constant<0>
try.c: 0x564a4b57be20: i32 = Constant<0>
try.c: 0x564a4b57be20: i32 = Constant<0>
try.c: 0x564a4b57be20: 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
r3_recip.c: r3_recip.c:418:11: error: always_inline function '_mm256_set_epi32' requires target feature 'sse4.2', but would be inlined into function 'crypto_core_inv3sntrup857_avx_constbranchindex' that is compiled without support for 'sse4.2'
r3_recip.c: F0[0] = _mm256_set_epi32(0,0,0,0,0,0,0,1);
r3_recip.c: ^
r3_recip.c: r3_recip.c:419:11: error: always_inline function '_mm256_set1_epi32' requires target feature 'sse4.2', but would be inlined into function 'crypto_core_inv3sntrup857_avx_constbranchindex' that is compiled without support for 'sse4.2'
r3_recip.c: F0[1] = _mm256_set1_epi32(0);
r3_recip.c: ^
r3_recip.c: r3_recip.c:420:11: error: always_inline function '_mm256_set1_epi32' requires target feature 'sse4.2', but would be inlined into function 'crypto_core_inv3sntrup857_avx_constbranchindex' that is compiled without support for 'sse4.2'
r3_recip.c: F0[2] = _mm256_set1_epi32(0);
r3_recip.c: ^
r3_recip.c: r3_recip.c:421:11: error: always_inline function '_mm256_set_epi32' requires target feature 'sse4.2', but would be inlined into function 'crypto_core_inv3sntrup857_avx_constbranchindex' that is compiled without support for 'sse4.2'
r3_recip.c: F0[3] = _mm256_set_epi32(0,0,0,0,0,4194304,0,4194304);
r3_recip.c: ^
r3_recip.c: r3_recip.c:422:11: error: always_inline function '_mm256_set1_epi32' requires target feature 'sse4.2', but would be inlined into function 'crypto_core_inv3sntrup857_avx_constbranchindex' that is compiled without support for 'sse4.2'
r3_recip.c: F1[0] = _mm256_set1_epi32(0);
r3_recip.c: ^
r3_recip.c: r3_recip.c:423:11: error: always_inline function '_mm256_set1_epi32' requires target feature 'sse4.2', but would be inlined into function 'crypto_core_inv3sntrup857_avx_constbranchindex' that is compiled without support for 'sse4.2'
r3_recip.c: F1[1] = _mm256_set1_epi32(0);
r3_recip.c: ^
r3_recip.c: r3_recip.c:424:11: error: always_inline function '_mm256_set1_epi32' requires target feature 'sse4.2', but would be inlined into function 'crypto_core_inv3sntrup857_avx_constbranchindex' that is compiled without support for 'sse4.2'
r3_recip.c: F1[2] = _mm256_set1_epi32(0);
r3_recip.c: ^
r3_recip.c: r3_recip.c:425:11: error: always_inline function '_mm256_set_epi32' requires target feature 'sse4.2', but would be inlined into function 'crypto_core_inv3sntrup857_avx_constbranchindex' that is compiled without support for 'sse4.2'
r3_recip.c: F1[3] = _mm256_set_epi32(0,0,0,0,0,4194304,0,4194304);
r3_recip.c: ^
r3_recip.c: r3_recip.c:427:11: error: always_inline function '_mm256_set1_epi32' requires target feature 'sse4.2', but would be inlined into function 'crypto_core_inv3sntrup857_avx_constbranchindex' that is compiled without support for 'sse4.2'
r3_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: 0x562ff37a0140: v4i64 = X86ISD::VTRUNC 0x562ff37a0010
try.c: 0x562ff37a0010: v16i32 = vselect 0x562ff379cb20, 0x562ff3734c50, 0x562ff379fee0
try.c: 0x562ff379cb20: v4i1 = X86ISD::PCMPGTM 0x562ff37857b0, 0x562ff3781340
try.c: 0x562ff37857b0: v4i64 = X86ISD::VBROADCAST 0x562ff37294b0
try.c: 0x562ff37294b0: i64,ch = load<LD8[%lsr.iv6971]> 0x562ff3696940, 0x562ff3753050, undef:i64
try.c: 0x562ff3753050: i64,ch = CopyFromReg 0x562ff3696940, Register:i64 %vreg50
try.c: 0x562ff37815a0: i64 = Register %vreg50
try.c: 0x562ff37332c0: i64 = undef
try.c: 0x562ff3781340: v4i64,ch = CopyFromReg 0x562ff3696940, Register:v4i64 %vreg13
try.c: 0x562ff3786000: v4i64 = Register %vreg13
try.c: 0x562ff3734c50: v16i32 = X86ISD::VBROADCAST 0x562ff3785a10
try.c: 0x562ff3785a10: i32,ch = load<LD4[ConstantPool]> 0x562ff3696940, 0x562ff3728a90, undef:i64
try.c: 0x562ff3728a90: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x562ff376b8e0: i64 = TargetConstantPool<i32 1> 0
try.c: 0x562ff37332c0: i64 = undef
try.c: 0x562ff379fee0: 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: 0x562ff379fdb0: i32 = Constant<0>
try.c: 0x562ff379fdb0: i32 = Constant<0>
try.c: 0x562ff379fdb0: i32 = Constant<0>
try.c: 0x562ff379fdb0: i32 = Constant<0>
try.c: 0x562ff379fdb0: i32 = Constant<0>
try.c: 0x562ff379fdb0: i32 = Constant<0>
try.c: 0x562ff379fdb0: i32 = Constant<0>
try.c: 0x562ff379fdb0: i32 = Constant<0>
try.c: 0x562ff379fdb0: 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: 0x55c87c28def0: v4i64 = X86ISD::VTRUNC 0x55c87c28ddc0
try.c: 0x55c87c28ddc0: v16i32 = vselect 0x55c87c29da70, 0x55c87c21cf80, 0x55c87c28dc90
try.c: 0x55c87c29da70: v4i1 = X86ISD::PCMPGTM 0x55c87c2850a0, 0x55c87c280c30
try.c: 0x55c87c2850a0: v4i64 = X86ISD::VBROADCAST 0x55c87c21d440
try.c: 0x55c87c21d440: i64,ch = load<LD8[%lsr.iv6971]> 0x55c87c17ea30, 0x55c87c22e020, undef:i64
try.c: 0x55c87c22e020: i64,ch = CopyFromReg 0x55c87c17ea30, Register:i64 %vreg50
try.c: 0x55c87c280e90: i64 = Register %vreg50
try.c: 0x55c87c234720: i64 = undef
try.c: 0x55c87c280c30: v4i64,ch = CopyFromReg 0x55c87c17ea30, Register:v4i64 %vreg13
try.c: 0x55c87c2858f0: v4i64 = Register %vreg13
try.c: 0x55c87c21cf80: v16i32 = X86ISD::VBROADCAST 0x55c87c285300
try.c: 0x55c87c285300: i32,ch = load<LD4[ConstantPool]> 0x55c87c17ea30, 0x55c87c220a80, undef:i64
try.c: 0x55c87c220a80: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55c87c2350a0: i64 = TargetConstantPool<i32 1> 0
try.c: 0x55c87c234720: i64 = undef
try.c: 0x55c87c28dc90: 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: 0x55c87c28db60: i32 = Constant<0>
try.c: 0x55c87c28db60: i32 = Constant<0>
try.c: 0x55c87c28db60: i32 = Constant<0>
try.c: 0x55c87c28db60: i32 = Constant<0>
try.c: 0x55c87c28db60: i32 = Constant<0>
try.c: 0x55c87c28db60: i32 = Constant<0>
try.c: 0x55c87c28db60: i32 = Constant<0>
try.c: 0x55c87c28db60: i32 = Constant<0>
try.c: 0x55c87c28db60: 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: 0x556df7b642b0: v4i64 = X86ISD::VTRUNC 0x556df7b64180
try.c: 0x556df7b64180: v16i32 = vselect 0x556df7b6f5b0, 0x556df7af49e0, 0x556df7b64050
try.c: 0x556df7b6f5b0: v4i1 = X86ISD::PCMPGTM 0x556df7b4c950, 0x556df7b484e0
try.c: 0x556df7b4c950: v4i64 = X86ISD::VBROADCAST 0x556df7b085d0
try.c: 0x556df7b085d0: i64,ch = load<LD8[%lsr.iv6971]> 0x556df7a5d9a0, 0x556df7b36630, undef:i64
try.c: 0x556df7b36630: i64,ch = CopyFromReg 0x556df7a5d9a0, Register:i64 %vreg50
try.c: 0x556df7b48740: i64 = Register %vreg50
try.c: 0x556df7af3050: i64 = undef
try.c: 0x556df7b484e0: v4i64,ch = CopyFromReg 0x556df7a5d9a0, Register:v4i64 %vreg13
try.c: 0x556df7b4d1a0: v4i64 = Register %vreg13
try.c: 0x556df7af49e0: v16i32 = X86ISD::VBROADCAST 0x556df7b4cbb0
try.c: 0x556df7b4cbb0: i32,ch = load<LD4[ConstantPool]> 0x556df7a5d9a0, 0x556df7b07bb0, undef:i64
try.c: 0x556df7b07bb0: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x556df7b37830: i64 = TargetConstantPool<i32 1> 0
try.c: 0x556df7af3050: i64 = undef
try.c: 0x556df7b64050: 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: 0x556df7b63f20: i32 = Constant<0>
try.c: 0x556df7b63f20: i32 = Constant<0>
try.c: 0x556df7b63f20: i32 = Constant<0>
try.c: 0x556df7b63f20: i32 = Constant<0>
try.c: 0x556df7b63f20: i32 = Constant<0>
try.c: 0x556df7b63f20: i32 = Constant<0>
try.c: 0x556df7b63f20: i32 = Constant<0>
try.c: 0x556df7b63f20: i32 = Constant<0>
try.c: 0x556df7b63f20: 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