Increase 1Password, cloudkeychain 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 == 7100
96 #undef _unroll
97 #endif
98 #if KERN_TYPE == 7400
99 #undef _unroll
100 #endif
101 #if KERN_TYPE == 7900
102 #undef _unroll
103 #endif
104 #if KERN_TYPE == 10400
105 #undef _unroll
106 #endif
107 #if KERN_TYPE == 10500
108 #undef _unroll
109 #endif
110 #if KERN_TYPE == 10700
111 #undef _unroll
112 #endif
113 #if KERN_TYPE == 12300
114 #undef _unroll
115 #endif
116 #if KERN_TYPE == 12400
117 #undef _unroll
118 #endif
119 #if KERN_TYPE == 13721
120 #undef _unroll
121 #endif
122 #if KERN_TYPE == 13722
123 #undef _unroll
124 #endif
125 #if KERN_TYPE == 13723
126 #undef _unroll
127 #endif
128
129 #endif
130 #endif
131
132 #ifdef IS_AMD
133 #ifdef IS_GPU
134
135 #if KERN_TYPE == 3200
136 #undef _unroll
137 #endif
138 #if KERN_TYPE == 5200
139 #undef _unroll
140 #endif
141 #if KERN_TYPE == 6100
142 #undef _unroll
143 #endif
144 #if KERN_TYPE == 6221
145 #undef _unroll
146 #endif
147 #if KERN_TYPE == 6222
148 #undef _unroll
149 #endif
150 #if KERN_TYPE == 6223
151 #undef _unroll
152 #endif
153 #if KERN_TYPE == 6400
154 #undef _unroll
155 #endif
156 #if KERN_TYPE == 6500
157 #undef _unroll
158 #endif
159 #if KERN_TYPE == 6800
160 #undef _unroll
161 #endif
162 #if KERN_TYPE == 7100
163 #undef _unroll
164 #endif
165 #if KERN_TYPE == 7400
166 #undef _unroll
167 #endif
168 #if KERN_TYPE == 8000
169 #undef _unroll
170 #endif
171 #if KERN_TYPE == 8200
172 #undef _unroll
173 #endif
174 #if KERN_TYPE == 10900
175 #undef _unroll
176 #endif
177 #if KERN_TYPE == 11600
178 #undef _unroll
179 #endif
180 #if KERN_TYPE == 12300
181 #undef _unroll
182 #endif
183 #if KERN_TYPE == 12800
184 #undef _unroll
185 #endif
186 #if KERN_TYPE == 12900
187 #undef _unroll
188 #endif
189 #if KERN_TYPE == 13000
190 #undef _unroll
191 #endif
192 #if KERN_TYPE == 13721
193 #undef _unroll
194 #endif
195 #if KERN_TYPE == 13722
196 #undef _unroll
197 #endif
198 #if KERN_TYPE == 13723
199 #undef _unroll
200 #endif
201
202 #endif
203 #endif
204
205 // Some algorithms break due to loop unrolling, it's unknown why, probably compiler bugs
206 // Can overlap with above cases
207
208 #ifdef IS_AMD
209 #ifdef IS_GPU
210
211 #if KERN_TYPE == 1750
212 #undef _unroll
213 #endif
214 #if KERN_TYPE == 1760
215 #undef _unroll
216 #endif
217 #if KERN_TYPE == 6500
218 #undef _unroll
219 #endif
220 #if KERN_TYPE == 7100
221 #undef _unroll
222 #endif
223 #if KERN_TYPE == 9600
224 #undef _unroll
225 #endif
226 #if KERN_TYPE == 12200
227 #undef _unroll
228 #endif
229 #if KERN_TYPE == 12300
230 #undef _unroll
231 #endif
232
233 #endif
234 #endif