Use device's preferred vector width, not the native one. Also, don't
authormagnum <john.magnum@hushmail.com>
Wed, 10 Feb 2016 22:42:04 +0000 (23:42 +0100)
committermagnum <john.magnum@hushmail.com>
Wed, 10 Feb 2016 22:43:08 +0000 (23:43 +0100)
assume vector width for 'long' is half of that for 'int'.

src/oclHashcat.c

index 3446559..4f28e52 100644 (file)
@@ -12478,11 +12478,11 @@ int main (int argc, char **argv)
         {
           if (tuningdb_entry->vector_width == -1)
           {
-            hc_clGetDeviceInfo (data.ocl, device_param->device, CL_DEVICE_NATIVE_VECTOR_WIDTH_INT, sizeof (vector_width), &vector_width, NULL);
-
             if (opti_type & OPTI_TYPE_USES_BITS_64)
             {
-              if (vector_width > 1) vector_width /= 2;
+              hc_clGetDeviceInfo (data.ocl, device_param->device, CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG, sizeof (vector_width), &vector_width, NULL);
+            } else {
+              hc_clGetDeviceInfo (data.ocl, device_param->device, CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT, sizeof (vector_width), &vector_width, NULL);
             }
           }
           else