aboutsummaryrefslogtreecommitdiff
path: root/cpu-miner.c
diff options
context:
space:
mode:
authorJeff Garzik <jeff@garzik.org>2010-11-27 00:46:59 -0500
committerJeff Garzik <jgarzik@redhat.com>2010-11-27 00:46:59 -0500
commit86eb37d631e704768cc4f9684b79fc00e67b384b (patch)
tree3b9a8abf23184cf80fe9b5fb634ee60746ebfe7f /cpu-miner.c
parent500759cea12cc08abf5af2bdb1bab1eff72d8542 (diff)
Improve and modularize compile-time CPU detection.
Ideally, we should move this to autoconf.
Diffstat (limited to 'cpu-miner.c')
-rw-r--r--cpu-miner.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/cpu-miner.c b/cpu-miner.c
index abe2a21..f7dc37b 100644
--- a/cpu-miner.c
+++ b/cpu-miner.c
@@ -37,8 +37,8 @@ enum {
};
enum sha256_algos {
- ALGO_C,
- ALGO_4WAY
+ ALGO_C, /* plain C */
+ ALGO_4WAY, /* parallel SSE2 */
};
static bool opt_debug;
@@ -63,7 +63,7 @@ static struct option_help options_help[] = {
{ "algo XXX",
"(-a XXX) Specify sha256 implementation:\n"
"\tc\t\tLinux kernel sha256, implemented in C (default)"
-#ifdef __SSE2__
+#ifdef WANT_SSE2_4WAY
"\n\t4way\t\ttcatm's 4-way SSE2 implementation (EXPERIMENTAL)"
#endif
},
@@ -301,18 +301,23 @@ static void *miner_thread(void *thr_id_int)
gettimeofday(&tv_start, NULL);
/* scan nonces for a proof-of-work hash */
- if (opt_algo == ALGO_C)
+ switch (opt_algo) {
+ case ALGO_C:
rc = scanhash(work.midstate, work.data + 64,
work.hash1, work.hash, &hashes_done);
-#ifdef __SSE2__
- else {
+ break;
+
+#ifdef WANT_SSE2_4WAY
+ case ALGO_4WAY: {
unsigned int rc4 =
ScanHash_4WaySSE2(work.midstate, work.data + 64,
work.hash1, work.hash,
&hashes_done);
rc = (rc4 == -1) ? false : true;
- }
+ }
+ break;
#endif
+ }
hashmeter(thr_id, &tv_start, hashes_done);
@@ -347,7 +352,7 @@ static void parse_arg (int key, char *arg)
case 'a':
if (!strcmp(arg, "c"))
opt_algo = ALGO_C;
-#ifdef __SSE2__
+#ifdef WANT_SSE2_4WAY
else if (!strcmp(arg, "4way"))
opt_algo = ALGO_4WAY;
#endif