Workaround for either pocl or llvm fails and produces invalid optimized code
authorjsteube <jens.steube@gmail.com>
Wed, 6 Jan 2016 10:48:18 +0000 (11:48 +0100)
committerjsteube <jens.steube@gmail.com>
Wed, 6 Jan 2016 10:48:18 +0000 (11:48 +0100)
include/kernel_functions.c

index b5cad0f..31835da 100644 (file)
 #define SHA1_F0(x,y,z)  ((z) ^ ((x) & ((y) ^ (z))))
 #define SHA1_F1(x,y,z)  ((x) ^ (y) ^ (z))
 #define SHA1_F2(x,y,z)  (((x) & (y)) | ((z) & ((x) ^ (y))))
-#define SHA1_F0o(x,y,z) (SHA1_F0 ((x), (y), (z)))
-#define SHA1_F2o(x,y,z) (SHA1_F2 ((x), (y), (z)))
+// either pocl or llvm fails and produces invalid optimized code
+//#define SHA1_F0o(x,y,z) (SHA1_F0 ((x), (y), (z)))
+//#define SHA1_F2o(x,y,z) (SHA1_F2 ((x), (y), (z)))
+// luckily we can use bitselect as a workaround
+#define SHA1_F0o(x,y,z) (bitselect ((z), (y), (x)))
+#define SHA1_F2o(x,y,z) (bitselect ((x), (y), ((x) ^ (z))))
 #endif
 
 #define SHA1_STEP(f,a,b,c,d,e,x)    \