Increase PBKDF2-HMAC-SHA512 cracking performance
[hashcat.git] / OpenCL / inc_vendor.cl
1 /**
2  * Author......: Jens Steube <jens.steube@gmail.com>
3  * License.....: MIT
4  */
5
6 //fails on intel opencl sdk
7 //#pragma OPENCL EXTENSION cl_khr_int64_base_atomics     : enable
8 //#pragma OPENCL EXTENSION cl_khr_byte_addressable_store : enable
9
10 /**
11  * device type
12  */
13
14 #define DEVICE_TYPE_CPU   2
15 #define DEVICE_TYPE_GPU   4
16 #define DEVICE_TYPE_ACCEL 8
17
18 #if   DEVICE_TYPE == DEVICE_TYPE_CPU
19 #define IS_CPU
20 #elif DEVICE_TYPE == DEVICE_TYPE_GPU
21 #define IS_GPU
22 #elif DEVICE_TYPE == DEVICE_TYPE_ACCEL
23 #define IS_ACCEL
24 #endif
25
26 /**
27  * vendor specific
28  */
29
30 #if   VENDOR_ID == (1 << 0)
31 #define IS_AMD
32 //#define IS_GENERIC
33 #elif VENDOR_ID == (1 << 1)
34 #define IS_APPLE
35 #define IS_GENERIC
36 #elif VENDOR_ID == (1 << 2)
37 #define IS_INTEL_BEIGNET
38 #define IS_GENERIC
39 #elif VENDOR_ID == (1 << 3)
40 #define IS_INTEL_SDK
41 #define IS_GENERIC
42 #elif VENDOR_ID == (1 << 4)
43 #define IS_MESA
44 #define IS_GENERIC
45 #elif VENDOR_ID == (1 << 5)
46 #define IS_NV
47 //#define IS_GENERIC
48 #elif VENDOR_ID == (1 << 6)
49 #define IS_POCL
50 #define IS_GENERIC
51 #else
52 #define IS_GENERIC
53 #endif
54
55 /**
56  * AMD specific
57  */
58
59 #ifdef IS_AMD
60 #pragma OPENCL EXTENSION cl_amd_media_ops  : enable
61 #pragma OPENCL EXTENSION cl_amd_media_ops2 : enable
62 #endif
63
64 /**
65  * Unrolling is generally enabled, for all device types and hash modes
66  * There's a few exception when it's better not to unroll
67  */
68
69 // Some algorithms run into too much register pressure due to loop unrolling
70
71 #ifdef IS_NV
72 #ifdef IS_GPU
73
74 #if KERN_TYPE == 1500
75 #undef _unroll
76 #endif
77 #if KERN_TYPE == 1800
78 #undef _unroll
79 #endif
80 #if KERN_TYPE == 3000
81 #undef _unroll
82 #endif
83 #if KERN_TYPE == 6221
84 #undef _unroll
85 #endif
86 #if KERN_TYPE == 6222
87 #undef _unroll
88 #endif
89 #if KERN_TYPE == 6223
90 #undef _unroll
91 #endif
92 #if KERN_TYPE == 6500
93 #undef _unroll
94 #endif
95 #if KERN_TYPE == 7400
96 #undef _unroll
97 #endif
98 #if KERN_TYPE == 7900
99 #undef _unroll
100 #endif
101 #if KERN_TYPE == 10400
102 #undef _unroll
103 #endif
104 #if KERN_TYPE == 10500
105 #undef _unroll
106 #endif
107 #if KERN_TYPE == 10700
108 #undef _unroll
109 #endif
110 #if KERN_TYPE == 12300
111 #undef _unroll
112 #endif
113 #if KERN_TYPE == 12400
114 #undef _unroll
115 #endif
116 #if KERN_TYPE == 13721
117 #undef _unroll
118 #endif
119 #if KERN_TYPE == 13722
120 #undef _unroll
121 #endif
122 #if KERN_TYPE == 13723
123 #undef _unroll
124 #endif
125
126 #endif
127 #endif
128
129 #ifdef IS_AMD
130 #ifdef IS_GPU
131
132 #if KERN_TYPE == 3200
133 #undef _unroll
134 #endif
135 #if KERN_TYPE == 5200
136 #undef _unroll
137 #endif
138 #if KERN_TYPE == 6100
139 #undef _unroll
140 #endif
141 #if KERN_TYPE == 6221
142 #undef _unroll
143 #endif
144 #if KERN_TYPE == 6222
145 #undef _unroll
146 #endif
147 #if KERN_TYPE == 6223
148 #undef _unroll
149 #endif
150 #if KERN_TYPE == 6400
151 #undef _unroll
152 #endif
153 #if KERN_TYPE == 6500
154 #undef _unroll
155 #endif
156 #if KERN_TYPE == 6800
157 #undef _unroll
158 #endif
159 #if KERN_TYPE == 7100
160 #undef _unroll
161 #endif
162 #if KERN_TYPE == 7400
163 #undef _unroll
164 #endif
165 #if KERN_TYPE == 8000
166 #undef _unroll
167 #endif
168 #if KERN_TYPE == 8200
169 #undef _unroll
170 #endif
171 #if KERN_TYPE == 10900
172 #undef _unroll
173 #endif
174 #if KERN_TYPE == 11600
175 #undef _unroll
176 #endif
177 #if KERN_TYPE == 12300
178 #undef _unroll
179 #endif
180 #if KERN_TYPE == 12800
181 #undef _unroll
182 #endif
183 #if KERN_TYPE == 12900
184 #undef _unroll
185 #endif
186 #if KERN_TYPE == 13000
187 #undef _unroll
188 #endif
189 #if KERN_TYPE == 13721
190 #undef _unroll
191 #endif
192 #if KERN_TYPE == 13722
193 #undef _unroll
194 #endif
195 #if KERN_TYPE == 13723
196 #undef _unroll
197 #endif
198
199 #endif
200 #endif
201
202 // Some algorithms break due to loop unrolling, it's unknown why, probably compiler bugs
203 // Can overlap with above cases
204
205 #ifdef IS_AMD
206 #ifdef IS_GPU
207
208 #if KERN_TYPE == 1750
209 #undef _unroll
210 #endif
211 #if KERN_TYPE == 1760
212 #undef _unroll
213 #endif
214 #if KERN_TYPE == 6500
215 #undef _unroll
216 #endif
217 #if KERN_TYPE == 7100
218 #undef _unroll
219 #endif
220 #if KERN_TYPE == 9600
221 #undef _unroll
222 #endif
223 #if KERN_TYPE == 12200
224 #undef _unroll
225 #endif
226 #if KERN_TYPE == 12300
227 #undef _unroll
228 #endif
229
230 #endif
231 #endif