Implementation notes: amd64, whosthere, crypto_dh/hector

Computer: whosthere
Microarchitecture: amd64; KabyLake (806e9)
Architecture: amd64
CPU ID: GenuineIntel-000806e9-bfebfbff
SUPERCOP version: 20221122
Operation: crypto_dh
Primitive: hector

Compiler output

Implementation: T:ref
Security model: timingleaks
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
common.c: In file included from common.c:7:
common.c: In file included from ./common.h:12:
common.c: In file included from ./divclass.h:10:
common.c: In file included from ./field.h:7:
common.c: In file included from ./mpfq_2_113.h:5:
common.c: ./x86_64/mpfq_2_113.h:740:14: error: use of unknown builtin '__builtin_ia32_pslldqi128' [-Wimplicit-function-declaration]
common.c: r.s = t0 ^ SHLD(t1, 64);
common.c: ^
common.c: ./x86_64/mpfq_2_113.h:597:25: note: expanded from macro 'SHLD'
common.c: #define SHLD(x,r) (v2di)__builtin_ia32_pslldqi128 ((gcc43bugfix) (x),(r))
common.c: ^
common.c: ./x86_64/mpfq_2_113.h:740:14: error: invalid conversion between vector type 'v2di' (vector of 2 'uint64_t' values) and integer type 'int' of different size
common.c: r.s = t0 ^ SHLD(t1, 64);
common.c: ^~~~~~~~~~~~
common.c: ./x86_64/mpfq_2_113.h:597:19: note: expanded from macro 'SHLD'
common.c: #define SHLD(x,r) (v2di)__builtin_ia32_pslldqi128 ((gcc43bugfix) (x),(r))
common.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
common.c: ./x86_64/mpfq_2_113.h:747:14: error: use of unknown builtin '__builtin_ia32_psrldqi128' [-Wimplicit-function-declaration]
common.c: r.s = t2 ^ SHRD(t1, 64);
common.c: ^
common.c: ./x86_64/mpfq_2_113.h:598:25: note: expanded from macro 'SHRD'
common.c: #define SHRD(x,r) (v2di)__builtin_ia32_psrldqi128 ((gcc43bugfix) (x),(r))
common.c: ^
common.c: ./x86_64/mpfq_2_113.h:747:14: error: invalid conversion between vector type 'v2di' (vector of 2 'uint64_t' values) and integer type 'int' of different size
common.c: r.s = t2 ^ SHRD(t1, 64);
common.c: ...

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

Compiler output

