Implementation notes: amd64, cel02, crypto_dh/curve25519

Computer: cel02
Architecture: amd64
CPU ID: GenuineIntel-00050657-bfebfbff
SUPERCOP version: 20201130
Operation: crypto_dh
Primitive: curve25519
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
798274161 0 047965 832 1608T:refgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
807114152 0 046365 824 1608T:refgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
841914143 0 046380 800 1576T:refclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
86099426527 0 0237721 1528 1696T:mpfqgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
87132621437 0 0229313 1528 1664T:mpfqgcc_-march=native_-mtune=native_-O2_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
89134418683 0 0226024 1520 1664T:mpfqgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
905222147 0 048306 808 1576T:refclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
911206161 0 051181 832 1640T:refgcc_-march=native_-mtune=native_-O3_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
923162164 0 047501 832 1608T:refgcc_-march=native_-mtune=native_-O_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130
94393218634 0 0224988 1512 1632T:mpfqclang_-mcpu=native_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
158118815935 0 0220152 1496 1632T:mpfqclang_-march=native_-Os_-fomit-frame-pointer_-fwrapv_-Qunused-arguments_-fPIC_-fPIE2020121120201130
16770908520 0 0214864 1520 1664T:mpfqgcc_-march=native_-mtune=native_-Os_-fomit-frame-pointer_-fwrapv_-fPIC_-fPIE2020121120201130

Compiler output

Implementation: T:mpfq
Security model: timingleaks
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
mpfq_p_25519.c: In file included from mpfq_p_25519.c:5:
mpfq_p_25519.c: ./x86_64/mpfq_p_25519.c:111:1: warning: control reaches end of non-void function [-Wreturn-type]
mpfq_p_25519.c: }
mpfq_p_25519.c: ^
mpfq_p_25519.c: 1 warning generated.
try.c: fatal error: error in backend: Cannot select: 0x55d49f9b0550: v4i64 = X86ISD::VTRUNC 0x55d49f9b0420
try.c: 0x55d49f9b0420: v16i32 = vselect 0x55d49f9acf30, 0x55d49f955770, 0x55d49f9b02f0
try.c: 0x55d49f9acf30: v4i1 = X86ISD::PCMPGTM 0x55d49f9a8870, 0x55d49f9a4400
try.c: 0x55d49f9a8870: v4i64 = X86ISD::VBROADCAST 0x55d49f950cb0
try.c: 0x55d49f950cb0: i64,ch = load<LD8[%lsr.iv6971]> 0x55d49f8b9920, 0x55d49f992640, undef:i64
try.c: 0x55d49f992640: i64,ch = CopyFromReg 0x55d49f8b9920, Register:i64 %vreg50
try.c: 0x55d49f9a4660: i64 = Register %vreg50
try.c: 0x55d49f952180: i64 = undef
try.c: 0x55d49f9a4400: v4i64,ch = CopyFromReg 0x55d49f8b9920, Register:v4i64 %vreg13
try.c: 0x55d49f9a90c0: v4i64 = Register %vreg13
try.c: 0x55d49f955770: v16i32 = X86ISD::VBROADCAST 0x55d49f9a8ad0
try.c: 0x55d49f9a8ad0: i32,ch = load<LD4[ConstantPool]> 0x55d49f8b9920, 0x55d49f950290, undef:i64
try.c: 0x55d49f950290: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55d49f993840: i64 = TargetConstantPool<i32 1> 0
try.c: 0x55d49f952180: i64 = undef
try.c: 0x55d49f9b02f0: 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: 0x55d49f9b01c0: i32 = Constant<0>
try.c: 0x55d49f9b01c0: i32 = Constant<0>
try.c: 0x55d49f9b01c0: i32 = Constant<0>
try.c: 0x55d49f9b01c0: i32 = Constant<0>
try.c: 0x55d49f9b01c0: i32 = Constant<0>
try.c: 0x55d49f9b01c0: i32 = Constant<0>
try.c: 0x55d49f9b01c0: i32 = Constant<0>
try.c: 0x55d49f9b01c0: i32 = Constant<0>
try.c: 0x55d49f9b01c0: 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 T:mpfq

Compiler output

