Implementation notes: amd64, cel02, crypto_encode/857xfreeze3

Computer: cel02
Architecture: amd64
CPU ID: GenuineIntel-00050657-bfebfbff
SUPERCOP version: 20201130
Operation: crypto_encode
Primitive: 857xfreeze3
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
232143 0 09516 792 728avxclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
374167 0 010588 816 768avxgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
382167 0 013845 824 800avxgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
426163 0 010324 816 768avxgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
6941330 0 015045 824 800refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
994167 0 09448 800 768avxgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
2308520 0 011754 800 728refclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
257890 0 09460 792 728refclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
3072107 0 010492 816 768refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
3254105 0 010244 816 768refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
437895 0 09352 800 768refgcc_-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: 0x56026391ff50: v4i64 = X86ISD::VTRUNC 0x56026391fe20
try.c: 0x56026391fe20: v16i32 = vselect 0x560263912d50, 0x5602638d0a80, 0x56026391fcf0
try.c: 0x560263912d50: v4i1 = X86ISD::PCMPGTM 0x56026391a920, 0x5602639164b0
try.c: 0x56026391a920: v4i64 = X86ISD::VBROADCAST 0x5602638bea10
try.c: 0x5602638bea10: i64,ch = load<LD8[%lsr.iv6971]> 0x56026382b950, 0x56026390dac0, undef:i64
try.c: 0x56026390dac0: i64,ch = CopyFromReg 0x56026382b950, Register:i64 %vreg50
try.c: 0x560263916710: i64 = Register %vreg50
try.c: 0x5602638cf0f0: i64 = undef
try.c: 0x5602639164b0: v4i64,ch = CopyFromReg 0x56026382b950, Register:v4i64 %vreg13
try.c: 0x56026391b170: v4i64 = Register %vreg13
try.c: 0x5602638d0a80: v16i32 = X86ISD::VBROADCAST 0x56026391ab80
try.c: 0x56026391ab80: i32,ch = load<LD4[ConstantPool]> 0x56026382b950, 0x5602638bdff0, undef:i64
try.c: 0x5602638bdff0: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x560263887d60: i64 = TargetConstantPool<i32 1> 0
try.c: 0x5602638cf0f0: i64 = undef
try.c: 0x56026391fcf0: 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: 0x56026391fbc0: i32 = Constant<0>
try.c: 0x56026391fbc0: i32 = Constant<0>
try.c: 0x56026391fbc0: i32 = Constant<0>
try.c: 0x56026391fbc0: i32 = Constant<0>
try.c: 0x56026391fbc0: i32 = Constant<0>
try.c: 0x56026391fbc0: i32 = Constant<0>
try.c: 0x56026391fbc0: i32 = Constant<0>
try.c: 0x56026391fbc0: i32 = Constant<0>
try.c: 0x56026391fbc0: 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: 0x56284c999c80: v4i64 = X86ISD::VTRUNC 0x56284c999b50
try.c: 0x56284c999b50: v16i32 = vselect 0x56284c9ab790, 0x56284c928fc0, 0x56284c999a20
try.c: 0x56284c9ab790: v4i1 = X86ISD::PCMPGTM 0x56284c993410, 0x56284c990f30
try.c: 0x56284c993410: v4i64 = X86ISD::VBROADCAST 0x56284c929480
try.c: 0x56284c929480: i64,ch = load<LD8[%lsr.iv6971]> 0x56284c88da30, 0x56284c931160, undef:i64
try.c: 0x56284c931160: i64,ch = CopyFromReg 0x56284c88da30, Register:i64 %vreg50
try.c: 0x56284c991190: i64 = Register %vreg50
try.c: 0x56284c90c610: i64 = undef
try.c: 0x56284c990f30: v4i64,ch = CopyFromReg 0x56284c88da30, Register:v4i64 %vreg13
try.c: 0x56284c993c60: v4i64 = Register %vreg13
try.c: 0x56284c928fc0: v16i32 = X86ISD::VBROADCAST 0x56284c993670
try.c: 0x56284c993670: i32,ch = load<LD4[ConstantPool]> 0x56284c88da30, 0x56284c92f730, undef:i64
try.c: 0x56284c92f730: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x56284c90cf90: i64 = TargetConstantPool<i32 1> 0
try.c: 0x56284c90c610: i64 = undef
try.c: 0x56284c999a20: 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: 0x56284c9998f0: i32 = Constant<0>
try.c: 0x56284c9998f0: i32 = Constant<0>
try.c: 0x56284c9998f0: i32 = Constant<0>
try.c: 0x56284c9998f0: i32 = Constant<0>
try.c: 0x56284c9998f0: i32 = Constant<0>
try.c: 0x56284c9998f0: i32 = Constant<0>
try.c: 0x56284c9998f0: i32 = Constant<0>
try.c: 0x56284c9998f0: i32 = Constant<0>
try.c: 0x56284c9998f0: 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: 0x560b7cd613b0: v4i64 = X86ISD::VTRUNC 0x560b7cd61280
try.c: 0x560b7cd61280: v16i32 = vselect 0x560b7cd4b300, 0x560b7cce42c0, 0x560b7cd61150
try.c: 0x560b7cd4b300: v4i1 = X86ISD::PCMPGTM 0x560b7cd3f7f0, 0x560b7cd3b380
try.c: 0x560b7cd3f7f0: v4i64 = X86ISD::VBROADCAST 0x560b7ccec2b0
try.c: 0x560b7ccec2b0: i64,ch = load<LD8[%lsr.iv6971]> 0x560b7cc50970, 0x560b7cd20c60, undef:i64
try.c: 0x560b7cd20c60: i64,ch = CopyFromReg 0x560b7cc50970, Register:i64 %vreg50
try.c: 0x560b7cd3b5e0: i64 = Register %vreg50
try.c: 0x560b7cce2930: i64 = undef
try.c: 0x560b7cd3b380: v4i64,ch = CopyFromReg 0x560b7cc50970, Register:v4i64 %vreg13
try.c: 0x560b7cd40040: v4i64 = Register %vreg13
try.c: 0x560b7cce42c0: v16i32 = X86ISD::VBROADCAST 0x560b7cd3fa50
try.c: 0x560b7cd3fa50: i32,ch = load<LD4[ConstantPool]> 0x560b7cc50970, 0x560b7cceb890, undef:i64
try.c: 0x560b7cceb890: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x560b7cd293e0: i64 = TargetConstantPool<i32 1> 0
try.c: 0x560b7cce2930: i64 = undef
try.c: 0x560b7cd61150: 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: 0x560b7cd61020: i32 = Constant<0>
try.c: 0x560b7cd61020: i32 = Constant<0>
try.c: 0x560b7cd61020: i32 = Constant<0>
try.c: 0x560b7cd61020: i32 = Constant<0>
try.c: 0x560b7cd61020: i32 = Constant<0>
try.c: 0x560b7cd61020: i32 = Constant<0>
try.c: 0x560b7cd61020: i32 = Constant<0>
try.c: 0x560b7cd61020: i32 = Constant<0>
try.c: 0x560b7cd61020: 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_857xfreeze3_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_857xfreeze3_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_857xfreeze3_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_857xfreeze3_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_857xfreeze3_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_857xfreeze3_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_857xfreeze3_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_857xfreeze3_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: 0x56118c1e76e0: v4i64 = X86ISD::VTRUNC 0x56118c1e75b0
try.c: 0x56118c1e75b0: v16i32 = vselect 0x56118c1fbc40, 0x56118c181540, 0x56118c1e7480
try.c: 0x56118c1fbc40: v4i1 = X86ISD::PCMPGTM 0x56118c1e20b0, 0x56118c1dd630
try.c: 0x56118c1e20b0: v4i64 = X86ISD::VBROADCAST 0x56118c19cfa0
try.c: 0x56118c19cfa0: i64,ch = load<LD8[%lsr.iv6971]> 0x56118c0f2950, 0x56118c1cd840, undef:i64
try.c: 0x56118c1cd840: i64,ch = CopyFromReg 0x56118c0f2950, Register:i64 %vreg50
try.c: 0x56118c1dd890: i64 = Register %vreg50
try.c: 0x56118c17fbb0: i64 = undef
try.c: 0x56118c1dd630: v4i64,ch = CopyFromReg 0x56118c0f2950, Register:v4i64 %vreg13
try.c: 0x56118c1e2900: v4i64 = Register %vreg13
try.c: 0x56118c181540: v16i32 = X86ISD::VBROADCAST 0x56118c1e2310
try.c: 0x56118c1e2310: i32,ch = load<LD4[ConstantPool]> 0x56118c0f2950, 0x56118c19c580, undef:i64
try.c: 0x56118c19c580: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x56118c1ca180: i64 = TargetConstantPool<i32 1> 0
try.c: 0x56118c17fbb0: i64 = undef
try.c: 0x56118c1e7480: 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: 0x56118c1e7350: i32 = Constant<0>
try.c: 0x56118c1e7350: i32 = Constant<0>
try.c: 0x56118c1e7350: i32 = Constant<0>
try.c: 0x56118c1e7350: i32 = Constant<0>
try.c: 0x56118c1e7350: i32 = Constant<0>
try.c: 0x56118c1e7350: i32 = Constant<0>
try.c: 0x56118c1e7350: i32 = Constant<0>
try.c: 0x56118c1e7350: i32 = Constant<0>
try.c: 0x56118c1e7350: 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: 0x55c3cb0fdad0: v4i64 = X86ISD::VTRUNC 0x55c3cb0fd9a0
try.c: 0x55c3cb0fd9a0: v16i32 = vselect 0x55c3cb0f84a0, 0x55c3cb07b9f0, 0x55c3cb0fd870
try.c: 0x55c3cb0f84a0: v4i1 = X86ISD::PCMPGTM 0x55c3cb0e4910, 0x55c3cb0e04a0
try.c: 0x55c3cb0e4910: v4i64 = X86ISD::VBROADCAST 0x55c3cb07beb0
try.c: 0x55c3cb07beb0: i64,ch = load<LD8[%lsr.iv6971]> 0x55c3cafdea30, 0x55c3cb080380, undef:i64
try.c: 0x55c3cb080380: i64,ch = CopyFromReg 0x55c3cafdea30, Register:i64 %vreg50
try.c: 0x55c3cb0e0700: i64 = Register %vreg50
try.c: 0x55c3cb096810: i64 = undef
try.c: 0x55c3cb0e04a0: v4i64,ch = CopyFromReg 0x55c3cafdea30, Register:v4i64 %vreg13
try.c: 0x55c3cb0e5160: v4i64 = Register %vreg13
try.c: 0x55c3cb07b9f0: v16i32 = X86ISD::VBROADCAST 0x55c3cb0e4b70
try.c: 0x55c3cb0e4b70: i32,ch = load<LD4[ConstantPool]> 0x55c3cafdea30, 0x55c3cb07e390, undef:i64
try.c: 0x55c3cb07e390: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55c3cb097190: i64 = TargetConstantPool<i32 1> 0
try.c: 0x55c3cb096810: i64 = undef
try.c: 0x55c3cb0fd870: 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: 0x55c3cb0fd740: i32 = Constant<0>
try.c: 0x55c3cb0fd740: i32 = Constant<0>
try.c: 0x55c3cb0fd740: i32 = Constant<0>
try.c: 0x55c3cb0fd740: i32 = Constant<0>
try.c: 0x55c3cb0fd740: i32 = Constant<0>
try.c: 0x55c3cb0fd740: i32 = Constant<0>
try.c: 0x55c3cb0fd740: i32 = Constant<0>
try.c: 0x55c3cb0fd740: i32 = Constant<0>
try.c: 0x55c3cb0fd740: 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: 0x563761e20540: v4i64 = X86ISD::VTRUNC 0x563761e20410
try.c: 0x563761e20410: v16i32 = vselect 0x563761e0cd80, 0x563761dae2a0, 0x563761e202e0
try.c: 0x563761e0cd80: v4i1 = X86ISD::PCMPGTM 0x563761e06bd0, 0x563761e02760
try.c: 0x563761e06bd0: v4i64 = X86ISD::VBROADCAST 0x563761da6090
try.c: 0x563761da6090: i64,ch = load<LD8[%lsr.iv6971]> 0x563761d17930, 0x563761df20f0, undef:i64
try.c: 0x563761df20f0: i64,ch = CopyFromReg 0x563761d17930, Register:i64 %vreg50
try.c: 0x563761e029c0: i64 = Register %vreg50
try.c: 0x563761dac910: i64 = undef
try.c: 0x563761e02760: v4i64,ch = CopyFromReg 0x563761d17930, Register:v4i64 %vreg13
try.c: 0x563761e07420: v4i64 = Register %vreg13
try.c: 0x563761dae2a0: v16i32 = X86ISD::VBROADCAST 0x563761e06e30
try.c: 0x563761e06e30: i32,ch = load<LD4[ConstantPool]> 0x563761d17930, 0x563761da5670, undef:i64
try.c: 0x563761da5670: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x563761db1720: i64 = TargetConstantPool<i32 1> 0
try.c: 0x563761dac910: i64 = undef
try.c: 0x563761e202e0: 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: 0x563761e201b0: i32 = Constant<0>
try.c: 0x563761e201b0: i32 = Constant<0>
try.c: 0x563761e201b0: i32 = Constant<0>
try.c: 0x563761e201b0: i32 = Constant<0>
try.c: 0x563761e201b0: i32 = Constant<0>
try.c: 0x563761e201b0: i32 = Constant<0>
try.c: 0x563761e201b0: i32 = Constant<0>
try.c: 0x563761e201b0: i32 = Constant<0>
try.c: 0x563761e201b0: 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