#include <fcntl.h>
#include <unistd.h>
+/*** A hack for overriding radix-sorter configuration ***/
+
+#ifdef FORCE_RADIX_BITS
+#undef CONFIG_UCW_RADIX_SORTER_BITS
+#define CONFIG_UCW_RADIX_SORTER_BITS FORCE_RADIX_BITS
+#endif
+
/*** Time measurement ***/
static timestamp_t timer;
{
if (s5_j >= s5_N)
{
- if (s5_i >= s5_N-1)
+ if (!s5_N || s5_i >= s5_N-1)
return 0;
s5_j = 0;
s5_i++;
uns N = 3;
while ((u64)N*(N+2)*4 < size)
N = nextprime(N);
+ if (!size)
+ N = 0;
msg(L_INFO, ">>> Graph%s (N=%u)", (mode ? "" : " with custom presorting"), N);
s5_N = N;
s5_K = N/4*3;
goto usage;
break;
case 't':
- t = atol(optarg);
- if (t >= TMAX)
- goto usage;
+ {
+ char *w[32];
+ int f = sepsplit(optarg, ',', w, ARRAY_SIZE(w));
+ if (f < 0)
+ goto usage;
+ t = 0;
+ for (int i=0; i<f; i++)
+ {
+ int j = atol(w[i]);
+ if (j >= TMAX)
+ goto usage;
+ t |= 1 << j;
+ }
+ }
break;
case 'v':
sorter_trace++;
if (optind != argc)
goto usage;
- if (t != ~0U)
- run_test(t, size);
- else
- for (uns i=0; i<TMAX; i++)
+ for (uns i=0; i<TMAX; i++)
+ if (t & (1 << i))
run_test(i, size);
return 0;