Implementation: T:ref
Security model: timingleaks
Compiler: gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE
divclass.c: In file included from ./mpfq_2_113.h:5,
divclass.c: from ./field.h:7,
divclass.c: from divclass.h:10,
divclass.c: from divclass.c:7:
divclass.c: ./x86_64/mpfq_2_113.h:17:18: warning: 'mpfq_2_113_set' is static but used in inline function 'divclass_negaff' which is not static
divclass.c: 17 | #define MPFQ_(X) mpfq_2_113_ ## X
divclass.c: | ^~~~~~~~~~~
divclass.c: ./mpfq_name_K.h:33:21: note: in expansion of macro 'MPFQ_'
divclass.c: 33 | #define Kset(a0,a1) MPFQ_(set) (K,a0,a1)
divclass.c: | ^~~~~
divclass.c: divclass.c:410:2: note: in expansion of macro 'Kset'
divclass.c: 410 | Kset(rop->m_V0,op->m_V0);
divclass.c: | ^~~~
divclass.c: ./x86_64/mpfq_2_113.h:17:18: warning: 'mpfq_2_113_set' is static but used in inline function 'divclass_negaff' which is not static
divclass.c: 17 | #define MPFQ_(X) mpfq_2_113_ ## X
divclass.c: | ^~~~~~~~~~~
divclass.c: ./mpfq_name_K.h:33:21: note: in expansion of macro 'MPFQ_'
divclass.c: 33 | #define Kset(a0,a1) MPFQ_(set) (K,a0,a1)
divclass.c: | ^~~~~
divclass.c: divclass.c:409:2: note: in expansion of macro 'Kset'
divclass.c: 409 | Kset(rop->m_V1,op->m_V1);
divclass.c: | ^~~~
divclass.c: ./x86_64/mpfq_2_113.h:17:18: warning: 'mpfq_2_113_set' is static but used in inline function 'divclass_negaff' which is not static
divclass.c: 17 | #define MPFQ_(X) mpfq_2_113_ ## X
divclass.c: | ^~~~~~~~~~~
divclass.c: ...
try.c: /usr/bin/ld: libcrypto_dh_hector.a(config.o):(.bss+0x2b0): multiple definition of `p'; libcrypto_dh_hector.a(common.o):(.bss+0x2b0): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(config.o):(.bss+0x2a0): multiple definition of `size_of_p'; libcrypto_dh_hector.a(common.o):(.bss+0x2a0): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(config.o):(.bss+0x0): multiple definition of `generator_multiples2'; libcrypto_dh_hector.a(common.o):(.bss+0x0): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(config.o):(.bss+0x8): multiple definition of `generator_multiples1'; libcrypto_dh_hector.a(common.o):(.bss+0x8): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(config.o):(.bss+0x20): multiple definition of `dummyelts'; libcrypto_dh_hector.a(common.o):(.bss+0x20): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(config.o):(.bss+0x2c0): multiple definition of `f0'; libcrypto_dh_hector.a(common.o):(.bss+0x2c0): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(config.o):(.bss+0x2d0): multiple definition of `f3'; libcrypto_dh_hector.a(common.o):(.bss+0x2d0): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(config.o):(.bss+0x2e0): multiple definition of `K'; libcrypto_dh_hector.a(common.o):(.bss+0x2e0): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(curve.o):(.bss+0x2b0): multiple definition of `f3'; libcrypto_dh_hector.a(common.o):(.bss+0x2d0): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(curve.o):(.bss+0x2a0): multiple definition of `f0'; libcrypto_dh_hector.a(common.o):(.bss+0x2c0): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(curve.o):(.bss+0x0): multiple definition of `dummyelts'; libcrypto_dh_hector.a(common.o):(.bss+0x20): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(curve.o):(.bss+0x280): multiple definition of `size_of_p'; libcrypto_dh_hector.a(common.o):(.bss+0x2a0): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(curve.o):(.bss+0x290): multiple definition of `p'; libcrypto_dh_hector.a(common.o):(.bss+0x2b0): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(curve.o):(.bss+0x2c0): multiple definition of `K'; libcrypto_dh_hector.a(common.o):(.bss+0x2e0): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(divclass.o):(.bss+0x0): multiple definition of `dummyelts'; libcrypto_dh_hector.a(common.o):(.bss+0x20): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(divclass.o):(.bss+0x2b0): multiple definition of `f3'; libcrypto_dh_hector.a(common.o):(.bss+0x2d0): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(divclass.o):(.bss+0x2a0): multiple definition of `f0'; libcrypto_dh_hector.a(common.o):(.bss+0x2c0): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(divclass.o):(.bss+0x2c0): multiple definition of `K'; libcrypto_dh_hector.a(common.o):(.bss+0x2e0): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(divclass.o):(.bss+0x280): multiple definition of `size_of_p'; libcrypto_dh_hector.a(common.o):(.bss+0x2a0): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(divclass.o):(.bss+0x290): multiple definition of `p'; libcrypto_dh_hector.a(common.o):(.bss+0x2b0): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(generator.o):(.bss+0x8): multiple definition of `generator_multiples1'; libcrypto_dh_hector.a(common.o):(.bss+0x8): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(generator.o):(.bss+0x0): multiple definition of `generator_multiples2'; libcrypto_dh_hector.a(common.o):(.bss+0x0): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(generator.o):(.bss+0x20): multiple definition of `dummyelts'; libcrypto_dh_hector.a(common.o):(.bss+0x20): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(generator.o):(.bss+0x2a0): multiple definition of `size_of_p'; libcrypto_dh_hector.a(common.o):(.bss+0x2a0): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(generator.o):(.bss+0x2b0): multiple definition of `p'; libcrypto_dh_hector.a(common.o):(.bss+0x2b0): first defined here
try.c: ...

Number of similar (compiler,implementation) pairs: 3, namely:
CompilerImplementations
gcc -march=native -mtune=native -O2 -fomit-frame-pointer -fwrapv -fPIC -fPIE T:ref
gcc -march=native -mtune=native -O3 -fomit-frame-pointer -fwrapv -fPIC -fPIE T:ref
gcc -march=native -mtune=native -Os -fomit-frame-pointer -fwrapv -fPIC -fPIE T:ref

Compiler output

Implementation: T:ref
Security model: timingleaks
Compiler: gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv -fPIC -fPIE
divclass.c: In file included from ./mpfq_2_113.h:5,
divclass.c: from ./field.h:7,
divclass.c: from divclass.h:10,
divclass.c: from divclass.c:7:
divclass.c: ./x86_64/mpfq_2_113.h:17:18: warning: 'mpfq_2_113_set' is static but used in inline function 'divclass_negaff' which is not static
divclass.c: 17 | #define MPFQ_(X) mpfq_2_113_ ## X
divclass.c: | ^~~~~~~~~~~
divclass.c: ./mpfq_name_K.h:33:21: note: in expansion of macro 'MPFQ_'
divclass.c: 33 | #define Kset(a0,a1) MPFQ_(set) (K,a0,a1)
divclass.c: | ^~~~~
divclass.c: divclass.c:410:2: note: in expansion of macro 'Kset'
divclass.c: 410 | Kset(rop->m_V0,op->m_V0);
divclass.c: | ^~~~
divclass.c: ./x86_64/mpfq_2_113.h:17:18: warning: 'mpfq_2_113_set' is static but used in inline function 'divclass_negaff' which is not static
divclass.c: 17 | #define MPFQ_(X) mpfq_2_113_ ## X
divclass.c: | ^~~~~~~~~~~
divclass.c: ./mpfq_name_K.h:33:21: note: in expansion of macro 'MPFQ_'
divclass.c: 33 | #define Kset(a0,a1) MPFQ_(set) (K,a0,a1)
divclass.c: | ^~~~~
divclass.c: divclass.c:409:2: note: in expansion of macro 'Kset'
divclass.c: 409 | Kset(rop->m_V1,op->m_V1);
divclass.c: | ^~~~
divclass.c: ./x86_64/mpfq_2_113.h:17:18: warning: 'mpfq_2_113_set' is static but used in inline function 'divclass_negaff' which is not static
divclass.c: 17 | #define MPFQ_(X) mpfq_2_113_ ## X
divclass.c: | ^~~~~~~~~~~
divclass.c: ...
try.c: /usr/bin/ld: libcrypto_dh_hector.a(config.o):(.bss+0x2b0): multiple definition of `p'; libcrypto_dh_hector.a(common.o):(.bss+0x2b0): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(config.o):(.bss+0x2a0): multiple definition of `size_of_p'; libcrypto_dh_hector.a(common.o):(.bss+0x2a0): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(config.o):(.bss+0x0): multiple definition of `generator_multiples2'; libcrypto_dh_hector.a(common.o):(.bss+0x0): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(config.o):(.bss+0x8): multiple definition of `generator_multiples1'; libcrypto_dh_hector.a(common.o):(.bss+0x8): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(config.o):(.bss+0x20): multiple definition of `dummyelts'; libcrypto_dh_hector.a(common.o):(.bss+0x20): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(config.o):(.bss+0x2c0): multiple definition of `f0'; libcrypto_dh_hector.a(common.o):(.bss+0x2c0): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(config.o):(.bss+0x2d0): multiple definition of `f3'; libcrypto_dh_hector.a(common.o):(.bss+0x2d0): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(config.o):(.bss+0x2e0): multiple definition of `K'; libcrypto_dh_hector.a(common.o):(.bss+0x2e0): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(curve.o):(.bss+0x2b0): multiple definition of `f3'; libcrypto_dh_hector.a(common.o):(.bss+0x2d0): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(curve.o):(.bss+0x2a0): multiple definition of `f0'; libcrypto_dh_hector.a(common.o):(.bss+0x2c0): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(curve.o):(.bss+0x0): multiple definition of `dummyelts'; libcrypto_dh_hector.a(common.o):(.bss+0x20): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(curve.o):(.bss+0x280): multiple definition of `size_of_p'; libcrypto_dh_hector.a(common.o):(.bss+0x2a0): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(curve.o):(.bss+0x290): multiple definition of `p'; libcrypto_dh_hector.a(common.o):(.bss+0x2b0): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(curve.o):(.bss+0x2c0): multiple definition of `K'; libcrypto_dh_hector.a(common.o):(.bss+0x2e0): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(divclass.o):(.bss+0x0): multiple definition of `dummyelts'; libcrypto_dh_hector.a(common.o):(.bss+0x20): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(divclass.o):(.bss+0x2c0): multiple definition of `K'; libcrypto_dh_hector.a(common.o):(.bss+0x2e0): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(divclass.o):(.bss+0x2b0): multiple definition of `f3'; libcrypto_dh_hector.a(common.o):(.bss+0x2d0): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(divclass.o):(.bss+0x2a0): multiple definition of `f0'; libcrypto_dh_hector.a(common.o):(.bss+0x2c0): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(divclass.o):(.bss+0x280): multiple definition of `size_of_p'; libcrypto_dh_hector.a(common.o):(.bss+0x2a0): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(divclass.o):(.bss+0x290): multiple definition of `p'; libcrypto_dh_hector.a(common.o):(.bss+0x2b0): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(generator.o):(.bss+0x8): multiple definition of `generator_multiples1'; libcrypto_dh_hector.a(common.o):(.bss+0x8): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(generator.o):(.bss+0x0): multiple definition of `generator_multiples2'; libcrypto_dh_hector.a(common.o):(.bss+0x0): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(generator.o):(.bss+0x2e0): multiple definition of `K'; libcrypto_dh_hector.a(common.o):(.bss+0x2e0): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(generator.o):(.bss+0x20): multiple definition of `dummyelts'; libcrypto_dh_hector.a(common.o):(.bss+0x20): first defined here
try.c: /usr/bin/ld: libcrypto_dh_hector.a(generator.o):(.bss+0x2a0): multiple definition of `size_of_p'; libcrypto_dh_hector.a(common.o):(.bss+0x2a0): first defined here
try.c: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
gcc -march=native -mtune=native -O -fomit-frame-pointer -fwrapv -fPIC -fPIE T:ref