Benchmark specific fixes
Summary:
benchmark is necessary to get the tests running
primarily replacing a few inline asm items with MSVC intrinsics and do not optimize tricks
also a fix for use of the gcc specific ## with __VAR_ARGS__
although that is primarily intended as a workaround for trailing commas, gcc apparently cuts off all items in the macro afterwards
this was being used for a clever/dirty trick to do one or none for a macro
replaced instead with a version that will work for all other compilers (might need to be expanded for more args, but for now it's working with all current usage)
@override-unit-failures
also fixed a use of max without specifying a template type that was making msvc barf - specifying it (as in the min case) made it compile cleanly
Test Plan: fbconfig -r folly && fbmake runtests
Reviewed By: andrei.alexandrescu@fb.com
FB internal diff:
D1313609