aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Garzik <jeff@garzik.org>2011-02-17 01:22:55 -0500
committerJeff Garzik <jgarzik@redhat.com>2011-02-17 01:22:55 -0500
commit1083e15c47539133a0e5075bb3d9f2b7741633f3 (patch)
treedc8a1fbf3098720fd31ba6f33ce36680267cb9e2
parentf0bdc0b6f9f19c603f5e34332fa0d4e5bb3ea973 (diff)
Mark hash success as unlikely, using __builtin_expect() intrinsic
-rw-r--r--miner.h8
-rw-r--r--sha256_4way.c2
-rw-r--r--sha256_cryptopp.c4
-rw-r--r--sha256_generic.c2
-rw-r--r--sha256_via.c2
5 files changed, 13 insertions, 5 deletions
diff --git a/miner.h b/miner.h
index b396380..1c73114 100644
--- a/miner.h
+++ b/miner.h
@@ -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
*/