--- Log opened Mon May 13 00:00:11 2019 05:59 -!- midnightmagic [~midnightm@unaffiliated/midnightmagic] has quit [Ping timeout: 252 seconds] 06:18 -!- midnightmagic [~midnightm@unaffiliated/midnightmagic] has joined #secp256k1 09:51 < real_or_random> I was curious about compcert so I compiled secp with it 09:51 < real_or_random> on my machine: 09:51 < real_or_random> gcc -O3 (32 bit impls, no asm): ecdsa_verify: min 141us / avg 143us / max 144us 09:51 < real_or_random> ccomp -O (32 bit impls, no asm): ecdsa_verify: min 212us / avg 215us / max 219us 09:58 < gmaxwell> oh it compiles in compcert now? 09:59 < gmaxwell> years ago I tried, but compcert didn't support a 64-bit type at all (IIRC) so it couldn't work for our 32 bit code (which uses a 64-bit type to get access to the widening multiplies) 10:00 < gmaxwell> IIRC ccomp has some kind of interperter mode were it will tell you if the code depends on varrious implementation defined behavior, like the order of function call argument evaluations. Would be interesting to run that. 10:01 < sipa> real_or_random: that's surprisingly nonterrible 10:02 < gmaxwell> I mean, its still terrible. :P 10:03 < sipa> i guess 32 bit mode is already quite bad 10:04 < sipa> real_or_random: what's 64 bit + Sm 10:04 < sipa> real_or_random: what's 64 bit + asm on the same machine? 10:25 -!- roconnor [~roconnor@host-184-164-20-227.dyn.295.ca] has quit [Ping timeout: 245 seconds] 10:40 -!- jtimon [~quassel@181.61.134.37.dynamic.jazztel.es] has joined #secp256k1 10:56 -!- roconnor [~roconnor@208.98.222.12] has joined #secp256k1 10:58 < real_or_random> gmaxwell: the only thing it complains about is that there is exactly one function argument that passes a struct by value, and compcert doesn't support that. but that was easy to fix. or you can suppy a compiler option that uses (not proven) automatic rewriting 10:59 < real_or_random> sipa: it does not have a 128bit type, so I can't test the 64bit code 10:59 -!- roconnor_ [~roconnor@host-184-164-20-227.dyn.295.ca] has joined #secp256k1 11:01 -!- roconnor [~roconnor@208.98.222.12] has quit [Ping timeout: 258 seconds] 11:05 < sipa> real_or_random: i mean in gcc 11:06 < real_or_random> oh and I lied, it was -O2, the default 11:06 < real_or_random> lemme check 11:07 < real_or_random> gcc -O2 (64 bit, with asm): ecdsa_verify: min 82.2us / avg 82.8us / max 86.0us 11:50 -!- roconnor_ [~roconnor@host-184-164-20-227.dyn.295.ca] has quit [Ping timeout: 252 seconds] 12:57 -!- roconnor_ [~roconnor@host-184-164-20-227.dyn.295.ca] has joined #secp256k1 16:05 -!- afk11 [~afk11@unaffiliated/afk11] has quit [Ping timeout: 245 seconds] 16:06 -!- afk11 [afk11@gateway/vpn/privateinternetaccess/afk11] has joined #secp256k1 16:51 -!- afk11 [afk11@gateway/vpn/privateinternetaccess/afk11] has quit [Ping timeout: 268 seconds] 17:06 -!- afk11 [~afk11@unaffiliated/afk11] has joined #secp256k1 17:21 < gmaxwell> real_or_random: where are we passing a struct by value? is there a reason it can't be changed to a pointer? 19:30 -!- jtimon [~quassel@181.61.134.37.dynamic.jazztel.es] has quit [Ping timeout: 245 seconds] 23:04 -!- jtimon [~quassel@181.61.134.37.dynamic.jazztel.es] has joined #secp256k1 23:45 -!- jtimon [~quassel@181.61.134.37.dynamic.jazztel.es] has quit [Ping timeout: 244 seconds] --- Log closed Tue May 14 00:00:12 2019