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