diff options
author | Jeff Garzik <jeff@garzik.org> | 2011-02-17 01:22:55 -0500 |
---|---|---|
committer | Jeff Garzik <jgarzik@redhat.com> | 2011-02-17 01:22:55 -0500 |
commit | 1083e15c47539133a0e5075bb3d9f2b7741633f3 (patch) | |
tree | dc8a1fbf3098720fd31ba6f33ce36680267cb9e2 | |
parent | f0bdc0b6f9f19c603f5e34332fa0d4e5bb3ea973 (diff) |
Mark hash success as unlikely, using __builtin_expect() intrinsic
-rw-r--r-- | miner.h | 8 | ||||
-rw-r--r-- | sha256_4way.c | 2 | ||||
-rw-r--r-- | sha256_cryptopp.c | 4 | ||||
-rw-r--r-- | sha256_generic.c | 2 | ||||
-rw-r--r-- | sha256_via.c | 2 |
5 files changed, 13 insertions, 5 deletions
@@ -21,6 +21,14 @@ #include <byteswap.h> #endif +#if defined(__GNUC__) && (__GNUC__ > 2) && defined(__OPTIMIZE__) +#undef unlikely +#define unlikely(expr) (__builtin_expect((expr), 0)) +#else +#undef unlikely +#define unlikely(expr) (expr) +#endif + #if defined(__i386__) #define WANT_CRYPTOPP_ASM32 #endif diff --git a/sha256_4way.c b/sha256_4way.c index fe9642b..ea6634a 100644 --- a/sha256_4way.c +++ b/sha256_4way.c @@ -118,7 +118,7 @@ unsigned int ScanHash_4WaySSE2(const unsigned char *pmidstate, unsigned char *pd for (j = 0; j < NPAR; j++) { - if (thash[7][j] == 0) + if (unlikely(thash[7][j] == 0)) { int i; diff --git a/sha256_cryptopp.c b/sha256_cryptopp.c index eed3a52..a954a85 100644 --- a/sha256_cryptopp.c +++ b/sha256_cryptopp.c @@ -110,7 +110,7 @@ bool scanhash_cryptopp(const unsigned char *midstate, unsigned char *data, stat_ctr++; - if ((hash32[7] == 0) && fulltest(hash, target)) { + if (unlikely((hash32[7] == 0) && fulltest(hash, target))) { *hashes_done = stat_ctr; return true; } @@ -592,7 +592,7 @@ bool scanhash_asm32(const unsigned char *midstate, unsigned char *data, stat_ctr++; - if ((hash32[7] == 0) && fulltest(hash, target)) { + if (unlikely((hash32[7] == 0) && fulltest(hash, target))) { fulltest(hash, target); *hashes_done = stat_ctr; diff --git a/sha256_generic.c b/sha256_generic.c index e63b8a3..46cc0c2 100644 --- a/sha256_generic.c +++ b/sha256_generic.c @@ -256,7 +256,7 @@ bool scanhash_c(const unsigned char *midstate, unsigned char *data, stat_ctr++; - if ((hash32[7] == 0) && fulltest(hash, target)) { + if (unlikely((hash32[7] == 0) && fulltest(hash, target))) { *hashes_done = stat_ctr; return true; } diff --git a/sha256_via.c b/sha256_via.c index 39f86a5..186007e 100644 --- a/sha256_via.c +++ b/sha256_via.c @@ -57,7 +57,7 @@ bool scanhash_via(unsigned char *data_inout, stat_ctr++; - if ((hash32[7] == 0) && fulltest(tmp_hash, target)) { + if (unlikely((hash32[7] == 0) && fulltest(tmp_hash, target))) { /* swap nonce'd data back into original storage area; * TODO: only swap back the nonce, rather than all data */ |