Implementation notes: aarch64, rpi4ubuntu64, crypto_sign/picnic2l5fs

Computer: rpi4ubuntu64
Architecture: aarch64
CPU ID: 410fd083
SUPERCOP version: 20191221
Operation: crypto_sign
Primitive: picnic2l5fs
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
6071195540177833 2512 16216148 3440 1576optimizedct/neongcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020011220191221
6072707540184076 2512 16223412 3456 1592optimizedct/neongcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020011220191221
6090666514192532 2512 16232964 3456 1608optimizedct/neongcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020011220191221
6254624310187020 2512 16226492 3456 1592optimizedct/neongcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020011220191221
6286140380183105 2632 16220056 3512 1592optimizedct/cclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020011220191221
6413098179182088 2512 16222212 3456 1608optimizedct/cgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020011220191221
6512579759175492 2512 16214476 3456 1592optimizedct/cgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020011220191221
6598272244169641 2512 16207620 3440 1576optimizedct/cgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020011220191221
7259233232175840 2512 16214876 3456 1592optimizedct/cgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020011220191221

Test failure

Implementation: ref
Security model: unknown
Compiler: clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
error 142
Alarm clock

Number of similar (compiler,implementation) pairs: 5, namely:
CompilerImplementations
clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE ref
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE ref
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE ref
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv -fPIC -fPIE ref
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE ref

Compiler output

Implementation: optimizedct/neon
Security model: unknown
Compiler: clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
picnic2_simulate_mul.c: picnic2_simulate_mul.c:295:57: error: argument to '__builtin_neon_vshrq_n_v' must be a constant integer
picnic2_simulate_mul.c: out128[i1 / 2] = mm128_xor(mm128_and(t1, mask), mm128_sr_u64(mm128_and(t2, mask), width));
picnic2_simulate_mul.c: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
picnic2_simulate_mul.c: ./simd.h:104:28: note: expanded from macro 'mm128_sr_u64'
picnic2_simulate_mul.c: #define mm128_sr_u64(x, s) vshrq_n_u64((x), (s))
picnic2_simulate_mul.c: ^
picnic2_simulate_mul.c: /usr/lib/llvm-9/lib/clang/9.0.0/include/arm_neon.h:24773:24: note: expanded from macro 'vshrq_n_u64'
picnic2_simulate_mul.c: __ret = (uint64x2_t) __builtin_neon_vshrq_n_v((int8x16_t)__s0, __p1, 51); \
picnic2_simulate_mul.c: ^
picnic2_simulate_mul.c: ./simd.h:98:41: note: expanded from macro 'mm128_xor'
picnic2_simulate_mul.c: #define mm128_xor(l, r) veorq_u64((l), (r))
picnic2_simulate_mul.c: ^
picnic2_simulate_mul.c: picnic2_simulate_mul.c:296:58: error: argument to '__builtin_neon_vshlq_n_v' must be a constant integer
picnic2_simulate_mul.c: out128[i2 / 2] = mm128_xor(mm128_nand(mask, t2), mm128_sl_u64(mm128_nand(mask, t1), width));
picnic2_simulate_mul.c: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
picnic2_simulate_mul.c: ./simd.h:103:28: note: expanded from macro 'mm128_sl_u64'
picnic2_simulate_mul.c: #define mm128_sl_u64(x, s) vshlq_n_u64((x), (s))
picnic2_simulate_mul.c: ^
picnic2_simulate_mul.c: /usr/lib/llvm-9/lib/clang/9.0.0/include/arm_neon.h:24345:24: note: expanded from macro 'vshlq_n_u64'
picnic2_simulate_mul.c: __ret = (uint64x2_t) __builtin_neon_vshlq_n_v((int8x16_t)__s0, __p1, 51); \
picnic2_simulate_mul.c: ^
picnic2_simulate_mul.c: ./simd.h:98:41: note: expanded from macro 'mm128_xor'
picnic2_simulate_mul.c: #define mm128_xor(l, r) veorq_u64((l), (r))
picnic2_simulate_mul.c: ^
picnic2_simulate_mul.c: 2 errors generated.

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

Namespace violations