Implementation: T:mpfq
Security model: timingleaks
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
mpfq_p_25519.c: In file included from mpfq_p_25519.c:5:
mpfq_p_25519.c: ./x86_64/mpfq_p_25519.c:111:1: warning: control reaches end of non-void function [-Wreturn-type]
mpfq_p_25519.c: }
mpfq_p_25519.c: ^
mpfq_p_25519.c: 1 warning generated.
try.c: fatal error: error in backend: Cannot select: 0x55be2f0fb4f0: v4i64 = X86ISD::VTRUNC 0x55be2f0fb3c0
try.c: 0x55be2f0fb3c0: v16i32 = vselect 0x55be2f10c220, 0x55be2f08aa50, 0x55be2f0fb290
try.c: 0x55be2f10c220: v4i1 = X86ISD::PCMPGTM 0x55be2f0f3eb0, 0x55be2f0efa40
try.c: 0x55be2f0f3eb0: v4i64 = X86ISD::VBROADCAST 0x55be2f08af10
try.c: 0x55be2f08af10: i64,ch = load<LD8[%lsr.iv6971]> 0x55be2efeda30, 0x55be2f08ff50, undef:i64
try.c: 0x55be2f08ff50: i64,ch = CopyFromReg 0x55be2efeda30, Register:i64 %vreg50
try.c: 0x55be2f0efca0: i64 = Register %vreg50
try.c: 0x55be2f06c1d0: i64 = undef
try.c: 0x55be2f0efa40: v4i64,ch = CopyFromReg 0x55be2efeda30, Register:v4i64 %vreg13
try.c: 0x55be2f0f4700: v4i64 = Register %vreg13
try.c: 0x55be2f08aa50: v16i32 = X86ISD::VBROADCAST 0x55be2f0f4110
try.c: 0x55be2f0f4110: i32,ch = load<LD4[ConstantPool]> 0x55be2efeda30, 0x55be2f08e520, undef:i64
try.c: 0x55be2f08e520: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55be2f06cb50: i64 = TargetConstantPool<i32 1> 0
try.c: 0x55be2f06c1d0: i64 = undef
try.c: 0x55be2f0fb290: 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: 0x55be2f0fb160: i32 = Constant<0>
try.c: 0x55be2f0fb160: i32 = Constant<0>
try.c: 0x55be2f0fb160: i32 = Constant<0>
try.c: 0x55be2f0fb160: i32 = Constant<0>
try.c: 0x55be2f0fb160: i32 = Constant<0>
try.c: 0x55be2f0fb160: i32 = Constant<0>
try.c: 0x55be2f0fb160: i32 = Constant<0>
try.c: 0x55be2f0fb160: i32 = Constant<0>
try.c: 0x55be2f0fb160: 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 T:mpfq

Compiler output

Implementation: T:mpfq
Security model: timingleaks
Compiler: clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
mpfq_p_25519.c: In file included from mpfq_p_25519.c:5:
mpfq_p_25519.c: ./x86_64/mpfq_p_25519.c:111:1: warning: control reaches end of non-void function [-Wreturn-type]
mpfq_p_25519.c: }
mpfq_p_25519.c: ^
mpfq_p_25519.c: 1 warning generated.
try.c: fatal error: error in backend: Cannot select: 0x564fde8c8e70: v4i64 = X86ISD::VTRUNC 0x564fde8c8d40
try.c: 0x564fde8c8d40: v16i32 = vselect 0x564fde8e1400, 0x564fde868790, 0x564fde8c8c10
try.c: 0x564fde8e1400: v4i1 = X86ISD::PCMPGTM 0x564fde8c3840, 0x564fde8bf3d0
try.c: 0x564fde8c3840: v4i64 = X86ISD::VBROADCAST 0x564fde87f7f0
try.c: 0x564fde87f7f0: i64,ch = load<LD8[%lsr.iv6971]> 0x564fde7d4970, 0x564fde8ba230, undef:i64
try.c: 0x564fde8ba230: i64,ch = CopyFromReg 0x564fde7d4970, Register:i64 %vreg50
try.c: 0x564fde8bf630: i64 = Register %vreg50
try.c: 0x564fde866e00: i64 = undef
try.c: 0x564fde8bf3d0: v4i64,ch = CopyFromReg 0x564fde7d4970, Register:v4i64 %vreg13
try.c: 0x564fde8c4090: v4i64 = Register %vreg13
try.c: 0x564fde868790: v16i32 = X86ISD::VBROADCAST 0x564fde8c3aa0
try.c: 0x564fde8c3aa0: i32,ch = load<LD4[ConstantPool]> 0x564fde7d4970, 0x564fde87edd0, undef:i64
try.c: 0x564fde87edd0: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x564fde8abad0: i64 = TargetConstantPool<i32 1> 0
try.c: 0x564fde866e00: i64 = undef
try.c: 0x564fde8c8c10: 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: 0x564fde8c8ae0: i32 = Constant<0>
try.c: 0x564fde8c8ae0: i32 = Constant<0>
try.c: 0x564fde8c8ae0: i32 = Constant<0>
try.c: 0x564fde8c8ae0: i32 = Constant<0>
try.c: 0x564fde8c8ae0: i32 = Constant<0>
try.c: 0x564fde8c8ae0: i32 = Constant<0>
try.c: 0x564fde8c8ae0: i32 = Constant<0>
try.c: 0x564fde8c8ae0: i32 = Constant<0>
try.c: 0x564fde8c8ae0: 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 T:mpfq

