Browse Source

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

ckolivas 14 years ago
parent
commit
604b2f7645
1 changed files with 15 additions and 10 deletions
  1. 15 10
      diakgcn120208.cl

+ 15 - 10
diakgcn120208.cl

@@ -13,19 +13,24 @@
 	typedef uint u;
 	typedef uint u;
 #endif
 #endif
 
 
-#ifdef BFI_INT
+#ifdef BITALIGN
 	#pragma OPENCL EXTENSION cl_amd_media_ops : enable
 	#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
 	#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
 	#endif
+#else //BITALIGN
+	#define Ch(x, y, z) (z ^ (x & (y ^ z)))
+	#define Ma(x, y, z) ((x & z) | (y & (x | z)))
 #endif
 #endif
 
 
 #ifdef GOFFSET
 #ifdef GOFFSET