--- src/src/wrapper.c.orig 2013-09-18 02:06:55.000000000 -0600
+++ src/src/wrapper.c 2019-02-06 12:38:46.480652890 -0700
@@ -249,6 +249,7 @@ void enumeration_wrapper(LUT_t LUT, int
if (verbose) printf("fes: Using SIMD code (sse2 instructions available)\n");
if (T == 2){
switch (d) {
+#if defined(HAVE_SSE2) && defined(HAVE_64_BITS)
case 2: exhaustive_sse2_deg_2_T_2_el_0(LUT, n, F, callback, callback_state, verbose); break;
case 3: exhaustive_sse2_deg_3_T_2_el_0(LUT, n, F, callback, callback_state, verbose); break;
case 4: exhaustive_sse2_deg_4_T_2_el_0(LUT, n, F, callback, callback_state, verbose); break;
@@ -257,12 +258,14 @@ void enumeration_wrapper(LUT_t LUT, int
case 7: exhaustive_sse2_deg_7_T_2_el_0(LUT, n, F, callback, callback_state, verbose); break;
case 8: exhaustive_sse2_deg_8_T_2_el_0(LUT, n, F, callback, callback_state, verbose); break;
case 9: exhaustive_sse2_deg_9_T_2_el_0(LUT, n, F, callback, callback_state, verbose); break;
+#endif
default:
assert(0);
}
}
else if (T == 3){
switch (d) {
+#if defined(HAVE_SSE2) && defined(HAVE_64_BITS)
case 2: exhaustive_sse2_deg_2_T_3_el_0(LUT, n, F, callback, callback_state, verbose); break;
case 3: exhaustive_sse2_deg_3_T_3_el_0(LUT, n, F, callback, callback_state, verbose); break;
case 4: exhaustive_sse2_deg_4_T_3_el_0(LUT, n, F, callback, callback_state, verbose); break;
@@ -271,12 +274,14 @@ void enumeration_wrapper(LUT_t LUT, int
case 7: exhaustive_sse2_deg_7_T_3_el_0(LUT, n, F, callback, callback_state, verbose); break;
case 8: exhaustive_sse2_deg_8_T_3_el_0(LUT, n, F, callback, callback_state, verbose); break;
case 9: exhaustive_sse2_deg_9_T_3_el_0(LUT, n, F, callback, callback_state, verbose); break;
+#endif
default:
assert(0);
}
}
else if (T == 4){
switch (d) {
+#if defined(HAVE_SSE2) && defined(HAVE_64_BITS)
case 2: exhaustive_sse2_deg_2_T_4_el_0(LUT, n, F, callback, callback_state, verbose); break;
case 3: exhaustive_sse2_deg_3_T_4_el_0(LUT, n, F, callback, callback_state, verbose); break;
case 4: exhaustive_sse2_deg_4_T_4_el_0(LUT, n, F, callback, callback_state, verbose); break;
@@ -285,6 +290,7 @@ void enumeration_wrapper(LUT_t LUT, int
case 7: exhaustive_sse2_deg_7_T_4_el_0(LUT, n, F, callback, callback_state, verbose); break;
case 8: exhaustive_sse2_deg_8_T_4_el_0(LUT, n, F, callback, callback_state, verbose); break;
case 9: exhaustive_sse2_deg_9_T_4_el_0(LUT, n, F, callback, callback_state, verbose); break;
+#endif
default:
assert(0);
}
--- src/test/simd.c.orig 2013-09-18 02:06:55.000000000 -0600
+++ src/test/simd.c 2019-02-06 14:18:36.051463809 -0700
@@ -31,7 +31,9 @@ int main(int argc, char **argv) {
int degree = 2;
int verbose = 0;
unsigned long random_seed = 1;
+#if defined(HAVE_SSE2) && defined(HAVE_64_BITS)
int T = 2;
+#endif
if (argc > 1) {
n = atoi(argv[1]);
@@ -41,7 +43,9 @@ int main(int argc, char **argv) {
}
if (argc > 5) { random_seed = atoi(argv[5]);}
+#if defined(HAVE_SSE2) && defined(HAVE_64_BITS)
if (argc > 6) T = atoi(argv[6]);
+#endif
if (n > 64 || n_eqs > 32) {
printf("This hack can only handle up to 64 vars and 32 equations\n");
@@ -67,6 +71,7 @@ int main(int argc, char **argv) {
uint64_t start = rdtsc();
switch (degree) {
+#if defined(HAVE_SSE2) && defined(HAVE_64_BITS)
case 2:
switch (T) {
case 2: exhaustive_sse2_deg_2_T_2_el_0(LUT, n, F, &report_solution, NULL, verbose); break;
@@ -115,6 +120,24 @@ int main(int argc, char **argv) {
case 3: exhaustive_sse2_deg_9_T_3_el_0(LUT, n, F, &report_solution, NULL, verbose); break;
case 4: exhaustive_sse2_deg_9_T_4_el_0(LUT, n, F, &report_solution, NULL, verbose); break;
} break;
+#else
+ case 2:
+ exhaustive_ia32_deg_2(LUT, n, F, &report_solution, NULL, verbose); break;
+ case 3 :
+ exhaustive_ia32_deg_3(LUT, n, F, &report_solution, NULL, verbose); break;
+ case 4 :
+ exhaustive_ia32_deg_4(LUT, n, F, &report_solution, NULL, verbose); break;
+ case 5 :
+ exhaustive_ia32_deg_5(LUT, n, F, &report_solution, NULL, verbose); break;
+ case 6 :
+ exhaustive_ia32_deg_6(LUT, n, F, &report_solution, NULL, verbose); break;
+ case 7 :
+ exhaustive_ia32_deg_7(LUT, n, F, &report_solution, NULL, verbose); break;
+ case 8 :
+ exhaustive_ia32_deg_8(LUT, n, F, &report_solution, NULL, verbose); break;
+ case 9 :
+ exhaustive_ia32_deg_9(LUT, n, F, &report_solution, NULL, verbose); break;
+#endif
default:
printf("enumeration in degree %d is not yet implemented\n", degree);
exit(0);
--- src/test/simd_el.c.orig 2013-09-18 02:06:55.000000000 -0600
+++ src/test/simd_el.c 2019-02-06 13:33:28.242736845 -0700
@@ -25,6 +25,7 @@ typedef void (*enumeration_t)(LUT_t, int
enumeration_t solvers[32] = {
+#if defined(HAVE_SSE2) && defined(HAVE_64_BITS)
exhaustive_sse2_deg_2_el_0,
exhaustive_sse2_deg_2_el_1,
exhaustive_sse2_deg_2_el_2,
@@ -56,7 +57,42 @@ enumeration_t solvers[32] = {
exhaustive_sse2_deg_2_el_28,
exhaustive_sse2_deg_2_el_29,
exhaustive_sse2_deg_2_el_30,
- exhaustive_sse2_deg_2_el_31};
+ exhaustive_sse2_deg_2_el_31
+#else
+ exhaustive_ia32_deg_2_el_0,
+ exhaustive_ia32_deg_2_el_1,
+ exhaustive_ia32_deg_2_el_2,
+ exhaustive_ia32_deg_2_el_3,
+ exhaustive_ia32_deg_2_el_4,
+ exhaustive_ia32_deg_2_el_5,
+ exhaustive_ia32_deg_2_el_6,
+ exhaustive_ia32_deg_2_el_7,
+ exhaustive_ia32_deg_2_el_8,
+ exhaustive_ia32_deg_2_el_9,
+ exhaustive_ia32_deg_2_el_10,
+ exhaustive_ia32_deg_2_el_11,
+ exhaustive_ia32_deg_2_el_12,
+ exhaustive_ia32_deg_2_el_13,
+ exhaustive_ia32_deg_2_el_14,
+ exhaustive_ia32_deg_2_el_15,
+ exhaustive_ia32_deg_2_el_16,
+ exhaustive_ia32_deg_2_el_17,
+ exhaustive_ia32_deg_2_el_18,
+ exhaustive_ia32_deg_2_el_19,
+ exhaustive_ia32_deg_2_el_20,
+ exhaustive_ia32_deg_2_el_21,
+ exhaustive_ia32_deg_2_el_22,
+ exhaustive_ia32_deg_2_el_23,
+ exhaustive_ia32_deg_2_el_24,
+ exhaustive_ia32_deg_2_el_25,
+ exhaustive_ia32_deg_2_el_26,
+ exhaustive_ia32_deg_2_el_27,
+ exhaustive_ia32_deg_2_el_28,
+ exhaustive_ia32_deg_2_el_29,
+ exhaustive_ia32_deg_2_el_30,
+ exhaustive_ia32_deg_2_el_31
+#endif
+};
int report_solution(void *state, uint64_t i) {