Commit 604b2f764568de11497b5ac546248ee6a1b7ad05

ckolivas 2012-02-10T10:47:39

Set cl_amd_media_ops with the BITALIGN flag and allow non-bitselect devices to build.

diff --git a/diakgcn120208.cl b/diakgcn120208.cl
index 5038838..be84cb4 100644
--- a/diakgcn120208.cl
+++ b/diakgcn120208.cl
@@ -13,19 +13,24 @@
 	typedef uint u;
 #endif
 
-#ifdef BFI_INT
+#ifdef BITALIGN
 	#pragma OPENCL EXTENSION cl_amd_media_ops : enable
-	#define Ch(x, y, z) amd_bytealign(x, y, z)
-	#define Ma(x, y, z) amd_bytealign(z ^ x, y, x)
-#else
-	#define Ch(x, y, z) bitselect(z, y, x)
-	#if defined(VECTORS2) || defined(VECTORS4) || defined(VECTORS8)
-		// GCN - VEC2 or VEC4
-		#define Ma(z, x, y) bitselect(z, y, z ^ x)
+	#ifdef BFI_INT
+		#define Ch(x, y, z) amd_bytealign(x, y, z)
+		#define Ma(x, y, z) amd_bytealign(z ^ x, y, x)
 	#else
-		// GCN - no VEC
-		#define Ma(z, x, y) Ch(z ^ x, y, x)
+		#define Ch(x, y, z) bitselect(z, y, x)
+		#if defined(VECTORS2) || defined(VECTORS4) || defined(VECTORS8)
+			// GCN - VEC2 or VEC4
+			#define Ma(z, x, y) bitselect(z, y, z ^ x)
+		#else
+			// GCN - no VEC
+			#define Ma(z, x, y) Ch(z ^ x, y, x)
+		#endif
 	#endif
+#else //BITALIGN
+	#define Ch(x, y, z) (z ^ (x & (y ^ z)))
+	#define Ma(x, y, z) ((x & z) | (y & (x | z)))
 #endif
 
 #ifdef GOFFSET