Compiler output

Implementation: T:mpfq
Security model: timingleaks
Compiler: clang -march=native -Os -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
mpfq_p_25519.c: In file included from mpfq_p_25519.c:5:
mpfq_p_25519.c: ./x86_64/mpfq_p_25519.c:111:1: warning: control reaches end of non-void function [-Wreturn-type]
mpfq_p_25519.c: }
mpfq_p_25519.c: ^
mpfq_p_25519.c: 1 warning generated.

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

Compiler output

Implementation: T:ref
Security model: timingleaks
Compiler: clang -march=native -O2 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: fatal error: error in backend: Cannot select: 0x55e86266b3a0: v4i64 = X86ISD::VTRUNC 0x55e86266b270
try.c: 0x55e86266b270: v16i32 = vselect 0x55e862672cc0, 0x55e8625f5940, 0x55e86266b140
try.c: 0x55e862672cc0: v4i1 = X86ISD::PCMPGTM 0x55e862651a30, 0x55e86264d5c0
try.c: 0x55e862651a30: v4i64 = X86ISD::VBROADCAST 0x55e8625f1ac0
try.c: 0x55e8625f1ac0: i64,ch = load<LD8[%lsr.iv6971]> 0x55e862562960, 0x55e86263dae0, undef:i64
try.c: 0x55e86263dae0: i64,ch = CopyFromReg 0x55e862562960, Register:i64 %vreg50
try.c: 0x55e86264d820: i64 = Register %vreg50
try.c: 0x55e8625f2f90: i64 = undef
try.c: 0x55e86264d5c0: v4i64,ch = CopyFromReg 0x55e862562960, Register:v4i64 %vreg13
try.c: 0x55e862652280: v4i64 = Register %vreg13
try.c: 0x55e8625f5940: v16i32 = X86ISD::VBROADCAST 0x55e862651c90
try.c: 0x55e862651c90: i32,ch = load<LD4[ConstantPool]> 0x55e862562960, 0x55e862618d10, undef:i64
try.c: 0x55e862618d10: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x55e8625f9ba0: i64 = TargetConstantPool<i32 1> 0
try.c: 0x55e8625f2f90: i64 = undef
try.c: 0x55e86266b140: 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: 0x55e86266b010: i32 = Constant<0>
try.c: 0x55e86266b010: i32 = Constant<0>
try.c: 0x55e86266b010: i32 = Constant<0>
try.c: 0x55e86266b010: i32 = Constant<0>
try.c: 0x55e86266b010: i32 = Constant<0>
try.c: 0x55e86266b010: i32 = Constant<0>
try.c: 0x55e86266b010: i32 = Constant<0>
try.c: 0x55e86266b010: i32 = Constant<0>
try.c: 0x55e86266b010: 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 T:ref

Compiler output