Implementation: optimizedct/c
Security model: unknown
Compiler: clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
io.o mzd_from_char_array T
io.o mzd_to_char_array T
lowmc.o lowmc_compute_aux_get_implementation T
lowmc.o lowmc_get_implementation T
lowmc_256_256_38.o lowmc_256_256_38 D
mzd_additional.o mzd_addmul_v_uint64_128 T
mzd_additional.o mzd_addmul_v_uint64_192 T
mzd_additional.o mzd_addmul_v_uint64_256 T
mzd_additional.o mzd_addmul_v_uint64_30_128 T
mzd_additional.o mzd_addmul_v_uint64_30_192 T
mzd_additional.o mzd_addmul_v_uint64_30_256 T
mzd_additional.o mzd_addmul_v_uint64_3_128 T
mzd_additional.o mzd_addmul_v_uint64_3_192 T
mzd_additional.o mzd_addmul_v_uint64_3_256 T
mzd_additional.o mzd_copy_uint64_128 T
mzd_additional.o mzd_copy_uint64_192 T
mzd_additional.o mzd_copy_uint64_256 T
mzd_additional.o mzd_local_free T
mzd_additional.o mzd_local_free_multiple T
mzd_additional.o mzd_local_init_ex T
mzd_additional.o mzd_local_init_multiple_ex T
mzd_additional.o mzd_mul_v_parity_uint64_128_3 T
mzd_additional.o mzd_mul_v_parity_uint64_128_30 T
mzd_additional.o mzd_mul_v_parity_uint64_192_3 T
mzd_additional.o mzd_mul_v_parity_uint64_192_30 T
mzd_additional.o mzd_mul_v_parity_uint64_256_3 T
mzd_additional.o mzd_mul_v_parity_uint64_256_30 T
mzd_additional.o mzd_mul_v_uint64_128 T
mzd_additional.o mzd_mul_v_uint64_128_576 T
mzd_additional.o mzd_mul_v_uint64_128_640 T
mzd_additional.o mzd_mul_v_uint64_192 T
mzd_additional.o mzd_mul_v_uint64_192_896 T
mzd_additional.o mzd_mul_v_uint64_192_960 T
mzd_additional.o mzd_mul_v_uint64_256 T
mzd_additional.o mzd_mul_v_uint64_256_1152 T
mzd_additional.o mzd_mul_v_uint64_256_1216 T
mzd_additional.o mzd_shuffle_128_3 T
mzd_additional.o mzd_shuffle_128_30 T
mzd_additional.o mzd_shuffle_192_3 T
mzd_additional.o mzd_shuffle_192_30 T
mzd_additional.o mzd_shuffle_256_3 T
mzd_additional.o mzd_shuffle_256_30 T
mzd_additional.o mzd_xor_uint64_1152 T
mzd_additional.o mzd_xor_uint64_1216 T
mzd_additional.o mzd_xor_uint64_128 T
mzd_additional.o mzd_xor_uint64_192 T
mzd_additional.o mzd_xor_uint64_256 T
mzd_additional.o mzd_xor_uint64_576 T
mzd_additional.o mzd_xor_uint64_640 T
mzd_additional.o mzd_xor_uint64_896 T
mzd_additional.o mzd_xor_uint64_960 T
picnic.o picnic_get_lowmc_block_size T
picnic.o picnic_get_param_name T
picnic.o picnic_get_private_key_size T
picnic.o picnic_get_public_key_size T
picnic.o picnic_keygen T
picnic.o picnic_read_private_key T
picnic.o picnic_read_public_key T
picnic.o picnic_sign T
picnic.o picnic_signature_size T
picnic.o picnic_sk_to_pk T
picnic.o picnic_validate_keypair T
picnic.o picnic_verify T
picnic.o picnic_write_private_key T
picnic.o picnic_write_public_key T
picnic2_impl.o impl_sign_picnic2 T
picnic2_impl.o impl_verify_picnic2 T
picnic2_impl.o sbox_layer_10_uint64_aux T
picnic2_impl.o sign_picnic2 T
picnic2_impl.o verify_picnic2 T
picnic2_simulate.o lowmc_simulate_online_get_implementation T
picnic2_simulate_mul.o copyShares T
picnic2_simulate_mul.o getBit T
picnic2_simulate_mul.o mpc_matrix_addmul_r_uint64_128 T
picnic2_simulate_mul.o mpc_matrix_addmul_r_uint64_192 T
picnic2_simulate_mul.o mpc_matrix_addmul_r_uint64_256 T
picnic2_simulate_mul.o mpc_matrix_mul_nl_part_uint64_128 T
picnic2_simulate_mul.o mpc_matrix_mul_nl_part_uint64_192 T
picnic2_simulate_mul.o mpc_matrix_mul_nl_part_uint64_256 T
picnic2_simulate_mul.o mpc_matrix_mul_uint64_128 T
picnic2_simulate_mul.o mpc_matrix_mul_uint64_192 T
picnic2_simulate_mul.o mpc_matrix_mul_uint64_256 T
picnic2_simulate_mul.o mpc_matrix_mul_z_uint64_128 T
picnic2_simulate_mul.o mpc_matrix_mul_z_uint64_192 T
picnic2_simulate_mul.o mpc_matrix_mul_z_uint64_256 T
picnic2_simulate_mul.o reconstructShares T
picnic2_simulate_mul.o setBit T
picnic2_simulate_mul.o tapesToParityOfWord T
picnic2_simulate_mul.o tapesToWord T
picnic2_simulate_mul.o transpose_64_64 T
picnic2_simulate_mul.o xor_word_array T
picnic2_tree.o addMerkleNodes T
picnic2_tree.o buildMerkleTree T
picnic2_tree.o createTree T
picnic2_tree.o freeTree T
picnic2_tree.o generateSeeds T
picnic2_tree.o getLeaf T
picnic2_tree.o getLeaves T
picnic2_tree.o openMerkleTree T
picnic2_tree.o openMerkleTreeSize T
picnic2_tree.o reconstructSeeds T
picnic2_tree.o revealSeeds T
picnic2_tree.o revealSeedsSize T
picnic2_tree.o verifyMerkleTree T
picnic2_types.o allocateCommitments2 T
picnic2_types.o allocateInputs T
picnic2_types.o allocateMsgs T
picnic2_types.o allocateMsgsVerify T
picnic2_types.o allocateProof2 T
picnic2_types.o allocateRandomTape T
picnic2_types.o allocateShares T
picnic2_types.o allocateSignature2 T
picnic2_types.o finalFreeRandomTape T
picnic2_types.o freeCommitments2 T
picnic2_types.o freeInputs T
picnic2_types.o freeMsgs T
picnic2_types.o freeProof2 T
picnic2_types.o freeRandomTape T
picnic2_types.o freeShares T
picnic2_types.o freeSignature2 T
picnic2_types.o partialFreeRandomTape T
picnic_instances.o HASH_PREFIX_0 R
picnic_instances.o HASH_PREFIX_1 R
picnic_instances.o HASH_PREFIX_2 R
picnic_instances.o HASH_PREFIX_3 R
picnic_instances.o HASH_PREFIX_4 R
picnic_instances.o HASH_PREFIX_5 R
picnic_instances.o picnic_instance_get T
randomness.o rand_bytes T

