Skip to content

Commit

Permalink
Utilize _BitScanReverse in Visual Studio
Browse files Browse the repository at this point in the history
_BitScanReverse is documented here:
https://msdn.microsoft.com/en-us/library/fbxyd7zd.aspx
This improves speed of a VS2015 x64 build by more than 10%.
  • Loading branch information
JayXon committed May 21, 2018
1 parent ae43a8b commit 5ed7728
Showing 1 changed file with 9 additions and 0 deletions.
9 changes: 9 additions & 0 deletions src/zopfli/symbols.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,15 @@ Utilities for using the lz77 symbols of the deflate spec.
/* __builtin_clz available beginning with GCC 3.4 */
#elif __GNUC__ * 100 + __GNUC_MINOR__ >= 304
# define ZOPFLI_HAS_BUILTIN_CLZ
/* _BitScanReverse available beginning with Visual Studio 2005 */
#elif _MSC_VER >= 1400
# include <intrin.h>
# define ZOPFLI_HAS_BUILTIN_CLZ
static int __inline __builtin_clz(unsigned int x) {
unsigned long r;
_BitScanReverse(&r, x);
return 31 ^ r;
}
#endif

/* Gets the amount of extra bits for the given dist, cfr. the DEFLATE spec. */
Expand Down

0 comments on commit 5ed7728

Please sign in to comment.