Implementation notes: amd64, cel02, crypto_encode/857x3

Computer: cel02
Architecture: amd64
CPU ID: GenuineIntel-00050657-bfebfbff
SUPERCOP version: 20201130
Operation: crypto_encode
Primitive: 857x3
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
96437 0 09804 792 728avxclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
96470 0 014149 824 800avxgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
160465 0 09704 800 768avxgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
176470 0 010892 816 768avxgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
374473 0 010644 816 768avxgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
5282491 0 016197 824 800refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
972120 0 09336 800 768refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
1066126 0 010260 816 768refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
1458133 0 010524 816 768refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
1670126 0 011322 800 728refclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
2546119 0 09460 792 728refclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-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: 0x56544262f2c0: v4i64 = X86ISD::VTRUNC 0x56544262f190
try.c: 0x56544262f190: v16i32 = vselect 0x5654426062c0, 0x5654425e0d20, 0x56544262f060
try.c: 0x5654426062c0: v4i1 = X86ISD::PCMPGTM 0x565442617960, 0x5654426134f0
try.c: 0x565442617960: v4i64 = X86ISD::VBROADCAST 0x5654425bb950
try.c: 0x5654425bb950: i64,ch = load<LD8[%lsr.iv6971]> 0x565442528970, 0x565442579140, undef:i64
try.c: 0x565442579140: i64,ch = CopyFromReg 0x565442528970, Register:i64 %vreg50
try.c: 0x565442613750: i64 = Register %vreg50
try.c: 0x5654425df390: i64 = undef
try.c: 0x5654426134f0: v4i64,ch = CopyFromReg 0x565442528970, Register:v4i64 %vreg13
try.c: 0x5654426181b0: v4i64 = Register %vreg13
try.c: 0x5654425e0d20: v16i32 = X86ISD::VBROADCAST 0x565442617bc0
try.c: 0x565442617bc0: i32,ch = load<LD4[ConstantPool]> 0x565442528970, 0x5654425baf30, undef:i64
try.c: 0x5654425baf30: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x5654425bf1d0: i64 = TargetConstantPool<i32 1> 0
try.c: 0x5654425df390: i64 = undef
try.c: 0x56544262f060: 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: 0x56544262ef30: i32 = Constant<0>
try.c: 0x56544262ef30: i32 = Constant<0>
try.c: 0x56544262ef30: i32 = Constant<0>
try.c: 0x56544262ef30: i32 = Constant<0>
try.c: 0x56544262ef30: i32 = Constant<0>
try.c: 0x56544262ef30: i32 = Constant<0>
try.c: 0x56544262ef30: i32 = Constant<0>
try.c: 0x56544262ef30: i32 = Constant<0>
try.c: 0x56544262ef30: 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: 0x55a329b80480: v4i64 = X86ISD::VTRUNC 0x55a329b80350
try.c: 0x55a329b80350: v16i32 = vselect 0x55a329b7ce60, 0x55a329b0aaa0, 0x55a329b80220
try.c: 0x55a329b7ce60: v4i1 = X86ISD::PCMPGTM 0x55a329b60dd0, 0x55a329b5cf60
try.c: 0x55a329b60dd0: v4i64 = X86ISD::VBROADCAST 0x55a329b0af60
try.c: 0x55a329b0af60: i64,ch = load<LD8[%lsr.iv6971]> 0x55a329a5aa10, 0x55a329b034d0, undef:i64
try.c: 0x55a329b034d0: i64,ch = CopyFromReg 0x55a329a5aa10, Register:i64 %vreg50
try.c: 0x55a329b5d1c0: i64 = Register %vreg50
try.c: 0x55a329af9070: i64 = undef
try.c: 0x55a329b5cf60: v4i64,ch = CopyFromReg 0x55a329a5aa10, Register:v4i64 %vreg13
try.c: 0x55a329b61620: v4i64 = Register %vreg13
try.c: 0x55a329b0aaa0: v16i32 = X86ISD::VBROADCAST 0x55a329b61030
try.c: 0x55a329b61030: i32,ch = load<LD4[ConstantPool]> 0x55a329a5aa10, 0x55a329b01aa0, undef:i64
try.c: 0x55a329b01aa0: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55a329af99f0: i64 = TargetConstantPool<i32 1> 0
try.c: 0x55a329af9070: i64 = undef
try.c: 0x55a329b80220: 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: 0x55a329b800f0: i32 = Constant<0>
try.c: 0x55a329b800f0: i32 = Constant<0>
try.c: 0x55a329b800f0: i32 = Constant<0>
try.c: 0x55a329b800f0: i32 = Constant<0>
try.c: 0x55a329b800f0: i32 = Constant<0>
try.c: 0x55a329b800f0: i32 = Constant<0>
try.c: 0x55a329b800f0: i32 = Constant<0>
try.c: 0x55a329b800f0: i32 = Constant<0>
try.c: 0x55a329b800f0: 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: 0x55c23d41d550: v4i64 = X86ISD::VTRUNC 0x55c23d41d420
try.c: 0x55c23d41d420: v16i32 = vselect 0x55c23d417f20, 0x55c23d3cde40, 0x55c23d41d2f0
try.c: 0x55c23d417f20: v4i1 = X86ISD::PCMPGTM 0x55c23d4136f0, 0x55c23d40f280
try.c: 0x55c23d4136f0: v4i64 = X86ISD::VBROADCAST 0x55c23d3bacf0
try.c: 0x55c23d3bacf0: i64,ch = load<LD8[%lsr.iv6971]> 0x55c23d324920, 0x55c23d3fd550, undef:i64
try.c: 0x55c23d3fd550: i64,ch = CopyFromReg 0x55c23d324920, Register:i64 %vreg50
try.c: 0x55c23d40f4e0: i64 = Register %vreg50
try.c: 0x55c23d3bc1c0: i64 = undef
try.c: 0x55c23d40f280: v4i64,ch = CopyFromReg 0x55c23d324920, Register:v4i64 %vreg13
try.c: 0x55c23d413f40: v4i64 = Register %vreg13
try.c: 0x55c23d3cde40: v16i32 = X86ISD::VBROADCAST 0x55c23d413950
try.c: 0x55c23d413950: i32,ch = load<LD4[ConstantPool]> 0x55c23d324920, 0x55c23d3ba2d0, undef:i64
try.c: 0x55c23d3ba2d0: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55c23d3fa000: i64 = TargetConstantPool<i32 1> 0
try.c: 0x55c23d3bc1c0: i64 = undef
try.c: 0x55c23d41d2f0: 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: 0x55c23d41d1c0: i32 = Constant<0>
try.c: 0x55c23d41d1c0: i32 = Constant<0>
try.c: 0x55c23d41d1c0: i32 = Constant<0>
try.c: 0x55c23d41d1c0: i32 = Constant<0>
try.c: 0x55c23d41d1c0: i32 = Constant<0>
try.c: 0x55c23d41d1c0: i32 = Constant<0>
try.c: 0x55c23d41d1c0: i32 = Constant<0>
try.c: 0x55c23d41d1c0: i32 = Constant<0>
try.c: 0x55c23d41d1c0: 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:26:18: error: always_inline function '_mm256_loadu_si256' requires target feature 'sse4.2', but would be inlined into function 'crypto_encode_857x3_avx_constbranchindex' that is compiled without support for 'sse4.2'
encode.c: __m256i f0 = _mm256_loadu_si256((const __m256i *) (f+0));
encode.c: ^
encode.c: encode.c:27:18: error: always_inline function '_mm256_loadu_si256' requires target feature 'sse4.2', but would be inlined into function 'crypto_encode_857x3_avx_constbranchindex' that is compiled without support for 'sse4.2'
encode.c: __m256i f1 = _mm256_loadu_si256((const __m256i *) (f+32));
encode.c: ^
encode.c: encode.c:28:18: error: always_inline function '_mm256_loadu_si256' requires target feature 'sse4.2', but would be inlined into function 'crypto_encode_857x3_avx_constbranchindex' that is compiled without support for 'sse4.2'
encode.c: __m256i f2 = _mm256_loadu_si256((const __m256i *) (f+64));
encode.c: ^
encode.c: encode.c:29:18: error: always_inline function '_mm256_loadu_si256' requires target feature 'sse4.2', but would be inlined into function 'crypto_encode_857x3_avx_constbranchindex' that is compiled without support for 'sse4.2'
encode.c: __m256i f3 = _mm256_loadu_si256((const __m256i *) (f+96));
encode.c: ^
encode.c: encode.c:33:18: error: always_inline function '_mm256_packus_epi16' requires target feature 'sse4.2', but would be inlined into function 'crypto_encode_857x3_avx_constbranchindex' that is compiled without support for 'sse4.2'
encode.c: __m256i a0 = _mm256_packus_epi16(f0&lobytes,f1&lobytes);
encode.c: ^
encode.c: encode.c:36:18: error: always_inline function '_mm256_packus_epi16' requires target feature 'sse4.2', but would be inlined into function 'crypto_encode_857x3_avx_constbranchindex' that is compiled without support for 'sse4.2'
encode.c: __m256i a1 = _mm256_packus_epi16(_mm256_srli_epi16(f0,8),_mm256_srli_epi16(f1,8));
encode.c: ^
encode.c: encode.c:36:38: error: always_inline function '_mm256_srli_epi16' requires target feature 'sse4.2', but would be inlined into function 'crypto_encode_857x3_avx_constbranchindex' that is compiled without support for 'sse4.2'
encode.c: __m256i a1 = _mm256_packus_epi16(_mm256_srli_epi16(f0,8),_mm256_srli_epi16(f1,8));
encode.c: ^
encode.c: encode.c:36:62: error: always_inline function '_mm256_srli_epi16' requires target feature 'sse4.2', but would be inlined into function 'crypto_encode_857x3_avx_constbranchindex' that is compiled without support for 'sse4.2'
encode.c: __m256i a1 = _mm256_packus_epi16(_mm256_srli_epi16(f0,8),_mm256_srli_epi16(f1,8));
encode.c: ^
encode.c: encode.c:38:18: error: always_inline function '_mm256_packus_epi16' requires target feature 'sse4.2', but would be inlined into function 'crypto_encode_857x3_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: 0x556adab95db0: v4i64 = X86ISD::VTRUNC 0x556adab95c80
try.c: 0x556adab95c80: v16i32 = vselect 0x556adab92790, 0x556adab2e9c0, 0x556adab95b50
try.c: 0x556adab92790: v4i1 = X86ISD::PCMPGTM 0x556adab89b00, 0x556adab85690
try.c: 0x556adab89b00: v4i64 = X86ISD::VBROADCAST 0x556adab28f20
try.c: 0x556adab28f20: i64,ch = load<LD8[%lsr.iv6971]> 0x556adaa9a950, 0x556adab6ec40, undef:i64
try.c: 0x556adab6ec40: i64,ch = CopyFromReg 0x556adaa9a950, Register:i64 %vreg50
try.c: 0x556adab858f0: i64 = Register %vreg50
try.c: 0x556adab2d030: i64 = undef
try.c: 0x556adab85690: v4i64,ch = CopyFromReg 0x556adaa9a950, Register:v4i64 %vreg13
try.c: 0x556adab8a350: v4i64 = Register %vreg13
try.c: 0x556adab2e9c0: v16i32 = X86ISD::VBROADCAST 0x556adab89d60
try.c: 0x556adab89d60: i32,ch = load<LD4[ConstantPool]> 0x556adaa9a950, 0x556adab28500, undef:i64
try.c: 0x556adab28500: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x556adab81640: i64 = TargetConstantPool<i32 1> 0
try.c: 0x556adab2d030: i64 = undef
try.c: 0x556adab95b50: 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: 0x556adab95a20: i32 = Constant<0>
try.c: 0x556adab95a20: i32 = Constant<0>
try.c: 0x556adab95a20: i32 = Constant<0>
try.c: 0x556adab95a20: i32 = Constant<0>
try.c: 0x556adab95a20: i32 = Constant<0>
try.c: 0x556adab95a20: i32 = Constant<0>
try.c: 0x556adab95a20: i32 = Constant<0>
try.c: 0x556adab95a20: i32 = Constant<0>
try.c: 0x556adab95a20: 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: 0x562cc72fcca0: v4i64 = X86ISD::VTRUNC 0x562cc72fcb70
try.c: 0x562cc72fcb70: v16i32 = vselect 0x562cc72f4b30, 0x562cc728bf10, 0x562cc72fca40
try.c: 0x562cc72f4b30: v4i1 = X86ISD::PCMPGTM 0x562cc72f1b00, 0x562cc72ed690
try.c: 0x562cc72f1b00: v4i64 = X86ISD::VBROADCAST 0x562cc728c3d0
try.c: 0x562cc728c3d0: i64,ch = load<LD8[%lsr.iv6971]> 0x562cc71eaa30, 0x562cc72857b0, undef:i64
try.c: 0x562cc72857b0: i64,ch = CopyFromReg 0x562cc71eaa30, Register:i64 %vreg50
try.c: 0x562cc72ed8f0: i64 = Register %vreg50
try.c: 0x562cc729ae10: i64 = undef
try.c: 0x562cc72ed690: v4i64,ch = CopyFromReg 0x562cc71eaa30, Register:v4i64 %vreg13
try.c: 0x562cc72f2350: v4i64 = Register %vreg13
try.c: 0x562cc728bf10: v16i32 = X86ISD::VBROADCAST 0x562cc72f1d60
try.c: 0x562cc72f1d60: i32,ch = load<LD4[ConstantPool]> 0x562cc71eaa30, 0x562cc7283d80, undef:i64
try.c: 0x562cc7283d80: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x562cc729b790: i64 = TargetConstantPool<i32 1> 0
try.c: 0x562cc729ae10: i64 = undef
try.c: 0x562cc72fca40: 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: 0x562cc72fc910: i32 = Constant<0>
try.c: 0x562cc72fc910: i32 = Constant<0>
try.c: 0x562cc72fc910: i32 = Constant<0>
try.c: 0x562cc72fc910: i32 = Constant<0>
try.c: 0x562cc72fc910: i32 = Constant<0>
try.c: 0x562cc72fc910: i32 = Constant<0>
try.c: 0x562cc72fc910: i32 = Constant<0>
try.c: 0x562cc72fc910: i32 = Constant<0>
try.c: 0x562cc72fc910: 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: 0x55be8b9ed1c0: v4i64 = X86ISD::VTRUNC 0x55be8b9ed090
try.c: 0x55be8b9ed090: v16i32 = vselect 0x55be8b9e9ba0, 0x55be8b983df0, 0x55be8b9ecf60
try.c: 0x55be8b9e9ba0: v4i1 = X86ISD::PCMPGTM 0x55be8b9e4f50, 0x55be8b9e0ae0
try.c: 0x55be8b9e4f50: v4i64 = X86ISD::VBROADCAST 0x55be8b999000
try.c: 0x55be8b999000: i64,ch = load<LD8[%lsr.iv6971]> 0x55be8b8f5950, 0x55be8b9d8400, undef:i64
try.c: 0x55be8b9d8400: i64,ch = CopyFromReg 0x55be8b8f5950, Register:i64 %vreg50
try.c: 0x55be8b9e0d40: i64 = Register %vreg50
try.c: 0x55be8b99a4d0: i64 = undef
try.c: 0x55be8b9e0ae0: v4i64,ch = CopyFromReg 0x55be8b8f5950, Register:v4i64 %vreg13
try.c: 0x55be8b9e57a0: v4i64 = Register %vreg13
try.c: 0x55be8b983df0: v16i32 = X86ISD::VBROADCAST 0x55be8b9e51b0
try.c: 0x55be8b9e51b0: i32,ch = load<LD4[ConstantPool]> 0x55be8b8f5950, 0x55be8b98ed70, undef:i64
try.c: 0x55be8b98ed70: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55be8b9cc630: i64 = TargetConstantPool<i32 1> 0
try.c: 0x55be8b99a4d0: i64 = undef
try.c: 0x55be8b9ecf60: 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: 0x55be8b9ece30: i32 = Constant<0>
try.c: 0x55be8b9ece30: i32 = Constant<0>
try.c: 0x55be8b9ece30: i32 = Constant<0>
try.c: 0x55be8b9ece30: i32 = Constant<0>
try.c: 0x55be8b9ece30: i32 = Constant<0>
try.c: 0x55be8b9ece30: i32 = Constant<0>
try.c: 0x55be8b9ece30: i32 = Constant<0>
try.c: 0x55be8b9ece30: i32 = Constant<0>
try.c: 0x55be8b9ece30: 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