Number of similar (compiler,implementation) pairs: 5, namely:
CompilerImplementations
clang -mcpu=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE optimizedct/c
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE optimizedct/c
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE optimizedct/c
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv -fPIC -fPIE optimizedct/c
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE optimizedct/c

Namespace violations

Implementation: optimizedct/neon
Security model: unknown
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
io.o mzd_from_char_array T
io.o mzd_to_char_array T
lowmc.o lowmc_compute_aux_get_implementation T
lowmc.o lowmc_get_implementation T
lowmc_256_256_38.o lowmc_256_256_38 D
mzd_additional.o mzd_addmul_v_s128_128 T
mzd_additional.o mzd_addmul_v_s128_192 T
mzd_additional.o mzd_addmul_v_s128_256 T
mzd_additional.o mzd_addmul_v_s128_30_128 T
mzd_additional.o mzd_addmul_v_s128_30_192 T
mzd_additional.o mzd_addmul_v_s128_30_256 T
mzd_additional.o mzd_addmul_v_s128_3_128 T
mzd_additional.o mzd_addmul_v_s128_3_192 T
mzd_additional.o mzd_addmul_v_s128_3_256 T
mzd_additional.o mzd_addmul_v_uint64_128 T
mzd_additional.o mzd_addmul_v_uint64_192 T
mzd_additional.o mzd_addmul_v_uint64_256 T
mzd_additional.o mzd_addmul_v_uint64_30_128 T
mzd_additional.o mzd_addmul_v_uint64_30_192 T
mzd_additional.o mzd_addmul_v_uint64_30_256 T
mzd_additional.o mzd_addmul_v_uint64_3_128 T
mzd_additional.o mzd_addmul_v_uint64_3_192 T
mzd_additional.o mzd_addmul_v_uint64_3_256 T
mzd_additional.o mzd_copy_s128_128 T
mzd_additional.o mzd_copy_s128_256 T
mzd_additional.o mzd_copy_uint64_128 T
mzd_additional.o mzd_copy_uint64_192 T
mzd_additional.o mzd_copy_uint64_256 T
mzd_additional.o mzd_local_free T
mzd_additional.o mzd_local_free_multiple T
mzd_additional.o mzd_local_init_ex T
mzd_additional.o mzd_local_init_multiple_ex T
mzd_additional.o mzd_mul_v_parity_uint64_128_3 T
mzd_additional.o mzd_mul_v_parity_uint64_128_30 T
mzd_additional.o mzd_mul_v_parity_uint64_192_3 T
mzd_additional.o mzd_mul_v_parity_uint64_192_30 T
mzd_additional.o mzd_mul_v_parity_uint64_256_3 T
mzd_additional.o mzd_mul_v_parity_uint64_256_30 T
mzd_additional.o mzd_mul_v_s128_128 T
mzd_additional.o mzd_mul_v_s128_128_640 T
mzd_additional.o mzd_mul_v_s128_192 T
mzd_additional.o mzd_mul_v_s128_192_1024 T
mzd_additional.o mzd_mul_v_s128_192_896 T
mzd_additional.o mzd_mul_v_s128_256 T
mzd_additional.o mzd_mul_v_s128_256_1152 T
mzd_additional.o mzd_mul_v_s128_256_1280 T
mzd_additional.o mzd_mul_v_uint64_128 T
mzd_additional.o mzd_mul_v_uint64_128_576 T
mzd_additional.o mzd_mul_v_uint64_128_640 T
mzd_additional.o mzd_mul_v_uint64_192 T
mzd_additional.o mzd_mul_v_uint64_192_896 T
mzd_additional.o mzd_mul_v_uint64_192_960 T
mzd_additional.o mzd_mul_v_uint64_256 T
mzd_additional.o mzd_mul_v_uint64_256_1152 T
mzd_additional.o mzd_mul_v_uint64_256_1216 T
mzd_additional.o mzd_shuffle_128_3 T
mzd_additional.o mzd_shuffle_128_30 T
mzd_additional.o mzd_shuffle_192_3 T
mzd_additional.o mzd_shuffle_192_30 T
mzd_additional.o mzd_shuffle_256_3 T
mzd_additional.o mzd_shuffle_256_30 T
mzd_additional.o mzd_xor_s128_1024 T
mzd_additional.o mzd_xor_s128_1152 T
mzd_additional.o mzd_xor_s128_128 T
mzd_additional.o mzd_xor_s128_1280 T
mzd_additional.o mzd_xor_s128_256 T
mzd_additional.o mzd_xor_s128_640 T
mzd_additional.o mzd_xor_s128_896 T
mzd_additional.o mzd_xor_s128_blocks T
mzd_additional.o mzd_xor_uint64_1152 T
mzd_additional.o mzd_xor_uint64_1216 T
mzd_additional.o mzd_xor_uint64_128 T
mzd_additional.o mzd_xor_uint64_192 T
mzd_additional.o mzd_xor_uint64_256 T
mzd_additional.o mzd_xor_uint64_576 T
mzd_additional.o mzd_xor_uint64_640 T
mzd_additional.o mzd_xor_uint64_896 T
mzd_additional.o mzd_xor_uint64_960 T
picnic.o picnic_get_lowmc_block_size T
picnic.o picnic_get_param_name T
picnic.o picnic_get_private_key_size T
picnic.o picnic_get_public_key_size T
picnic.o picnic_keygen T
picnic.o picnic_read_private_key T
picnic.o picnic_read_public_key T
picnic.o picnic_sign T
picnic.o picnic_signature_size T
picnic.o picnic_sk_to_pk T
picnic.o picnic_validate_keypair T
picnic.o picnic_verify T
picnic.o picnic_write_private_key T
picnic.o picnic_write_public_key T
picnic2_impl.o impl_sign_picnic2 T
picnic2_impl.o impl_verify_picnic2 T
picnic2_impl.o sbox_layer_10_uint64_aux T
picnic2_impl.o sign_picnic2 T
picnic2_impl.o verify_picnic2 T
picnic2_simulate.o lowmc_simulate_online_get_implementation T
picnic2_simulate_mul.o copyShares T
picnic2_simulate_mul.o getBit T
picnic2_simulate_mul.o mpc_matrix_addmul_r_s128_128 T
picnic2_simulate_mul.o mpc_matrix_addmul_r_s128_192 T
picnic2_simulate_mul.o mpc_matrix_addmul_r_s128_256 T
picnic2_simulate_mul.o mpc_matrix_addmul_r_uint64_128 T
picnic2_simulate_mul.o mpc_matrix_addmul_r_uint64_192 T
picnic2_simulate_mul.o mpc_matrix_addmul_r_uint64_256 T
picnic2_simulate_mul.o mpc_matrix_mul_nl_part_s128_128 T
picnic2_simulate_mul.o mpc_matrix_mul_nl_part_s128_192 T
picnic2_simulate_mul.o mpc_matrix_mul_nl_part_s128_256 T
picnic2_simulate_mul.o mpc_matrix_mul_nl_part_uint64_128 T
picnic2_simulate_mul.o mpc_matrix_mul_nl_part_uint64_192 T
picnic2_simulate_mul.o mpc_matrix_mul_nl_part_uint64_256 T
picnic2_simulate_mul.o mpc_matrix_mul_s128_128 T
picnic2_simulate_mul.o mpc_matrix_mul_s128_192 T
picnic2_simulate_mul.o mpc_matrix_mul_s128_256 T
picnic2_simulate_mul.o mpc_matrix_mul_uint64_128 T
picnic2_simulate_mul.o mpc_matrix_mul_uint64_192 T
picnic2_simulate_mul.o mpc_matrix_mul_uint64_256 T
picnic2_simulate_mul.o mpc_matrix_mul_z_s128_128 T
picnic2_simulate_mul.o mpc_matrix_mul_z_s128_192 T
picnic2_simulate_mul.o mpc_matrix_mul_z_s128_256 T
picnic2_simulate_mul.o mpc_matrix_mul_z_uint64_128 T
picnic2_simulate_mul.o mpc_matrix_mul_z_uint64_192 T
picnic2_simulate_mul.o mpc_matrix_mul_z_uint64_256 T
picnic2_simulate_mul.o reconstructShares T
picnic2_simulate_mul.o setBit T
picnic2_simulate_mul.o tapesToParityOfWord T
picnic2_simulate_mul.o tapesToWord T
picnic2_simulate_mul.o transpose_64_64 T
picnic2_simulate_mul.o xor_word_array T
picnic2_tree.o addMerkleNodes T
picnic2_tree.o buildMerkleTree T
picnic2_tree.o createTree T
picnic2_tree.o freeTree T
picnic2_tree.o generateSeeds T
picnic2_tree.o getLeaf T
picnic2_tree.o getLeaves T
picnic2_tree.o openMerkleTree T
picnic2_tree.o openMerkleTreeSize T
picnic2_tree.o reconstructSeeds T
picnic2_tree.o revealSeeds T
picnic2_tree.o revealSeedsSize T
picnic2_tree.o verifyMerkleTree T
picnic2_types.o allocateCommitments2 T
picnic2_types.o allocateInputs T
picnic2_types.o allocateMsgs T
picnic2_types.o allocateMsgsVerify T
picnic2_types.o allocateProof2 T
picnic2_types.o allocateRandomTape T
picnic2_types.o allocateShares T
picnic2_types.o allocateSignature2 T
picnic2_types.o finalFreeRandomTape T
picnic2_types.o freeCommitments2 T
picnic2_types.o freeInputs T
picnic2_types.o freeMsgs T
picnic2_types.o freeProof2 T
picnic2_types.o freeRandomTape T
picnic2_types.o freeShares T
picnic2_types.o freeSignature2 T
picnic2_types.o partialFreeRandomTape T
picnic_instances.o HASH_PREFIX_0 R
picnic_instances.o HASH_PREFIX_1 R
picnic_instances.o HASH_PREFIX_2 R
picnic_instances.o HASH_PREFIX_3 R
picnic_instances.o HASH_PREFIX_4 R
picnic_instances.o HASH_PREFIX_5 R
picnic_instances.o picnic_instance_get T
randomness.o rand_bytes T

Number of similar (compiler,implementation) pairs: 4, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE optimizedct/neon
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE optimizedct/neon
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv -fPIC -fPIE optimizedct/neon
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE optimizedct/neon