Implementation notes: amd64, cel02, crypto_encode/761xfreeze3

Computer: cel02
Architecture: amd64
CPU ID: GenuineIntel-00050657-bfebfbff
SUPERCOP version: 20201130
Operation: crypto_encode
Primitive: 761xfreeze3
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
210143 0 09516 792 728avxclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
290167 0 013845 824 800avxgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
386163 0 010324 816 768avxgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
666167 0 09448 800 768avxgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
670167 0 010588 816 768avxgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
7681199 0 014901 824 800refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
2052520 0 011754 800 728refclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
244495 0 09352 800 768refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
300090 0 09460 792 728refclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
3834105 0 010244 816 768refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
4628107 0 010492 816 768refgcc_-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: 0x557e436d4b00: v4i64 = X86ISD::VTRUNC 0x557e436d49d0
try.c: 0x557e436d49d0: v16i32 = vselect 0x557e436c7cf0, 0x557e43676850, 0x557e436d48a0
try.c: 0x557e436c7cf0: v4i1 = X86ISD::PCMPGTM 0x557e436cf8c0, 0x557e436cb450
try.c: 0x557e436cf8c0: v4i64 = X86ISD::VBROADCAST 0x557e43670450
try.c: 0x557e43670450: i64,ch = load<LD8[%lsr.iv6971]> 0x557e435e0950, 0x557e43673330, undef:i64
try.c: 0x557e43673330: i64,ch = CopyFromReg 0x557e435e0950, Register:i64 %vreg50
try.c: 0x557e436cb6b0: i64 = Register %vreg50
try.c: 0x557e43671920: i64 = undef
try.c: 0x557e436cb450: v4i64,ch = CopyFromReg 0x557e435e0950, Register:v4i64 %vreg13
try.c: 0x557e436d0110: v4i64 = Register %vreg13
try.c: 0x557e43676850: v16i32 = X86ISD::VBROADCAST 0x557e436cfb20
try.c: 0x557e436cfb20: i32,ch = load<LD4[ConstantPool]> 0x557e435e0950, 0x557e4367a4e0, undef:i64
try.c: 0x557e4367a4e0: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x557e436ba850: i64 = TargetConstantPool<i32 1> 0
try.c: 0x557e43671920: i64 = undef
try.c: 0x557e436d48a0: 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: 0x557e436d4770: i32 = Constant<0>
try.c: 0x557e436d4770: i32 = Constant<0>
try.c: 0x557e436d4770: i32 = Constant<0>
try.c: 0x557e436d4770: i32 = Constant<0>
try.c: 0x557e436d4770: i32 = Constant<0>
try.c: 0x557e436d4770: i32 = Constant<0>
try.c: 0x557e436d4770: i32 = Constant<0>
try.c: 0x557e436d4770: i32 = Constant<0>
try.c: 0x557e436d4770: 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: 0x55e2cc7bc120: v4i64 = X86ISD::VTRUNC 0x55e2cc7bbff0
try.c: 0x55e2cc7bbff0: v16i32 = vselect 0x55e2cc7c9c30, 0x55e2cc748430, 0x55e2cc7bbec0
try.c: 0x55e2cc7c9c30: v4i1 = X86ISD::PCMPGTM 0x55e2cc7b1ab0, 0x55e2cc7ad640
try.c: 0x55e2cc7b1ab0: v4i64 = X86ISD::VBROADCAST 0x55e2cc7488f0
try.c: 0x55e2cc7488f0: i64,ch = load<LD8[%lsr.iv6971]> 0x55e2cc6aba30, 0x55e2cc746b60, undef:i64
try.c: 0x55e2cc746b60: i64,ch = CopyFromReg 0x55e2cc6aba30, Register:i64 %vreg50
try.c: 0x55e2cc7ad8a0: i64 = Register %vreg50
try.c: 0x55e2cc742e20: i64 = undef
try.c: 0x55e2cc7ad640: v4i64,ch = CopyFromReg 0x55e2cc6aba30, Register:v4i64 %vreg13
try.c: 0x55e2cc7b2300: v4i64 = Register %vreg13
try.c: 0x55e2cc748430: v16i32 = X86ISD::VBROADCAST 0x55e2cc7b1d10
try.c: 0x55e2cc7b1d10: i32,ch = load<LD4[ConstantPool]> 0x55e2cc6aba30, 0x55e2cc745130, undef:i64
try.c: 0x55e2cc745130: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55e2cc7437a0: i64 = TargetConstantPool<i32 1> 0
try.c: 0x55e2cc742e20: i64 = undef
try.c: 0x55e2cc7bbec0: 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: 0x55e2cc7bbd90: i32 = Constant<0>
try.c: 0x55e2cc7bbd90: i32 = Constant<0>
try.c: 0x55e2cc7bbd90: i32 = Constant<0>
try.c: 0x55e2cc7bbd90: i32 = Constant<0>
try.c: 0x55e2cc7bbd90: i32 = Constant<0>
try.c: 0x55e2cc7bbd90: i32 = Constant<0>
try.c: 0x55e2cc7bbd90: i32 = Constant<0>
try.c: 0x55e2cc7bbd90: i32 = Constant<0>
try.c: 0x55e2cc7bbd90: 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: 0x5644e1752060: v4i64 = X86ISD::VTRUNC 0x5644e1751f30
try.c: 0x5644e1751f30: v16i32 = vselect 0x5644e1740d60, 0x5644e16f0d00, 0x5644e1751e00
try.c: 0x5644e1740d60: v4i1 = X86ISD::PCMPGTM 0x5644e1748f40, 0x5644e17444c0
try.c: 0x5644e1748f40: v4i64 = X86ISD::VBROADCAST 0x5644e16e9ad0
try.c: 0x5644e16e9ad0: i64,ch = load<LD8[%lsr.iv6971]> 0x5644e1659950, 0x5644e1737820, undef:i64
try.c: 0x5644e1737820: i64,ch = CopyFromReg 0x5644e1659950, Register:i64 %vreg50
try.c: 0x5644e1744720: i64 = Register %vreg50
try.c: 0x5644e16ef370: i64 = undef
try.c: 0x5644e17444c0: v4i64,ch = CopyFromReg 0x5644e1659950, Register:v4i64 %vreg13
try.c: 0x5644e1749790: v4i64 = Register %vreg13
try.c: 0x5644e16f0d00: v16i32 = X86ISD::VBROADCAST 0x5644e17491a0
try.c: 0x5644e17491a0: i32,ch = load<LD4[ConstantPool]> 0x5644e1659950, 0x5644e16e90b0, undef:i64
try.c: 0x5644e16e90b0: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x5644e17394b0: i64 = TargetConstantPool<i32 1> 0
try.c: 0x5644e16ef370: i64 = undef
try.c: 0x5644e1751e00: 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: 0x5644e1751cd0: i32 = Constant<0>
try.c: 0x5644e1751cd0: i32 = Constant<0>
try.c: 0x5644e1751cd0: i32 = Constant<0>
try.c: 0x5644e1751cd0: i32 = Constant<0>
try.c: 0x5644e1751cd0: i32 = Constant<0>
try.c: 0x5644e1751cd0: i32 = Constant<0>
try.c: 0x5644e1751cd0: i32 = Constant<0>
try.c: 0x5644e1751cd0: i32 = Constant<0>
try.c: 0x5644e1751cd0: 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
encode.c: encode.c:15:19: error: always_inline function '_mm256_loadu_si256' requires target feature 'sse4.2', but would be inlined into function 'crypto_encode_761xfreeze3_avx_constbranchindex' that is compiled without support for 'sse4.2'
encode.c: __m256i x = _mm256_loadu_si256((__m256i *) r);
encode.c: ^
encode.c: encode.c:16:19: error: always_inline function '_mm256_mulhrs_epi16' requires target feature 'sse4.2', but would be inlined into function 'crypto_encode_761xfreeze3_avx_constbranchindex' that is compiled without support for 'sse4.2'
encode.c: __m256i y = _mm256_mulhrs_epi16(x,_mm256_set1_epi16(10923));
encode.c: ^
encode.c: encode.c:16:41: error: always_inline function '_mm256_set1_epi16' requires target feature 'sse4.2', but would be inlined into function 'crypto_encode_761xfreeze3_avx_constbranchindex' that is compiled without support for 'sse4.2'
encode.c: __m256i y = _mm256_mulhrs_epi16(x,_mm256_set1_epi16(10923));
encode.c: ^
encode.c: encode.c:17:11: error: always_inline function '_mm256_sub_epi16' requires target feature 'sse4.2', but would be inlined into function 'crypto_encode_761xfreeze3_avx_constbranchindex' that is compiled without support for 'sse4.2'
encode.c: x = _mm256_sub_epi16(x,y);
encode.c: ^
encode.c: encode.c:18:11: error: always_inline function '_mm256_add_epi16' requires target feature 'sse4.2', but would be inlined into function 'crypto_encode_761xfreeze3_avx_constbranchindex' that is compiled without support for 'sse4.2'
encode.c: y = _mm256_add_epi16(y,y);
encode.c: ^
encode.c: encode.c:19:11: error: always_inline function '_mm256_sub_epi16' requires target feature 'sse4.2', but would be inlined into function 'crypto_encode_761xfreeze3_avx_constbranchindex' that is compiled without support for 'sse4.2'
encode.c: x = _mm256_sub_epi16(x,y);
encode.c: ^
encode.c: encode.c:20:20: error: always_inline function '_mm256_setzero_si256' requires target feature 'sse4.2', but would be inlined into function 'crypto_encode_761xfreeze3_avx_constbranchindex' that is compiled without support for 'sse4.2'
encode.c: __m128i x0 = _mm256_extractf128_si256(x,0);
encode.c: ^
encode.c: /usr/lib/llvm-3.8/bin/../lib/clang/3.8.1/include/avxintrin.h:1213:14: note: expanded from macro '_mm256_extractf128_si256'
encode.c: (__v4di)(_mm256_setzero_si256()), \
encode.c: ^
encode.c: encode.c:21:20: error: always_inline function '_mm256_setzero_si256' requires target feature 'sse4.2', but would be inlined into function 'crypto_encode_761xfreeze3_avx_constbranchindex' that is compiled without support for 'sse4.2'
encode.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: 0x5633469d02d0: v4i64 = X86ISD::VTRUNC 0x5633469d01a0
try.c: 0x5633469d01a0: v16i32 = vselect 0x5633469cccb0, 0x56334695cd30, 0x5633469d0070
try.c: 0x5633469cccb0: v4i1 = X86ISD::PCMPGTM 0x5633469b5940, 0x5633469b14d0
try.c: 0x5633469b5940: v4i64 = X86ISD::VBROADCAST 0x563346955cc0
try.c: 0x563346955cc0: i64,ch = load<LD8[%lsr.iv6971]> 0x5633468c6940, 0x5633469ac330, undef:i64
try.c: 0x5633469ac330: i64,ch = CopyFromReg 0x5633468c6940, Register:i64 %vreg50
try.c: 0x5633469b1730: i64 = Register %vreg50
try.c: 0x563346957190: i64 = undef
try.c: 0x5633469b14d0: v4i64,ch = CopyFromReg 0x5633468c6940, Register:v4i64 %vreg13
try.c: 0x5633469b6190: v4i64 = Register %vreg13
try.c: 0x56334695cd30: v16i32 = X86ISD::VBROADCAST 0x5633469b5ba0
try.c: 0x5633469b5ba0: i32,ch = load<LD4[ConstantPool]> 0x5633468c6940, 0x56334695a300, undef:i64
try.c: 0x56334695a300: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x56334699ab50: i64 = TargetConstantPool<i32 1> 0
try.c: 0x563346957190: i64 = undef
try.c: 0x5633469d0070: 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: 0x5633469cff40: i32 = Constant<0>
try.c: 0x5633469cff40: i32 = Constant<0>
try.c: 0x5633469cff40: i32 = Constant<0>
try.c: 0x5633469cff40: i32 = Constant<0>
try.c: 0x5633469cff40: i32 = Constant<0>
try.c: 0x5633469cff40: i32 = Constant<0>
try.c: 0x5633469cff40: i32 = Constant<0>
try.c: 0x5633469cff40: i32 = Constant<0>
try.c: 0x5633469cff40: 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: 0x5643c0e37880: v4i64 = X86ISD::VTRUNC 0x5643c0e37750
try.c: 0x5643c0e37750: v16i32 = vselect 0x5643c0e1ab60, 0x5643c0da8cb0, 0x5643c0e37620
try.c: 0x5643c0e1ab60: v4i1 = X86ISD::PCMPGTM 0x5643c0e13f30, 0x5643c0e0fac0
try.c: 0x5643c0e13f30: v4i64 = X86ISD::VBROADCAST 0x5643c0da9170
try.c: 0x5643c0da9170: i64,ch = load<LD8[%lsr.iv6971]> 0x5643c0d0da30, 0x5643c0dd0140, undef:i64
try.c: 0x5643c0dd0140: i64,ch = CopyFromReg 0x5643c0d0da30, Register:i64 %vreg50
try.c: 0x5643c0e0fd20: i64 = Register %vreg50
try.c: 0x5643c0d8be90: i64 = undef
try.c: 0x5643c0e0fac0: v4i64,ch = CopyFromReg 0x5643c0d0da30, Register:v4i64 %vreg13
try.c: 0x5643c0e14780: v4i64 = Register %vreg13
try.c: 0x5643c0da8cb0: v16i32 = X86ISD::VBROADCAST 0x5643c0e14190
try.c: 0x5643c0e14190: i32,ch = load<LD4[ConstantPool]> 0x5643c0d0da30, 0x5643c0dafaa0, undef:i64
try.c: 0x5643c0dafaa0: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x5643c0d8c810: i64 = TargetConstantPool<i32 1> 0
try.c: 0x5643c0d8be90: i64 = undef
try.c: 0x5643c0e37620: 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: 0x5643c0e374f0: i32 = Constant<0>
try.c: 0x5643c0e374f0: i32 = Constant<0>
try.c: 0x5643c0e374f0: i32 = Constant<0>
try.c: 0x5643c0e374f0: i32 = Constant<0>
try.c: 0x5643c0e374f0: i32 = Constant<0>
try.c: 0x5643c0e374f0: i32 = Constant<0>
try.c: 0x5643c0e374f0: i32 = Constant<0>
try.c: 0x5643c0e374f0: i32 = Constant<0>
try.c: 0x5643c0e374f0: 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: 0x5631c3406550: v4i64 = X86ISD::VTRUNC 0x5631c3406420
try.c: 0x5631c3406420: v16i32 = vselect 0x5631c3409e20, 0x5631c33ba710, 0x5631c34062f0
try.c: 0x5631c3409e20: v4i1 = X86ISD::PCMPGTM 0x5631c33fe880, 0x5631c33fa410
try.c: 0x5631c33fe880: v4i64 = X86ISD::VBROADCAST 0x5631c33a2590
try.c: 0x5631c33a2590: i64,ch = load<LD8[%lsr.iv6971]> 0x5631c330f940, 0x5631c33f5270, undef:i64
try.c: 0x5631c33f5270: i64,ch = CopyFromReg 0x5631c330f940, Register:i64 %vreg50
try.c: 0x5631c33fa670: i64 = Register %vreg50
try.c: 0x5631c33b8d80: i64 = undef
try.c: 0x5631c33fa410: v4i64,ch = CopyFromReg 0x5631c330f940, Register:v4i64 %vreg13
try.c: 0x5631c33ff0d0: v4i64 = Register %vreg13
try.c: 0x5631c33ba710: v16i32 = X86ISD::VBROADCAST 0x5631c33feae0
try.c: 0x5631c33feae0: i32,ch = load<LD4[ConstantPool]> 0x5631c330f940, 0x5631c33a1b70, undef:i64
try.c: 0x5631c33a1b70: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x5631c33e3370: i64 = TargetConstantPool<i32 1> 0
try.c: 0x5631c33b8d80: i64 = undef
try.c: 0x5631c34062f0: 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: 0x5631c34061c0: i32 = Constant<0>
try.c: 0x5631c34061c0: i32 = Constant<0>
try.c: 0x5631c34061c0: i32 = Constant<0>
try.c: 0x5631c34061c0: i32 = Constant<0>
try.c: 0x5631c34061c0: i32 = Constant<0>
try.c: 0x5631c34061c0: i32 = Constant<0>
try.c: 0x5631c34061c0: i32 = Constant<0>
try.c: 0x5631c34061c0: i32 = Constant<0>
try.c: 0x5631c34061c0: 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