Remove OPENCL EXTENSION, failing on Intel OpenCL SDK
[hashcat.git] / include / kernel_vendor.h
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 #elif VENDOR_ID == (1 << 6)
33 #define IS_NV
34 #else
35 #define IS_GENERIC
36 #endif
37
38 /**
39 * AMD specific
40 */
41
42 #ifdef IS_AMD
43 #pragma OPENCL EXTENSION cl_amd_media_ops : enable
44 #pragma OPENCL EXTENSION cl_amd_media_ops2 : enable
45 #endif
46
47 /**
48 * Unrolling is generally enabled, for all device types and hash modes
49 * There's a few exception when it's better not to unroll
50 */
51
52 // Some algorithms run into too much register pressure due to loop unrolling
53
54 #ifdef IS_NV
55 #ifdef IS_GPU
56
57 #if KERN_TYPE == 1500
58 #undef _unroll
59 #endif
60 #if KERN_TYPE == 1800
61 #undef _unroll
62 #endif
63 #if KERN_TYPE == 3000
64 #undef _unroll
65 #endif
66 #if KERN_TYPE == 6221
67 #undef _unroll
68 #endif
69 #if KERN_TYPE == 6222
70 #undef _unroll
71 #endif
72 #if KERN_TYPE == 6223
73 #undef _unroll
74 #endif
75 #if KERN_TYPE == 6500
76 #undef _unroll
77 #endif
78 #if KERN_TYPE == 7100
79 #undef _unroll
80 #endif
81 #if KERN_TYPE == 7400
82 #undef _unroll
83 #endif
84 #if KERN_TYPE == 7900
85 #undef _unroll
86 #endif
87 #if KERN_TYPE == 8200
88 #undef _unroll
89 #endif
90 #if KERN_TYPE == 10400
91 #undef _unroll
92 #endif
93 #if KERN_TYPE == 10500
94 #undef _unroll
95 #endif
96 #if KERN_TYPE == 10700
97 #undef _unroll
98 #endif
99 #if KERN_TYPE == 12300
100 #undef _unroll
101 #endif
102 #if KERN_TYPE == 12400
103 #undef _unroll
104 #endif
105
106 #endif
107 #endif
108
109 #ifdef IS_AMD
110 #ifdef IS_GPU
111
112 #if KERN_TYPE == 3200
113 #undef _unroll
114 #endif
115 #if KERN_TYPE == 5200
116 #undef _unroll
117 #endif
118 #if KERN_TYPE == 6100
119 #undef _unroll
120 #endif
121 #if KERN_TYPE == 6221
122 #undef _unroll
123 #endif
124 #if KERN_TYPE == 6222
125 #undef _unroll
126 #endif
127 #if KERN_TYPE == 6223
128 #undef _unroll
129 #endif
130 #if KERN_TYPE == 6400
131 #undef _unroll
132 #endif
133 #if KERN_TYPE == 6500
134 #undef _unroll
135 #endif
136 #if KERN_TYPE == 6800
137 #undef _unroll
138 #endif
139 #if KERN_TYPE == 7100
140 #undef _unroll
141 #endif
142 #if KERN_TYPE == 7400
143 #undef _unroll
144 #endif
145 #if KERN_TYPE == 8000
146 #undef _unroll
147 #endif
148 #if KERN_TYPE == 8200
149 #undef _unroll
150 #endif
151 #if KERN_TYPE == 10900
152 #undef _unroll
153 #endif
154 #if KERN_TYPE == 11600
155 #undef _unroll
156 #endif
157 #if KERN_TYPE == 12300
158 #undef _unroll
159 #endif
160 #if KERN_TYPE == 12800
161 #undef _unroll
162 #endif
163 #if KERN_TYPE == 12900
164 #undef _unroll
165 #endif
166 #if KERN_TYPE == 13000
167 #undef _unroll
168 #endif
169
170 #endif
171 #endif
172
173 // Some algorithms break due to loop unrolling, it's unknown why, probably compiler bugs
174 // Can overlap with above cases
175
176 #ifdef IS_AMD
177 #ifdef IS_GPU
178
179 #if KERN_TYPE == 1750
180 #undef _unroll
181 #endif
182 #if KERN_TYPE == 1760
183 #undef _unroll
184 #endif
185 #if KERN_TYPE == 6500
186 #undef _unroll
187 #endif
188 #if KERN_TYPE == 7100
189 #undef _unroll
190 #endif
191 #if KERN_TYPE == 9600
192 #undef _unroll
193 #endif
194 #if KERN_TYPE == 12200
195 #undef _unroll
196 #endif
197 #if KERN_TYPE == 12300
198 #undef _unroll
199 #endif
200
201 #endif
202 #endif