Implementation: T:ref
Security model: timingleaks
Compiler: clang -march=native -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: fatal error: error in backend: Cannot select: 0x5616670ae2f0: v4i64 = X86ISD::VTRUNC 0x5616670ae1c0
try.c: 0x5616670ae1c0: v16i32 = vselect 0x56166708cce0, 0x56166701dfe0, 0x5616670ae090
try.c: 0x56166708cce0: v4i1 = X86ISD::PCMPGTM 0x561667088cb0, 0x561667085850
try.c: 0x561667088cb0: v4i64 = X86ISD::VBROADCAST 0x56166701e4a0
try.c: 0x56166701e4a0: i64,ch = load<LD8[%lsr.iv6971]> 0x561666f82a30, 0x561667026ff0, undef:i64
try.c: 0x561667026ff0: i64,ch = CopyFromReg 0x561666f82a30, Register:i64 %vreg50
try.c: 0x561667085ab0: i64 = Register %vreg50
try.c: 0x561667017ba0: i64 = undef
try.c: 0x561667085850: v4i64,ch = CopyFromReg 0x561666f82a30, Register:v4i64 %vreg13
try.c: 0x561667089500: v4i64 = Register %vreg13
try.c: 0x56166701dfe0: v16i32 = X86ISD::VBROADCAST 0x561667088f10
try.c: 0x561667088f10: i32,ch = load<LD4[ConstantPool]> 0x561666f82a30, 0x5616670255c0, undef:i64
try.c: 0x5616670255c0: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x561667018520: i64 = TargetConstantPool<i32 1> 0
try.c: 0x561667017ba0: i64 = undef
try.c: 0x5616670ae090: 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: 0x5616670adf60: i32 = Constant<0>
try.c: 0x5616670adf60: i32 = Constant<0>
try.c: 0x5616670adf60: i32 = Constant<0>
try.c: 0x5616670adf60: i32 = Constant<0>
try.c: 0x5616670adf60: i32 = Constant<0>
try.c: 0x5616670adf60: i32 = Constant<0>
try.c: 0x5616670adf60: i32 = Constant<0>
try.c: 0x5616670adf60: i32 = Constant<0>
try.c: 0x5616670adf60: 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 T:ref

Compiler output

Implementation: T:ref
Security model: timingleaks
Compiler: clang -march=native -O -fomit-frame-pointer -fwrapv -Qunused-arguments -fPIC -fPIE
try.c: fatal error: error in backend: Cannot select: 0x5588b1251b80: v4i64 = X86ISD::VTRUNC 0x5588b1251a50
try.c: 0x5588b1251a50: v16i32 = vselect 0x5588b12698f0, 0x5588b11efd30, 0x5588b1251920
try.c: 0x5588b12698f0: v4i1 = X86ISD::PCMPGTM 0x5588b1248910, 0x5588b12444a0
try.c: 0x5588b1248910: v4i64 = X86ISD::VBROADCAST 0x5588b11ebb60
try.c: 0x5588b11ebb60: i64,ch = load<LD8[%lsr.iv6971]> 0x5588b1159920, 0x5588b1232010, undef:i64
try.c: 0x5588b1232010: i64,ch = CopyFromReg 0x5588b1159920, Register:i64 %vreg50
try.c: 0x5588b1244700: i64 = Register %vreg50
try.c: 0x5588b11ed030: i64 = undef
try.c: 0x5588b12444a0: v4i64,ch = CopyFromReg 0x5588b1159920, Register:v4i64 %vreg13
try.c: 0x5588b1249160: v4i64 = Register %vreg13
try.c: 0x5588b11efd30: v16i32 = X86ISD::VBROADCAST 0x5588b1248b70
try.c: 0x5588b1248b70: i32,ch = load<LD4[ConstantPool]> 0x5588b1159920, 0x5588b11f3920, undef:i64
try.c: 0x5588b11f3920: i64 = X86ISD::WrapperRIP TargetConstantPool:i64<i32 1> 0
try.c: 0x5588b1233210: i64 = TargetConstantPool<i32 1> 0
try.c: 0x5588b11ed030: i64 = undef
try.c: 0x5588b1251920: 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: 0x5588b12517f0: i32 = Constant<0>
try.c: 0x5588b12517f0: i32 = Constant<0>
try.c: 0x5588b12517f0: i32 = Constant<0>
try.c: 0x5588b12517f0: i32 = Constant<0>
try.c: 0x5588b12517f0: i32 = Constant<0>
try.c: 0x5588b12517f0: i32 = Constant<0>
try.c: 0x5588b12517f0: i32 = Constant<0>
try.c: 0x5588b12517f0: i32 = Constant<0>
try.c: 0x5588b12517f0: 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 T:ref