1 
2 // =================================================================================================
3 // This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. This
4 // project loosely follows the Google C++ styleguide and uses a tab-size of two spaces and a max-
5 // width of 100 characters per line.
6 //
7 // Author(s):
8 //   Cedric Nugteren <www.cedricnugteren.nl>
9 //
10 // This file implements all the plain C BLAS API calls. This forwards the calls to the C++ API.
11 //
12 // =================================================================================================
13 
14 #include <string>
15 #include <unordered_map>
16 
17 #include "utilities/utilities.hpp"
18 #include "clblast_c.h"
19 #include "clblast.h"
20 
21 // Shortcuts to the clblast namespace
22 using half = clblast::half;
23 using float2 = clblast::float2;
24 using double2 = clblast::double2;
25 
26 // =================================================================================================
27 // BLAS level-1 (vector-vector) routines
28 // =================================================================================================
29 
30 // ROTG
CLBlastSrotg(cl_mem sa_buffer,const size_t sa_offset,cl_mem sb_buffer,const size_t sb_offset,cl_mem sc_buffer,const size_t sc_offset,cl_mem ss_buffer,const size_t ss_offset,cl_command_queue * queue,cl_event * event)31 CLBlastStatusCode CLBlastSrotg(cl_mem sa_buffer, const size_t sa_offset,
32                                cl_mem sb_buffer, const size_t sb_offset,
33                                cl_mem sc_buffer, const size_t sc_offset,
34                                cl_mem ss_buffer, const size_t ss_offset,
35                                cl_command_queue* queue, cl_event* event) {
36   try {
37     return static_cast<CLBlastStatusCode>(
38       clblast::Rotg<float>(sa_buffer, sa_offset,
39                            sb_buffer, sb_offset,
40                            sc_buffer, sc_offset,
41                            ss_buffer, ss_offset,
42                            queue, event)
43     );
44   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
45 }
CLBlastDrotg(cl_mem sa_buffer,const size_t sa_offset,cl_mem sb_buffer,const size_t sb_offset,cl_mem sc_buffer,const size_t sc_offset,cl_mem ss_buffer,const size_t ss_offset,cl_command_queue * queue,cl_event * event)46 CLBlastStatusCode CLBlastDrotg(cl_mem sa_buffer, const size_t sa_offset,
47                                cl_mem sb_buffer, const size_t sb_offset,
48                                cl_mem sc_buffer, const size_t sc_offset,
49                                cl_mem ss_buffer, const size_t ss_offset,
50                                cl_command_queue* queue, cl_event* event) {
51   try {
52     return static_cast<CLBlastStatusCode>(
53       clblast::Rotg<double>(sa_buffer, sa_offset,
54                             sb_buffer, sb_offset,
55                             sc_buffer, sc_offset,
56                             ss_buffer, ss_offset,
57                             queue, event)
58     );
59   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
60 }
61 
62 // ROTMG
CLBlastSrotmg(cl_mem sd1_buffer,const size_t sd1_offset,cl_mem sd2_buffer,const size_t sd2_offset,cl_mem sx1_buffer,const size_t sx1_offset,const cl_mem sy1_buffer,const size_t sy1_offset,cl_mem sparam_buffer,const size_t sparam_offset,cl_command_queue * queue,cl_event * event)63 CLBlastStatusCode CLBlastSrotmg(cl_mem sd1_buffer, const size_t sd1_offset,
64                                 cl_mem sd2_buffer, const size_t sd2_offset,
65                                 cl_mem sx1_buffer, const size_t sx1_offset,
66                                 const cl_mem sy1_buffer, const size_t sy1_offset,
67                                 cl_mem sparam_buffer, const size_t sparam_offset,
68                                 cl_command_queue* queue, cl_event* event) {
69   try {
70     return static_cast<CLBlastStatusCode>(
71       clblast::Rotmg<float>(sd1_buffer, sd1_offset,
72                             sd2_buffer, sd2_offset,
73                             sx1_buffer, sx1_offset,
74                             sy1_buffer, sy1_offset,
75                             sparam_buffer, sparam_offset,
76                             queue, event)
77     );
78   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
79 }
CLBlastDrotmg(cl_mem sd1_buffer,const size_t sd1_offset,cl_mem sd2_buffer,const size_t sd2_offset,cl_mem sx1_buffer,const size_t sx1_offset,const cl_mem sy1_buffer,const size_t sy1_offset,cl_mem sparam_buffer,const size_t sparam_offset,cl_command_queue * queue,cl_event * event)80 CLBlastStatusCode CLBlastDrotmg(cl_mem sd1_buffer, const size_t sd1_offset,
81                                 cl_mem sd2_buffer, const size_t sd2_offset,
82                                 cl_mem sx1_buffer, const size_t sx1_offset,
83                                 const cl_mem sy1_buffer, const size_t sy1_offset,
84                                 cl_mem sparam_buffer, const size_t sparam_offset,
85                                 cl_command_queue* queue, cl_event* event) {
86   try {
87     return static_cast<CLBlastStatusCode>(
88       clblast::Rotmg<double>(sd1_buffer, sd1_offset,
89                              sd2_buffer, sd2_offset,
90                              sx1_buffer, sx1_offset,
91                              sy1_buffer, sy1_offset,
92                              sparam_buffer, sparam_offset,
93                              queue, event)
94     );
95   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
96 }
97 
98 // ROT
CLBlastSrot(const size_t n,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,const float cos,const float sin,cl_command_queue * queue,cl_event * event)99 CLBlastStatusCode CLBlastSrot(const size_t n,
100                               cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
101                               cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
102                               const float cos,
103                               const float sin,
104                               cl_command_queue* queue, cl_event* event) {
105   try {
106     return static_cast<CLBlastStatusCode>(
107       clblast::Rot(n,
108                    x_buffer, x_offset, x_inc,
109                    y_buffer, y_offset, y_inc,
110                    cos,
111                    sin,
112                    queue, event)
113     );
114   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
115 }
CLBlastDrot(const size_t n,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,const double cos,const double sin,cl_command_queue * queue,cl_event * event)116 CLBlastStatusCode CLBlastDrot(const size_t n,
117                               cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
118                               cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
119                               const double cos,
120                               const double sin,
121                               cl_command_queue* queue, cl_event* event) {
122   try {
123     return static_cast<CLBlastStatusCode>(
124       clblast::Rot(n,
125                    x_buffer, x_offset, x_inc,
126                    y_buffer, y_offset, y_inc,
127                    cos,
128                    sin,
129                    queue, event)
130     );
131   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
132 }
133 
134 // ROTM
CLBlastSrotm(const size_t n,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_mem sparam_buffer,const size_t sparam_offset,cl_command_queue * queue,cl_event * event)135 CLBlastStatusCode CLBlastSrotm(const size_t n,
136                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
137                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
138                                cl_mem sparam_buffer, const size_t sparam_offset,
139                                cl_command_queue* queue, cl_event* event) {
140   try {
141     return static_cast<CLBlastStatusCode>(
142       clblast::Rotm<float>(n,
143                            x_buffer, x_offset, x_inc,
144                            y_buffer, y_offset, y_inc,
145                            sparam_buffer, sparam_offset,
146                            queue, event)
147     );
148   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
149 }
CLBlastDrotm(const size_t n,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_mem sparam_buffer,const size_t sparam_offset,cl_command_queue * queue,cl_event * event)150 CLBlastStatusCode CLBlastDrotm(const size_t n,
151                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
152                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
153                                cl_mem sparam_buffer, const size_t sparam_offset,
154                                cl_command_queue* queue, cl_event* event) {
155   try {
156     return static_cast<CLBlastStatusCode>(
157       clblast::Rotm<double>(n,
158                             x_buffer, x_offset, x_inc,
159                             y_buffer, y_offset, y_inc,
160                             sparam_buffer, sparam_offset,
161                             queue, event)
162     );
163   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
164 }
165 
166 // SWAP
CLBlastSswap(const size_t n,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)167 CLBlastStatusCode CLBlastSswap(const size_t n,
168                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
169                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
170                                cl_command_queue* queue, cl_event* event) {
171   try {
172     return static_cast<CLBlastStatusCode>(
173       clblast::Swap<float>(n,
174                            x_buffer, x_offset, x_inc,
175                            y_buffer, y_offset, y_inc,
176                            queue, event)
177     );
178   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
179 }
CLBlastDswap(const size_t n,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)180 CLBlastStatusCode CLBlastDswap(const size_t n,
181                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
182                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
183                                cl_command_queue* queue, cl_event* event) {
184   try {
185     return static_cast<CLBlastStatusCode>(
186       clblast::Swap<double>(n,
187                             x_buffer, x_offset, x_inc,
188                             y_buffer, y_offset, y_inc,
189                             queue, event)
190     );
191   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
192 }
CLBlastCswap(const size_t n,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)193 CLBlastStatusCode CLBlastCswap(const size_t n,
194                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
195                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
196                                cl_command_queue* queue, cl_event* event) {
197   try {
198     return static_cast<CLBlastStatusCode>(
199       clblast::Swap<float2>(n,
200                             x_buffer, x_offset, x_inc,
201                             y_buffer, y_offset, y_inc,
202                             queue, event)
203     );
204   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
205 }
CLBlastZswap(const size_t n,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)206 CLBlastStatusCode CLBlastZswap(const size_t n,
207                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
208                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
209                                cl_command_queue* queue, cl_event* event) {
210   try {
211     return static_cast<CLBlastStatusCode>(
212       clblast::Swap<double2>(n,
213                              x_buffer, x_offset, x_inc,
214                              y_buffer, y_offset, y_inc,
215                              queue, event)
216     );
217   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
218 }
CLBlastHswap(const size_t n,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)219 CLBlastStatusCode CLBlastHswap(const size_t n,
220                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
221                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
222                                cl_command_queue* queue, cl_event* event) {
223   try {
224     return static_cast<CLBlastStatusCode>(
225       clblast::Swap<half>(n,
226                           x_buffer, x_offset, x_inc,
227                           y_buffer, y_offset, y_inc,
228                           queue, event)
229     );
230   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
231 }
232 
233 // SCAL
CLBlastSscal(const size_t n,const float alpha,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)234 CLBlastStatusCode CLBlastSscal(const size_t n,
235                                const float alpha,
236                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
237                                cl_command_queue* queue, cl_event* event) {
238   try {
239     return static_cast<CLBlastStatusCode>(
240       clblast::Scal(n,
241                     alpha,
242                     x_buffer, x_offset, x_inc,
243                     queue, event)
244     );
245   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
246 }
CLBlastDscal(const size_t n,const double alpha,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)247 CLBlastStatusCode CLBlastDscal(const size_t n,
248                                const double alpha,
249                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
250                                cl_command_queue* queue, cl_event* event) {
251   try {
252     return static_cast<CLBlastStatusCode>(
253       clblast::Scal(n,
254                     alpha,
255                     x_buffer, x_offset, x_inc,
256                     queue, event)
257     );
258   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
259 }
CLBlastCscal(const size_t n,const cl_float2 alpha,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)260 CLBlastStatusCode CLBlastCscal(const size_t n,
261                                const cl_float2 alpha,
262                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
263                                cl_command_queue* queue, cl_event* event) {
264   try {
265     return static_cast<CLBlastStatusCode>(
266       clblast::Scal(n,
267                     float2{alpha.s[0], alpha.s[1]},
268                     x_buffer, x_offset, x_inc,
269                     queue, event)
270     );
271   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
272 }
CLBlastZscal(const size_t n,const cl_double2 alpha,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)273 CLBlastStatusCode CLBlastZscal(const size_t n,
274                                const cl_double2 alpha,
275                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
276                                cl_command_queue* queue, cl_event* event) {
277   try {
278     return static_cast<CLBlastStatusCode>(
279       clblast::Scal(n,
280                     double2{alpha.s[0], alpha.s[1]},
281                     x_buffer, x_offset, x_inc,
282                     queue, event)
283     );
284   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
285 }
CLBlastHscal(const size_t n,const cl_half alpha,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)286 CLBlastStatusCode CLBlastHscal(const size_t n,
287                                const cl_half alpha,
288                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
289                                cl_command_queue* queue, cl_event* event) {
290   try {
291     return static_cast<CLBlastStatusCode>(
292       clblast::Scal(n,
293                     alpha,
294                     x_buffer, x_offset, x_inc,
295                     queue, event)
296     );
297   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
298 }
299 
300 // COPY
CLBlastScopy(const size_t n,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)301 CLBlastStatusCode CLBlastScopy(const size_t n,
302                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
303                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
304                                cl_command_queue* queue, cl_event* event) {
305   try {
306     return static_cast<CLBlastStatusCode>(
307       clblast::Copy<float>(n,
308                            x_buffer, x_offset, x_inc,
309                            y_buffer, y_offset, y_inc,
310                            queue, event)
311     );
312   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
313 }
CLBlastDcopy(const size_t n,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)314 CLBlastStatusCode CLBlastDcopy(const size_t n,
315                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
316                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
317                                cl_command_queue* queue, cl_event* event) {
318   try {
319     return static_cast<CLBlastStatusCode>(
320       clblast::Copy<double>(n,
321                             x_buffer, x_offset, x_inc,
322                             y_buffer, y_offset, y_inc,
323                             queue, event)
324     );
325   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
326 }
CLBlastCcopy(const size_t n,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)327 CLBlastStatusCode CLBlastCcopy(const size_t n,
328                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
329                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
330                                cl_command_queue* queue, cl_event* event) {
331   try {
332     return static_cast<CLBlastStatusCode>(
333       clblast::Copy<float2>(n,
334                             x_buffer, x_offset, x_inc,
335                             y_buffer, y_offset, y_inc,
336                             queue, event)
337     );
338   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
339 }
CLBlastZcopy(const size_t n,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)340 CLBlastStatusCode CLBlastZcopy(const size_t n,
341                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
342                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
343                                cl_command_queue* queue, cl_event* event) {
344   try {
345     return static_cast<CLBlastStatusCode>(
346       clblast::Copy<double2>(n,
347                              x_buffer, x_offset, x_inc,
348                              y_buffer, y_offset, y_inc,
349                              queue, event)
350     );
351   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
352 }
CLBlastHcopy(const size_t n,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)353 CLBlastStatusCode CLBlastHcopy(const size_t n,
354                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
355                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
356                                cl_command_queue* queue, cl_event* event) {
357   try {
358     return static_cast<CLBlastStatusCode>(
359       clblast::Copy<half>(n,
360                           x_buffer, x_offset, x_inc,
361                           y_buffer, y_offset, y_inc,
362                           queue, event)
363     );
364   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
365 }
366 
367 // AXPY
CLBlastSaxpy(const size_t n,const float alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)368 CLBlastStatusCode CLBlastSaxpy(const size_t n,
369                                const float alpha,
370                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
371                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
372                                cl_command_queue* queue, cl_event* event) {
373   try {
374     return static_cast<CLBlastStatusCode>(
375       clblast::Axpy(n,
376                     alpha,
377                     x_buffer, x_offset, x_inc,
378                     y_buffer, y_offset, y_inc,
379                     queue, event)
380     );
381   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
382 }
CLBlastDaxpy(const size_t n,const double alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)383 CLBlastStatusCode CLBlastDaxpy(const size_t n,
384                                const double alpha,
385                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
386                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
387                                cl_command_queue* queue, cl_event* event) {
388   try {
389     return static_cast<CLBlastStatusCode>(
390       clblast::Axpy(n,
391                     alpha,
392                     x_buffer, x_offset, x_inc,
393                     y_buffer, y_offset, y_inc,
394                     queue, event)
395     );
396   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
397 }
CLBlastCaxpy(const size_t n,const cl_float2 alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)398 CLBlastStatusCode CLBlastCaxpy(const size_t n,
399                                const cl_float2 alpha,
400                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
401                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
402                                cl_command_queue* queue, cl_event* event) {
403   try {
404     return static_cast<CLBlastStatusCode>(
405       clblast::Axpy(n,
406                     float2{alpha.s[0], alpha.s[1]},
407                     x_buffer, x_offset, x_inc,
408                     y_buffer, y_offset, y_inc,
409                     queue, event)
410     );
411   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
412 }
CLBlastZaxpy(const size_t n,const cl_double2 alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)413 CLBlastStatusCode CLBlastZaxpy(const size_t n,
414                                const cl_double2 alpha,
415                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
416                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
417                                cl_command_queue* queue, cl_event* event) {
418   try {
419     return static_cast<CLBlastStatusCode>(
420       clblast::Axpy(n,
421                     double2{alpha.s[0], alpha.s[1]},
422                     x_buffer, x_offset, x_inc,
423                     y_buffer, y_offset, y_inc,
424                     queue, event)
425     );
426   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
427 }
CLBlastHaxpy(const size_t n,const cl_half alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)428 CLBlastStatusCode CLBlastHaxpy(const size_t n,
429                                const cl_half alpha,
430                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
431                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
432                                cl_command_queue* queue, cl_event* event) {
433   try {
434     return static_cast<CLBlastStatusCode>(
435       clblast::Axpy(n,
436                     alpha,
437                     x_buffer, x_offset, x_inc,
438                     y_buffer, y_offset, y_inc,
439                     queue, event)
440     );
441   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
442 }
443 
444 // DOT
CLBlastSdot(const size_t n,cl_mem dot_buffer,const size_t dot_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)445 CLBlastStatusCode CLBlastSdot(const size_t n,
446                               cl_mem dot_buffer, const size_t dot_offset,
447                               const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
448                               const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
449                               cl_command_queue* queue, cl_event* event) {
450   try {
451     return static_cast<CLBlastStatusCode>(
452       clblast::Dot<float>(n,
453                           dot_buffer, dot_offset,
454                           x_buffer, x_offset, x_inc,
455                           y_buffer, y_offset, y_inc,
456                           queue, event)
457     );
458   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
459 }
CLBlastDdot(const size_t n,cl_mem dot_buffer,const size_t dot_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)460 CLBlastStatusCode CLBlastDdot(const size_t n,
461                               cl_mem dot_buffer, const size_t dot_offset,
462                               const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
463                               const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
464                               cl_command_queue* queue, cl_event* event) {
465   try {
466     return static_cast<CLBlastStatusCode>(
467       clblast::Dot<double>(n,
468                            dot_buffer, dot_offset,
469                            x_buffer, x_offset, x_inc,
470                            y_buffer, y_offset, y_inc,
471                            queue, event)
472     );
473   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
474 }
CLBlastHdot(const size_t n,cl_mem dot_buffer,const size_t dot_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)475 CLBlastStatusCode CLBlastHdot(const size_t n,
476                               cl_mem dot_buffer, const size_t dot_offset,
477                               const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
478                               const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
479                               cl_command_queue* queue, cl_event* event) {
480   try {
481     return static_cast<CLBlastStatusCode>(
482       clblast::Dot<half>(n,
483                          dot_buffer, dot_offset,
484                          x_buffer, x_offset, x_inc,
485                          y_buffer, y_offset, y_inc,
486                          queue, event)
487     );
488   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
489 }
490 
491 // DOTU
CLBlastCdotu(const size_t n,cl_mem dot_buffer,const size_t dot_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)492 CLBlastStatusCode CLBlastCdotu(const size_t n,
493                                cl_mem dot_buffer, const size_t dot_offset,
494                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
495                                const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
496                                cl_command_queue* queue, cl_event* event) {
497   try {
498     return static_cast<CLBlastStatusCode>(
499       clblast::Dotu<float2>(n,
500                             dot_buffer, dot_offset,
501                             x_buffer, x_offset, x_inc,
502                             y_buffer, y_offset, y_inc,
503                             queue, event)
504     );
505   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
506 }
CLBlastZdotu(const size_t n,cl_mem dot_buffer,const size_t dot_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)507 CLBlastStatusCode CLBlastZdotu(const size_t n,
508                                cl_mem dot_buffer, const size_t dot_offset,
509                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
510                                const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
511                                cl_command_queue* queue, cl_event* event) {
512   try {
513     return static_cast<CLBlastStatusCode>(
514       clblast::Dotu<double2>(n,
515                              dot_buffer, dot_offset,
516                              x_buffer, x_offset, x_inc,
517                              y_buffer, y_offset, y_inc,
518                              queue, event)
519     );
520   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
521 }
522 
523 // DOTC
CLBlastCdotc(const size_t n,cl_mem dot_buffer,const size_t dot_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)524 CLBlastStatusCode CLBlastCdotc(const size_t n,
525                                cl_mem dot_buffer, const size_t dot_offset,
526                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
527                                const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
528                                cl_command_queue* queue, cl_event* event) {
529   try {
530     return static_cast<CLBlastStatusCode>(
531       clblast::Dotc<float2>(n,
532                             dot_buffer, dot_offset,
533                             x_buffer, x_offset, x_inc,
534                             y_buffer, y_offset, y_inc,
535                             queue, event)
536     );
537   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
538 }
CLBlastZdotc(const size_t n,cl_mem dot_buffer,const size_t dot_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)539 CLBlastStatusCode CLBlastZdotc(const size_t n,
540                                cl_mem dot_buffer, const size_t dot_offset,
541                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
542                                const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
543                                cl_command_queue* queue, cl_event* event) {
544   try {
545     return static_cast<CLBlastStatusCode>(
546       clblast::Dotc<double2>(n,
547                              dot_buffer, dot_offset,
548                              x_buffer, x_offset, x_inc,
549                              y_buffer, y_offset, y_inc,
550                              queue, event)
551     );
552   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
553 }
554 
555 // NRM2
CLBlastSnrm2(const size_t n,cl_mem nrm2_buffer,const size_t nrm2_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)556 CLBlastStatusCode CLBlastSnrm2(const size_t n,
557                                cl_mem nrm2_buffer, const size_t nrm2_offset,
558                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
559                                cl_command_queue* queue, cl_event* event) {
560   try {
561     return static_cast<CLBlastStatusCode>(
562       clblast::Nrm2<float>(n,
563                            nrm2_buffer, nrm2_offset,
564                            x_buffer, x_offset, x_inc,
565                            queue, event)
566     );
567   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
568 }
CLBlastDnrm2(const size_t n,cl_mem nrm2_buffer,const size_t nrm2_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)569 CLBlastStatusCode CLBlastDnrm2(const size_t n,
570                                cl_mem nrm2_buffer, const size_t nrm2_offset,
571                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
572                                cl_command_queue* queue, cl_event* event) {
573   try {
574     return static_cast<CLBlastStatusCode>(
575       clblast::Nrm2<double>(n,
576                             nrm2_buffer, nrm2_offset,
577                             x_buffer, x_offset, x_inc,
578                             queue, event)
579     );
580   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
581 }
CLBlastScnrm2(const size_t n,cl_mem nrm2_buffer,const size_t nrm2_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)582 CLBlastStatusCode CLBlastScnrm2(const size_t n,
583                                cl_mem nrm2_buffer, const size_t nrm2_offset,
584                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
585                                cl_command_queue* queue, cl_event* event) {
586   try {
587     return static_cast<CLBlastStatusCode>(
588       clblast::Nrm2<float2>(n,
589                             nrm2_buffer, nrm2_offset,
590                             x_buffer, x_offset, x_inc,
591                             queue, event)
592     );
593   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
594 }
CLBlastDznrm2(const size_t n,cl_mem nrm2_buffer,const size_t nrm2_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)595 CLBlastStatusCode CLBlastDznrm2(const size_t n,
596                                cl_mem nrm2_buffer, const size_t nrm2_offset,
597                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
598                                cl_command_queue* queue, cl_event* event) {
599   try {
600     return static_cast<CLBlastStatusCode>(
601       clblast::Nrm2<double2>(n,
602                              nrm2_buffer, nrm2_offset,
603                              x_buffer, x_offset, x_inc,
604                              queue, event)
605     );
606   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
607 }
CLBlastHnrm2(const size_t n,cl_mem nrm2_buffer,const size_t nrm2_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)608 CLBlastStatusCode CLBlastHnrm2(const size_t n,
609                                cl_mem nrm2_buffer, const size_t nrm2_offset,
610                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
611                                cl_command_queue* queue, cl_event* event) {
612   try {
613     return static_cast<CLBlastStatusCode>(
614       clblast::Nrm2<half>(n,
615                           nrm2_buffer, nrm2_offset,
616                           x_buffer, x_offset, x_inc,
617                           queue, event)
618     );
619   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
620 }
621 
622 // ASUM
CLBlastSasum(const size_t n,cl_mem asum_buffer,const size_t asum_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)623 CLBlastStatusCode CLBlastSasum(const size_t n,
624                                cl_mem asum_buffer, const size_t asum_offset,
625                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
626                                cl_command_queue* queue, cl_event* event) {
627   try {
628     return static_cast<CLBlastStatusCode>(
629       clblast::Asum<float>(n,
630                            asum_buffer, asum_offset,
631                            x_buffer, x_offset, x_inc,
632                            queue, event)
633     );
634   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
635 }
CLBlastDasum(const size_t n,cl_mem asum_buffer,const size_t asum_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)636 CLBlastStatusCode CLBlastDasum(const size_t n,
637                                cl_mem asum_buffer, const size_t asum_offset,
638                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
639                                cl_command_queue* queue, cl_event* event) {
640   try {
641     return static_cast<CLBlastStatusCode>(
642       clblast::Asum<double>(n,
643                             asum_buffer, asum_offset,
644                             x_buffer, x_offset, x_inc,
645                             queue, event)
646     );
647   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
648 }
CLBlastScasum(const size_t n,cl_mem asum_buffer,const size_t asum_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)649 CLBlastStatusCode CLBlastScasum(const size_t n,
650                                cl_mem asum_buffer, const size_t asum_offset,
651                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
652                                cl_command_queue* queue, cl_event* event) {
653   try {
654     return static_cast<CLBlastStatusCode>(
655       clblast::Asum<float2>(n,
656                             asum_buffer, asum_offset,
657                             x_buffer, x_offset, x_inc,
658                             queue, event)
659     );
660   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
661 }
CLBlastDzasum(const size_t n,cl_mem asum_buffer,const size_t asum_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)662 CLBlastStatusCode CLBlastDzasum(const size_t n,
663                                cl_mem asum_buffer, const size_t asum_offset,
664                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
665                                cl_command_queue* queue, cl_event* event) {
666   try {
667     return static_cast<CLBlastStatusCode>(
668       clblast::Asum<double2>(n,
669                              asum_buffer, asum_offset,
670                              x_buffer, x_offset, x_inc,
671                              queue, event)
672     );
673   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
674 }
CLBlastHasum(const size_t n,cl_mem asum_buffer,const size_t asum_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)675 CLBlastStatusCode CLBlastHasum(const size_t n,
676                                cl_mem asum_buffer, const size_t asum_offset,
677                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
678                                cl_command_queue* queue, cl_event* event) {
679   try {
680     return static_cast<CLBlastStatusCode>(
681       clblast::Asum<half>(n,
682                           asum_buffer, asum_offset,
683                           x_buffer, x_offset, x_inc,
684                           queue, event)
685     );
686   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
687 }
688 
689 // SUM
CLBlastSsum(const size_t n,cl_mem sum_buffer,const size_t sum_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)690 CLBlastStatusCode CLBlastSsum(const size_t n,
691                               cl_mem sum_buffer, const size_t sum_offset,
692                               const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
693                               cl_command_queue* queue, cl_event* event) {
694   try {
695     return static_cast<CLBlastStatusCode>(
696       clblast::Sum<float>(n,
697                           sum_buffer, sum_offset,
698                           x_buffer, x_offset, x_inc,
699                           queue, event)
700     );
701   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
702 }
CLBlastDsum(const size_t n,cl_mem sum_buffer,const size_t sum_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)703 CLBlastStatusCode CLBlastDsum(const size_t n,
704                               cl_mem sum_buffer, const size_t sum_offset,
705                               const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
706                               cl_command_queue* queue, cl_event* event) {
707   try {
708     return static_cast<CLBlastStatusCode>(
709       clblast::Sum<double>(n,
710                            sum_buffer, sum_offset,
711                            x_buffer, x_offset, x_inc,
712                            queue, event)
713     );
714   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
715 }
CLBlastScsum(const size_t n,cl_mem sum_buffer,const size_t sum_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)716 CLBlastStatusCode CLBlastScsum(const size_t n,
717                               cl_mem sum_buffer, const size_t sum_offset,
718                               const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
719                               cl_command_queue* queue, cl_event* event) {
720   try {
721     return static_cast<CLBlastStatusCode>(
722       clblast::Sum<float2>(n,
723                            sum_buffer, sum_offset,
724                            x_buffer, x_offset, x_inc,
725                            queue, event)
726     );
727   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
728 }
CLBlastDzsum(const size_t n,cl_mem sum_buffer,const size_t sum_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)729 CLBlastStatusCode CLBlastDzsum(const size_t n,
730                               cl_mem sum_buffer, const size_t sum_offset,
731                               const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
732                               cl_command_queue* queue, cl_event* event) {
733   try {
734     return static_cast<CLBlastStatusCode>(
735       clblast::Sum<double2>(n,
736                             sum_buffer, sum_offset,
737                             x_buffer, x_offset, x_inc,
738                             queue, event)
739     );
740   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
741 }
CLBlastHsum(const size_t n,cl_mem sum_buffer,const size_t sum_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)742 CLBlastStatusCode CLBlastHsum(const size_t n,
743                               cl_mem sum_buffer, const size_t sum_offset,
744                               const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
745                               cl_command_queue* queue, cl_event* event) {
746   try {
747     return static_cast<CLBlastStatusCode>(
748       clblast::Sum<half>(n,
749                          sum_buffer, sum_offset,
750                          x_buffer, x_offset, x_inc,
751                          queue, event)
752     );
753   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
754 }
755 
756 // AMAX
CLBlastiSamax(const size_t n,cl_mem imax_buffer,const size_t imax_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)757 CLBlastStatusCode CLBlastiSamax(const size_t n,
758                                cl_mem imax_buffer, const size_t imax_offset,
759                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
760                                cl_command_queue* queue, cl_event* event) {
761   try {
762     return static_cast<CLBlastStatusCode>(
763       clblast::Amax<float>(n,
764                            imax_buffer, imax_offset,
765                            x_buffer, x_offset, x_inc,
766                            queue, event)
767     );
768   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
769 }
CLBlastiDamax(const size_t n,cl_mem imax_buffer,const size_t imax_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)770 CLBlastStatusCode CLBlastiDamax(const size_t n,
771                                cl_mem imax_buffer, const size_t imax_offset,
772                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
773                                cl_command_queue* queue, cl_event* event) {
774   try {
775     return static_cast<CLBlastStatusCode>(
776       clblast::Amax<double>(n,
777                             imax_buffer, imax_offset,
778                             x_buffer, x_offset, x_inc,
779                             queue, event)
780     );
781   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
782 }
CLBlastiCamax(const size_t n,cl_mem imax_buffer,const size_t imax_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)783 CLBlastStatusCode CLBlastiCamax(const size_t n,
784                                cl_mem imax_buffer, const size_t imax_offset,
785                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
786                                cl_command_queue* queue, cl_event* event) {
787   try {
788     return static_cast<CLBlastStatusCode>(
789       clblast::Amax<float2>(n,
790                             imax_buffer, imax_offset,
791                             x_buffer, x_offset, x_inc,
792                             queue, event)
793     );
794   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
795 }
CLBlastiZamax(const size_t n,cl_mem imax_buffer,const size_t imax_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)796 CLBlastStatusCode CLBlastiZamax(const size_t n,
797                                cl_mem imax_buffer, const size_t imax_offset,
798                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
799                                cl_command_queue* queue, cl_event* event) {
800   try {
801     return static_cast<CLBlastStatusCode>(
802       clblast::Amax<double2>(n,
803                              imax_buffer, imax_offset,
804                              x_buffer, x_offset, x_inc,
805                              queue, event)
806     );
807   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
808 }
CLBlastiHamax(const size_t n,cl_mem imax_buffer,const size_t imax_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)809 CLBlastStatusCode CLBlastiHamax(const size_t n,
810                                cl_mem imax_buffer, const size_t imax_offset,
811                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
812                                cl_command_queue* queue, cl_event* event) {
813   try {
814     return static_cast<CLBlastStatusCode>(
815       clblast::Amax<half>(n,
816                           imax_buffer, imax_offset,
817                           x_buffer, x_offset, x_inc,
818                           queue, event)
819     );
820   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
821 }
822 
823 // AMIN
CLBlastiSamin(const size_t n,cl_mem imin_buffer,const size_t imin_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)824 CLBlastStatusCode CLBlastiSamin(const size_t n,
825                                cl_mem imin_buffer, const size_t imin_offset,
826                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
827                                cl_command_queue* queue, cl_event* event) {
828   try {
829     return static_cast<CLBlastStatusCode>(
830       clblast::Amin<float>(n,
831                            imin_buffer, imin_offset,
832                            x_buffer, x_offset, x_inc,
833                            queue, event)
834     );
835   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
836 }
CLBlastiDamin(const size_t n,cl_mem imin_buffer,const size_t imin_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)837 CLBlastStatusCode CLBlastiDamin(const size_t n,
838                                cl_mem imin_buffer, const size_t imin_offset,
839                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
840                                cl_command_queue* queue, cl_event* event) {
841   try {
842     return static_cast<CLBlastStatusCode>(
843       clblast::Amin<double>(n,
844                             imin_buffer, imin_offset,
845                             x_buffer, x_offset, x_inc,
846                             queue, event)
847     );
848   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
849 }
CLBlastiCamin(const size_t n,cl_mem imin_buffer,const size_t imin_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)850 CLBlastStatusCode CLBlastiCamin(const size_t n,
851                                cl_mem imin_buffer, const size_t imin_offset,
852                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
853                                cl_command_queue* queue, cl_event* event) {
854   try {
855     return static_cast<CLBlastStatusCode>(
856       clblast::Amin<float2>(n,
857                             imin_buffer, imin_offset,
858                             x_buffer, x_offset, x_inc,
859                             queue, event)
860     );
861   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
862 }
CLBlastiZamin(const size_t n,cl_mem imin_buffer,const size_t imin_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)863 CLBlastStatusCode CLBlastiZamin(const size_t n,
864                                cl_mem imin_buffer, const size_t imin_offset,
865                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
866                                cl_command_queue* queue, cl_event* event) {
867   try {
868     return static_cast<CLBlastStatusCode>(
869       clblast::Amin<double2>(n,
870                              imin_buffer, imin_offset,
871                              x_buffer, x_offset, x_inc,
872                              queue, event)
873     );
874   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
875 }
CLBlastiHamin(const size_t n,cl_mem imin_buffer,const size_t imin_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)876 CLBlastStatusCode CLBlastiHamin(const size_t n,
877                                cl_mem imin_buffer, const size_t imin_offset,
878                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
879                                cl_command_queue* queue, cl_event* event) {
880   try {
881     return static_cast<CLBlastStatusCode>(
882       clblast::Amin<half>(n,
883                           imin_buffer, imin_offset,
884                           x_buffer, x_offset, x_inc,
885                           queue, event)
886     );
887   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
888 }
889 
890 // MAX
CLBlastiSmax(const size_t n,cl_mem imax_buffer,const size_t imax_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)891 CLBlastStatusCode CLBlastiSmax(const size_t n,
892                               cl_mem imax_buffer, const size_t imax_offset,
893                               const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
894                               cl_command_queue* queue, cl_event* event) {
895   try {
896     return static_cast<CLBlastStatusCode>(
897       clblast::Max<float>(n,
898                           imax_buffer, imax_offset,
899                           x_buffer, x_offset, x_inc,
900                           queue, event)
901     );
902   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
903 }
CLBlastiDmax(const size_t n,cl_mem imax_buffer,const size_t imax_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)904 CLBlastStatusCode CLBlastiDmax(const size_t n,
905                               cl_mem imax_buffer, const size_t imax_offset,
906                               const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
907                               cl_command_queue* queue, cl_event* event) {
908   try {
909     return static_cast<CLBlastStatusCode>(
910       clblast::Max<double>(n,
911                            imax_buffer, imax_offset,
912                            x_buffer, x_offset, x_inc,
913                            queue, event)
914     );
915   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
916 }
CLBlastiCmax(const size_t n,cl_mem imax_buffer,const size_t imax_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)917 CLBlastStatusCode CLBlastiCmax(const size_t n,
918                               cl_mem imax_buffer, const size_t imax_offset,
919                               const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
920                               cl_command_queue* queue, cl_event* event) {
921   try {
922     return static_cast<CLBlastStatusCode>(
923       clblast::Max<float2>(n,
924                            imax_buffer, imax_offset,
925                            x_buffer, x_offset, x_inc,
926                            queue, event)
927     );
928   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
929 }
CLBlastiZmax(const size_t n,cl_mem imax_buffer,const size_t imax_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)930 CLBlastStatusCode CLBlastiZmax(const size_t n,
931                               cl_mem imax_buffer, const size_t imax_offset,
932                               const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
933                               cl_command_queue* queue, cl_event* event) {
934   try {
935     return static_cast<CLBlastStatusCode>(
936       clblast::Max<double2>(n,
937                             imax_buffer, imax_offset,
938                             x_buffer, x_offset, x_inc,
939                             queue, event)
940     );
941   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
942 }
CLBlastiHmax(const size_t n,cl_mem imax_buffer,const size_t imax_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)943 CLBlastStatusCode CLBlastiHmax(const size_t n,
944                               cl_mem imax_buffer, const size_t imax_offset,
945                               const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
946                               cl_command_queue* queue, cl_event* event) {
947   try {
948     return static_cast<CLBlastStatusCode>(
949       clblast::Max<half>(n,
950                          imax_buffer, imax_offset,
951                          x_buffer, x_offset, x_inc,
952                          queue, event)
953     );
954   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
955 }
956 
957 // MIN
CLBlastiSmin(const size_t n,cl_mem imin_buffer,const size_t imin_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)958 CLBlastStatusCode CLBlastiSmin(const size_t n,
959                               cl_mem imin_buffer, const size_t imin_offset,
960                               const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
961                               cl_command_queue* queue, cl_event* event) {
962   try {
963     return static_cast<CLBlastStatusCode>(
964       clblast::Min<float>(n,
965                           imin_buffer, imin_offset,
966                           x_buffer, x_offset, x_inc,
967                           queue, event)
968     );
969   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
970 }
CLBlastiDmin(const size_t n,cl_mem imin_buffer,const size_t imin_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)971 CLBlastStatusCode CLBlastiDmin(const size_t n,
972                               cl_mem imin_buffer, const size_t imin_offset,
973                               const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
974                               cl_command_queue* queue, cl_event* event) {
975   try {
976     return static_cast<CLBlastStatusCode>(
977       clblast::Min<double>(n,
978                            imin_buffer, imin_offset,
979                            x_buffer, x_offset, x_inc,
980                            queue, event)
981     );
982   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
983 }
CLBlastiCmin(const size_t n,cl_mem imin_buffer,const size_t imin_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)984 CLBlastStatusCode CLBlastiCmin(const size_t n,
985                               cl_mem imin_buffer, const size_t imin_offset,
986                               const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
987                               cl_command_queue* queue, cl_event* event) {
988   try {
989     return static_cast<CLBlastStatusCode>(
990       clblast::Min<float2>(n,
991                            imin_buffer, imin_offset,
992                            x_buffer, x_offset, x_inc,
993                            queue, event)
994     );
995   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
996 }
CLBlastiZmin(const size_t n,cl_mem imin_buffer,const size_t imin_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)997 CLBlastStatusCode CLBlastiZmin(const size_t n,
998                               cl_mem imin_buffer, const size_t imin_offset,
999                               const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1000                               cl_command_queue* queue, cl_event* event) {
1001   try {
1002     return static_cast<CLBlastStatusCode>(
1003       clblast::Min<double2>(n,
1004                             imin_buffer, imin_offset,
1005                             x_buffer, x_offset, x_inc,
1006                             queue, event)
1007     );
1008   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1009 }
CLBlastiHmin(const size_t n,cl_mem imin_buffer,const size_t imin_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1010 CLBlastStatusCode CLBlastiHmin(const size_t n,
1011                               cl_mem imin_buffer, const size_t imin_offset,
1012                               const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1013                               cl_command_queue* queue, cl_event* event) {
1014   try {
1015     return static_cast<CLBlastStatusCode>(
1016       clblast::Min<half>(n,
1017                          imin_buffer, imin_offset,
1018                          x_buffer, x_offset, x_inc,
1019                          queue, event)
1020     );
1021   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1022 }
1023 
1024 // =================================================================================================
1025 // BLAS level-2 (matrix-vector) routines
1026 // =================================================================================================
1027 
1028 // GEMV
CLBlastSgemv(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const size_t m,const size_t n,const float alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const float beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1029 CLBlastStatusCode CLBlastSgemv(const CLBlastLayout layout, const CLBlastTranspose a_transpose,
1030                                const size_t m, const size_t n,
1031                                const float alpha,
1032                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1033                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1034                                const float beta,
1035                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1036                                cl_command_queue* queue, cl_event* event) {
1037   try {
1038     return static_cast<CLBlastStatusCode>(
1039       clblast::Gemv(static_cast<clblast::Layout>(layout),
1040                     static_cast<clblast::Transpose>(a_transpose),
1041                     m, n,
1042                     alpha,
1043                     a_buffer, a_offset, a_ld,
1044                     x_buffer, x_offset, x_inc,
1045                     beta,
1046                     y_buffer, y_offset, y_inc,
1047                     queue, event)
1048     );
1049   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1050 }
CLBlastDgemv(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const size_t m,const size_t n,const double alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const double beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1051 CLBlastStatusCode CLBlastDgemv(const CLBlastLayout layout, const CLBlastTranspose a_transpose,
1052                                const size_t m, const size_t n,
1053                                const double alpha,
1054                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1055                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1056                                const double beta,
1057                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1058                                cl_command_queue* queue, cl_event* event) {
1059   try {
1060     return static_cast<CLBlastStatusCode>(
1061       clblast::Gemv(static_cast<clblast::Layout>(layout),
1062                     static_cast<clblast::Transpose>(a_transpose),
1063                     m, n,
1064                     alpha,
1065                     a_buffer, a_offset, a_ld,
1066                     x_buffer, x_offset, x_inc,
1067                     beta,
1068                     y_buffer, y_offset, y_inc,
1069                     queue, event)
1070     );
1071   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1072 }
CLBlastCgemv(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const size_t m,const size_t n,const cl_float2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_float2 beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1073 CLBlastStatusCode CLBlastCgemv(const CLBlastLayout layout, const CLBlastTranspose a_transpose,
1074                                const size_t m, const size_t n,
1075                                const cl_float2 alpha,
1076                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1077                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1078                                const cl_float2 beta,
1079                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1080                                cl_command_queue* queue, cl_event* event) {
1081   try {
1082     return static_cast<CLBlastStatusCode>(
1083       clblast::Gemv(static_cast<clblast::Layout>(layout),
1084                     static_cast<clblast::Transpose>(a_transpose),
1085                     m, n,
1086                     float2{alpha.s[0], alpha.s[1]},
1087                     a_buffer, a_offset, a_ld,
1088                     x_buffer, x_offset, x_inc,
1089                     float2{beta.s[0], beta.s[1]},
1090                     y_buffer, y_offset, y_inc,
1091                     queue, event)
1092     );
1093   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1094 }
CLBlastZgemv(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const size_t m,const size_t n,const cl_double2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_double2 beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1095 CLBlastStatusCode CLBlastZgemv(const CLBlastLayout layout, const CLBlastTranspose a_transpose,
1096                                const size_t m, const size_t n,
1097                                const cl_double2 alpha,
1098                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1099                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1100                                const cl_double2 beta,
1101                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1102                                cl_command_queue* queue, cl_event* event) {
1103   try {
1104     return static_cast<CLBlastStatusCode>(
1105       clblast::Gemv(static_cast<clblast::Layout>(layout),
1106                     static_cast<clblast::Transpose>(a_transpose),
1107                     m, n,
1108                     double2{alpha.s[0], alpha.s[1]},
1109                     a_buffer, a_offset, a_ld,
1110                     x_buffer, x_offset, x_inc,
1111                     double2{beta.s[0], beta.s[1]},
1112                     y_buffer, y_offset, y_inc,
1113                     queue, event)
1114     );
1115   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1116 }
CLBlastHgemv(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const size_t m,const size_t n,const cl_half alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_half beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1117 CLBlastStatusCode CLBlastHgemv(const CLBlastLayout layout, const CLBlastTranspose a_transpose,
1118                                const size_t m, const size_t n,
1119                                const cl_half alpha,
1120                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1121                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1122                                const cl_half beta,
1123                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1124                                cl_command_queue* queue, cl_event* event) {
1125   try {
1126     return static_cast<CLBlastStatusCode>(
1127       clblast::Gemv(static_cast<clblast::Layout>(layout),
1128                     static_cast<clblast::Transpose>(a_transpose),
1129                     m, n,
1130                     alpha,
1131                     a_buffer, a_offset, a_ld,
1132                     x_buffer, x_offset, x_inc,
1133                     beta,
1134                     y_buffer, y_offset, y_inc,
1135                     queue, event)
1136     );
1137   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1138 }
1139 
1140 // GBMV
CLBlastSgbmv(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const size_t m,const size_t n,const size_t kl,const size_t ku,const float alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const float beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1141 CLBlastStatusCode CLBlastSgbmv(const CLBlastLayout layout, const CLBlastTranspose a_transpose,
1142                                const size_t m, const size_t n, const size_t kl, const size_t ku,
1143                                const float alpha,
1144                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1145                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1146                                const float beta,
1147                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1148                                cl_command_queue* queue, cl_event* event) {
1149   try {
1150     return static_cast<CLBlastStatusCode>(
1151       clblast::Gbmv(static_cast<clblast::Layout>(layout),
1152                     static_cast<clblast::Transpose>(a_transpose),
1153                     m, n, kl, ku,
1154                     alpha,
1155                     a_buffer, a_offset, a_ld,
1156                     x_buffer, x_offset, x_inc,
1157                     beta,
1158                     y_buffer, y_offset, y_inc,
1159                     queue, event)
1160     );
1161   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1162 }
CLBlastDgbmv(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const size_t m,const size_t n,const size_t kl,const size_t ku,const double alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const double beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1163 CLBlastStatusCode CLBlastDgbmv(const CLBlastLayout layout, const CLBlastTranspose a_transpose,
1164                                const size_t m, const size_t n, const size_t kl, const size_t ku,
1165                                const double alpha,
1166                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1167                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1168                                const double beta,
1169                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1170                                cl_command_queue* queue, cl_event* event) {
1171   try {
1172     return static_cast<CLBlastStatusCode>(
1173       clblast::Gbmv(static_cast<clblast::Layout>(layout),
1174                     static_cast<clblast::Transpose>(a_transpose),
1175                     m, n, kl, ku,
1176                     alpha,
1177                     a_buffer, a_offset, a_ld,
1178                     x_buffer, x_offset, x_inc,
1179                     beta,
1180                     y_buffer, y_offset, y_inc,
1181                     queue, event)
1182     );
1183   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1184 }
CLBlastCgbmv(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const size_t m,const size_t n,const size_t kl,const size_t ku,const cl_float2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_float2 beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1185 CLBlastStatusCode CLBlastCgbmv(const CLBlastLayout layout, const CLBlastTranspose a_transpose,
1186                                const size_t m, const size_t n, const size_t kl, const size_t ku,
1187                                const cl_float2 alpha,
1188                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1189                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1190                                const cl_float2 beta,
1191                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1192                                cl_command_queue* queue, cl_event* event) {
1193   try {
1194     return static_cast<CLBlastStatusCode>(
1195       clblast::Gbmv(static_cast<clblast::Layout>(layout),
1196                     static_cast<clblast::Transpose>(a_transpose),
1197                     m, n, kl, ku,
1198                     float2{alpha.s[0], alpha.s[1]},
1199                     a_buffer, a_offset, a_ld,
1200                     x_buffer, x_offset, x_inc,
1201                     float2{beta.s[0], beta.s[1]},
1202                     y_buffer, y_offset, y_inc,
1203                     queue, event)
1204     );
1205   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1206 }
CLBlastZgbmv(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const size_t m,const size_t n,const size_t kl,const size_t ku,const cl_double2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_double2 beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1207 CLBlastStatusCode CLBlastZgbmv(const CLBlastLayout layout, const CLBlastTranspose a_transpose,
1208                                const size_t m, const size_t n, const size_t kl, const size_t ku,
1209                                const cl_double2 alpha,
1210                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1211                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1212                                const cl_double2 beta,
1213                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1214                                cl_command_queue* queue, cl_event* event) {
1215   try {
1216     return static_cast<CLBlastStatusCode>(
1217       clblast::Gbmv(static_cast<clblast::Layout>(layout),
1218                     static_cast<clblast::Transpose>(a_transpose),
1219                     m, n, kl, ku,
1220                     double2{alpha.s[0], alpha.s[1]},
1221                     a_buffer, a_offset, a_ld,
1222                     x_buffer, x_offset, x_inc,
1223                     double2{beta.s[0], beta.s[1]},
1224                     y_buffer, y_offset, y_inc,
1225                     queue, event)
1226     );
1227   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1228 }
CLBlastHgbmv(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const size_t m,const size_t n,const size_t kl,const size_t ku,const cl_half alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_half beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1229 CLBlastStatusCode CLBlastHgbmv(const CLBlastLayout layout, const CLBlastTranspose a_transpose,
1230                                const size_t m, const size_t n, const size_t kl, const size_t ku,
1231                                const cl_half alpha,
1232                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1233                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1234                                const cl_half beta,
1235                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1236                                cl_command_queue* queue, cl_event* event) {
1237   try {
1238     return static_cast<CLBlastStatusCode>(
1239       clblast::Gbmv(static_cast<clblast::Layout>(layout),
1240                     static_cast<clblast::Transpose>(a_transpose),
1241                     m, n, kl, ku,
1242                     alpha,
1243                     a_buffer, a_offset, a_ld,
1244                     x_buffer, x_offset, x_inc,
1245                     beta,
1246                     y_buffer, y_offset, y_inc,
1247                     queue, event)
1248     );
1249   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1250 }
1251 
1252 // HEMV
CLBlastChemv(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const cl_float2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_float2 beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1253 CLBlastStatusCode CLBlastChemv(const CLBlastLayout layout, const CLBlastTriangle triangle,
1254                                const size_t n,
1255                                const cl_float2 alpha,
1256                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1257                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1258                                const cl_float2 beta,
1259                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1260                                cl_command_queue* queue, cl_event* event) {
1261   try {
1262     return static_cast<CLBlastStatusCode>(
1263       clblast::Hemv(static_cast<clblast::Layout>(layout),
1264                     static_cast<clblast::Triangle>(triangle),
1265                     n,
1266                     float2{alpha.s[0], alpha.s[1]},
1267                     a_buffer, a_offset, a_ld,
1268                     x_buffer, x_offset, x_inc,
1269                     float2{beta.s[0], beta.s[1]},
1270                     y_buffer, y_offset, y_inc,
1271                     queue, event)
1272     );
1273   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1274 }
CLBlastZhemv(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const cl_double2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_double2 beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1275 CLBlastStatusCode CLBlastZhemv(const CLBlastLayout layout, const CLBlastTriangle triangle,
1276                                const size_t n,
1277                                const cl_double2 alpha,
1278                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1279                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1280                                const cl_double2 beta,
1281                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1282                                cl_command_queue* queue, cl_event* event) {
1283   try {
1284     return static_cast<CLBlastStatusCode>(
1285       clblast::Hemv(static_cast<clblast::Layout>(layout),
1286                     static_cast<clblast::Triangle>(triangle),
1287                     n,
1288                     double2{alpha.s[0], alpha.s[1]},
1289                     a_buffer, a_offset, a_ld,
1290                     x_buffer, x_offset, x_inc,
1291                     double2{beta.s[0], beta.s[1]},
1292                     y_buffer, y_offset, y_inc,
1293                     queue, event)
1294     );
1295   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1296 }
1297 
1298 // HBMV
CLBlastChbmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const size_t k,const cl_float2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_float2 beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1299 CLBlastStatusCode CLBlastChbmv(const CLBlastLayout layout, const CLBlastTriangle triangle,
1300                                const size_t n, const size_t k,
1301                                const cl_float2 alpha,
1302                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1303                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1304                                const cl_float2 beta,
1305                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1306                                cl_command_queue* queue, cl_event* event) {
1307   try {
1308     return static_cast<CLBlastStatusCode>(
1309       clblast::Hbmv(static_cast<clblast::Layout>(layout),
1310                     static_cast<clblast::Triangle>(triangle),
1311                     n, k,
1312                     float2{alpha.s[0], alpha.s[1]},
1313                     a_buffer, a_offset, a_ld,
1314                     x_buffer, x_offset, x_inc,
1315                     float2{beta.s[0], beta.s[1]},
1316                     y_buffer, y_offset, y_inc,
1317                     queue, event)
1318     );
1319   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1320 }
CLBlastZhbmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const size_t k,const cl_double2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_double2 beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1321 CLBlastStatusCode CLBlastZhbmv(const CLBlastLayout layout, const CLBlastTriangle triangle,
1322                                const size_t n, const size_t k,
1323                                const cl_double2 alpha,
1324                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1325                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1326                                const cl_double2 beta,
1327                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1328                                cl_command_queue* queue, cl_event* event) {
1329   try {
1330     return static_cast<CLBlastStatusCode>(
1331       clblast::Hbmv(static_cast<clblast::Layout>(layout),
1332                     static_cast<clblast::Triangle>(triangle),
1333                     n, k,
1334                     double2{alpha.s[0], alpha.s[1]},
1335                     a_buffer, a_offset, a_ld,
1336                     x_buffer, x_offset, x_inc,
1337                     double2{beta.s[0], beta.s[1]},
1338                     y_buffer, y_offset, y_inc,
1339                     queue, event)
1340     );
1341   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1342 }
1343 
1344 // HPMV
CLBlastChpmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const cl_float2 alpha,const cl_mem ap_buffer,const size_t ap_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_float2 beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1345 CLBlastStatusCode CLBlastChpmv(const CLBlastLayout layout, const CLBlastTriangle triangle,
1346                                const size_t n,
1347                                const cl_float2 alpha,
1348                                const cl_mem ap_buffer, const size_t ap_offset,
1349                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1350                                const cl_float2 beta,
1351                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1352                                cl_command_queue* queue, cl_event* event) {
1353   try {
1354     return static_cast<CLBlastStatusCode>(
1355       clblast::Hpmv(static_cast<clblast::Layout>(layout),
1356                     static_cast<clblast::Triangle>(triangle),
1357                     n,
1358                     float2{alpha.s[0], alpha.s[1]},
1359                     ap_buffer, ap_offset,
1360                     x_buffer, x_offset, x_inc,
1361                     float2{beta.s[0], beta.s[1]},
1362                     y_buffer, y_offset, y_inc,
1363                     queue, event)
1364     );
1365   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1366 }
CLBlastZhpmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const cl_double2 alpha,const cl_mem ap_buffer,const size_t ap_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_double2 beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1367 CLBlastStatusCode CLBlastZhpmv(const CLBlastLayout layout, const CLBlastTriangle triangle,
1368                                const size_t n,
1369                                const cl_double2 alpha,
1370                                const cl_mem ap_buffer, const size_t ap_offset,
1371                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1372                                const cl_double2 beta,
1373                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1374                                cl_command_queue* queue, cl_event* event) {
1375   try {
1376     return static_cast<CLBlastStatusCode>(
1377       clblast::Hpmv(static_cast<clblast::Layout>(layout),
1378                     static_cast<clblast::Triangle>(triangle),
1379                     n,
1380                     double2{alpha.s[0], alpha.s[1]},
1381                     ap_buffer, ap_offset,
1382                     x_buffer, x_offset, x_inc,
1383                     double2{beta.s[0], beta.s[1]},
1384                     y_buffer, y_offset, y_inc,
1385                     queue, event)
1386     );
1387   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1388 }
1389 
1390 // SYMV
CLBlastSsymv(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const float alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const float beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1391 CLBlastStatusCode CLBlastSsymv(const CLBlastLayout layout, const CLBlastTriangle triangle,
1392                                const size_t n,
1393                                const float alpha,
1394                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1395                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1396                                const float beta,
1397                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1398                                cl_command_queue* queue, cl_event* event) {
1399   try {
1400     return static_cast<CLBlastStatusCode>(
1401       clblast::Symv(static_cast<clblast::Layout>(layout),
1402                     static_cast<clblast::Triangle>(triangle),
1403                     n,
1404                     alpha,
1405                     a_buffer, a_offset, a_ld,
1406                     x_buffer, x_offset, x_inc,
1407                     beta,
1408                     y_buffer, y_offset, y_inc,
1409                     queue, event)
1410     );
1411   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1412 }
CLBlastDsymv(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const double alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const double beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1413 CLBlastStatusCode CLBlastDsymv(const CLBlastLayout layout, const CLBlastTriangle triangle,
1414                                const size_t n,
1415                                const double alpha,
1416                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1417                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1418                                const double beta,
1419                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1420                                cl_command_queue* queue, cl_event* event) {
1421   try {
1422     return static_cast<CLBlastStatusCode>(
1423       clblast::Symv(static_cast<clblast::Layout>(layout),
1424                     static_cast<clblast::Triangle>(triangle),
1425                     n,
1426                     alpha,
1427                     a_buffer, a_offset, a_ld,
1428                     x_buffer, x_offset, x_inc,
1429                     beta,
1430                     y_buffer, y_offset, y_inc,
1431                     queue, event)
1432     );
1433   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1434 }
CLBlastHsymv(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const cl_half alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_half beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1435 CLBlastStatusCode CLBlastHsymv(const CLBlastLayout layout, const CLBlastTriangle triangle,
1436                                const size_t n,
1437                                const cl_half alpha,
1438                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1439                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1440                                const cl_half beta,
1441                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1442                                cl_command_queue* queue, cl_event* event) {
1443   try {
1444     return static_cast<CLBlastStatusCode>(
1445       clblast::Symv(static_cast<clblast::Layout>(layout),
1446                     static_cast<clblast::Triangle>(triangle),
1447                     n,
1448                     alpha,
1449                     a_buffer, a_offset, a_ld,
1450                     x_buffer, x_offset, x_inc,
1451                     beta,
1452                     y_buffer, y_offset, y_inc,
1453                     queue, event)
1454     );
1455   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1456 }
1457 
1458 // SBMV
CLBlastSsbmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const size_t k,const float alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const float beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1459 CLBlastStatusCode CLBlastSsbmv(const CLBlastLayout layout, const CLBlastTriangle triangle,
1460                                const size_t n, const size_t k,
1461                                const float alpha,
1462                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1463                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1464                                const float beta,
1465                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1466                                cl_command_queue* queue, cl_event* event) {
1467   try {
1468     return static_cast<CLBlastStatusCode>(
1469       clblast::Sbmv(static_cast<clblast::Layout>(layout),
1470                     static_cast<clblast::Triangle>(triangle),
1471                     n, k,
1472                     alpha,
1473                     a_buffer, a_offset, a_ld,
1474                     x_buffer, x_offset, x_inc,
1475                     beta,
1476                     y_buffer, y_offset, y_inc,
1477                     queue, event)
1478     );
1479   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1480 }
CLBlastDsbmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const size_t k,const double alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const double beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1481 CLBlastStatusCode CLBlastDsbmv(const CLBlastLayout layout, const CLBlastTriangle triangle,
1482                                const size_t n, const size_t k,
1483                                const double alpha,
1484                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1485                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1486                                const double beta,
1487                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1488                                cl_command_queue* queue, cl_event* event) {
1489   try {
1490     return static_cast<CLBlastStatusCode>(
1491       clblast::Sbmv(static_cast<clblast::Layout>(layout),
1492                     static_cast<clblast::Triangle>(triangle),
1493                     n, k,
1494                     alpha,
1495                     a_buffer, a_offset, a_ld,
1496                     x_buffer, x_offset, x_inc,
1497                     beta,
1498                     y_buffer, y_offset, y_inc,
1499                     queue, event)
1500     );
1501   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1502 }
CLBlastHsbmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const size_t k,const cl_half alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_half beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1503 CLBlastStatusCode CLBlastHsbmv(const CLBlastLayout layout, const CLBlastTriangle triangle,
1504                                const size_t n, const size_t k,
1505                                const cl_half alpha,
1506                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1507                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1508                                const cl_half beta,
1509                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1510                                cl_command_queue* queue, cl_event* event) {
1511   try {
1512     return static_cast<CLBlastStatusCode>(
1513       clblast::Sbmv(static_cast<clblast::Layout>(layout),
1514                     static_cast<clblast::Triangle>(triangle),
1515                     n, k,
1516                     alpha,
1517                     a_buffer, a_offset, a_ld,
1518                     x_buffer, x_offset, x_inc,
1519                     beta,
1520                     y_buffer, y_offset, y_inc,
1521                     queue, event)
1522     );
1523   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1524 }
1525 
1526 // SPMV
CLBlastSspmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const float alpha,const cl_mem ap_buffer,const size_t ap_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const float beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1527 CLBlastStatusCode CLBlastSspmv(const CLBlastLayout layout, const CLBlastTriangle triangle,
1528                                const size_t n,
1529                                const float alpha,
1530                                const cl_mem ap_buffer, const size_t ap_offset,
1531                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1532                                const float beta,
1533                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1534                                cl_command_queue* queue, cl_event* event) {
1535   try {
1536     return static_cast<CLBlastStatusCode>(
1537       clblast::Spmv(static_cast<clblast::Layout>(layout),
1538                     static_cast<clblast::Triangle>(triangle),
1539                     n,
1540                     alpha,
1541                     ap_buffer, ap_offset,
1542                     x_buffer, x_offset, x_inc,
1543                     beta,
1544                     y_buffer, y_offset, y_inc,
1545                     queue, event)
1546     );
1547   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1548 }
CLBlastDspmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const double alpha,const cl_mem ap_buffer,const size_t ap_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const double beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1549 CLBlastStatusCode CLBlastDspmv(const CLBlastLayout layout, const CLBlastTriangle triangle,
1550                                const size_t n,
1551                                const double alpha,
1552                                const cl_mem ap_buffer, const size_t ap_offset,
1553                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1554                                const double beta,
1555                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1556                                cl_command_queue* queue, cl_event* event) {
1557   try {
1558     return static_cast<CLBlastStatusCode>(
1559       clblast::Spmv(static_cast<clblast::Layout>(layout),
1560                     static_cast<clblast::Triangle>(triangle),
1561                     n,
1562                     alpha,
1563                     ap_buffer, ap_offset,
1564                     x_buffer, x_offset, x_inc,
1565                     beta,
1566                     y_buffer, y_offset, y_inc,
1567                     queue, event)
1568     );
1569   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1570 }
CLBlastHspmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const cl_half alpha,const cl_mem ap_buffer,const size_t ap_offset,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_half beta,cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_command_queue * queue,cl_event * event)1571 CLBlastStatusCode CLBlastHspmv(const CLBlastLayout layout, const CLBlastTriangle triangle,
1572                                const size_t n,
1573                                const cl_half alpha,
1574                                const cl_mem ap_buffer, const size_t ap_offset,
1575                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1576                                const cl_half beta,
1577                                cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
1578                                cl_command_queue* queue, cl_event* event) {
1579   try {
1580     return static_cast<CLBlastStatusCode>(
1581       clblast::Spmv(static_cast<clblast::Layout>(layout),
1582                     static_cast<clblast::Triangle>(triangle),
1583                     n,
1584                     alpha,
1585                     ap_buffer, ap_offset,
1586                     x_buffer, x_offset, x_inc,
1587                     beta,
1588                     y_buffer, y_offset, y_inc,
1589                     queue, event)
1590     );
1591   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1592 }
1593 
1594 // TRMV
CLBlastStrmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1595 CLBlastStatusCode CLBlastStrmv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1596                                const size_t n,
1597                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1598                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1599                                cl_command_queue* queue, cl_event* event) {
1600   try {
1601     return static_cast<CLBlastStatusCode>(
1602       clblast::Trmv<float>(static_cast<clblast::Layout>(layout),
1603                            static_cast<clblast::Triangle>(triangle),
1604                            static_cast<clblast::Transpose>(a_transpose),
1605                            static_cast<clblast::Diagonal>(diagonal),
1606                            n,
1607                            a_buffer, a_offset, a_ld,
1608                            x_buffer, x_offset, x_inc,
1609                            queue, event)
1610     );
1611   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1612 }
CLBlastDtrmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1613 CLBlastStatusCode CLBlastDtrmv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1614                                const size_t n,
1615                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1616                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1617                                cl_command_queue* queue, cl_event* event) {
1618   try {
1619     return static_cast<CLBlastStatusCode>(
1620       clblast::Trmv<double>(static_cast<clblast::Layout>(layout),
1621                             static_cast<clblast::Triangle>(triangle),
1622                             static_cast<clblast::Transpose>(a_transpose),
1623                             static_cast<clblast::Diagonal>(diagonal),
1624                             n,
1625                             a_buffer, a_offset, a_ld,
1626                             x_buffer, x_offset, x_inc,
1627                             queue, event)
1628     );
1629   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1630 }
CLBlastCtrmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1631 CLBlastStatusCode CLBlastCtrmv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1632                                const size_t n,
1633                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1634                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1635                                cl_command_queue* queue, cl_event* event) {
1636   try {
1637     return static_cast<CLBlastStatusCode>(
1638       clblast::Trmv<float2>(static_cast<clblast::Layout>(layout),
1639                             static_cast<clblast::Triangle>(triangle),
1640                             static_cast<clblast::Transpose>(a_transpose),
1641                             static_cast<clblast::Diagonal>(diagonal),
1642                             n,
1643                             a_buffer, a_offset, a_ld,
1644                             x_buffer, x_offset, x_inc,
1645                             queue, event)
1646     );
1647   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1648 }
CLBlastZtrmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1649 CLBlastStatusCode CLBlastZtrmv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1650                                const size_t n,
1651                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1652                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1653                                cl_command_queue* queue, cl_event* event) {
1654   try {
1655     return static_cast<CLBlastStatusCode>(
1656       clblast::Trmv<double2>(static_cast<clblast::Layout>(layout),
1657                              static_cast<clblast::Triangle>(triangle),
1658                              static_cast<clblast::Transpose>(a_transpose),
1659                              static_cast<clblast::Diagonal>(diagonal),
1660                              n,
1661                              a_buffer, a_offset, a_ld,
1662                              x_buffer, x_offset, x_inc,
1663                              queue, event)
1664     );
1665   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1666 }
CLBlastHtrmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1667 CLBlastStatusCode CLBlastHtrmv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1668                                const size_t n,
1669                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1670                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1671                                cl_command_queue* queue, cl_event* event) {
1672   try {
1673     return static_cast<CLBlastStatusCode>(
1674       clblast::Trmv<half>(static_cast<clblast::Layout>(layout),
1675                           static_cast<clblast::Triangle>(triangle),
1676                           static_cast<clblast::Transpose>(a_transpose),
1677                           static_cast<clblast::Diagonal>(diagonal),
1678                           n,
1679                           a_buffer, a_offset, a_ld,
1680                           x_buffer, x_offset, x_inc,
1681                           queue, event)
1682     );
1683   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1684 }
1685 
1686 // TBMV
CLBlastStbmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const size_t k,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1687 CLBlastStatusCode CLBlastStbmv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1688                                const size_t n, const size_t k,
1689                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1690                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1691                                cl_command_queue* queue, cl_event* event) {
1692   try {
1693     return static_cast<CLBlastStatusCode>(
1694       clblast::Tbmv<float>(static_cast<clblast::Layout>(layout),
1695                            static_cast<clblast::Triangle>(triangle),
1696                            static_cast<clblast::Transpose>(a_transpose),
1697                            static_cast<clblast::Diagonal>(diagonal),
1698                            n, k,
1699                            a_buffer, a_offset, a_ld,
1700                            x_buffer, x_offset, x_inc,
1701                            queue, event)
1702     );
1703   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1704 }
CLBlastDtbmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const size_t k,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1705 CLBlastStatusCode CLBlastDtbmv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1706                                const size_t n, const size_t k,
1707                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1708                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1709                                cl_command_queue* queue, cl_event* event) {
1710   try {
1711     return static_cast<CLBlastStatusCode>(
1712       clblast::Tbmv<double>(static_cast<clblast::Layout>(layout),
1713                             static_cast<clblast::Triangle>(triangle),
1714                             static_cast<clblast::Transpose>(a_transpose),
1715                             static_cast<clblast::Diagonal>(diagonal),
1716                             n, k,
1717                             a_buffer, a_offset, a_ld,
1718                             x_buffer, x_offset, x_inc,
1719                             queue, event)
1720     );
1721   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1722 }
CLBlastCtbmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const size_t k,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1723 CLBlastStatusCode CLBlastCtbmv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1724                                const size_t n, const size_t k,
1725                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1726                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1727                                cl_command_queue* queue, cl_event* event) {
1728   try {
1729     return static_cast<CLBlastStatusCode>(
1730       clblast::Tbmv<float2>(static_cast<clblast::Layout>(layout),
1731                             static_cast<clblast::Triangle>(triangle),
1732                             static_cast<clblast::Transpose>(a_transpose),
1733                             static_cast<clblast::Diagonal>(diagonal),
1734                             n, k,
1735                             a_buffer, a_offset, a_ld,
1736                             x_buffer, x_offset, x_inc,
1737                             queue, event)
1738     );
1739   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1740 }
CLBlastZtbmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const size_t k,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1741 CLBlastStatusCode CLBlastZtbmv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1742                                const size_t n, const size_t k,
1743                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1744                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1745                                cl_command_queue* queue, cl_event* event) {
1746   try {
1747     return static_cast<CLBlastStatusCode>(
1748       clblast::Tbmv<double2>(static_cast<clblast::Layout>(layout),
1749                              static_cast<clblast::Triangle>(triangle),
1750                              static_cast<clblast::Transpose>(a_transpose),
1751                              static_cast<clblast::Diagonal>(diagonal),
1752                              n, k,
1753                              a_buffer, a_offset, a_ld,
1754                              x_buffer, x_offset, x_inc,
1755                              queue, event)
1756     );
1757   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1758 }
CLBlastHtbmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const size_t k,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1759 CLBlastStatusCode CLBlastHtbmv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1760                                const size_t n, const size_t k,
1761                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1762                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1763                                cl_command_queue* queue, cl_event* event) {
1764   try {
1765     return static_cast<CLBlastStatusCode>(
1766       clblast::Tbmv<half>(static_cast<clblast::Layout>(layout),
1767                           static_cast<clblast::Triangle>(triangle),
1768                           static_cast<clblast::Transpose>(a_transpose),
1769                           static_cast<clblast::Diagonal>(diagonal),
1770                           n, k,
1771                           a_buffer, a_offset, a_ld,
1772                           x_buffer, x_offset, x_inc,
1773                           queue, event)
1774     );
1775   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1776 }
1777 
1778 // TPMV
CLBlastStpmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const cl_mem ap_buffer,const size_t ap_offset,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1779 CLBlastStatusCode CLBlastStpmv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1780                                const size_t n,
1781                                const cl_mem ap_buffer, const size_t ap_offset,
1782                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1783                                cl_command_queue* queue, cl_event* event) {
1784   try {
1785     return static_cast<CLBlastStatusCode>(
1786       clblast::Tpmv<float>(static_cast<clblast::Layout>(layout),
1787                            static_cast<clblast::Triangle>(triangle),
1788                            static_cast<clblast::Transpose>(a_transpose),
1789                            static_cast<clblast::Diagonal>(diagonal),
1790                            n,
1791                            ap_buffer, ap_offset,
1792                            x_buffer, x_offset, x_inc,
1793                            queue, event)
1794     );
1795   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1796 }
CLBlastDtpmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const cl_mem ap_buffer,const size_t ap_offset,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1797 CLBlastStatusCode CLBlastDtpmv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1798                                const size_t n,
1799                                const cl_mem ap_buffer, const size_t ap_offset,
1800                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1801                                cl_command_queue* queue, cl_event* event) {
1802   try {
1803     return static_cast<CLBlastStatusCode>(
1804       clblast::Tpmv<double>(static_cast<clblast::Layout>(layout),
1805                             static_cast<clblast::Triangle>(triangle),
1806                             static_cast<clblast::Transpose>(a_transpose),
1807                             static_cast<clblast::Diagonal>(diagonal),
1808                             n,
1809                             ap_buffer, ap_offset,
1810                             x_buffer, x_offset, x_inc,
1811                             queue, event)
1812     );
1813   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1814 }
CLBlastCtpmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const cl_mem ap_buffer,const size_t ap_offset,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1815 CLBlastStatusCode CLBlastCtpmv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1816                                const size_t n,
1817                                const cl_mem ap_buffer, const size_t ap_offset,
1818                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1819                                cl_command_queue* queue, cl_event* event) {
1820   try {
1821     return static_cast<CLBlastStatusCode>(
1822       clblast::Tpmv<float2>(static_cast<clblast::Layout>(layout),
1823                             static_cast<clblast::Triangle>(triangle),
1824                             static_cast<clblast::Transpose>(a_transpose),
1825                             static_cast<clblast::Diagonal>(diagonal),
1826                             n,
1827                             ap_buffer, ap_offset,
1828                             x_buffer, x_offset, x_inc,
1829                             queue, event)
1830     );
1831   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1832 }
CLBlastZtpmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const cl_mem ap_buffer,const size_t ap_offset,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1833 CLBlastStatusCode CLBlastZtpmv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1834                                const size_t n,
1835                                const cl_mem ap_buffer, const size_t ap_offset,
1836                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1837                                cl_command_queue* queue, cl_event* event) {
1838   try {
1839     return static_cast<CLBlastStatusCode>(
1840       clblast::Tpmv<double2>(static_cast<clblast::Layout>(layout),
1841                              static_cast<clblast::Triangle>(triangle),
1842                              static_cast<clblast::Transpose>(a_transpose),
1843                              static_cast<clblast::Diagonal>(diagonal),
1844                              n,
1845                              ap_buffer, ap_offset,
1846                              x_buffer, x_offset, x_inc,
1847                              queue, event)
1848     );
1849   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1850 }
CLBlastHtpmv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const cl_mem ap_buffer,const size_t ap_offset,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1851 CLBlastStatusCode CLBlastHtpmv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1852                                const size_t n,
1853                                const cl_mem ap_buffer, const size_t ap_offset,
1854                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1855                                cl_command_queue* queue, cl_event* event) {
1856   try {
1857     return static_cast<CLBlastStatusCode>(
1858       clblast::Tpmv<half>(static_cast<clblast::Layout>(layout),
1859                           static_cast<clblast::Triangle>(triangle),
1860                           static_cast<clblast::Transpose>(a_transpose),
1861                           static_cast<clblast::Diagonal>(diagonal),
1862                           n,
1863                           ap_buffer, ap_offset,
1864                           x_buffer, x_offset, x_inc,
1865                           queue, event)
1866     );
1867   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1868 }
1869 
1870 // TRSV
CLBlastStrsv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1871 CLBlastStatusCode CLBlastStrsv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1872                                const size_t n,
1873                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1874                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1875                                cl_command_queue* queue, cl_event* event) {
1876   try {
1877     return static_cast<CLBlastStatusCode>(
1878       clblast::Trsv<float>(static_cast<clblast::Layout>(layout),
1879                            static_cast<clblast::Triangle>(triangle),
1880                            static_cast<clblast::Transpose>(a_transpose),
1881                            static_cast<clblast::Diagonal>(diagonal),
1882                            n,
1883                            a_buffer, a_offset, a_ld,
1884                            x_buffer, x_offset, x_inc,
1885                            queue, event)
1886     );
1887   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1888 }
CLBlastDtrsv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1889 CLBlastStatusCode CLBlastDtrsv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1890                                const size_t n,
1891                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1892                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1893                                cl_command_queue* queue, cl_event* event) {
1894   try {
1895     return static_cast<CLBlastStatusCode>(
1896       clblast::Trsv<double>(static_cast<clblast::Layout>(layout),
1897                             static_cast<clblast::Triangle>(triangle),
1898                             static_cast<clblast::Transpose>(a_transpose),
1899                             static_cast<clblast::Diagonal>(diagonal),
1900                             n,
1901                             a_buffer, a_offset, a_ld,
1902                             x_buffer, x_offset, x_inc,
1903                             queue, event)
1904     );
1905   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1906 }
CLBlastCtrsv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1907 CLBlastStatusCode CLBlastCtrsv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1908                                const size_t n,
1909                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1910                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1911                                cl_command_queue* queue, cl_event* event) {
1912   try {
1913     return static_cast<CLBlastStatusCode>(
1914       clblast::Trsv<float2>(static_cast<clblast::Layout>(layout),
1915                             static_cast<clblast::Triangle>(triangle),
1916                             static_cast<clblast::Transpose>(a_transpose),
1917                             static_cast<clblast::Diagonal>(diagonal),
1918                             n,
1919                             a_buffer, a_offset, a_ld,
1920                             x_buffer, x_offset, x_inc,
1921                             queue, event)
1922     );
1923   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1924 }
CLBlastZtrsv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1925 CLBlastStatusCode CLBlastZtrsv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1926                                const size_t n,
1927                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1928                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1929                                cl_command_queue* queue, cl_event* event) {
1930   try {
1931     return static_cast<CLBlastStatusCode>(
1932       clblast::Trsv<double2>(static_cast<clblast::Layout>(layout),
1933                              static_cast<clblast::Triangle>(triangle),
1934                              static_cast<clblast::Transpose>(a_transpose),
1935                              static_cast<clblast::Diagonal>(diagonal),
1936                              n,
1937                              a_buffer, a_offset, a_ld,
1938                              x_buffer, x_offset, x_inc,
1939                              queue, event)
1940     );
1941   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1942 }
1943 
1944 // TBSV
CLBlastStbsv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const size_t k,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1945 CLBlastStatusCode CLBlastStbsv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1946                                const size_t n, const size_t k,
1947                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1948                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1949                                cl_command_queue* queue, cl_event* event) {
1950   try {
1951     return static_cast<CLBlastStatusCode>(
1952       clblast::Tbsv<float>(static_cast<clblast::Layout>(layout),
1953                            static_cast<clblast::Triangle>(triangle),
1954                            static_cast<clblast::Transpose>(a_transpose),
1955                            static_cast<clblast::Diagonal>(diagonal),
1956                            n, k,
1957                            a_buffer, a_offset, a_ld,
1958                            x_buffer, x_offset, x_inc,
1959                            queue, event)
1960     );
1961   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1962 }
CLBlastDtbsv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const size_t k,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1963 CLBlastStatusCode CLBlastDtbsv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1964                                const size_t n, const size_t k,
1965                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1966                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1967                                cl_command_queue* queue, cl_event* event) {
1968   try {
1969     return static_cast<CLBlastStatusCode>(
1970       clblast::Tbsv<double>(static_cast<clblast::Layout>(layout),
1971                             static_cast<clblast::Triangle>(triangle),
1972                             static_cast<clblast::Transpose>(a_transpose),
1973                             static_cast<clblast::Diagonal>(diagonal),
1974                             n, k,
1975                             a_buffer, a_offset, a_ld,
1976                             x_buffer, x_offset, x_inc,
1977                             queue, event)
1978     );
1979   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1980 }
CLBlastCtbsv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const size_t k,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1981 CLBlastStatusCode CLBlastCtbsv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
1982                                const size_t n, const size_t k,
1983                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
1984                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
1985                                cl_command_queue* queue, cl_event* event) {
1986   try {
1987     return static_cast<CLBlastStatusCode>(
1988       clblast::Tbsv<float2>(static_cast<clblast::Layout>(layout),
1989                             static_cast<clblast::Triangle>(triangle),
1990                             static_cast<clblast::Transpose>(a_transpose),
1991                             static_cast<clblast::Diagonal>(diagonal),
1992                             n, k,
1993                             a_buffer, a_offset, a_ld,
1994                             x_buffer, x_offset, x_inc,
1995                             queue, event)
1996     );
1997   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
1998 }
CLBlastZtbsv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const size_t k,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)1999 CLBlastStatusCode CLBlastZtbsv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
2000                                const size_t n, const size_t k,
2001                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2002                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2003                                cl_command_queue* queue, cl_event* event) {
2004   try {
2005     return static_cast<CLBlastStatusCode>(
2006       clblast::Tbsv<double2>(static_cast<clblast::Layout>(layout),
2007                              static_cast<clblast::Triangle>(triangle),
2008                              static_cast<clblast::Transpose>(a_transpose),
2009                              static_cast<clblast::Diagonal>(diagonal),
2010                              n, k,
2011                              a_buffer, a_offset, a_ld,
2012                              x_buffer, x_offset, x_inc,
2013                              queue, event)
2014     );
2015   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2016 }
2017 
2018 // TPSV
CLBlastStpsv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const cl_mem ap_buffer,const size_t ap_offset,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)2019 CLBlastStatusCode CLBlastStpsv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
2020                                const size_t n,
2021                                const cl_mem ap_buffer, const size_t ap_offset,
2022                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2023                                cl_command_queue* queue, cl_event* event) {
2024   try {
2025     return static_cast<CLBlastStatusCode>(
2026       clblast::Tpsv<float>(static_cast<clblast::Layout>(layout),
2027                            static_cast<clblast::Triangle>(triangle),
2028                            static_cast<clblast::Transpose>(a_transpose),
2029                            static_cast<clblast::Diagonal>(diagonal),
2030                            n,
2031                            ap_buffer, ap_offset,
2032                            x_buffer, x_offset, x_inc,
2033                            queue, event)
2034     );
2035   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2036 }
CLBlastDtpsv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const cl_mem ap_buffer,const size_t ap_offset,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)2037 CLBlastStatusCode CLBlastDtpsv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
2038                                const size_t n,
2039                                const cl_mem ap_buffer, const size_t ap_offset,
2040                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2041                                cl_command_queue* queue, cl_event* event) {
2042   try {
2043     return static_cast<CLBlastStatusCode>(
2044       clblast::Tpsv<double>(static_cast<clblast::Layout>(layout),
2045                             static_cast<clblast::Triangle>(triangle),
2046                             static_cast<clblast::Transpose>(a_transpose),
2047                             static_cast<clblast::Diagonal>(diagonal),
2048                             n,
2049                             ap_buffer, ap_offset,
2050                             x_buffer, x_offset, x_inc,
2051                             queue, event)
2052     );
2053   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2054 }
CLBlastCtpsv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const cl_mem ap_buffer,const size_t ap_offset,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)2055 CLBlastStatusCode CLBlastCtpsv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
2056                                const size_t n,
2057                                const cl_mem ap_buffer, const size_t ap_offset,
2058                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2059                                cl_command_queue* queue, cl_event* event) {
2060   try {
2061     return static_cast<CLBlastStatusCode>(
2062       clblast::Tpsv<float2>(static_cast<clblast::Layout>(layout),
2063                             static_cast<clblast::Triangle>(triangle),
2064                             static_cast<clblast::Transpose>(a_transpose),
2065                             static_cast<clblast::Diagonal>(diagonal),
2066                             n,
2067                             ap_buffer, ap_offset,
2068                             x_buffer, x_offset, x_inc,
2069                             queue, event)
2070     );
2071   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2072 }
CLBlastZtpsv(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t n,const cl_mem ap_buffer,const size_t ap_offset,cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_command_queue * queue,cl_event * event)2073 CLBlastStatusCode CLBlastZtpsv(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
2074                                const size_t n,
2075                                const cl_mem ap_buffer, const size_t ap_offset,
2076                                cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2077                                cl_command_queue* queue, cl_event* event) {
2078   try {
2079     return static_cast<CLBlastStatusCode>(
2080       clblast::Tpsv<double2>(static_cast<clblast::Layout>(layout),
2081                              static_cast<clblast::Triangle>(triangle),
2082                              static_cast<clblast::Transpose>(a_transpose),
2083                              static_cast<clblast::Diagonal>(diagonal),
2084                              n,
2085                              ap_buffer, ap_offset,
2086                              x_buffer, x_offset, x_inc,
2087                              queue, event)
2088     );
2089   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2090 }
2091 
2092 // GER
CLBlastSger(const CLBlastLayout layout,const size_t m,const size_t n,const float alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_command_queue * queue,cl_event * event)2093 CLBlastStatusCode CLBlastSger(const CLBlastLayout layout,
2094                               const size_t m, const size_t n,
2095                               const float alpha,
2096                               const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2097                               const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
2098                               cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2099                               cl_command_queue* queue, cl_event* event) {
2100   try {
2101     return static_cast<CLBlastStatusCode>(
2102       clblast::Ger(static_cast<clblast::Layout>(layout),
2103                    m, n,
2104                    alpha,
2105                    x_buffer, x_offset, x_inc,
2106                    y_buffer, y_offset, y_inc,
2107                    a_buffer, a_offset, a_ld,
2108                    queue, event)
2109     );
2110   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2111 }
CLBlastDger(const CLBlastLayout layout,const size_t m,const size_t n,const double alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_command_queue * queue,cl_event * event)2112 CLBlastStatusCode CLBlastDger(const CLBlastLayout layout,
2113                               const size_t m, const size_t n,
2114                               const double alpha,
2115                               const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2116                               const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
2117                               cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2118                               cl_command_queue* queue, cl_event* event) {
2119   try {
2120     return static_cast<CLBlastStatusCode>(
2121       clblast::Ger(static_cast<clblast::Layout>(layout),
2122                    m, n,
2123                    alpha,
2124                    x_buffer, x_offset, x_inc,
2125                    y_buffer, y_offset, y_inc,
2126                    a_buffer, a_offset, a_ld,
2127                    queue, event)
2128     );
2129   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2130 }
CLBlastHger(const CLBlastLayout layout,const size_t m,const size_t n,const cl_half alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_command_queue * queue,cl_event * event)2131 CLBlastStatusCode CLBlastHger(const CLBlastLayout layout,
2132                               const size_t m, const size_t n,
2133                               const cl_half alpha,
2134                               const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2135                               const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
2136                               cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2137                               cl_command_queue* queue, cl_event* event) {
2138   try {
2139     return static_cast<CLBlastStatusCode>(
2140       clblast::Ger(static_cast<clblast::Layout>(layout),
2141                    m, n,
2142                    alpha,
2143                    x_buffer, x_offset, x_inc,
2144                    y_buffer, y_offset, y_inc,
2145                    a_buffer, a_offset, a_ld,
2146                    queue, event)
2147     );
2148   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2149 }
2150 
2151 // GERU
CLBlastCgeru(const CLBlastLayout layout,const size_t m,const size_t n,const cl_float2 alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_command_queue * queue,cl_event * event)2152 CLBlastStatusCode CLBlastCgeru(const CLBlastLayout layout,
2153                                const size_t m, const size_t n,
2154                                const cl_float2 alpha,
2155                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2156                                const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
2157                                cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2158                                cl_command_queue* queue, cl_event* event) {
2159   try {
2160     return static_cast<CLBlastStatusCode>(
2161       clblast::Geru(static_cast<clblast::Layout>(layout),
2162                     m, n,
2163                     float2{alpha.s[0], alpha.s[1]},
2164                     x_buffer, x_offset, x_inc,
2165                     y_buffer, y_offset, y_inc,
2166                     a_buffer, a_offset, a_ld,
2167                     queue, event)
2168     );
2169   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2170 }
CLBlastZgeru(const CLBlastLayout layout,const size_t m,const size_t n,const cl_double2 alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_command_queue * queue,cl_event * event)2171 CLBlastStatusCode CLBlastZgeru(const CLBlastLayout layout,
2172                                const size_t m, const size_t n,
2173                                const cl_double2 alpha,
2174                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2175                                const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
2176                                cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2177                                cl_command_queue* queue, cl_event* event) {
2178   try {
2179     return static_cast<CLBlastStatusCode>(
2180       clblast::Geru(static_cast<clblast::Layout>(layout),
2181                     m, n,
2182                     double2{alpha.s[0], alpha.s[1]},
2183                     x_buffer, x_offset, x_inc,
2184                     y_buffer, y_offset, y_inc,
2185                     a_buffer, a_offset, a_ld,
2186                     queue, event)
2187     );
2188   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2189 }
2190 
2191 // GERC
CLBlastCgerc(const CLBlastLayout layout,const size_t m,const size_t n,const cl_float2 alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_command_queue * queue,cl_event * event)2192 CLBlastStatusCode CLBlastCgerc(const CLBlastLayout layout,
2193                                const size_t m, const size_t n,
2194                                const cl_float2 alpha,
2195                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2196                                const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
2197                                cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2198                                cl_command_queue* queue, cl_event* event) {
2199   try {
2200     return static_cast<CLBlastStatusCode>(
2201       clblast::Gerc(static_cast<clblast::Layout>(layout),
2202                     m, n,
2203                     float2{alpha.s[0], alpha.s[1]},
2204                     x_buffer, x_offset, x_inc,
2205                     y_buffer, y_offset, y_inc,
2206                     a_buffer, a_offset, a_ld,
2207                     queue, event)
2208     );
2209   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2210 }
CLBlastZgerc(const CLBlastLayout layout,const size_t m,const size_t n,const cl_double2 alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_command_queue * queue,cl_event * event)2211 CLBlastStatusCode CLBlastZgerc(const CLBlastLayout layout,
2212                                const size_t m, const size_t n,
2213                                const cl_double2 alpha,
2214                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2215                                const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
2216                                cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2217                                cl_command_queue* queue, cl_event* event) {
2218   try {
2219     return static_cast<CLBlastStatusCode>(
2220       clblast::Gerc(static_cast<clblast::Layout>(layout),
2221                     m, n,
2222                     double2{alpha.s[0], alpha.s[1]},
2223                     x_buffer, x_offset, x_inc,
2224                     y_buffer, y_offset, y_inc,
2225                     a_buffer, a_offset, a_ld,
2226                     queue, event)
2227     );
2228   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2229 }
2230 
2231 // HER
CLBlastCher(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const float alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_command_queue * queue,cl_event * event)2232 CLBlastStatusCode CLBlastCher(const CLBlastLayout layout, const CLBlastTriangle triangle,
2233                               const size_t n,
2234                               const float alpha,
2235                               const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2236                               cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2237                               cl_command_queue* queue, cl_event* event) {
2238   try {
2239     return static_cast<CLBlastStatusCode>(
2240       clblast::Her(static_cast<clblast::Layout>(layout),
2241                    static_cast<clblast::Triangle>(triangle),
2242                    n,
2243                    alpha,
2244                    x_buffer, x_offset, x_inc,
2245                    a_buffer, a_offset, a_ld,
2246                    queue, event)
2247     );
2248   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2249 }
CLBlastZher(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const double alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_command_queue * queue,cl_event * event)2250 CLBlastStatusCode CLBlastZher(const CLBlastLayout layout, const CLBlastTriangle triangle,
2251                               const size_t n,
2252                               const double alpha,
2253                               const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2254                               cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2255                               cl_command_queue* queue, cl_event* event) {
2256   try {
2257     return static_cast<CLBlastStatusCode>(
2258       clblast::Her(static_cast<clblast::Layout>(layout),
2259                    static_cast<clblast::Triangle>(triangle),
2260                    n,
2261                    alpha,
2262                    x_buffer, x_offset, x_inc,
2263                    a_buffer, a_offset, a_ld,
2264                    queue, event)
2265     );
2266   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2267 }
2268 
2269 // HPR
CLBlastChpr(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const float alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem ap_buffer,const size_t ap_offset,cl_command_queue * queue,cl_event * event)2270 CLBlastStatusCode CLBlastChpr(const CLBlastLayout layout, const CLBlastTriangle triangle,
2271                               const size_t n,
2272                               const float alpha,
2273                               const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2274                               cl_mem ap_buffer, const size_t ap_offset,
2275                               cl_command_queue* queue, cl_event* event) {
2276   try {
2277     return static_cast<CLBlastStatusCode>(
2278       clblast::Hpr(static_cast<clblast::Layout>(layout),
2279                    static_cast<clblast::Triangle>(triangle),
2280                    n,
2281                    alpha,
2282                    x_buffer, x_offset, x_inc,
2283                    ap_buffer, ap_offset,
2284                    queue, event)
2285     );
2286   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2287 }
CLBlastZhpr(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const double alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem ap_buffer,const size_t ap_offset,cl_command_queue * queue,cl_event * event)2288 CLBlastStatusCode CLBlastZhpr(const CLBlastLayout layout, const CLBlastTriangle triangle,
2289                               const size_t n,
2290                               const double alpha,
2291                               const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2292                               cl_mem ap_buffer, const size_t ap_offset,
2293                               cl_command_queue* queue, cl_event* event) {
2294   try {
2295     return static_cast<CLBlastStatusCode>(
2296       clblast::Hpr(static_cast<clblast::Layout>(layout),
2297                    static_cast<clblast::Triangle>(triangle),
2298                    n,
2299                    alpha,
2300                    x_buffer, x_offset, x_inc,
2301                    ap_buffer, ap_offset,
2302                    queue, event)
2303     );
2304   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2305 }
2306 
2307 // HER2
CLBlastCher2(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const cl_float2 alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_command_queue * queue,cl_event * event)2308 CLBlastStatusCode CLBlastCher2(const CLBlastLayout layout, const CLBlastTriangle triangle,
2309                                const size_t n,
2310                                const cl_float2 alpha,
2311                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2312                                const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
2313                                cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2314                                cl_command_queue* queue, cl_event* event) {
2315   try {
2316     return static_cast<CLBlastStatusCode>(
2317       clblast::Her2(static_cast<clblast::Layout>(layout),
2318                     static_cast<clblast::Triangle>(triangle),
2319                     n,
2320                     float2{alpha.s[0], alpha.s[1]},
2321                     x_buffer, x_offset, x_inc,
2322                     y_buffer, y_offset, y_inc,
2323                     a_buffer, a_offset, a_ld,
2324                     queue, event)
2325     );
2326   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2327 }
CLBlastZher2(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const cl_double2 alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_command_queue * queue,cl_event * event)2328 CLBlastStatusCode CLBlastZher2(const CLBlastLayout layout, const CLBlastTriangle triangle,
2329                                const size_t n,
2330                                const cl_double2 alpha,
2331                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2332                                const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
2333                                cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2334                                cl_command_queue* queue, cl_event* event) {
2335   try {
2336     return static_cast<CLBlastStatusCode>(
2337       clblast::Her2(static_cast<clblast::Layout>(layout),
2338                     static_cast<clblast::Triangle>(triangle),
2339                     n,
2340                     double2{alpha.s[0], alpha.s[1]},
2341                     x_buffer, x_offset, x_inc,
2342                     y_buffer, y_offset, y_inc,
2343                     a_buffer, a_offset, a_ld,
2344                     queue, event)
2345     );
2346   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2347 }
2348 
2349 // HPR2
CLBlastChpr2(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const cl_float2 alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_mem ap_buffer,const size_t ap_offset,cl_command_queue * queue,cl_event * event)2350 CLBlastStatusCode CLBlastChpr2(const CLBlastLayout layout, const CLBlastTriangle triangle,
2351                                const size_t n,
2352                                const cl_float2 alpha,
2353                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2354                                const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
2355                                cl_mem ap_buffer, const size_t ap_offset,
2356                                cl_command_queue* queue, cl_event* event) {
2357   try {
2358     return static_cast<CLBlastStatusCode>(
2359       clblast::Hpr2(static_cast<clblast::Layout>(layout),
2360                     static_cast<clblast::Triangle>(triangle),
2361                     n,
2362                     float2{alpha.s[0], alpha.s[1]},
2363                     x_buffer, x_offset, x_inc,
2364                     y_buffer, y_offset, y_inc,
2365                     ap_buffer, ap_offset,
2366                     queue, event)
2367     );
2368   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2369 }
CLBlastZhpr2(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const cl_double2 alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_mem ap_buffer,const size_t ap_offset,cl_command_queue * queue,cl_event * event)2370 CLBlastStatusCode CLBlastZhpr2(const CLBlastLayout layout, const CLBlastTriangle triangle,
2371                                const size_t n,
2372                                const cl_double2 alpha,
2373                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2374                                const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
2375                                cl_mem ap_buffer, const size_t ap_offset,
2376                                cl_command_queue* queue, cl_event* event) {
2377   try {
2378     return static_cast<CLBlastStatusCode>(
2379       clblast::Hpr2(static_cast<clblast::Layout>(layout),
2380                     static_cast<clblast::Triangle>(triangle),
2381                     n,
2382                     double2{alpha.s[0], alpha.s[1]},
2383                     x_buffer, x_offset, x_inc,
2384                     y_buffer, y_offset, y_inc,
2385                     ap_buffer, ap_offset,
2386                     queue, event)
2387     );
2388   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2389 }
2390 
2391 // SYR
CLBlastSsyr(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const float alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_command_queue * queue,cl_event * event)2392 CLBlastStatusCode CLBlastSsyr(const CLBlastLayout layout, const CLBlastTriangle triangle,
2393                               const size_t n,
2394                               const float alpha,
2395                               const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2396                               cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2397                               cl_command_queue* queue, cl_event* event) {
2398   try {
2399     return static_cast<CLBlastStatusCode>(
2400       clblast::Syr(static_cast<clblast::Layout>(layout),
2401                    static_cast<clblast::Triangle>(triangle),
2402                    n,
2403                    alpha,
2404                    x_buffer, x_offset, x_inc,
2405                    a_buffer, a_offset, a_ld,
2406                    queue, event)
2407     );
2408   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2409 }
CLBlastDsyr(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const double alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_command_queue * queue,cl_event * event)2410 CLBlastStatusCode CLBlastDsyr(const CLBlastLayout layout, const CLBlastTriangle triangle,
2411                               const size_t n,
2412                               const double alpha,
2413                               const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2414                               cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2415                               cl_command_queue* queue, cl_event* event) {
2416   try {
2417     return static_cast<CLBlastStatusCode>(
2418       clblast::Syr(static_cast<clblast::Layout>(layout),
2419                    static_cast<clblast::Triangle>(triangle),
2420                    n,
2421                    alpha,
2422                    x_buffer, x_offset, x_inc,
2423                    a_buffer, a_offset, a_ld,
2424                    queue, event)
2425     );
2426   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2427 }
CLBlastHsyr(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const cl_half alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_command_queue * queue,cl_event * event)2428 CLBlastStatusCode CLBlastHsyr(const CLBlastLayout layout, const CLBlastTriangle triangle,
2429                               const size_t n,
2430                               const cl_half alpha,
2431                               const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2432                               cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2433                               cl_command_queue* queue, cl_event* event) {
2434   try {
2435     return static_cast<CLBlastStatusCode>(
2436       clblast::Syr(static_cast<clblast::Layout>(layout),
2437                    static_cast<clblast::Triangle>(triangle),
2438                    n,
2439                    alpha,
2440                    x_buffer, x_offset, x_inc,
2441                    a_buffer, a_offset, a_ld,
2442                    queue, event)
2443     );
2444   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2445 }
2446 
2447 // SPR
CLBlastSspr(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const float alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem ap_buffer,const size_t ap_offset,cl_command_queue * queue,cl_event * event)2448 CLBlastStatusCode CLBlastSspr(const CLBlastLayout layout, const CLBlastTriangle triangle,
2449                               const size_t n,
2450                               const float alpha,
2451                               const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2452                               cl_mem ap_buffer, const size_t ap_offset,
2453                               cl_command_queue* queue, cl_event* event) {
2454   try {
2455     return static_cast<CLBlastStatusCode>(
2456       clblast::Spr(static_cast<clblast::Layout>(layout),
2457                    static_cast<clblast::Triangle>(triangle),
2458                    n,
2459                    alpha,
2460                    x_buffer, x_offset, x_inc,
2461                    ap_buffer, ap_offset,
2462                    queue, event)
2463     );
2464   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2465 }
CLBlastDspr(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const double alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem ap_buffer,const size_t ap_offset,cl_command_queue * queue,cl_event * event)2466 CLBlastStatusCode CLBlastDspr(const CLBlastLayout layout, const CLBlastTriangle triangle,
2467                               const size_t n,
2468                               const double alpha,
2469                               const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2470                               cl_mem ap_buffer, const size_t ap_offset,
2471                               cl_command_queue* queue, cl_event* event) {
2472   try {
2473     return static_cast<CLBlastStatusCode>(
2474       clblast::Spr(static_cast<clblast::Layout>(layout),
2475                    static_cast<clblast::Triangle>(triangle),
2476                    n,
2477                    alpha,
2478                    x_buffer, x_offset, x_inc,
2479                    ap_buffer, ap_offset,
2480                    queue, event)
2481     );
2482   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2483 }
CLBlastHspr(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const cl_half alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,cl_mem ap_buffer,const size_t ap_offset,cl_command_queue * queue,cl_event * event)2484 CLBlastStatusCode CLBlastHspr(const CLBlastLayout layout, const CLBlastTriangle triangle,
2485                               const size_t n,
2486                               const cl_half alpha,
2487                               const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2488                               cl_mem ap_buffer, const size_t ap_offset,
2489                               cl_command_queue* queue, cl_event* event) {
2490   try {
2491     return static_cast<CLBlastStatusCode>(
2492       clblast::Spr(static_cast<clblast::Layout>(layout),
2493                    static_cast<clblast::Triangle>(triangle),
2494                    n,
2495                    alpha,
2496                    x_buffer, x_offset, x_inc,
2497                    ap_buffer, ap_offset,
2498                    queue, event)
2499     );
2500   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2501 }
2502 
2503 // SYR2
CLBlastSsyr2(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const float alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_command_queue * queue,cl_event * event)2504 CLBlastStatusCode CLBlastSsyr2(const CLBlastLayout layout, const CLBlastTriangle triangle,
2505                                const size_t n,
2506                                const float alpha,
2507                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2508                                const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
2509                                cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2510                                cl_command_queue* queue, cl_event* event) {
2511   try {
2512     return static_cast<CLBlastStatusCode>(
2513       clblast::Syr2(static_cast<clblast::Layout>(layout),
2514                     static_cast<clblast::Triangle>(triangle),
2515                     n,
2516                     alpha,
2517                     x_buffer, x_offset, x_inc,
2518                     y_buffer, y_offset, y_inc,
2519                     a_buffer, a_offset, a_ld,
2520                     queue, event)
2521     );
2522   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2523 }
CLBlastDsyr2(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const double alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_command_queue * queue,cl_event * event)2524 CLBlastStatusCode CLBlastDsyr2(const CLBlastLayout layout, const CLBlastTriangle triangle,
2525                                const size_t n,
2526                                const double alpha,
2527                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2528                                const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
2529                                cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2530                                cl_command_queue* queue, cl_event* event) {
2531   try {
2532     return static_cast<CLBlastStatusCode>(
2533       clblast::Syr2(static_cast<clblast::Layout>(layout),
2534                     static_cast<clblast::Triangle>(triangle),
2535                     n,
2536                     alpha,
2537                     x_buffer, x_offset, x_inc,
2538                     y_buffer, y_offset, y_inc,
2539                     a_buffer, a_offset, a_ld,
2540                     queue, event)
2541     );
2542   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2543 }
CLBlastHsyr2(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const cl_half alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_command_queue * queue,cl_event * event)2544 CLBlastStatusCode CLBlastHsyr2(const CLBlastLayout layout, const CLBlastTriangle triangle,
2545                                const size_t n,
2546                                const cl_half alpha,
2547                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2548                                const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
2549                                cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2550                                cl_command_queue* queue, cl_event* event) {
2551   try {
2552     return static_cast<CLBlastStatusCode>(
2553       clblast::Syr2(static_cast<clblast::Layout>(layout),
2554                     static_cast<clblast::Triangle>(triangle),
2555                     n,
2556                     alpha,
2557                     x_buffer, x_offset, x_inc,
2558                     y_buffer, y_offset, y_inc,
2559                     a_buffer, a_offset, a_ld,
2560                     queue, event)
2561     );
2562   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2563 }
2564 
2565 // SPR2
CLBlastSspr2(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const float alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_mem ap_buffer,const size_t ap_offset,cl_command_queue * queue,cl_event * event)2566 CLBlastStatusCode CLBlastSspr2(const CLBlastLayout layout, const CLBlastTriangle triangle,
2567                                const size_t n,
2568                                const float alpha,
2569                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2570                                const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
2571                                cl_mem ap_buffer, const size_t ap_offset,
2572                                cl_command_queue* queue, cl_event* event) {
2573   try {
2574     return static_cast<CLBlastStatusCode>(
2575       clblast::Spr2(static_cast<clblast::Layout>(layout),
2576                     static_cast<clblast::Triangle>(triangle),
2577                     n,
2578                     alpha,
2579                     x_buffer, x_offset, x_inc,
2580                     y_buffer, y_offset, y_inc,
2581                     ap_buffer, ap_offset,
2582                     queue, event)
2583     );
2584   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2585 }
CLBlastDspr2(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const double alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_mem ap_buffer,const size_t ap_offset,cl_command_queue * queue,cl_event * event)2586 CLBlastStatusCode CLBlastDspr2(const CLBlastLayout layout, const CLBlastTriangle triangle,
2587                                const size_t n,
2588                                const double alpha,
2589                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2590                                const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
2591                                cl_mem ap_buffer, const size_t ap_offset,
2592                                cl_command_queue* queue, cl_event* event) {
2593   try {
2594     return static_cast<CLBlastStatusCode>(
2595       clblast::Spr2(static_cast<clblast::Layout>(layout),
2596                     static_cast<clblast::Triangle>(triangle),
2597                     n,
2598                     alpha,
2599                     x_buffer, x_offset, x_inc,
2600                     y_buffer, y_offset, y_inc,
2601                     ap_buffer, ap_offset,
2602                     queue, event)
2603     );
2604   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2605 }
CLBlastHspr2(const CLBlastLayout layout,const CLBlastTriangle triangle,const size_t n,const cl_half alpha,const cl_mem x_buffer,const size_t x_offset,const size_t x_inc,const cl_mem y_buffer,const size_t y_offset,const size_t y_inc,cl_mem ap_buffer,const size_t ap_offset,cl_command_queue * queue,cl_event * event)2606 CLBlastStatusCode CLBlastHspr2(const CLBlastLayout layout, const CLBlastTriangle triangle,
2607                                const size_t n,
2608                                const cl_half alpha,
2609                                const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
2610                                const cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
2611                                cl_mem ap_buffer, const size_t ap_offset,
2612                                cl_command_queue* queue, cl_event* event) {
2613   try {
2614     return static_cast<CLBlastStatusCode>(
2615       clblast::Spr2(static_cast<clblast::Layout>(layout),
2616                     static_cast<clblast::Triangle>(triangle),
2617                     n,
2618                     alpha,
2619                     x_buffer, x_offset, x_inc,
2620                     y_buffer, y_offset, y_inc,
2621                     ap_buffer, ap_offset,
2622                     queue, event)
2623     );
2624   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2625 }
2626 
2627 // =================================================================================================
2628 // BLAS level-3 (matrix-matrix) routines
2629 // =================================================================================================
2630 
2631 // GEMM
CLBlastSgemm(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const CLBlastTranspose b_transpose,const size_t m,const size_t n,const size_t k,const float alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem b_buffer,const size_t b_offset,const size_t b_ld,const float beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)2632 CLBlastStatusCode CLBlastSgemm(const CLBlastLayout layout, const CLBlastTranspose a_transpose, const CLBlastTranspose b_transpose,
2633                                const size_t m, const size_t n, const size_t k,
2634                                const float alpha,
2635                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2636                                const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
2637                                const float beta,
2638                                cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
2639                                cl_command_queue* queue, cl_event* event) {
2640   try {
2641     return static_cast<CLBlastStatusCode>(
2642       clblast::Gemm(static_cast<clblast::Layout>(layout),
2643                     static_cast<clblast::Transpose>(a_transpose),
2644                     static_cast<clblast::Transpose>(b_transpose),
2645                     m, n, k,
2646                     alpha,
2647                     a_buffer, a_offset, a_ld,
2648                     b_buffer, b_offset, b_ld,
2649                     beta,
2650                     c_buffer, c_offset, c_ld,
2651                     queue, event)
2652     );
2653   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2654 }
CLBlastDgemm(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const CLBlastTranspose b_transpose,const size_t m,const size_t n,const size_t k,const double alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem b_buffer,const size_t b_offset,const size_t b_ld,const double beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)2655 CLBlastStatusCode CLBlastDgemm(const CLBlastLayout layout, const CLBlastTranspose a_transpose, const CLBlastTranspose b_transpose,
2656                                const size_t m, const size_t n, const size_t k,
2657                                const double alpha,
2658                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2659                                const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
2660                                const double beta,
2661                                cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
2662                                cl_command_queue* queue, cl_event* event) {
2663   try {
2664     return static_cast<CLBlastStatusCode>(
2665       clblast::Gemm(static_cast<clblast::Layout>(layout),
2666                     static_cast<clblast::Transpose>(a_transpose),
2667                     static_cast<clblast::Transpose>(b_transpose),
2668                     m, n, k,
2669                     alpha,
2670                     a_buffer, a_offset, a_ld,
2671                     b_buffer, b_offset, b_ld,
2672                     beta,
2673                     c_buffer, c_offset, c_ld,
2674                     queue, event)
2675     );
2676   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2677 }
CLBlastCgemm(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const CLBlastTranspose b_transpose,const size_t m,const size_t n,const size_t k,const cl_float2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem b_buffer,const size_t b_offset,const size_t b_ld,const cl_float2 beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)2678 CLBlastStatusCode CLBlastCgemm(const CLBlastLayout layout, const CLBlastTranspose a_transpose, const CLBlastTranspose b_transpose,
2679                                const size_t m, const size_t n, const size_t k,
2680                                const cl_float2 alpha,
2681                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2682                                const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
2683                                const cl_float2 beta,
2684                                cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
2685                                cl_command_queue* queue, cl_event* event) {
2686   try {
2687     return static_cast<CLBlastStatusCode>(
2688       clblast::Gemm(static_cast<clblast::Layout>(layout),
2689                     static_cast<clblast::Transpose>(a_transpose),
2690                     static_cast<clblast::Transpose>(b_transpose),
2691                     m, n, k,
2692                     float2{alpha.s[0], alpha.s[1]},
2693                     a_buffer, a_offset, a_ld,
2694                     b_buffer, b_offset, b_ld,
2695                     float2{beta.s[0], beta.s[1]},
2696                     c_buffer, c_offset, c_ld,
2697                     queue, event)
2698     );
2699   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2700 }
CLBlastZgemm(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const CLBlastTranspose b_transpose,const size_t m,const size_t n,const size_t k,const cl_double2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem b_buffer,const size_t b_offset,const size_t b_ld,const cl_double2 beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)2701 CLBlastStatusCode CLBlastZgemm(const CLBlastLayout layout, const CLBlastTranspose a_transpose, const CLBlastTranspose b_transpose,
2702                                const size_t m, const size_t n, const size_t k,
2703                                const cl_double2 alpha,
2704                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2705                                const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
2706                                const cl_double2 beta,
2707                                cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
2708                                cl_command_queue* queue, cl_event* event) {
2709   try {
2710     return static_cast<CLBlastStatusCode>(
2711       clblast::Gemm(static_cast<clblast::Layout>(layout),
2712                     static_cast<clblast::Transpose>(a_transpose),
2713                     static_cast<clblast::Transpose>(b_transpose),
2714                     m, n, k,
2715                     double2{alpha.s[0], alpha.s[1]},
2716                     a_buffer, a_offset, a_ld,
2717                     b_buffer, b_offset, b_ld,
2718                     double2{beta.s[0], beta.s[1]},
2719                     c_buffer, c_offset, c_ld,
2720                     queue, event)
2721     );
2722   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2723 }
CLBlastHgemm(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const CLBlastTranspose b_transpose,const size_t m,const size_t n,const size_t k,const cl_half alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem b_buffer,const size_t b_offset,const size_t b_ld,const cl_half beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)2724 CLBlastStatusCode CLBlastHgemm(const CLBlastLayout layout, const CLBlastTranspose a_transpose, const CLBlastTranspose b_transpose,
2725                                const size_t m, const size_t n, const size_t k,
2726                                const cl_half alpha,
2727                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2728                                const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
2729                                const cl_half beta,
2730                                cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
2731                                cl_command_queue* queue, cl_event* event) {
2732   try {
2733     return static_cast<CLBlastStatusCode>(
2734       clblast::Gemm(static_cast<clblast::Layout>(layout),
2735                     static_cast<clblast::Transpose>(a_transpose),
2736                     static_cast<clblast::Transpose>(b_transpose),
2737                     m, n, k,
2738                     alpha,
2739                     a_buffer, a_offset, a_ld,
2740                     b_buffer, b_offset, b_ld,
2741                     beta,
2742                     c_buffer, c_offset, c_ld,
2743                     queue, event)
2744     );
2745   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2746 }
2747 
2748 // SYMM
CLBlastSsymm(const CLBlastLayout layout,const CLBlastSide side,const CLBlastTriangle triangle,const size_t m,const size_t n,const float alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem b_buffer,const size_t b_offset,const size_t b_ld,const float beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)2749 CLBlastStatusCode CLBlastSsymm(const CLBlastLayout layout, const CLBlastSide side, const CLBlastTriangle triangle,
2750                                const size_t m, const size_t n,
2751                                const float alpha,
2752                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2753                                const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
2754                                const float beta,
2755                                cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
2756                                cl_command_queue* queue, cl_event* event) {
2757   try {
2758     return static_cast<CLBlastStatusCode>(
2759       clblast::Symm(static_cast<clblast::Layout>(layout),
2760                     static_cast<clblast::Side>(side),
2761                     static_cast<clblast::Triangle>(triangle),
2762                     m, n,
2763                     alpha,
2764                     a_buffer, a_offset, a_ld,
2765                     b_buffer, b_offset, b_ld,
2766                     beta,
2767                     c_buffer, c_offset, c_ld,
2768                     queue, event)
2769     );
2770   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2771 }
CLBlastDsymm(const CLBlastLayout layout,const CLBlastSide side,const CLBlastTriangle triangle,const size_t m,const size_t n,const double alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem b_buffer,const size_t b_offset,const size_t b_ld,const double beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)2772 CLBlastStatusCode CLBlastDsymm(const CLBlastLayout layout, const CLBlastSide side, const CLBlastTriangle triangle,
2773                                const size_t m, const size_t n,
2774                                const double alpha,
2775                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2776                                const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
2777                                const double beta,
2778                                cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
2779                                cl_command_queue* queue, cl_event* event) {
2780   try {
2781     return static_cast<CLBlastStatusCode>(
2782       clblast::Symm(static_cast<clblast::Layout>(layout),
2783                     static_cast<clblast::Side>(side),
2784                     static_cast<clblast::Triangle>(triangle),
2785                     m, n,
2786                     alpha,
2787                     a_buffer, a_offset, a_ld,
2788                     b_buffer, b_offset, b_ld,
2789                     beta,
2790                     c_buffer, c_offset, c_ld,
2791                     queue, event)
2792     );
2793   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2794 }
CLBlastCsymm(const CLBlastLayout layout,const CLBlastSide side,const CLBlastTriangle triangle,const size_t m,const size_t n,const cl_float2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem b_buffer,const size_t b_offset,const size_t b_ld,const cl_float2 beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)2795 CLBlastStatusCode CLBlastCsymm(const CLBlastLayout layout, const CLBlastSide side, const CLBlastTriangle triangle,
2796                                const size_t m, const size_t n,
2797                                const cl_float2 alpha,
2798                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2799                                const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
2800                                const cl_float2 beta,
2801                                cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
2802                                cl_command_queue* queue, cl_event* event) {
2803   try {
2804     return static_cast<CLBlastStatusCode>(
2805       clblast::Symm(static_cast<clblast::Layout>(layout),
2806                     static_cast<clblast::Side>(side),
2807                     static_cast<clblast::Triangle>(triangle),
2808                     m, n,
2809                     float2{alpha.s[0], alpha.s[1]},
2810                     a_buffer, a_offset, a_ld,
2811                     b_buffer, b_offset, b_ld,
2812                     float2{beta.s[0], beta.s[1]},
2813                     c_buffer, c_offset, c_ld,
2814                     queue, event)
2815     );
2816   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2817 }
CLBlastZsymm(const CLBlastLayout layout,const CLBlastSide side,const CLBlastTriangle triangle,const size_t m,const size_t n,const cl_double2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem b_buffer,const size_t b_offset,const size_t b_ld,const cl_double2 beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)2818 CLBlastStatusCode CLBlastZsymm(const CLBlastLayout layout, const CLBlastSide side, const CLBlastTriangle triangle,
2819                                const size_t m, const size_t n,
2820                                const cl_double2 alpha,
2821                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2822                                const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
2823                                const cl_double2 beta,
2824                                cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
2825                                cl_command_queue* queue, cl_event* event) {
2826   try {
2827     return static_cast<CLBlastStatusCode>(
2828       clblast::Symm(static_cast<clblast::Layout>(layout),
2829                     static_cast<clblast::Side>(side),
2830                     static_cast<clblast::Triangle>(triangle),
2831                     m, n,
2832                     double2{alpha.s[0], alpha.s[1]},
2833                     a_buffer, a_offset, a_ld,
2834                     b_buffer, b_offset, b_ld,
2835                     double2{beta.s[0], beta.s[1]},
2836                     c_buffer, c_offset, c_ld,
2837                     queue, event)
2838     );
2839   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2840 }
CLBlastHsymm(const CLBlastLayout layout,const CLBlastSide side,const CLBlastTriangle triangle,const size_t m,const size_t n,const cl_half alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem b_buffer,const size_t b_offset,const size_t b_ld,const cl_half beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)2841 CLBlastStatusCode CLBlastHsymm(const CLBlastLayout layout, const CLBlastSide side, const CLBlastTriangle triangle,
2842                                const size_t m, const size_t n,
2843                                const cl_half alpha,
2844                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2845                                const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
2846                                const cl_half beta,
2847                                cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
2848                                cl_command_queue* queue, cl_event* event) {
2849   try {
2850     return static_cast<CLBlastStatusCode>(
2851       clblast::Symm(static_cast<clblast::Layout>(layout),
2852                     static_cast<clblast::Side>(side),
2853                     static_cast<clblast::Triangle>(triangle),
2854                     m, n,
2855                     alpha,
2856                     a_buffer, a_offset, a_ld,
2857                     b_buffer, b_offset, b_ld,
2858                     beta,
2859                     c_buffer, c_offset, c_ld,
2860                     queue, event)
2861     );
2862   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2863 }
2864 
2865 // HEMM
CLBlastChemm(const CLBlastLayout layout,const CLBlastSide side,const CLBlastTriangle triangle,const size_t m,const size_t n,const cl_float2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem b_buffer,const size_t b_offset,const size_t b_ld,const cl_float2 beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)2866 CLBlastStatusCode CLBlastChemm(const CLBlastLayout layout, const CLBlastSide side, const CLBlastTriangle triangle,
2867                                const size_t m, const size_t n,
2868                                const cl_float2 alpha,
2869                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2870                                const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
2871                                const cl_float2 beta,
2872                                cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
2873                                cl_command_queue* queue, cl_event* event) {
2874   try {
2875     return static_cast<CLBlastStatusCode>(
2876       clblast::Hemm(static_cast<clblast::Layout>(layout),
2877                     static_cast<clblast::Side>(side),
2878                     static_cast<clblast::Triangle>(triangle),
2879                     m, n,
2880                     float2{alpha.s[0], alpha.s[1]},
2881                     a_buffer, a_offset, a_ld,
2882                     b_buffer, b_offset, b_ld,
2883                     float2{beta.s[0], beta.s[1]},
2884                     c_buffer, c_offset, c_ld,
2885                     queue, event)
2886     );
2887   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2888 }
CLBlastZhemm(const CLBlastLayout layout,const CLBlastSide side,const CLBlastTriangle triangle,const size_t m,const size_t n,const cl_double2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem b_buffer,const size_t b_offset,const size_t b_ld,const cl_double2 beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)2889 CLBlastStatusCode CLBlastZhemm(const CLBlastLayout layout, const CLBlastSide side, const CLBlastTriangle triangle,
2890                                const size_t m, const size_t n,
2891                                const cl_double2 alpha,
2892                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2893                                const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
2894                                const cl_double2 beta,
2895                                cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
2896                                cl_command_queue* queue, cl_event* event) {
2897   try {
2898     return static_cast<CLBlastStatusCode>(
2899       clblast::Hemm(static_cast<clblast::Layout>(layout),
2900                     static_cast<clblast::Side>(side),
2901                     static_cast<clblast::Triangle>(triangle),
2902                     m, n,
2903                     double2{alpha.s[0], alpha.s[1]},
2904                     a_buffer, a_offset, a_ld,
2905                     b_buffer, b_offset, b_ld,
2906                     double2{beta.s[0], beta.s[1]},
2907                     c_buffer, c_offset, c_ld,
2908                     queue, event)
2909     );
2910   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2911 }
2912 
2913 // SYRK
CLBlastSsyrk(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const size_t n,const size_t k,const float alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const float beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)2914 CLBlastStatusCode CLBlastSsyrk(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose,
2915                                const size_t n, const size_t k,
2916                                const float alpha,
2917                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2918                                const float beta,
2919                                cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
2920                                cl_command_queue* queue, cl_event* event) {
2921   try {
2922     return static_cast<CLBlastStatusCode>(
2923       clblast::Syrk(static_cast<clblast::Layout>(layout),
2924                     static_cast<clblast::Triangle>(triangle),
2925                     static_cast<clblast::Transpose>(a_transpose),
2926                     n, k,
2927                     alpha,
2928                     a_buffer, a_offset, a_ld,
2929                     beta,
2930                     c_buffer, c_offset, c_ld,
2931                     queue, event)
2932     );
2933   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2934 }
CLBlastDsyrk(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const size_t n,const size_t k,const double alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const double beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)2935 CLBlastStatusCode CLBlastDsyrk(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose,
2936                                const size_t n, const size_t k,
2937                                const double alpha,
2938                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2939                                const double beta,
2940                                cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
2941                                cl_command_queue* queue, cl_event* event) {
2942   try {
2943     return static_cast<CLBlastStatusCode>(
2944       clblast::Syrk(static_cast<clblast::Layout>(layout),
2945                     static_cast<clblast::Triangle>(triangle),
2946                     static_cast<clblast::Transpose>(a_transpose),
2947                     n, k,
2948                     alpha,
2949                     a_buffer, a_offset, a_ld,
2950                     beta,
2951                     c_buffer, c_offset, c_ld,
2952                     queue, event)
2953     );
2954   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2955 }
CLBlastCsyrk(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const size_t n,const size_t k,const cl_float2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_float2 beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)2956 CLBlastStatusCode CLBlastCsyrk(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose,
2957                                const size_t n, const size_t k,
2958                                const cl_float2 alpha,
2959                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2960                                const cl_float2 beta,
2961                                cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
2962                                cl_command_queue* queue, cl_event* event) {
2963   try {
2964     return static_cast<CLBlastStatusCode>(
2965       clblast::Syrk(static_cast<clblast::Layout>(layout),
2966                     static_cast<clblast::Triangle>(triangle),
2967                     static_cast<clblast::Transpose>(a_transpose),
2968                     n, k,
2969                     float2{alpha.s[0], alpha.s[1]},
2970                     a_buffer, a_offset, a_ld,
2971                     float2{beta.s[0], beta.s[1]},
2972                     c_buffer, c_offset, c_ld,
2973                     queue, event)
2974     );
2975   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2976 }
CLBlastZsyrk(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const size_t n,const size_t k,const cl_double2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_double2 beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)2977 CLBlastStatusCode CLBlastZsyrk(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose,
2978                                const size_t n, const size_t k,
2979                                const cl_double2 alpha,
2980                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
2981                                const cl_double2 beta,
2982                                cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
2983                                cl_command_queue* queue, cl_event* event) {
2984   try {
2985     return static_cast<CLBlastStatusCode>(
2986       clblast::Syrk(static_cast<clblast::Layout>(layout),
2987                     static_cast<clblast::Triangle>(triangle),
2988                     static_cast<clblast::Transpose>(a_transpose),
2989                     n, k,
2990                     double2{alpha.s[0], alpha.s[1]},
2991                     a_buffer, a_offset, a_ld,
2992                     double2{beta.s[0], beta.s[1]},
2993                     c_buffer, c_offset, c_ld,
2994                     queue, event)
2995     );
2996   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
2997 }
CLBlastHsyrk(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const size_t n,const size_t k,const cl_half alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_half beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)2998 CLBlastStatusCode CLBlastHsyrk(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose,
2999                                const size_t n, const size_t k,
3000                                const cl_half alpha,
3001                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3002                                const cl_half beta,
3003                                cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
3004                                cl_command_queue* queue, cl_event* event) {
3005   try {
3006     return static_cast<CLBlastStatusCode>(
3007       clblast::Syrk(static_cast<clblast::Layout>(layout),
3008                     static_cast<clblast::Triangle>(triangle),
3009                     static_cast<clblast::Transpose>(a_transpose),
3010                     n, k,
3011                     alpha,
3012                     a_buffer, a_offset, a_ld,
3013                     beta,
3014                     c_buffer, c_offset, c_ld,
3015                     queue, event)
3016     );
3017   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3018 }
3019 
3020 // HERK
CLBlastCherk(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const size_t n,const size_t k,const float alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const float beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)3021 CLBlastStatusCode CLBlastCherk(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose,
3022                                const size_t n, const size_t k,
3023                                const float alpha,
3024                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3025                                const float beta,
3026                                cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
3027                                cl_command_queue* queue, cl_event* event) {
3028   try {
3029     return static_cast<CLBlastStatusCode>(
3030       clblast::Herk(static_cast<clblast::Layout>(layout),
3031                     static_cast<clblast::Triangle>(triangle),
3032                     static_cast<clblast::Transpose>(a_transpose),
3033                     n, k,
3034                     alpha,
3035                     a_buffer, a_offset, a_ld,
3036                     beta,
3037                     c_buffer, c_offset, c_ld,
3038                     queue, event)
3039     );
3040   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3041 }
CLBlastZherk(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const size_t n,const size_t k,const double alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const double beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)3042 CLBlastStatusCode CLBlastZherk(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose,
3043                                const size_t n, const size_t k,
3044                                const double alpha,
3045                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3046                                const double beta,
3047                                cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
3048                                cl_command_queue* queue, cl_event* event) {
3049   try {
3050     return static_cast<CLBlastStatusCode>(
3051       clblast::Herk(static_cast<clblast::Layout>(layout),
3052                     static_cast<clblast::Triangle>(triangle),
3053                     static_cast<clblast::Transpose>(a_transpose),
3054                     n, k,
3055                     alpha,
3056                     a_buffer, a_offset, a_ld,
3057                     beta,
3058                     c_buffer, c_offset, c_ld,
3059                     queue, event)
3060     );
3061   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3062 }
3063 
3064 // SYR2K
CLBlastSsyr2k(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose ab_transpose,const size_t n,const size_t k,const float alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem b_buffer,const size_t b_offset,const size_t b_ld,const float beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)3065 CLBlastStatusCode CLBlastSsyr2k(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose ab_transpose,
3066                                 const size_t n, const size_t k,
3067                                 const float alpha,
3068                                 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3069                                 const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3070                                 const float beta,
3071                                 cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
3072                                 cl_command_queue* queue, cl_event* event) {
3073   try {
3074     return static_cast<CLBlastStatusCode>(
3075       clblast::Syr2k(static_cast<clblast::Layout>(layout),
3076                      static_cast<clblast::Triangle>(triangle),
3077                      static_cast<clblast::Transpose>(ab_transpose),
3078                      n, k,
3079                      alpha,
3080                      a_buffer, a_offset, a_ld,
3081                      b_buffer, b_offset, b_ld,
3082                      beta,
3083                      c_buffer, c_offset, c_ld,
3084                      queue, event)
3085     );
3086   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3087 }
CLBlastDsyr2k(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose ab_transpose,const size_t n,const size_t k,const double alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem b_buffer,const size_t b_offset,const size_t b_ld,const double beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)3088 CLBlastStatusCode CLBlastDsyr2k(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose ab_transpose,
3089                                 const size_t n, const size_t k,
3090                                 const double alpha,
3091                                 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3092                                 const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3093                                 const double beta,
3094                                 cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
3095                                 cl_command_queue* queue, cl_event* event) {
3096   try {
3097     return static_cast<CLBlastStatusCode>(
3098       clblast::Syr2k(static_cast<clblast::Layout>(layout),
3099                      static_cast<clblast::Triangle>(triangle),
3100                      static_cast<clblast::Transpose>(ab_transpose),
3101                      n, k,
3102                      alpha,
3103                      a_buffer, a_offset, a_ld,
3104                      b_buffer, b_offset, b_ld,
3105                      beta,
3106                      c_buffer, c_offset, c_ld,
3107                      queue, event)
3108     );
3109   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3110 }
CLBlastCsyr2k(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose ab_transpose,const size_t n,const size_t k,const cl_float2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem b_buffer,const size_t b_offset,const size_t b_ld,const cl_float2 beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)3111 CLBlastStatusCode CLBlastCsyr2k(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose ab_transpose,
3112                                 const size_t n, const size_t k,
3113                                 const cl_float2 alpha,
3114                                 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3115                                 const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3116                                 const cl_float2 beta,
3117                                 cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
3118                                 cl_command_queue* queue, cl_event* event) {
3119   try {
3120     return static_cast<CLBlastStatusCode>(
3121       clblast::Syr2k(static_cast<clblast::Layout>(layout),
3122                      static_cast<clblast::Triangle>(triangle),
3123                      static_cast<clblast::Transpose>(ab_transpose),
3124                      n, k,
3125                      float2{alpha.s[0], alpha.s[1]},
3126                      a_buffer, a_offset, a_ld,
3127                      b_buffer, b_offset, b_ld,
3128                      float2{beta.s[0], beta.s[1]},
3129                      c_buffer, c_offset, c_ld,
3130                      queue, event)
3131     );
3132   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3133 }
CLBlastZsyr2k(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose ab_transpose,const size_t n,const size_t k,const cl_double2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem b_buffer,const size_t b_offset,const size_t b_ld,const cl_double2 beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)3134 CLBlastStatusCode CLBlastZsyr2k(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose ab_transpose,
3135                                 const size_t n, const size_t k,
3136                                 const cl_double2 alpha,
3137                                 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3138                                 const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3139                                 const cl_double2 beta,
3140                                 cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
3141                                 cl_command_queue* queue, cl_event* event) {
3142   try {
3143     return static_cast<CLBlastStatusCode>(
3144       clblast::Syr2k(static_cast<clblast::Layout>(layout),
3145                      static_cast<clblast::Triangle>(triangle),
3146                      static_cast<clblast::Transpose>(ab_transpose),
3147                      n, k,
3148                      double2{alpha.s[0], alpha.s[1]},
3149                      a_buffer, a_offset, a_ld,
3150                      b_buffer, b_offset, b_ld,
3151                      double2{beta.s[0], beta.s[1]},
3152                      c_buffer, c_offset, c_ld,
3153                      queue, event)
3154     );
3155   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3156 }
CLBlastHsyr2k(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose ab_transpose,const size_t n,const size_t k,const cl_half alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem b_buffer,const size_t b_offset,const size_t b_ld,const cl_half beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)3157 CLBlastStatusCode CLBlastHsyr2k(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose ab_transpose,
3158                                 const size_t n, const size_t k,
3159                                 const cl_half alpha,
3160                                 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3161                                 const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3162                                 const cl_half beta,
3163                                 cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
3164                                 cl_command_queue* queue, cl_event* event) {
3165   try {
3166     return static_cast<CLBlastStatusCode>(
3167       clblast::Syr2k(static_cast<clblast::Layout>(layout),
3168                      static_cast<clblast::Triangle>(triangle),
3169                      static_cast<clblast::Transpose>(ab_transpose),
3170                      n, k,
3171                      alpha,
3172                      a_buffer, a_offset, a_ld,
3173                      b_buffer, b_offset, b_ld,
3174                      beta,
3175                      c_buffer, c_offset, c_ld,
3176                      queue, event)
3177     );
3178   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3179 }
3180 
3181 // HER2K
CLBlastCher2k(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose ab_transpose,const size_t n,const size_t k,const cl_float2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem b_buffer,const size_t b_offset,const size_t b_ld,const float beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)3182 CLBlastStatusCode CLBlastCher2k(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose ab_transpose,
3183                                 const size_t n, const size_t k,
3184                                 const cl_float2 alpha,
3185                                 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3186                                 const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3187                                 const float beta,
3188                                 cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
3189                                 cl_command_queue* queue, cl_event* event) {
3190   try {
3191     return static_cast<CLBlastStatusCode>(
3192       clblast::Her2k(static_cast<clblast::Layout>(layout),
3193                      static_cast<clblast::Triangle>(triangle),
3194                      static_cast<clblast::Transpose>(ab_transpose),
3195                      n, k,
3196                      float2{alpha.s[0], alpha.s[1]},
3197                      a_buffer, a_offset, a_ld,
3198                      b_buffer, b_offset, b_ld,
3199                      beta,
3200                      c_buffer, c_offset, c_ld,
3201                      queue, event)
3202     );
3203   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3204 }
CLBlastZher2k(const CLBlastLayout layout,const CLBlastTriangle triangle,const CLBlastTranspose ab_transpose,const size_t n,const size_t k,const cl_double2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,const cl_mem b_buffer,const size_t b_offset,const size_t b_ld,const double beta,cl_mem c_buffer,const size_t c_offset,const size_t c_ld,cl_command_queue * queue,cl_event * event)3205 CLBlastStatusCode CLBlastZher2k(const CLBlastLayout layout, const CLBlastTriangle triangle, const CLBlastTranspose ab_transpose,
3206                                 const size_t n, const size_t k,
3207                                 const cl_double2 alpha,
3208                                 const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3209                                 const cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3210                                 const double beta,
3211                                 cl_mem c_buffer, const size_t c_offset, const size_t c_ld,
3212                                 cl_command_queue* queue, cl_event* event) {
3213   try {
3214     return static_cast<CLBlastStatusCode>(
3215       clblast::Her2k(static_cast<clblast::Layout>(layout),
3216                      static_cast<clblast::Triangle>(triangle),
3217                      static_cast<clblast::Transpose>(ab_transpose),
3218                      n, k,
3219                      double2{alpha.s[0], alpha.s[1]},
3220                      a_buffer, a_offset, a_ld,
3221                      b_buffer, b_offset, b_ld,
3222                      beta,
3223                      c_buffer, c_offset, c_ld,
3224                      queue, event)
3225     );
3226   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3227 }
3228 
3229 // TRMM
CLBlastStrmm(const CLBlastLayout layout,const CLBlastSide side,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t m,const size_t n,const float alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem b_buffer,const size_t b_offset,const size_t b_ld,cl_command_queue * queue,cl_event * event)3230 CLBlastStatusCode CLBlastStrmm(const CLBlastLayout layout, const CLBlastSide side, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
3231                                const size_t m, const size_t n,
3232                                const float alpha,
3233                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3234                                cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3235                                cl_command_queue* queue, cl_event* event) {
3236   try {
3237     return static_cast<CLBlastStatusCode>(
3238       clblast::Trmm(static_cast<clblast::Layout>(layout),
3239                     static_cast<clblast::Side>(side),
3240                     static_cast<clblast::Triangle>(triangle),
3241                     static_cast<clblast::Transpose>(a_transpose),
3242                     static_cast<clblast::Diagonal>(diagonal),
3243                     m, n,
3244                     alpha,
3245                     a_buffer, a_offset, a_ld,
3246                     b_buffer, b_offset, b_ld,
3247                     queue, event)
3248     );
3249   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3250 }
CLBlastDtrmm(const CLBlastLayout layout,const CLBlastSide side,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t m,const size_t n,const double alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem b_buffer,const size_t b_offset,const size_t b_ld,cl_command_queue * queue,cl_event * event)3251 CLBlastStatusCode CLBlastDtrmm(const CLBlastLayout layout, const CLBlastSide side, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
3252                                const size_t m, const size_t n,
3253                                const double alpha,
3254                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3255                                cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3256                                cl_command_queue* queue, cl_event* event) {
3257   try {
3258     return static_cast<CLBlastStatusCode>(
3259       clblast::Trmm(static_cast<clblast::Layout>(layout),
3260                     static_cast<clblast::Side>(side),
3261                     static_cast<clblast::Triangle>(triangle),
3262                     static_cast<clblast::Transpose>(a_transpose),
3263                     static_cast<clblast::Diagonal>(diagonal),
3264                     m, n,
3265                     alpha,
3266                     a_buffer, a_offset, a_ld,
3267                     b_buffer, b_offset, b_ld,
3268                     queue, event)
3269     );
3270   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3271 }
CLBlastCtrmm(const CLBlastLayout layout,const CLBlastSide side,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t m,const size_t n,const cl_float2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem b_buffer,const size_t b_offset,const size_t b_ld,cl_command_queue * queue,cl_event * event)3272 CLBlastStatusCode CLBlastCtrmm(const CLBlastLayout layout, const CLBlastSide side, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
3273                                const size_t m, const size_t n,
3274                                const cl_float2 alpha,
3275                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3276                                cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3277                                cl_command_queue* queue, cl_event* event) {
3278   try {
3279     return static_cast<CLBlastStatusCode>(
3280       clblast::Trmm(static_cast<clblast::Layout>(layout),
3281                     static_cast<clblast::Side>(side),
3282                     static_cast<clblast::Triangle>(triangle),
3283                     static_cast<clblast::Transpose>(a_transpose),
3284                     static_cast<clblast::Diagonal>(diagonal),
3285                     m, n,
3286                     float2{alpha.s[0], alpha.s[1]},
3287                     a_buffer, a_offset, a_ld,
3288                     b_buffer, b_offset, b_ld,
3289                     queue, event)
3290     );
3291   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3292 }
CLBlastZtrmm(const CLBlastLayout layout,const CLBlastSide side,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t m,const size_t n,const cl_double2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem b_buffer,const size_t b_offset,const size_t b_ld,cl_command_queue * queue,cl_event * event)3293 CLBlastStatusCode CLBlastZtrmm(const CLBlastLayout layout, const CLBlastSide side, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
3294                                const size_t m, const size_t n,
3295                                const cl_double2 alpha,
3296                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3297                                cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3298                                cl_command_queue* queue, cl_event* event) {
3299   try {
3300     return static_cast<CLBlastStatusCode>(
3301       clblast::Trmm(static_cast<clblast::Layout>(layout),
3302                     static_cast<clblast::Side>(side),
3303                     static_cast<clblast::Triangle>(triangle),
3304                     static_cast<clblast::Transpose>(a_transpose),
3305                     static_cast<clblast::Diagonal>(diagonal),
3306                     m, n,
3307                     double2{alpha.s[0], alpha.s[1]},
3308                     a_buffer, a_offset, a_ld,
3309                     b_buffer, b_offset, b_ld,
3310                     queue, event)
3311     );
3312   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3313 }
CLBlastHtrmm(const CLBlastLayout layout,const CLBlastSide side,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t m,const size_t n,const cl_half alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem b_buffer,const size_t b_offset,const size_t b_ld,cl_command_queue * queue,cl_event * event)3314 CLBlastStatusCode CLBlastHtrmm(const CLBlastLayout layout, const CLBlastSide side, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
3315                                const size_t m, const size_t n,
3316                                const cl_half alpha,
3317                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3318                                cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3319                                cl_command_queue* queue, cl_event* event) {
3320   try {
3321     return static_cast<CLBlastStatusCode>(
3322       clblast::Trmm(static_cast<clblast::Layout>(layout),
3323                     static_cast<clblast::Side>(side),
3324                     static_cast<clblast::Triangle>(triangle),
3325                     static_cast<clblast::Transpose>(a_transpose),
3326                     static_cast<clblast::Diagonal>(diagonal),
3327                     m, n,
3328                     alpha,
3329                     a_buffer, a_offset, a_ld,
3330                     b_buffer, b_offset, b_ld,
3331                     queue, event)
3332     );
3333   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3334 }
3335 
3336 // TRSM
CLBlastStrsm(const CLBlastLayout layout,const CLBlastSide side,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t m,const size_t n,const float alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem b_buffer,const size_t b_offset,const size_t b_ld,cl_command_queue * queue,cl_event * event)3337 CLBlastStatusCode CLBlastStrsm(const CLBlastLayout layout, const CLBlastSide side, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
3338                                const size_t m, const size_t n,
3339                                const float alpha,
3340                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3341                                cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3342                                cl_command_queue* queue, cl_event* event) {
3343   try {
3344     return static_cast<CLBlastStatusCode>(
3345       clblast::Trsm(static_cast<clblast::Layout>(layout),
3346                     static_cast<clblast::Side>(side),
3347                     static_cast<clblast::Triangle>(triangle),
3348                     static_cast<clblast::Transpose>(a_transpose),
3349                     static_cast<clblast::Diagonal>(diagonal),
3350                     m, n,
3351                     alpha,
3352                     a_buffer, a_offset, a_ld,
3353                     b_buffer, b_offset, b_ld,
3354                     queue, event)
3355     );
3356   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3357 }
CLBlastDtrsm(const CLBlastLayout layout,const CLBlastSide side,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t m,const size_t n,const double alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem b_buffer,const size_t b_offset,const size_t b_ld,cl_command_queue * queue,cl_event * event)3358 CLBlastStatusCode CLBlastDtrsm(const CLBlastLayout layout, const CLBlastSide side, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
3359                                const size_t m, const size_t n,
3360                                const double alpha,
3361                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3362                                cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3363                                cl_command_queue* queue, cl_event* event) {
3364   try {
3365     return static_cast<CLBlastStatusCode>(
3366       clblast::Trsm(static_cast<clblast::Layout>(layout),
3367                     static_cast<clblast::Side>(side),
3368                     static_cast<clblast::Triangle>(triangle),
3369                     static_cast<clblast::Transpose>(a_transpose),
3370                     static_cast<clblast::Diagonal>(diagonal),
3371                     m, n,
3372                     alpha,
3373                     a_buffer, a_offset, a_ld,
3374                     b_buffer, b_offset, b_ld,
3375                     queue, event)
3376     );
3377   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3378 }
CLBlastCtrsm(const CLBlastLayout layout,const CLBlastSide side,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t m,const size_t n,const cl_float2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem b_buffer,const size_t b_offset,const size_t b_ld,cl_command_queue * queue,cl_event * event)3379 CLBlastStatusCode CLBlastCtrsm(const CLBlastLayout layout, const CLBlastSide side, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
3380                                const size_t m, const size_t n,
3381                                const cl_float2 alpha,
3382                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3383                                cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3384                                cl_command_queue* queue, cl_event* event) {
3385   try {
3386     return static_cast<CLBlastStatusCode>(
3387       clblast::Trsm(static_cast<clblast::Layout>(layout),
3388                     static_cast<clblast::Side>(side),
3389                     static_cast<clblast::Triangle>(triangle),
3390                     static_cast<clblast::Transpose>(a_transpose),
3391                     static_cast<clblast::Diagonal>(diagonal),
3392                     m, n,
3393                     float2{alpha.s[0], alpha.s[1]},
3394                     a_buffer, a_offset, a_ld,
3395                     b_buffer, b_offset, b_ld,
3396                     queue, event)
3397     );
3398   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3399 }
CLBlastZtrsm(const CLBlastLayout layout,const CLBlastSide side,const CLBlastTriangle triangle,const CLBlastTranspose a_transpose,const CLBlastDiagonal diagonal,const size_t m,const size_t n,const cl_double2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem b_buffer,const size_t b_offset,const size_t b_ld,cl_command_queue * queue,cl_event * event)3400 CLBlastStatusCode CLBlastZtrsm(const CLBlastLayout layout, const CLBlastSide side, const CLBlastTriangle triangle, const CLBlastTranspose a_transpose, const CLBlastDiagonal diagonal,
3401                                const size_t m, const size_t n,
3402                                const cl_double2 alpha,
3403                                const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3404                                cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3405                                cl_command_queue* queue, cl_event* event) {
3406   try {
3407     return static_cast<CLBlastStatusCode>(
3408       clblast::Trsm(static_cast<clblast::Layout>(layout),
3409                     static_cast<clblast::Side>(side),
3410                     static_cast<clblast::Triangle>(triangle),
3411                     static_cast<clblast::Transpose>(a_transpose),
3412                     static_cast<clblast::Diagonal>(diagonal),
3413                     m, n,
3414                     double2{alpha.s[0], alpha.s[1]},
3415                     a_buffer, a_offset, a_ld,
3416                     b_buffer, b_offset, b_ld,
3417                     queue, event)
3418     );
3419   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3420 }
3421 
3422 // =================================================================================================
3423 // Extra non-BLAS routines (level-X)
3424 // =================================================================================================
3425 
3426 // OMATCOPY
CLBlastSomatcopy(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const size_t m,const size_t n,const float alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem b_buffer,const size_t b_offset,const size_t b_ld,cl_command_queue * queue,cl_event * event)3427 CLBlastStatusCode CLBlastSomatcopy(const CLBlastLayout layout, const CLBlastTranspose a_transpose,
3428                                    const size_t m, const size_t n,
3429                                    const float alpha,
3430                                    const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3431                                    cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3432                                    cl_command_queue* queue, cl_event* event) {
3433   try {
3434     return static_cast<CLBlastStatusCode>(
3435       clblast::Omatcopy(static_cast<clblast::Layout>(layout),
3436                         static_cast<clblast::Transpose>(a_transpose),
3437                         m, n,
3438                         alpha,
3439                         a_buffer, a_offset, a_ld,
3440                         b_buffer, b_offset, b_ld,
3441                         queue, event)
3442     );
3443   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3444 }
CLBlastDomatcopy(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const size_t m,const size_t n,const double alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem b_buffer,const size_t b_offset,const size_t b_ld,cl_command_queue * queue,cl_event * event)3445 CLBlastStatusCode CLBlastDomatcopy(const CLBlastLayout layout, const CLBlastTranspose a_transpose,
3446                                    const size_t m, const size_t n,
3447                                    const double alpha,
3448                                    const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3449                                    cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3450                                    cl_command_queue* queue, cl_event* event) {
3451   try {
3452     return static_cast<CLBlastStatusCode>(
3453       clblast::Omatcopy(static_cast<clblast::Layout>(layout),
3454                         static_cast<clblast::Transpose>(a_transpose),
3455                         m, n,
3456                         alpha,
3457                         a_buffer, a_offset, a_ld,
3458                         b_buffer, b_offset, b_ld,
3459                         queue, event)
3460     );
3461   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3462 }
CLBlastComatcopy(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const size_t m,const size_t n,const cl_float2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem b_buffer,const size_t b_offset,const size_t b_ld,cl_command_queue * queue,cl_event * event)3463 CLBlastStatusCode CLBlastComatcopy(const CLBlastLayout layout, const CLBlastTranspose a_transpose,
3464                                    const size_t m, const size_t n,
3465                                    const cl_float2 alpha,
3466                                    const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3467                                    cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3468                                    cl_command_queue* queue, cl_event* event) {
3469   try {
3470     return static_cast<CLBlastStatusCode>(
3471       clblast::Omatcopy(static_cast<clblast::Layout>(layout),
3472                         static_cast<clblast::Transpose>(a_transpose),
3473                         m, n,
3474                         float2{alpha.s[0], alpha.s[1]},
3475                         a_buffer, a_offset, a_ld,
3476                         b_buffer, b_offset, b_ld,
3477                         queue, event)
3478     );
3479   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3480 }
CLBlastZomatcopy(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const size_t m,const size_t n,const cl_double2 alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem b_buffer,const size_t b_offset,const size_t b_ld,cl_command_queue * queue,cl_event * event)3481 CLBlastStatusCode CLBlastZomatcopy(const CLBlastLayout layout, const CLBlastTranspose a_transpose,
3482                                    const size_t m, const size_t n,
3483                                    const cl_double2 alpha,
3484                                    const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3485                                    cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3486                                    cl_command_queue* queue, cl_event* event) {
3487   try {
3488     return static_cast<CLBlastStatusCode>(
3489       clblast::Omatcopy(static_cast<clblast::Layout>(layout),
3490                         static_cast<clblast::Transpose>(a_transpose),
3491                         m, n,
3492                         double2{alpha.s[0], alpha.s[1]},
3493                         a_buffer, a_offset, a_ld,
3494                         b_buffer, b_offset, b_ld,
3495                         queue, event)
3496     );
3497   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3498 }
CLBlastHomatcopy(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const size_t m,const size_t n,const cl_half alpha,const cl_mem a_buffer,const size_t a_offset,const size_t a_ld,cl_mem b_buffer,const size_t b_offset,const size_t b_ld,cl_command_queue * queue,cl_event * event)3499 CLBlastStatusCode CLBlastHomatcopy(const CLBlastLayout layout, const CLBlastTranspose a_transpose,
3500                                    const size_t m, const size_t n,
3501                                    const cl_half alpha,
3502                                    const cl_mem a_buffer, const size_t a_offset, const size_t a_ld,
3503                                    cl_mem b_buffer, const size_t b_offset, const size_t b_ld,
3504                                    cl_command_queue* queue, cl_event* event) {
3505   try {
3506     return static_cast<CLBlastStatusCode>(
3507       clblast::Omatcopy(static_cast<clblast::Layout>(layout),
3508                         static_cast<clblast::Transpose>(a_transpose),
3509                         m, n,
3510                         alpha,
3511                         a_buffer, a_offset, a_ld,
3512                         b_buffer, b_offset, b_ld,
3513                         queue, event)
3514     );
3515   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3516 }
3517 
3518 // IM2COL
CLBlastSim2col(const size_t channels,const size_t height,const size_t width,const size_t kernel_h,const size_t kernel_w,const size_t pad_h,const size_t pad_w,const size_t stride_h,const size_t stride_w,const size_t dilation_h,const size_t dilation_w,const cl_mem im_buffer,const size_t im_offset,cl_mem col_buffer,const size_t col_offset,cl_command_queue * queue,cl_event * event)3519 CLBlastStatusCode CLBlastSim2col(const size_t channels, const size_t height, const size_t width, const size_t kernel_h, const size_t kernel_w, const size_t pad_h, const size_t pad_w, const size_t stride_h, const size_t stride_w, const size_t dilation_h, const size_t dilation_w,
3520                                  const cl_mem im_buffer, const size_t im_offset,
3521                                  cl_mem col_buffer, const size_t col_offset,
3522                                  cl_command_queue* queue, cl_event* event) {
3523   try {
3524     return static_cast<CLBlastStatusCode>(
3525       clblast::Im2col<float>(channels, height, width, kernel_h, kernel_w, pad_h, pad_w, stride_h, stride_w, dilation_h, dilation_w,
3526                              im_buffer, im_offset,
3527                              col_buffer, col_offset,
3528                              queue, event)
3529     );
3530   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3531 }
CLBlastDim2col(const size_t channels,const size_t height,const size_t width,const size_t kernel_h,const size_t kernel_w,const size_t pad_h,const size_t pad_w,const size_t stride_h,const size_t stride_w,const size_t dilation_h,const size_t dilation_w,const cl_mem im_buffer,const size_t im_offset,cl_mem col_buffer,const size_t col_offset,cl_command_queue * queue,cl_event * event)3532 CLBlastStatusCode CLBlastDim2col(const size_t channels, const size_t height, const size_t width, const size_t kernel_h, const size_t kernel_w, const size_t pad_h, const size_t pad_w, const size_t stride_h, const size_t stride_w, const size_t dilation_h, const size_t dilation_w,
3533                                  const cl_mem im_buffer, const size_t im_offset,
3534                                  cl_mem col_buffer, const size_t col_offset,
3535                                  cl_command_queue* queue, cl_event* event) {
3536   try {
3537     return static_cast<CLBlastStatusCode>(
3538       clblast::Im2col<double>(channels, height, width, kernel_h, kernel_w, pad_h, pad_w, stride_h, stride_w, dilation_h, dilation_w,
3539                               im_buffer, im_offset,
3540                               col_buffer, col_offset,
3541                               queue, event)
3542     );
3543   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3544 }
CLBlastCim2col(const size_t channels,const size_t height,const size_t width,const size_t kernel_h,const size_t kernel_w,const size_t pad_h,const size_t pad_w,const size_t stride_h,const size_t stride_w,const size_t dilation_h,const size_t dilation_w,const cl_mem im_buffer,const size_t im_offset,cl_mem col_buffer,const size_t col_offset,cl_command_queue * queue,cl_event * event)3545 CLBlastStatusCode CLBlastCim2col(const size_t channels, const size_t height, const size_t width, const size_t kernel_h, const size_t kernel_w, const size_t pad_h, const size_t pad_w, const size_t stride_h, const size_t stride_w, const size_t dilation_h, const size_t dilation_w,
3546                                  const cl_mem im_buffer, const size_t im_offset,
3547                                  cl_mem col_buffer, const size_t col_offset,
3548                                  cl_command_queue* queue, cl_event* event) {
3549   try {
3550     return static_cast<CLBlastStatusCode>(
3551       clblast::Im2col<float2>(channels, height, width, kernel_h, kernel_w, pad_h, pad_w, stride_h, stride_w, dilation_h, dilation_w,
3552                               im_buffer, im_offset,
3553                               col_buffer, col_offset,
3554                               queue, event)
3555     );
3556   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3557 }
CLBlastZim2col(const size_t channels,const size_t height,const size_t width,const size_t kernel_h,const size_t kernel_w,const size_t pad_h,const size_t pad_w,const size_t stride_h,const size_t stride_w,const size_t dilation_h,const size_t dilation_w,const cl_mem im_buffer,const size_t im_offset,cl_mem col_buffer,const size_t col_offset,cl_command_queue * queue,cl_event * event)3558 CLBlastStatusCode CLBlastZim2col(const size_t channels, const size_t height, const size_t width, const size_t kernel_h, const size_t kernel_w, const size_t pad_h, const size_t pad_w, const size_t stride_h, const size_t stride_w, const size_t dilation_h, const size_t dilation_w,
3559                                  const cl_mem im_buffer, const size_t im_offset,
3560                                  cl_mem col_buffer, const size_t col_offset,
3561                                  cl_command_queue* queue, cl_event* event) {
3562   try {
3563     return static_cast<CLBlastStatusCode>(
3564       clblast::Im2col<double2>(channels, height, width, kernel_h, kernel_w, pad_h, pad_w, stride_h, stride_w, dilation_h, dilation_w,
3565                                im_buffer, im_offset,
3566                                col_buffer, col_offset,
3567                                queue, event)
3568     );
3569   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3570 }
CLBlastHim2col(const size_t channels,const size_t height,const size_t width,const size_t kernel_h,const size_t kernel_w,const size_t pad_h,const size_t pad_w,const size_t stride_h,const size_t stride_w,const size_t dilation_h,const size_t dilation_w,const cl_mem im_buffer,const size_t im_offset,cl_mem col_buffer,const size_t col_offset,cl_command_queue * queue,cl_event * event)3571 CLBlastStatusCode CLBlastHim2col(const size_t channels, const size_t height, const size_t width, const size_t kernel_h, const size_t kernel_w, const size_t pad_h, const size_t pad_w, const size_t stride_h, const size_t stride_w, const size_t dilation_h, const size_t dilation_w,
3572                                  const cl_mem im_buffer, const size_t im_offset,
3573                                  cl_mem col_buffer, const size_t col_offset,
3574                                  cl_command_queue* queue, cl_event* event) {
3575   try {
3576     return static_cast<CLBlastStatusCode>(
3577       clblast::Im2col<half>(channels, height, width, kernel_h, kernel_w, pad_h, pad_w, stride_h, stride_w, dilation_h, dilation_w,
3578                             im_buffer, im_offset,
3579                             col_buffer, col_offset,
3580                             queue, event)
3581     );
3582   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3583 }
3584 
3585 // AXPY
CLBlastSaxpyBatched(const size_t n,const float * alphas,const cl_mem x_buffer,const size_t * x_offsets,const size_t x_inc,cl_mem y_buffer,const size_t * y_offsets,const size_t y_inc,const size_t batch_count,cl_command_queue * queue,cl_event * event)3586 CLBlastStatusCode CLBlastSaxpyBatched(const size_t n,
3587                                       const float *alphas,
3588                                       const cl_mem x_buffer, const size_t *x_offsets, const size_t x_inc,
3589                                       cl_mem y_buffer, const size_t *y_offsets, const size_t y_inc,
3590                                       const size_t batch_count,
3591                                       cl_command_queue* queue, cl_event* event) {
3592   auto alphas_cpp = std::vector<float>();
3593   for (auto batch = size_t{0}; batch < batch_count; ++batch) {
3594     alphas_cpp.push_back(alphas[batch]);
3595   }
3596   try {
3597     return static_cast<CLBlastStatusCode>(
3598       clblast::AxpyBatched(n,
3599                            alphas_cpp.data(),
3600                            x_buffer, x_offsets, x_inc,
3601                            y_buffer, y_offsets, y_inc,
3602                            batch_count,
3603                            queue, event)
3604     );
3605   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3606 }
CLBlastDaxpyBatched(const size_t n,const double * alphas,const cl_mem x_buffer,const size_t * x_offsets,const size_t x_inc,cl_mem y_buffer,const size_t * y_offsets,const size_t y_inc,const size_t batch_count,cl_command_queue * queue,cl_event * event)3607 CLBlastStatusCode CLBlastDaxpyBatched(const size_t n,
3608                                       const double *alphas,
3609                                       const cl_mem x_buffer, const size_t *x_offsets, const size_t x_inc,
3610                                       cl_mem y_buffer, const size_t *y_offsets, const size_t y_inc,
3611                                       const size_t batch_count,
3612                                       cl_command_queue* queue, cl_event* event) {
3613   auto alphas_cpp = std::vector<double>();
3614   for (auto batch = size_t{0}; batch < batch_count; ++batch) {
3615     alphas_cpp.push_back(alphas[batch]);
3616   }
3617   try {
3618     return static_cast<CLBlastStatusCode>(
3619       clblast::AxpyBatched(n,
3620                            alphas_cpp.data(),
3621                            x_buffer, x_offsets, x_inc,
3622                            y_buffer, y_offsets, y_inc,
3623                            batch_count,
3624                            queue, event)
3625     );
3626   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3627 }
CLBlastCaxpyBatched(const size_t n,const cl_float2 * alphas,const cl_mem x_buffer,const size_t * x_offsets,const size_t x_inc,cl_mem y_buffer,const size_t * y_offsets,const size_t y_inc,const size_t batch_count,cl_command_queue * queue,cl_event * event)3628 CLBlastStatusCode CLBlastCaxpyBatched(const size_t n,
3629                                       const cl_float2 *alphas,
3630                                       const cl_mem x_buffer, const size_t *x_offsets, const size_t x_inc,
3631                                       cl_mem y_buffer, const size_t *y_offsets, const size_t y_inc,
3632                                       const size_t batch_count,
3633                                       cl_command_queue* queue, cl_event* event) {
3634   auto alphas_cpp = std::vector<float2>();
3635   for (auto batch = size_t{0}; batch < batch_count; ++batch) {
3636     alphas_cpp.push_back(float2{alphas[batch].s[0], alphas[batch].s[1]});
3637   }
3638   try {
3639     return static_cast<CLBlastStatusCode>(
3640       clblast::AxpyBatched(n,
3641                            alphas_cpp.data(),
3642                            x_buffer, x_offsets, x_inc,
3643                            y_buffer, y_offsets, y_inc,
3644                            batch_count,
3645                            queue, event)
3646     );
3647   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3648 }
CLBlastZaxpyBatched(const size_t n,const cl_double2 * alphas,const cl_mem x_buffer,const size_t * x_offsets,const size_t x_inc,cl_mem y_buffer,const size_t * y_offsets,const size_t y_inc,const size_t batch_count,cl_command_queue * queue,cl_event * event)3649 CLBlastStatusCode CLBlastZaxpyBatched(const size_t n,
3650                                       const cl_double2 *alphas,
3651                                       const cl_mem x_buffer, const size_t *x_offsets, const size_t x_inc,
3652                                       cl_mem y_buffer, const size_t *y_offsets, const size_t y_inc,
3653                                       const size_t batch_count,
3654                                       cl_command_queue* queue, cl_event* event) {
3655   auto alphas_cpp = std::vector<double2>();
3656   for (auto batch = size_t{0}; batch < batch_count; ++batch) {
3657     alphas_cpp.push_back(double2{alphas[batch].s[0], alphas[batch].s[1]});
3658   }
3659   try {
3660     return static_cast<CLBlastStatusCode>(
3661       clblast::AxpyBatched(n,
3662                            alphas_cpp.data(),
3663                            x_buffer, x_offsets, x_inc,
3664                            y_buffer, y_offsets, y_inc,
3665                            batch_count,
3666                            queue, event)
3667     );
3668   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3669 }
CLBlastHaxpyBatched(const size_t n,const cl_half * alphas,const cl_mem x_buffer,const size_t * x_offsets,const size_t x_inc,cl_mem y_buffer,const size_t * y_offsets,const size_t y_inc,const size_t batch_count,cl_command_queue * queue,cl_event * event)3670 CLBlastStatusCode CLBlastHaxpyBatched(const size_t n,
3671                                       const cl_half *alphas,
3672                                       const cl_mem x_buffer, const size_t *x_offsets, const size_t x_inc,
3673                                       cl_mem y_buffer, const size_t *y_offsets, const size_t y_inc,
3674                                       const size_t batch_count,
3675                                       cl_command_queue* queue, cl_event* event) {
3676   auto alphas_cpp = std::vector<half>();
3677   for (auto batch = size_t{0}; batch < batch_count; ++batch) {
3678     alphas_cpp.push_back(alphas[batch]);
3679   }
3680   try {
3681     return static_cast<CLBlastStatusCode>(
3682       clblast::AxpyBatched(n,
3683                            alphas_cpp.data(),
3684                            x_buffer, x_offsets, x_inc,
3685                            y_buffer, y_offsets, y_inc,
3686                            batch_count,
3687                            queue, event)
3688     );
3689   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3690 }
3691 
3692 // GEMM
CLBlastSgemmBatched(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const CLBlastTranspose b_transpose,const size_t m,const size_t n,const size_t k,const float * alphas,const cl_mem a_buffer,const size_t * a_offsets,const size_t a_ld,const cl_mem b_buffer,const size_t * b_offsets,const size_t b_ld,const float * betas,cl_mem c_buffer,const size_t * c_offsets,const size_t c_ld,const size_t batch_count,cl_command_queue * queue,cl_event * event)3693 CLBlastStatusCode CLBlastSgemmBatched(const CLBlastLayout layout, const CLBlastTranspose a_transpose, const CLBlastTranspose b_transpose,
3694                                       const size_t m, const size_t n, const size_t k,
3695                                       const float *alphas,
3696                                       const cl_mem a_buffer, const size_t *a_offsets, const size_t a_ld,
3697                                       const cl_mem b_buffer, const size_t *b_offsets, const size_t b_ld,
3698                                       const float *betas,
3699                                       cl_mem c_buffer, const size_t *c_offsets, const size_t c_ld,
3700                                       const size_t batch_count,
3701                                       cl_command_queue* queue, cl_event* event) {
3702   auto alphas_cpp = std::vector<float>();
3703   auto betas_cpp = std::vector<float>();
3704   for (auto batch = size_t{0}; batch < batch_count; ++batch) {
3705     alphas_cpp.push_back(alphas[batch]);
3706     betas_cpp.push_back(betas[batch]);
3707   }
3708   try {
3709     return static_cast<CLBlastStatusCode>(
3710       clblast::GemmBatched(static_cast<clblast::Layout>(layout),
3711                            static_cast<clblast::Transpose>(a_transpose),
3712                            static_cast<clblast::Transpose>(b_transpose),
3713                            m, n, k,
3714                            alphas_cpp.data(),
3715                            a_buffer, a_offsets, a_ld,
3716                            b_buffer, b_offsets, b_ld,
3717                            betas_cpp.data(),
3718                            c_buffer, c_offsets, c_ld,
3719                            batch_count,
3720                            queue, event)
3721     );
3722   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3723 }
CLBlastDgemmBatched(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const CLBlastTranspose b_transpose,const size_t m,const size_t n,const size_t k,const double * alphas,const cl_mem a_buffer,const size_t * a_offsets,const size_t a_ld,const cl_mem b_buffer,const size_t * b_offsets,const size_t b_ld,const double * betas,cl_mem c_buffer,const size_t * c_offsets,const size_t c_ld,const size_t batch_count,cl_command_queue * queue,cl_event * event)3724 CLBlastStatusCode CLBlastDgemmBatched(const CLBlastLayout layout, const CLBlastTranspose a_transpose, const CLBlastTranspose b_transpose,
3725                                       const size_t m, const size_t n, const size_t k,
3726                                       const double *alphas,
3727                                       const cl_mem a_buffer, const size_t *a_offsets, const size_t a_ld,
3728                                       const cl_mem b_buffer, const size_t *b_offsets, const size_t b_ld,
3729                                       const double *betas,
3730                                       cl_mem c_buffer, const size_t *c_offsets, const size_t c_ld,
3731                                       const size_t batch_count,
3732                                       cl_command_queue* queue, cl_event* event) {
3733   auto alphas_cpp = std::vector<double>();
3734   auto betas_cpp = std::vector<double>();
3735   for (auto batch = size_t{0}; batch < batch_count; ++batch) {
3736     alphas_cpp.push_back(alphas[batch]);
3737     betas_cpp.push_back(betas[batch]);
3738   }
3739   try {
3740     return static_cast<CLBlastStatusCode>(
3741       clblast::GemmBatched(static_cast<clblast::Layout>(layout),
3742                            static_cast<clblast::Transpose>(a_transpose),
3743                            static_cast<clblast::Transpose>(b_transpose),
3744                            m, n, k,
3745                            alphas_cpp.data(),
3746                            a_buffer, a_offsets, a_ld,
3747                            b_buffer, b_offsets, b_ld,
3748                            betas_cpp.data(),
3749                            c_buffer, c_offsets, c_ld,
3750                            batch_count,
3751                            queue, event)
3752     );
3753   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3754 }
CLBlastCgemmBatched(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const CLBlastTranspose b_transpose,const size_t m,const size_t n,const size_t k,const cl_float2 * alphas,const cl_mem a_buffer,const size_t * a_offsets,const size_t a_ld,const cl_mem b_buffer,const size_t * b_offsets,const size_t b_ld,const cl_float2 * betas,cl_mem c_buffer,const size_t * c_offsets,const size_t c_ld,const size_t batch_count,cl_command_queue * queue,cl_event * event)3755 CLBlastStatusCode CLBlastCgemmBatched(const CLBlastLayout layout, const CLBlastTranspose a_transpose, const CLBlastTranspose b_transpose,
3756                                       const size_t m, const size_t n, const size_t k,
3757                                       const cl_float2 *alphas,
3758                                       const cl_mem a_buffer, const size_t *a_offsets, const size_t a_ld,
3759                                       const cl_mem b_buffer, const size_t *b_offsets, const size_t b_ld,
3760                                       const cl_float2 *betas,
3761                                       cl_mem c_buffer, const size_t *c_offsets, const size_t c_ld,
3762                                       const size_t batch_count,
3763                                       cl_command_queue* queue, cl_event* event) {
3764   auto alphas_cpp = std::vector<float2>();
3765   auto betas_cpp = std::vector<float2>();
3766   for (auto batch = size_t{0}; batch < batch_count; ++batch) {
3767     alphas_cpp.push_back(float2{alphas[batch].s[0], alphas[batch].s[1]});
3768     betas_cpp.push_back(float2{betas[batch].s[0], betas[batch].s[1]});
3769   }
3770   try {
3771     return static_cast<CLBlastStatusCode>(
3772       clblast::GemmBatched(static_cast<clblast::Layout>(layout),
3773                            static_cast<clblast::Transpose>(a_transpose),
3774                            static_cast<clblast::Transpose>(b_transpose),
3775                            m, n, k,
3776                            alphas_cpp.data(),
3777                            a_buffer, a_offsets, a_ld,
3778                            b_buffer, b_offsets, b_ld,
3779                            betas_cpp.data(),
3780                            c_buffer, c_offsets, c_ld,
3781                            batch_count,
3782                            queue, event)
3783     );
3784   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3785 }
CLBlastZgemmBatched(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const CLBlastTranspose b_transpose,const size_t m,const size_t n,const size_t k,const cl_double2 * alphas,const cl_mem a_buffer,const size_t * a_offsets,const size_t a_ld,const cl_mem b_buffer,const size_t * b_offsets,const size_t b_ld,const cl_double2 * betas,cl_mem c_buffer,const size_t * c_offsets,const size_t c_ld,const size_t batch_count,cl_command_queue * queue,cl_event * event)3786 CLBlastStatusCode CLBlastZgemmBatched(const CLBlastLayout layout, const CLBlastTranspose a_transpose, const CLBlastTranspose b_transpose,
3787                                       const size_t m, const size_t n, const size_t k,
3788                                       const cl_double2 *alphas,
3789                                       const cl_mem a_buffer, const size_t *a_offsets, const size_t a_ld,
3790                                       const cl_mem b_buffer, const size_t *b_offsets, const size_t b_ld,
3791                                       const cl_double2 *betas,
3792                                       cl_mem c_buffer, const size_t *c_offsets, const size_t c_ld,
3793                                       const size_t batch_count,
3794                                       cl_command_queue* queue, cl_event* event) {
3795   auto alphas_cpp = std::vector<double2>();
3796   auto betas_cpp = std::vector<double2>();
3797   for (auto batch = size_t{0}; batch < batch_count; ++batch) {
3798     alphas_cpp.push_back(double2{alphas[batch].s[0], alphas[batch].s[1]});
3799     betas_cpp.push_back(double2{betas[batch].s[0], betas[batch].s[1]});
3800   }
3801   try {
3802     return static_cast<CLBlastStatusCode>(
3803       clblast::GemmBatched(static_cast<clblast::Layout>(layout),
3804                            static_cast<clblast::Transpose>(a_transpose),
3805                            static_cast<clblast::Transpose>(b_transpose),
3806                            m, n, k,
3807                            alphas_cpp.data(),
3808                            a_buffer, a_offsets, a_ld,
3809                            b_buffer, b_offsets, b_ld,
3810                            betas_cpp.data(),
3811                            c_buffer, c_offsets, c_ld,
3812                            batch_count,
3813                            queue, event)
3814     );
3815   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3816 }
CLBlastHgemmBatched(const CLBlastLayout layout,const CLBlastTranspose a_transpose,const CLBlastTranspose b_transpose,const size_t m,const size_t n,const size_t k,const cl_half * alphas,const cl_mem a_buffer,const size_t * a_offsets,const size_t a_ld,const cl_mem b_buffer,const size_t * b_offsets,const size_t b_ld,const cl_half * betas,cl_mem c_buffer,const size_t * c_offsets,const size_t c_ld,const size_t batch_count,cl_command_queue * queue,cl_event * event)3817 CLBlastStatusCode CLBlastHgemmBatched(const CLBlastLayout layout, const CLBlastTranspose a_transpose, const CLBlastTranspose b_transpose,
3818                                       const size_t m, const size_t n, const size_t k,
3819                                       const cl_half *alphas,
3820                                       const cl_mem a_buffer, const size_t *a_offsets, const size_t a_ld,
3821                                       const cl_mem b_buffer, const size_t *b_offsets, const size_t b_ld,
3822                                       const cl_half *betas,
3823                                       cl_mem c_buffer, const size_t *c_offsets, const size_t c_ld,
3824                                       const size_t batch_count,
3825                                       cl_command_queue* queue, cl_event* event) {
3826   auto alphas_cpp = std::vector<half>();
3827   auto betas_cpp = std::vector<half>();
3828   for (auto batch = size_t{0}; batch < batch_count; ++batch) {
3829     alphas_cpp.push_back(alphas[batch]);
3830     betas_cpp.push_back(betas[batch]);
3831   }
3832   try {
3833     return static_cast<CLBlastStatusCode>(
3834       clblast::GemmBatched(static_cast<clblast::Layout>(layout),
3835                            static_cast<clblast::Transpose>(a_transpose),
3836                            static_cast<clblast::Transpose>(b_transpose),
3837                            m, n, k,
3838                            alphas_cpp.data(),
3839                            a_buffer, a_offsets, a_ld,
3840                            b_buffer, b_offsets, b_ld,
3841                            betas_cpp.data(),
3842                            c_buffer, c_offsets, c_ld,
3843                            batch_count,
3844                            queue, event)
3845     );
3846   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3847 }
3848 
3849 // =================================================================================================
3850 
3851 // Clears the cache of stored binaries
CLBlastClearCache()3852 CLBlastStatusCode CLBlastClearCache() {
3853   try {
3854     return static_cast<CLBlastStatusCode>(clblast::ClearCache());
3855   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3856 }
3857 
3858 // Fills the cache with binaries for a specific device
CLBlastFillCache(const cl_device_id device)3859 CLBlastStatusCode CLBlastFillCache(const cl_device_id device) {
3860   try {
3861     return static_cast<CLBlastStatusCode>(clblast::FillCache(device));
3862   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3863 }
3864 
3865 // =================================================================================================
3866 
3867 // Overrides the tuning parameters for this device-precision-kernel combination
CLBlastOverrideParameters(const cl_device_id device,const char * kernel_name,const CLBlastPrecision precision,const size_t num_parameters,const char ** parameters_names,const size_t * parameters_values)3868 CLBlastStatusCode PUBLIC_API CLBlastOverrideParameters(const cl_device_id device, const char* kernel_name,
3869                                                        const CLBlastPrecision precision, const size_t num_parameters,
3870                                                        const char** parameters_names, const size_t* parameters_values) {
3871   try {
3872     const auto kernel_name_cpp = std::string(kernel_name);
3873     const auto precision_cpp = static_cast<clblast::Precision>(precision);
3874     auto parameters = std::unordered_map<std::string, size_t>();
3875     for (auto i = size_t{0}; i < num_parameters; ++i) {
3876       const auto parameter_name = std::string(parameters_names[i]);
3877       const auto parameter_value = parameters_values[i];
3878       parameters[parameter_name] = parameter_value;
3879     }
3880     const auto status = clblast::OverrideParameters(device, kernel_name_cpp, precision_cpp, parameters);
3881     return static_cast<CLBlastStatusCode>(status);
3882   } catch (...) { return static_cast<CLBlastStatusCode>(clblast::DispatchExceptionForC()); }
3883 }
3884 
3885 // =================================================================================================
3886