From bdab9379179ed61e2ed68eb96f565929c70da74a Mon Sep 17 00:00:00 2001
From: magnum <magnum>
Date: Fri, 25 Nov 2011 08:31:08 +0100
Subject: [PATCH 08/10] x86-ssei.h update to match x86-sse.h

---
 src/x86-ssei.h |   36 +++++++++++++++++++++++++++++++-----
 1 files changed, 31 insertions(+), 5 deletions(-)

diff --git a/src/x86-ssei.h b/src/x86-ssei.h
index 3400f7e..65c3127 100644
--- a/src/x86-ssei.h
+++ b/src/x86-ssei.h
@@ -8,7 +8,7 @@
  */
 
 /*
- * Architecture specific parameters for x86 with SSE2.
+ * Architecture specific parameters for x86 with SSE2 intrinsics.
  */
 
 #ifndef _JOHN_ARCH_H
@@ -41,8 +41,16 @@
 #ifndef CPU_FALLBACK
 #define CPU_FALLBACK			0
 #endif
-#if CPU_FALLBACK
+#if CPU_FALLBACK && !defined(CPU_FALLBACK_BINARY)
 #define CPU_FALLBACK_BINARY		"john-non-sse"
+#define CPU_FALLBACK_BINARY_DEFAULT
+#endif
+
+#ifdef __XOP__
+#define JOHN_XOP
+#endif
+#if defined(__AVX__) || defined(JOHN_XOP)
+#define JOHN_AVX
 #endif
 
 #define DES_ASM				1
@@ -54,13 +62,27 @@
 #define DES_COPY			1
 #define DES_STD_ALGORITHM_NAME		"48/64 4K MMX"
 #define DES_BS				1
-#if defined(__AVX__) && defined(__GNUC__)
+#if defined(JOHN_AVX) && defined(__GNUC__)
 /* Require gcc for AVX because DES_bs_all is aligned in a gcc-specific way */
+#define CPU_REQ_AVX
+#undef CPU_NAME
+#define CPU_NAME			"AVX"
+#ifdef CPU_FALLBACK_BINARY_DEFAULT
+#undef CPU_FALLBACK_BINARY
+#define CPU_FALLBACK_BINARY		"john-non-avx"
+#endif
 #define DES_BS_ASM			0
 #if 1
 #define DES_BS_VECTOR			8
-#if defined(__XOP__) && defined(__GNUC__)
+#if defined(JOHN_XOP) && defined(__GNUC__)
 /* Require gcc for 256-bit XOP because of __builtin_ia32_vpcmov_v8sf256() */
+#define CPU_REQ_XOP
+#undef CPU_NAME
+#define CPU_NAME			"XOP"
+#ifdef CPU_FALLBACK_BINARY_DEFAULT
+#undef CPU_FALLBACK_BINARY
+#define CPU_FALLBACK_BINARY		"john-non-xop"
+#endif
 #undef DES_BS
 #define DES_BS				3
 #define DES_BS_ALGORITHM_NAME		"256/256 BS XOP"
@@ -69,7 +91,7 @@
 #endif
 #else
 #define DES_BS_VECTOR			4
-#ifdef __XOP__
+#ifdef JOHN_XOP
 #undef DES_BS
 #define DES_BS				3
 #define DES_BS_ALGORITHM_NAME		"128/128 BS XOP"
@@ -102,7 +124,11 @@
 #endif
 #define DES_BS_EXPAND			1
 
+#ifdef _OPENMP
+#define MD5_ASM				0
+#else
 #define MD5_ASM				1
+#endif
 #define MD5_X2				0
 #define MD5_IMM				1
 
-- 
1.7.5.4

