Merge pull request #96 from xianyi/develop
[platform/upstream/openblas.git] / common_param.h
1 /*********************************************************************/
2 /* Copyright 2009, 2010 The University of Texas at Austin.           */
3 /* All rights reserved.                                              */
4 /*                                                                   */
5 /* Redistribution and use in source and binary forms, with or        */
6 /* without modification, are permitted provided that the following   */
7 /* conditions are met:                                               */
8 /*                                                                   */
9 /*   1. Redistributions of source code must retain the above         */
10 /*      copyright notice, this list of conditions and the following  */
11 /*      disclaimer.                                                  */
12 /*                                                                   */
13 /*   2. Redistributions in binary form must reproduce the above      */
14 /*      copyright notice, this list of conditions and the following  */
15 /*      disclaimer in the documentation and/or other materials       */
16 /*      provided with the distribution.                              */
17 /*                                                                   */
18 /*    THIS  SOFTWARE IS PROVIDED  BY THE  UNIVERSITY OF  TEXAS AT    */
19 /*    AUSTIN  ``AS IS''  AND ANY  EXPRESS OR  IMPLIED WARRANTIES,    */
20 /*    INCLUDING, BUT  NOT LIMITED  TO, THE IMPLIED  WARRANTIES OF    */
21 /*    MERCHANTABILITY  AND FITNESS FOR  A PARTICULAR  PURPOSE ARE    */
22 /*    DISCLAIMED.  IN  NO EVENT SHALL THE UNIVERSITY  OF TEXAS AT    */
23 /*    AUSTIN OR CONTRIBUTORS BE  LIABLE FOR ANY DIRECT, INDIRECT,    */
24 /*    INCIDENTAL,  SPECIAL, EXEMPLARY,  OR  CONSEQUENTIAL DAMAGES    */
25 /*    (INCLUDING, BUT  NOT LIMITED TO,  PROCUREMENT OF SUBSTITUTE    */
26 /*    GOODS  OR  SERVICES; LOSS  OF  USE,  DATA,  OR PROFITS;  OR    */
27 /*    BUSINESS INTERRUPTION) HOWEVER CAUSED  AND ON ANY THEORY OF    */
28 /*    LIABILITY, WHETHER  IN CONTRACT, STRICT  LIABILITY, OR TORT    */
29 /*    (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY WAY OUT    */
30 /*    OF  THE  USE OF  THIS  SOFTWARE,  EVEN  IF ADVISED  OF  THE    */
31 /*    POSSIBILITY OF SUCH DAMAGE.                                    */
32 /*                                                                   */
33 /* The views and conclusions contained in the software and           */
34 /* documentation are those of the authors and should not be          */
35 /* interpreted as representing official policies, either expressed   */
36 /* or implied, of The University of Texas at Austin.                 */
37 /*********************************************************************/
38
39 #ifndef COMMON_PARAM_H
40 #define COMMON_PARAM_H
41
42 #ifndef ASSEMBLER
43
44 #ifdef DYNAMIC_ARCH
45
46 typedef struct {
47   int dtb_entries;
48   int offsetA, offsetB, align;
49
50 #ifdef BUILD_HALF
51   int shgemm_p, shgemm_q, shgemm_r;
52   int shgemm_unroll_m, shgemm_unroll_n, shgemm_unroll_mn;
53
54   void   (*shstobf16_k) (BLASLONG, float    *, BLASLONG, bfloat16 *, BLASLONG);
55   void   (*shdtobf16_k) (BLASLONG, double   *, BLASLONG, bfloat16 *, BLASLONG);
56   void   (*sbf16tos_k)  (BLASLONG, bfloat16 *, BLASLONG, float    *, BLASLONG);
57   void   (*dbf16tod_k)  (BLASLONG, bfloat16 *, BLASLONG, double   *, BLASLONG);
58
59   float  (*shamax_k) (BLASLONG, float *, BLASLONG);
60   float  (*shamin_k) (BLASLONG, float *, BLASLONG);
61   float  (*shmax_k)  (BLASLONG, float *, BLASLONG);
62   float  (*shmin_k)  (BLASLONG, float *, BLASLONG);
63 BLASLONG (*ishamax_k)(BLASLONG, float *, BLASLONG);
64 BLASLONG (*ishamin_k)(BLASLONG, float *, BLASLONG);
65 BLASLONG (*ishmax_k) (BLASLONG, float *, BLASLONG);
66 BLASLONG (*ishmin_k) (BLASLONG, float *, BLASLONG);
67
68   float  (*shnrm2_k) (BLASLONG, float *, BLASLONG);
69   float  (*shasum_k) (BLASLONG, float *, BLASLONG);
70   float  (*shsum_k)  (BLASLONG, float *, BLASLONG);
71   int    (*shcopy_k) (BLASLONG, float *, BLASLONG, float *, BLASLONG);
72   float  (*shdot_k)  (BLASLONG, bfloat16 *, BLASLONG, bfloat16 *, BLASLONG);
73   double (*dshdot_k) (BLASLONG, float *, BLASLONG, float *, BLASLONG);
74
75   int    (*shrot_k)  (BLASLONG, float *, BLASLONG, float *, BLASLONG, float, float);
76
77   int    (*shaxpy_k) (BLASLONG, BLASLONG, BLASLONG, float, float *, BLASLONG, float *, BLASLONG, float *, BLASLONG);
78   int    (*shscal_k) (BLASLONG, BLASLONG, BLASLONG, float, float *, BLASLONG, float *, BLASLONG, float *, BLASLONG);
79   int    (*shswap_k) (BLASLONG, BLASLONG, BLASLONG, float, float *, BLASLONG, float *, BLASLONG, float *, BLASLONG);
80
81   int    (*shgemv_n) (BLASLONG, BLASLONG, BLASLONG, float, float *, BLASLONG, float *, BLASLONG, float *, BLASLONG, float *);
82   int    (*shgemv_t) (BLASLONG, BLASLONG, BLASLONG, float, float *, BLASLONG, float *, BLASLONG, float *, BLASLONG, float *);
83   int    (*shger_k)  (BLASLONG, BLASLONG, BLASLONG, float, float *, BLASLONG, float *, BLASLONG, float *, BLASLONG, float *);
84
85   int    (*shsymv_L) (BLASLONG, BLASLONG, float,  float  *, BLASLONG, float  *, BLASLONG, float  *, BLASLONG, float *);
86   int    (*shsymv_U) (BLASLONG, BLASLONG, float,  float  *, BLASLONG, float  *, BLASLONG, float  *, BLASLONG, float *);
87
88   int    (*shgemm_kernel   )(BLASLONG, BLASLONG, BLASLONG, float, bfloat16 *, bfloat16 *, float *, BLASLONG);
89   int    (*shgemm_beta     )(BLASLONG, BLASLONG, BLASLONG, float, bfloat16 *, BLASLONG, bfloat16 *, BLASLONG, float *, BLASLONG);
90
91   int    (*shgemm_incopy   )(BLASLONG, BLASLONG, bfloat16 *, BLASLONG, bfloat16 *);
92   int    (*shgemm_itcopy   )(BLASLONG, BLASLONG, bfloat16 *, BLASLONG, bfloat16 *);
93   int    (*shgemm_oncopy   )(BLASLONG, BLASLONG, bfloat16 *, BLASLONG, bfloat16 *);
94   int    (*shgemm_otcopy   )(BLASLONG, BLASLONG, bfloat16 *, BLASLONG, bfloat16 *);
95
96   int    (*shtrsm_kernel_LN)(BLASLONG, BLASLONG, BLASLONG, float, float *, float *, float *, BLASLONG, BLASLONG);
97   int    (*shtrsm_kernel_LT)(BLASLONG, BLASLONG, BLASLONG, float, float *, float *, float *, BLASLONG, BLASLONG);
98   int    (*shtrsm_kernel_RN)(BLASLONG, BLASLONG, BLASLONG, float, float *, float *, float *, BLASLONG, BLASLONG);
99   int    (*shtrsm_kernel_RT)(BLASLONG, BLASLONG, BLASLONG, float, float *, float *, float *, BLASLONG, BLASLONG);
100
101   int    (*shtrsm_iunucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
102   int    (*shtrsm_iunncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
103   int    (*shtrsm_iutucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
104   int    (*shtrsm_iutncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
105   int    (*shtrsm_ilnucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
106   int    (*shtrsm_ilnncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
107   int    (*shtrsm_iltucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
108   int    (*shtrsm_iltncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
109   int    (*shtrsm_ounucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
110   int    (*shtrsm_ounncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
111   int    (*shtrsm_outucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
112   int    (*shtrsm_outncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
113   int    (*shtrsm_olnucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
114   int    (*shtrsm_olnncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
115   int    (*shtrsm_oltucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
116   int    (*shtrsm_oltncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
117
118   int    (*shtrmm_kernel_RN)(BLASLONG, BLASLONG, BLASLONG, float, float *, float *, float *, BLASLONG, BLASLONG);
119   int    (*shtrmm_kernel_RT)(BLASLONG, BLASLONG, BLASLONG, float, float *, float *, float *, BLASLONG, BLASLONG);
120   int    (*shtrmm_kernel_LN)(BLASLONG, BLASLONG, BLASLONG, float, float *, float *, float *, BLASLONG, BLASLONG);
121   int    (*shtrmm_kernel_LT)(BLASLONG, BLASLONG, BLASLONG, float, float *, float *, float *, BLASLONG, BLASLONG);
122
123   int    (*shtrmm_iunucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
124   int    (*shtrmm_iunncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
125   int    (*shtrmm_iutucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
126   int    (*shtrmm_iutncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
127   int    (*shtrmm_ilnucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
128   int    (*shtrmm_ilnncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
129   int    (*shtrmm_iltucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
130   int    (*shtrmm_iltncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
131   int    (*shtrmm_ounucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
132   int    (*shtrmm_ounncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
133   int    (*shtrmm_outucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
134   int    (*shtrmm_outncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
135   int    (*shtrmm_olnucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
136   int    (*shtrmm_olnncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
137   int    (*shtrmm_oltucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
138   int    (*shtrmm_oltncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
139
140   int    (*shsymm_iutcopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
141   int    (*shsymm_iltcopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
142   int    (*shsymm_outcopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
143   int    (*shsymm_oltcopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
144
145   int    (*shneg_tcopy)   (BLASLONG, BLASLONG, float *, BLASLONG, float *);
146   int    (*shlaswp_ncopy) (BLASLONG, BLASLONG, BLASLONG, float *, BLASLONG, blasint *, float *);
147
148 #endif
149
150 #if (BUILD_SINGLE) || (BUILD_DOUBLE) || (BUILD_COMPLEX) || (BUILD_COMPLEX16)
151   int sgemm_p, sgemm_q, sgemm_r;
152   int sgemm_unroll_m, sgemm_unroll_n, sgemm_unroll_mn;
153 #endif
154
155   int exclusive_cache;
156
157 #if (BUILD_SINGLE) || (BUILD_DOUBLE) || (BUILD_COMPLEX)
158   float  (*samax_k) (BLASLONG, float *, BLASLONG);
159   float  (*samin_k) (BLASLONG, float *, BLASLONG);
160   float  (*smax_k)  (BLASLONG, float *, BLASLONG);
161   float  (*smin_k)  (BLASLONG, float *, BLASLONG);
162
163 BLASLONG (*isamax_k)(BLASLONG, float *, BLASLONG);
164 BLASLONG (*isamin_k)(BLASLONG, float *, BLASLONG);
165 BLASLONG (*ismax_k) (BLASLONG, float *, BLASLONG);
166 BLASLONG (*ismin_k) (BLASLONG, float *, BLASLONG);
167   float  (*snrm2_k) (BLASLONG, float *, BLASLONG);
168   float  (*sasum_k) (BLASLONG, float *, BLASLONG);
169 #endif
170
171 #if BUILD_SINGLE
172   float  (*ssum_k)  (BLASLONG, float *, BLASLONG);
173 #endif  
174 #if (BUILD_SINGLE) || (BUILD_DOUBLE) || (BUILD_COMPLEX)
175   int    (*scopy_k) (BLASLONG, float *, BLASLONG, float *, BLASLONG);
176   float  (*sdot_k)  (BLASLONG, float *, BLASLONG, float *, BLASLONG);
177   //double (*dsdot_k) (BLASLONG, float *, BLASLONG, float *, BLASLONG);
178
179   int    (*srot_k)  (BLASLONG, float *, BLASLONG, float *, BLASLONG, float, float);
180
181   int    (*saxpy_k) (BLASLONG, BLASLONG, BLASLONG, float, float *, BLASLONG, float *, BLASLONG, float *, BLASLONG);
182 #endif
183 #if (BUILD_SINGLE) || (BUILD_DOUBLE) || (BUILD_COMPLEX) || (BUILD_COMPLEX16)
184   int    (*sscal_k) (BLASLONG, BLASLONG, BLASLONG, float, float *, BLASLONG, float *, BLASLONG, float *, BLASLONG);
185 #endif
186 #if (BUILD_SINGLE) || (BUILD_DOUBLE) || (BUILD_COMPLEX)
187   int    (*sswap_k) (BLASLONG, BLASLONG, BLASLONG, float, float *, BLASLONG, float *, BLASLONG, float *, BLASLONG);
188
189   int    (*sgemv_n) (BLASLONG, BLASLONG, BLASLONG, float, float *, BLASLONG, float *, BLASLONG, float *, BLASLONG, float *);
190   int    (*sgemv_t) (BLASLONG, BLASLONG, BLASLONG, float, float *, BLASLONG, float *, BLASLONG, float *, BLASLONG, float *);
191 #endif
192
193 #if BUILD_SINGLE
194   int    (*sger_k)  (BLASLONG, BLASLONG, BLASLONG, float, float *, BLASLONG, float *, BLASLONG, float *, BLASLONG, float *);
195
196   int    (*ssymv_L) (BLASLONG, BLASLONG, float,  float  *, BLASLONG, float  *, BLASLONG, float  *, BLASLONG, float *);
197   int    (*ssymv_U) (BLASLONG, BLASLONG, float,  float  *, BLASLONG, float  *, BLASLONG, float  *, BLASLONG, float *);
198 #endif
199
200
201 #if (BUILD_SINGLE) || (BUILD_DOUBLE) || (BUILD_COMPLEX)
202 #ifdef ARCH_X86_64
203   void (*sgemm_direct) (BLASLONG, BLASLONG, BLASLONG, float *, BLASLONG , float *, BLASLONG , float * , BLASLONG);
204   int  (*sgemm_direct_performant) (BLASLONG M, BLASLONG N, BLASLONG K);
205 #endif
206   
207   int    (*sgemm_kernel   )(BLASLONG, BLASLONG, BLASLONG, float, float *, float *, float *, BLASLONG);
208   int    (*sgemm_beta     )(BLASLONG, BLASLONG, BLASLONG, float, float *, BLASLONG, float *, BLASLONG, float  *, BLASLONG);
209
210
211   int    (*sgemm_incopy   )(BLASLONG, BLASLONG, float *, BLASLONG, float *);
212   int    (*sgemm_itcopy   )(BLASLONG, BLASLONG, float *, BLASLONG, float *);
213   int    (*sgemm_oncopy   )(BLASLONG, BLASLONG, float *, BLASLONG, float *);
214   int    (*sgemm_otcopy   )(BLASLONG, BLASLONG, float *, BLASLONG, float *);
215 #endif
216
217 #if (BUILD_SINGLE) || (BUILD_DOUBLE)  
218   int    (*strsm_kernel_LN)(BLASLONG, BLASLONG, BLASLONG, float, float *, float *, float *, BLASLONG, BLASLONG);
219   int    (*strsm_kernel_LT)(BLASLONG, BLASLONG, BLASLONG, float, float *, float *, float *, BLASLONG, BLASLONG);
220   int    (*strsm_kernel_RN)(BLASLONG, BLASLONG, BLASLONG, float, float *, float *, float *, BLASLONG, BLASLONG);
221   int    (*strsm_kernel_RT)(BLASLONG, BLASLONG, BLASLONG, float, float *, float *, float *, BLASLONG, BLASLONG);
222
223   int    (*strsm_iunucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
224   int    (*strsm_iunncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
225   int    (*strsm_iutucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
226   int    (*strsm_iutncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
227   int    (*strsm_ilnucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
228   int    (*strsm_ilnncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
229   int    (*strsm_iltucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
230   int    (*strsm_iltncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
231   int    (*strsm_ounucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
232   int    (*strsm_ounncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
233   int    (*strsm_outucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
234   int    (*strsm_outncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
235   int    (*strsm_olnucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
236   int    (*strsm_olnncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
237   int    (*strsm_oltucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
238   int    (*strsm_oltncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
239 #endif
240 #if BUILD_SINGLE
241   int    (*strmm_kernel_RN)(BLASLONG, BLASLONG, BLASLONG, float, float *, float *, float *, BLASLONG, BLASLONG);
242   int    (*strmm_kernel_RT)(BLASLONG, BLASLONG, BLASLONG, float, float *, float *, float *, BLASLONG, BLASLONG);
243   int    (*strmm_kernel_LN)(BLASLONG, BLASLONG, BLASLONG, float, float *, float *, float *, BLASLONG, BLASLONG);
244   int    (*strmm_kernel_LT)(BLASLONG, BLASLONG, BLASLONG, float, float *, float *, float *, BLASLONG, BLASLONG);
245
246   int    (*strmm_iunucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
247   int    (*strmm_iunncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
248   int    (*strmm_iutucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
249   int    (*strmm_iutncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
250   int    (*strmm_ilnucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
251   int    (*strmm_ilnncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
252   int    (*strmm_iltucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
253   int    (*strmm_iltncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
254   int    (*strmm_ounucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
255   int    (*strmm_ounncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
256   int    (*strmm_outucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
257   int    (*strmm_outncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
258   int    (*strmm_olnucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
259   int    (*strmm_olnncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
260   int    (*strmm_oltucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
261   int    (*strmm_oltncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
262
263   int    (*ssymm_iutcopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
264   int    (*ssymm_iltcopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
265   int    (*ssymm_outcopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
266   int    (*ssymm_oltcopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
267 #endif
268 #if (BUILD_SINGLE) || (BUILD_DOUBLE)
269   int    (*sneg_tcopy)   (BLASLONG, BLASLONG, float *, BLASLONG, float *);
270   int    (*slaswp_ncopy) (BLASLONG, BLASLONG, BLASLONG, float *, BLASLONG, blasint *, float *);
271 #endif
272
273 #if (BUILD_DOUBLE) || (BUILD_COMPLEX16)
274   int dgemm_p, dgemm_q, dgemm_r;
275   int dgemm_unroll_m, dgemm_unroll_n, dgemm_unroll_mn;
276 #endif
277
278 #if (BUILD_DOUBLE) || (BUILD_COMPLEX16)
279   double (*damax_k) (BLASLONG, double *, BLASLONG);
280   double (*damin_k) (BLASLONG, double *, BLASLONG);
281   double (*dmax_k)  (BLASLONG, double *, BLASLONG);
282   double (*dmin_k)  (BLASLONG, double *, BLASLONG);
283 BLASLONG (*idamax_k)(BLASLONG, double *, BLASLONG);
284 BLASLONG (*idamin_k)(BLASLONG, double *, BLASLONG);
285 BLASLONG (*idmax_k) (BLASLONG, double *, BLASLONG);
286 BLASLONG (*idmin_k) (BLASLONG, double *, BLASLONG);
287 #endif
288
289 #if (BUILD_DOUBLE) || (BUILD_COMPLEX16)
290   double (*dnrm2_k) (BLASLONG, double *, BLASLONG);
291   double (*dasum_k) (BLASLONG, double *, BLASLONG);
292 #endif
293 #if BUILD_DOUBLE
294   double (*dsum_k)  (BLASLONG, double *, BLASLONG);
295 #endif
296 #if (BUILD_DOUBLE) || (BUILD_COMPLEX16)
297   int    (*dcopy_k) (BLASLONG, double *, BLASLONG, double *, BLASLONG);
298   double (*ddot_k)  (BLASLONG, double *, BLASLONG, double *, BLASLONG);
299 #endif
300 #if  (BUILD_SINGLE) || (BUILD_DOUBLE)
301   double (*dsdot_k) (BLASLONG, float *, BLASLONG, float *, BLASLONG);
302 #endif
303 #if (BUILD_DOUBLE) || (BUILD_COMPLEX16)
304   int    (*drot_k)  (BLASLONG, double *, BLASLONG, double *, BLASLONG, double, double);
305   int    (*daxpy_k) (BLASLONG, BLASLONG, BLASLONG, double, double *, BLASLONG, double *, BLASLONG, double *, BLASLONG);
306   int    (*dscal_k) (BLASLONG, BLASLONG, BLASLONG, double, double *, BLASLONG, double *, BLASLONG, double *, BLASLONG);
307   int    (*dswap_k) (BLASLONG, BLASLONG, BLASLONG, double, double *, BLASLONG, double *, BLASLONG, double *, BLASLONG);
308   int    (*dgemv_n) (BLASLONG, BLASLONG, BLASLONG, double, double *, BLASLONG, double *, BLASLONG, double *, BLASLONG, double *);
309   int    (*dgemv_t) (BLASLONG, BLASLONG, BLASLONG, double, double *, BLASLONG, double *, BLASLONG, double *, BLASLONG, double *);
310 #endif
311
312 #if BUILD_DOUBLE
313   int    (*dger_k)  (BLASLONG, BLASLONG, BLASLONG, double, double *, BLASLONG, double *, BLASLONG, double *, BLASLONG, double *);
314
315   int    (*dsymv_L) (BLASLONG, BLASLONG, double,  double  *, BLASLONG, double  *, BLASLONG, double  *, BLASLONG, double *);
316   int    (*dsymv_U) (BLASLONG, BLASLONG, double,  double  *, BLASLONG, double  *, BLASLONG, double  *, BLASLONG, double *);
317 #endif
318
319 #if (BUILD_DOUBLE) || (BUILD_COMPLEX16)
320   int    (*dgemm_kernel   )(BLASLONG, BLASLONG, BLASLONG, double, double *, double *, double *, BLASLONG);
321   int    (*dgemm_beta     )(BLASLONG, BLASLONG, BLASLONG, double, double *, BLASLONG, double *, BLASLONG, double  *, BLASLONG);
322
323   int    (*dgemm_incopy   )(BLASLONG, BLASLONG, double *, BLASLONG, double *);
324   int    (*dgemm_itcopy   )(BLASLONG, BLASLONG, double *, BLASLONG, double *);
325   int    (*dgemm_oncopy   )(BLASLONG, BLASLONG, double *, BLASLONG, double *);
326   int    (*dgemm_otcopy   )(BLASLONG, BLASLONG, double *, BLASLONG, double *);
327 #endif
328
329 #if BUILD_DOUBLE
330   int    (*dtrsm_kernel_LN)(BLASLONG, BLASLONG, BLASLONG, double, double *, double *, double *, BLASLONG, BLASLONG);
331   int    (*dtrsm_kernel_LT)(BLASLONG, BLASLONG, BLASLONG, double, double *, double *, double *, BLASLONG, BLASLONG);
332   int    (*dtrsm_kernel_RN)(BLASLONG, BLASLONG, BLASLONG, double, double *, double *, double *, BLASLONG, BLASLONG);
333   int    (*dtrsm_kernel_RT)(BLASLONG, BLASLONG, BLASLONG, double, double *, double *, double *, BLASLONG, BLASLONG);
334
335   int    (*dtrsm_iunucopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, double *);
336   int    (*dtrsm_iunncopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, double *);
337   int    (*dtrsm_iutucopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, double *);
338   int    (*dtrsm_iutncopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, double *);
339   int    (*dtrsm_ilnucopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, double *);
340   int    (*dtrsm_ilnncopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, double *);
341   int    (*dtrsm_iltucopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, double *);
342   int    (*dtrsm_iltncopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, double *);
343   int    (*dtrsm_ounucopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, double *);
344   int    (*dtrsm_ounncopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, double *);
345   int    (*dtrsm_outucopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, double *);
346   int    (*dtrsm_outncopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, double *);
347   int    (*dtrsm_olnucopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, double *);
348   int    (*dtrsm_olnncopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, double *);
349   int    (*dtrsm_oltucopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, double *);
350   int    (*dtrsm_oltncopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, double *);
351
352   int    (*dtrmm_kernel_RN)(BLASLONG, BLASLONG, BLASLONG, double, double *, double *, double *, BLASLONG, BLASLONG);
353   int    (*dtrmm_kernel_RT)(BLASLONG, BLASLONG, BLASLONG, double, double *, double *, double *, BLASLONG, BLASLONG);
354   int    (*dtrmm_kernel_LN)(BLASLONG, BLASLONG, BLASLONG, double, double *, double *, double *, BLASLONG, BLASLONG);
355   int    (*dtrmm_kernel_LT)(BLASLONG, BLASLONG, BLASLONG, double, double *, double *, double *, BLASLONG, BLASLONG);
356
357   int    (*dtrmm_iunucopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
358   int    (*dtrmm_iunncopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
359   int    (*dtrmm_iutucopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
360   int    (*dtrmm_iutncopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
361   int    (*dtrmm_ilnucopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
362   int    (*dtrmm_ilnncopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
363   int    (*dtrmm_iltucopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
364   int    (*dtrmm_iltncopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
365   int    (*dtrmm_ounucopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
366   int    (*dtrmm_ounncopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
367   int    (*dtrmm_outucopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
368   int    (*dtrmm_outncopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
369   int    (*dtrmm_olnucopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
370   int    (*dtrmm_olnncopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
371   int    (*dtrmm_oltucopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
372   int    (*dtrmm_oltncopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
373
374   int    (*dsymm_iutcopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
375   int    (*dsymm_iltcopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
376   int    (*dsymm_outcopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
377   int    (*dsymm_oltcopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
378
379   int    (*dneg_tcopy)   (BLASLONG, BLASLONG, double *, BLASLONG, double *);
380   int    (*dlaswp_ncopy) (BLASLONG, BLASLONG, BLASLONG, double *, BLASLONG, blasint *, double *);
381 #endif
382 #ifdef EXPRECISION
383
384   int qgemm_p, qgemm_q, qgemm_r;
385   int qgemm_unroll_m, qgemm_unroll_n, qgemm_unroll_mn;
386
387  xdouble (*qamax_k) (BLASLONG, xdouble *, BLASLONG);
388  xdouble (*qamin_k) (BLASLONG, xdouble *, BLASLONG);
389  xdouble (*qmax_k)  (BLASLONG, xdouble *, BLASLONG);
390  xdouble (*qmin_k)  (BLASLONG, xdouble *, BLASLONG);
391 BLASLONG (*iqamax_k)(BLASLONG, xdouble *, BLASLONG);
392 BLASLONG (*iqamin_k)(BLASLONG, xdouble *, BLASLONG);
393 BLASLONG (*iqmax_k) (BLASLONG, xdouble *, BLASLONG);
394 BLASLONG (*iqmin_k) (BLASLONG, xdouble *, BLASLONG);
395
396  xdouble (*qnrm2_k) (BLASLONG, xdouble *, BLASLONG);
397  xdouble (*qasum_k) (BLASLONG, xdouble *, BLASLONG);
398  xdouble (*qsum_k)  (BLASLONG, xdouble *, BLASLONG);
399   int    (*qcopy_k) (BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG);
400  xdouble (*qdot_k)  (BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG);
401   int    (*qrot_k)  (BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble, xdouble);
402
403   int    (*qaxpy_k) (BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG);
404   int    (*qscal_k) (BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG);
405   int    (*qswap_k) (BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG);
406
407   int    (*qgemv_n) (BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *);
408   int    (*qgemv_t) (BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *);
409   int    (*qger_k)  (BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *);
410
411   int    (*qsymv_L) (BLASLONG, BLASLONG, xdouble,  xdouble  *, BLASLONG, xdouble  *, BLASLONG, xdouble  *, BLASLONG, xdouble *);
412   int    (*qsymv_U) (BLASLONG, BLASLONG, xdouble,  xdouble  *, BLASLONG, xdouble  *, BLASLONG, xdouble  *, BLASLONG, xdouble *);
413
414   int    (*qgemm_kernel   )(BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble *, xdouble *, xdouble *, BLASLONG);
415   int    (*qgemm_beta     )(BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble  *, BLASLONG);
416
417   int    (*qgemm_incopy   )(BLASLONG, BLASLONG, xdouble *, BLASLONG, xdouble *);
418   int    (*qgemm_itcopy   )(BLASLONG, BLASLONG, xdouble *, BLASLONG, xdouble *);
419   int    (*qgemm_oncopy   )(BLASLONG, BLASLONG, xdouble *, BLASLONG, xdouble *);
420   int    (*qgemm_otcopy   )(BLASLONG, BLASLONG, xdouble *, BLASLONG, xdouble *);
421
422   int    (*qtrsm_kernel_LN)(BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble *, xdouble *, xdouble *, BLASLONG, BLASLONG);
423   int    (*qtrsm_kernel_LT)(BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble *, xdouble *, xdouble *, BLASLONG, BLASLONG);
424   int    (*qtrsm_kernel_RN)(BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble *, xdouble *, xdouble *, BLASLONG, BLASLONG);
425   int    (*qtrsm_kernel_RT)(BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble *, xdouble *, xdouble *, BLASLONG, BLASLONG);
426
427   int    (*qtrsm_iunucopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, xdouble *);
428   int    (*qtrsm_iunncopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, xdouble *);
429   int    (*qtrsm_iutucopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, xdouble *);
430   int    (*qtrsm_iutncopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, xdouble *);
431   int    (*qtrsm_ilnucopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, xdouble *);
432   int    (*qtrsm_ilnncopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, xdouble *);
433   int    (*qtrsm_iltucopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, xdouble *);
434   int    (*qtrsm_iltncopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, xdouble *);
435   int    (*qtrsm_ounucopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, xdouble *);
436   int    (*qtrsm_ounncopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, xdouble *);
437   int    (*qtrsm_outucopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, xdouble *);
438   int    (*qtrsm_outncopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, xdouble *);
439   int    (*qtrsm_olnucopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, xdouble *);
440   int    (*qtrsm_olnncopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, xdouble *);
441   int    (*qtrsm_oltucopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, xdouble *);
442   int    (*qtrsm_oltncopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, xdouble *);
443
444   int    (*qtrmm_kernel_RN)(BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble *, xdouble *, xdouble *, BLASLONG, BLASLONG);
445   int    (*qtrmm_kernel_RT)(BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble *, xdouble *, xdouble *, BLASLONG, BLASLONG);
446   int    (*qtrmm_kernel_LN)(BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble *, xdouble *, xdouble *, BLASLONG, BLASLONG);
447   int    (*qtrmm_kernel_LT)(BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble *, xdouble *, xdouble *, BLASLONG, BLASLONG);
448
449   int    (*qtrmm_iunucopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
450   int    (*qtrmm_iunncopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
451   int    (*qtrmm_iutucopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
452   int    (*qtrmm_iutncopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
453   int    (*qtrmm_ilnucopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
454   int    (*qtrmm_ilnncopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
455   int    (*qtrmm_iltucopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
456   int    (*qtrmm_iltncopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
457   int    (*qtrmm_ounucopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
458   int    (*qtrmm_ounncopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
459   int    (*qtrmm_outucopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
460   int    (*qtrmm_outncopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
461   int    (*qtrmm_olnucopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
462   int    (*qtrmm_olnncopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
463   int    (*qtrmm_oltucopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
464   int    (*qtrmm_oltncopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
465
466   int    (*qsymm_iutcopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
467   int    (*qsymm_iltcopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
468   int    (*qsymm_outcopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
469   int    (*qsymm_oltcopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
470
471   int    (*qneg_tcopy)   (BLASLONG, BLASLONG, xdouble *, BLASLONG, xdouble *);
472   int    (*qlaswp_ncopy) (BLASLONG, BLASLONG, BLASLONG, xdouble *, BLASLONG, blasint *, xdouble *);
473
474 #endif
475
476
477 #if (BUILD_COMPLEX) || (BUILD_COMPLEX16)
478   int cgemm_p, cgemm_q, cgemm_r;
479   int cgemm_unroll_m, cgemm_unroll_n, cgemm_unroll_mn;
480   float (*camax_k) (BLASLONG, float *, BLASLONG);
481   float (*camin_k) (BLASLONG, float *, BLASLONG);
482 BLASLONG (*icamax_k)(BLASLONG, float *, BLASLONG);
483 BLASLONG (*icamin_k)(BLASLONG, float *, BLASLONG);
484 #endif
485 #if BUILD_COMPLEX
486
487   float (*cnrm2_k) (BLASLONG, float *, BLASLONG);
488   float (*casum_k) (BLASLONG, float *, BLASLONG);
489   float (*csum_k)  (BLASLONG, float *, BLASLONG);
490 #endif
491 #if (BUILD_COMPLEX)|| (BUILD_COMPLEX16)
492   int    (*ccopy_k) (BLASLONG, float *, BLASLONG, float *, BLASLONG);
493   openblas_complex_float (*cdotu_k) (BLASLONG, float *, BLASLONG, float *, BLASLONG);
494   openblas_complex_float (*cdotc_k) (BLASLONG, float *, BLASLONG, float *, BLASLONG);
495 #endif
496 #if BUILD_COMPLEX
497   int    (*csrot_k) (BLASLONG, float *, BLASLONG, float *, BLASLONG, float, float);
498 #endif
499 #if (BUILD_COMPLEX)|| (BUILD_COMPLEX16)
500   int    (*caxpy_k) (BLASLONG, BLASLONG, BLASLONG, float, float, float *, BLASLONG, float *, BLASLONG, float *, BLASLONG);
501   int    (*caxpyc_k)(BLASLONG, BLASLONG, BLASLONG, float, float, float *, BLASLONG, float *, BLASLONG, float *, BLASLONG);
502   int    (*cscal_k) (BLASLONG, BLASLONG, BLASLONG, float, float, float *, BLASLONG, float *, BLASLONG, float *, BLASLONG);
503   int    (*cswap_k) (BLASLONG, BLASLONG, BLASLONG, float, float, float *, BLASLONG, float *, BLASLONG, float *, BLASLONG);
504
505   int    (*cgemv_n) (BLASLONG, BLASLONG, BLASLONG, float, float, float *, BLASLONG, float *, BLASLONG, float *, BLASLONG, float *);
506   int    (*cgemv_t) (BLASLONG, BLASLONG, BLASLONG, float, float, float *, BLASLONG, float *, BLASLONG, float *, BLASLONG, float *);
507   int    (*cgemv_r) (BLASLONG, BLASLONG, BLASLONG, float, float, float *, BLASLONG, float *, BLASLONG, float *, BLASLONG, float *);
508   int    (*cgemv_c) (BLASLONG, BLASLONG, BLASLONG, float, float, float *, BLASLONG, float *, BLASLONG, float *, BLASLONG, float *);
509   int    (*cgemv_o) (BLASLONG, BLASLONG, BLASLONG, float, float, float *, BLASLONG, float *, BLASLONG, float *, BLASLONG, float *);
510   int    (*cgemv_u) (BLASLONG, BLASLONG, BLASLONG, float, float, float *, BLASLONG, float *, BLASLONG, float *, BLASLONG, float *);
511   int    (*cgemv_s) (BLASLONG, BLASLONG, BLASLONG, float, float, float *, BLASLONG, float *, BLASLONG, float *, BLASLONG, float *);
512   int    (*cgemv_d) (BLASLONG, BLASLONG, BLASLONG, float, float, float *, BLASLONG, float *, BLASLONG, float *, BLASLONG, float *);
513 #endif
514 #if (BUILD_COMPLEX)
515   int    (*cgeru_k) (BLASLONG, BLASLONG, BLASLONG, float, float, float *, BLASLONG, float *, BLASLONG, float *, BLASLONG, float *);
516   int    (*cgerc_k) (BLASLONG, BLASLONG, BLASLONG, float, float, float *, BLASLONG, float *, BLASLONG, float *, BLASLONG, float *);
517   int    (*cgerv_k) (BLASLONG, BLASLONG, BLASLONG, float, float, float *, BLASLONG, float *, BLASLONG, float *, BLASLONG, float *);
518   int    (*cgerd_k) (BLASLONG, BLASLONG, BLASLONG, float, float, float *, BLASLONG, float *, BLASLONG, float *, BLASLONG, float *);
519
520   int    (*csymv_L) (BLASLONG, BLASLONG, float,  float, float  *, BLASLONG, float  *, BLASLONG, float  *, BLASLONG, float *);
521   int    (*csymv_U) (BLASLONG, BLASLONG, float,  float, float  *, BLASLONG, float  *, BLASLONG, float  *, BLASLONG, float *);
522   int    (*chemv_L) (BLASLONG, BLASLONG, float,  float, float  *, BLASLONG, float  *, BLASLONG, float  *, BLASLONG, float *);
523   int    (*chemv_U) (BLASLONG, BLASLONG, float,  float, float  *, BLASLONG, float  *, BLASLONG, float  *, BLASLONG, float *);
524   int    (*chemv_M) (BLASLONG, BLASLONG, float,  float, float  *, BLASLONG, float  *, BLASLONG, float  *, BLASLONG, float *);
525   int    (*chemv_V) (BLASLONG, BLASLONG, float,  float, float  *, BLASLONG, float  *, BLASLONG, float  *, BLASLONG, float *);
526 #endif
527 #if (BUILD_COMPLEX) || (BUILD_COMPLEX16)
528
529   int    (*cgemm_kernel_n )(BLASLONG, BLASLONG, BLASLONG, float, float, float *, float *, float *, BLASLONG);
530   int    (*cgemm_kernel_l )(BLASLONG, BLASLONG, BLASLONG, float, float, float *, float *, float *, BLASLONG);
531   int    (*cgemm_kernel_r )(BLASLONG, BLASLONG, BLASLONG, float, float, float *, float *, float *, BLASLONG);
532   int    (*cgemm_kernel_b )(BLASLONG, BLASLONG, BLASLONG, float, float, float *, float *, float *, BLASLONG);
533   int    (*cgemm_beta     )(BLASLONG, BLASLONG, BLASLONG, float, float, float *, BLASLONG, float *, BLASLONG, float  *, BLASLONG);
534   int    (*cgemm_incopy   )(BLASLONG, BLASLONG, float *, BLASLONG, float *);
535   int    (*cgemm_itcopy   )(BLASLONG, BLASLONG, float *, BLASLONG, float *);
536   int    (*cgemm_oncopy   )(BLASLONG, BLASLONG, float *, BLASLONG, float *);
537   int    (*cgemm_otcopy   )(BLASLONG, BLASLONG, float *, BLASLONG, float *);
538
539   int    (*ctrsm_kernel_LN)(BLASLONG, BLASLONG, BLASLONG, float, float, float *, float *, float *, BLASLONG, BLASLONG);
540   int    (*ctrsm_kernel_LT)(BLASLONG, BLASLONG, BLASLONG, float, float, float *, float *, float *, BLASLONG, BLASLONG);
541   int    (*ctrsm_kernel_LR)(BLASLONG, BLASLONG, BLASLONG, float, float, float *, float *, float *, BLASLONG, BLASLONG);
542   int    (*ctrsm_kernel_LC)(BLASLONG, BLASLONG, BLASLONG, float, float, float *, float *, float *, BLASLONG, BLASLONG);
543   int    (*ctrsm_kernel_RN)(BLASLONG, BLASLONG, BLASLONG, float, float, float *, float *, float *, BLASLONG, BLASLONG);
544   int    (*ctrsm_kernel_RT)(BLASLONG, BLASLONG, BLASLONG, float, float, float *, float *, float *, BLASLONG, BLASLONG);
545   int    (*ctrsm_kernel_RR)(BLASLONG, BLASLONG, BLASLONG, float, float, float *, float *, float *, BLASLONG, BLASLONG);
546   int    (*ctrsm_kernel_RC)(BLASLONG, BLASLONG, BLASLONG, float, float, float *, float *, float *, BLASLONG, BLASLONG);
547
548   int    (*ctrsm_iunucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
549   int    (*ctrsm_iunncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
550   int    (*ctrsm_iutucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
551   int    (*ctrsm_iutncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
552   int    (*ctrsm_ilnucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
553   int    (*ctrsm_ilnncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
554   int    (*ctrsm_iltucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
555   int    (*ctrsm_iltncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
556   int    (*ctrsm_ounucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
557   int    (*ctrsm_ounncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
558   int    (*ctrsm_outucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
559   int    (*ctrsm_outncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
560   int    (*ctrsm_olnucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
561   int    (*ctrsm_olnncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
562   int    (*ctrsm_oltucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
563   int    (*ctrsm_oltncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, float *);
564 #endif
565 #if (BUILD_COMPLEX)
566
567   int    (*ctrmm_kernel_RN)(BLASLONG, BLASLONG, BLASLONG, float, float, float *, float *, float *, BLASLONG, BLASLONG);
568   int    (*ctrmm_kernel_RT)(BLASLONG, BLASLONG, BLASLONG, float, float, float *, float *, float *, BLASLONG, BLASLONG);
569   int    (*ctrmm_kernel_RR)(BLASLONG, BLASLONG, BLASLONG, float, float, float *, float *, float *, BLASLONG, BLASLONG);
570   int    (*ctrmm_kernel_RC)(BLASLONG, BLASLONG, BLASLONG, float, float, float *, float *, float *, BLASLONG, BLASLONG);
571   int    (*ctrmm_kernel_LN)(BLASLONG, BLASLONG, BLASLONG, float, float, float *, float *, float *, BLASLONG, BLASLONG);
572   int    (*ctrmm_kernel_LT)(BLASLONG, BLASLONG, BLASLONG, float, float, float *, float *, float *, BLASLONG, BLASLONG);
573   int    (*ctrmm_kernel_LR)(BLASLONG, BLASLONG, BLASLONG, float, float, float *, float *, float *, BLASLONG, BLASLONG);
574   int    (*ctrmm_kernel_LC)(BLASLONG, BLASLONG, BLASLONG, float, float, float *, float *, float *, BLASLONG, BLASLONG);
575
576   int    (*ctrmm_iunucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
577   int    (*ctrmm_iunncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
578   int    (*ctrmm_iutucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
579   int    (*ctrmm_iutncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
580   int    (*ctrmm_ilnucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
581   int    (*ctrmm_ilnncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
582   int    (*ctrmm_iltucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
583   int    (*ctrmm_iltncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
584   int    (*ctrmm_ounucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
585   int    (*ctrmm_ounncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
586   int    (*ctrmm_outucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
587   int    (*ctrmm_outncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
588   int    (*ctrmm_olnucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
589   int    (*ctrmm_olnncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
590   int    (*ctrmm_oltucopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
591   int    (*ctrmm_oltncopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
592
593   int    (*csymm_iutcopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
594   int    (*csymm_iltcopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
595   int    (*csymm_outcopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
596   int    (*csymm_oltcopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
597
598   int    (*chemm_iutcopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
599   int    (*chemm_iltcopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
600   int    (*chemm_outcopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
601   int    (*chemm_oltcopy)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
602
603   int cgemm3m_p, cgemm3m_q, cgemm3m_r;
604   int cgemm3m_unroll_m, cgemm3m_unroll_n, cgemm3m_unroll_mn;
605
606   int    (*cgemm3m_kernel)(BLASLONG, BLASLONG, BLASLONG, float, float, float *, float *, float *, BLASLONG);
607
608   int    (*cgemm3m_incopyb)(BLASLONG, BLASLONG, float *, BLASLONG, float *);
609   int    (*cgemm3m_incopyr)(BLASLONG, BLASLONG, float *, BLASLONG, float *);
610   int    (*cgemm3m_incopyi)(BLASLONG, BLASLONG, float *, BLASLONG, float *);
611   int    (*cgemm3m_itcopyb)(BLASLONG, BLASLONG, float *, BLASLONG, float *);
612   int    (*cgemm3m_itcopyr)(BLASLONG, BLASLONG, float *, BLASLONG, float *);
613   int    (*cgemm3m_itcopyi)(BLASLONG, BLASLONG, float *, BLASLONG, float *);
614
615   int    (*cgemm3m_oncopyb)(BLASLONG, BLASLONG, float *, BLASLONG, float, float, float *);
616   int    (*cgemm3m_oncopyr)(BLASLONG, BLASLONG, float *, BLASLONG, float, float, float *);
617   int    (*cgemm3m_oncopyi)(BLASLONG, BLASLONG, float *, BLASLONG, float, float, float *);
618   int    (*cgemm3m_otcopyb)(BLASLONG, BLASLONG, float *, BLASLONG, float, float, float *);
619   int    (*cgemm3m_otcopyr)(BLASLONG, BLASLONG, float *, BLASLONG, float, float, float *);
620   int    (*cgemm3m_otcopyi)(BLASLONG, BLASLONG, float *, BLASLONG, float, float, float *);
621
622   int    (*csymm3m_iucopyb)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
623   int    (*csymm3m_ilcopyb)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
624   int    (*csymm3m_iucopyr)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
625   int    (*csymm3m_ilcopyr)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
626   int    (*csymm3m_iucopyi)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
627   int    (*csymm3m_ilcopyi)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
628
629   int    (*csymm3m_oucopyb)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float, float, float *);
630   int    (*csymm3m_olcopyb)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float, float, float *);
631   int    (*csymm3m_oucopyr)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float, float, float *);
632   int    (*csymm3m_olcopyr)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float, float, float *);
633   int    (*csymm3m_oucopyi)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float, float, float *);
634   int    (*csymm3m_olcopyi)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float, float, float *);
635
636   int    (*chemm3m_iucopyb)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
637   int    (*chemm3m_ilcopyb)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
638   int    (*chemm3m_iucopyr)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
639   int    (*chemm3m_ilcopyr)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
640   int    (*chemm3m_iucopyi)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
641   int    (*chemm3m_ilcopyi)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float *);
642
643   int    (*chemm3m_oucopyb)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float, float, float *);
644   int    (*chemm3m_olcopyb)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float, float, float *);
645   int    (*chemm3m_oucopyr)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float, float, float *);
646   int    (*chemm3m_olcopyr)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float, float, float *);
647   int    (*chemm3m_oucopyi)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float, float, float *);
648   int    (*chemm3m_olcopyi)(BLASLONG, BLASLONG, float *, BLASLONG, BLASLONG, BLASLONG, float, float, float *);
649 #endif  
650 #if (BUILD_COMPLEX) || (BUILD_COMPLEX16)
651   int    (*cneg_tcopy)   (BLASLONG, BLASLONG, float *, BLASLONG, float *);
652   int    (*claswp_ncopy) (BLASLONG, BLASLONG, BLASLONG, float *, BLASLONG, blasint *, float *);
653 #endif
654
655
656 #if BUILD_COMPLEX16
657   int zgemm_p, zgemm_q, zgemm_r;
658   int zgemm_unroll_m, zgemm_unroll_n, zgemm_unroll_mn;
659
660   double (*zamax_k) (BLASLONG, double *, BLASLONG);
661   double (*zamin_k) (BLASLONG, double *, BLASLONG);
662 BLASLONG (*izamax_k)(BLASLONG, double *, BLASLONG);
663 BLASLONG (*izamin_k)(BLASLONG, double *, BLASLONG);
664
665   double (*znrm2_k) (BLASLONG, double *, BLASLONG);
666   double (*zasum_k) (BLASLONG, double *, BLASLONG);
667   double (*zsum_k)  (BLASLONG, double *, BLASLONG);
668   int    (*zcopy_k) (BLASLONG, double *, BLASLONG, double *, BLASLONG);
669   openblas_complex_double (*zdotu_k) (BLASLONG, double *, BLASLONG, double *, BLASLONG);
670   openblas_complex_double (*zdotc_k) (BLASLONG, double *, BLASLONG, double *, BLASLONG);
671   int    (*zdrot_k) (BLASLONG, double *, BLASLONG, double *, BLASLONG, double, double);
672
673   int    (*zaxpy_k) (BLASLONG, BLASLONG, BLASLONG, double, double, double *, BLASLONG, double *, BLASLONG, double *, BLASLONG);
674   int    (*zaxpyc_k)(BLASLONG, BLASLONG, BLASLONG, double, double, double *, BLASLONG, double *, BLASLONG, double *, BLASLONG);
675   int    (*zscal_k) (BLASLONG, BLASLONG, BLASLONG, double, double, double *, BLASLONG, double *, BLASLONG, double *, BLASLONG);
676   int    (*zswap_k) (BLASLONG, BLASLONG, BLASLONG, double, double, double *, BLASLONG, double *, BLASLONG, double *, BLASLONG);
677
678   int    (*zgemv_n) (BLASLONG, BLASLONG, BLASLONG, double, double, double *, BLASLONG, double *, BLASLONG, double *, BLASLONG, double *);
679   int    (*zgemv_t) (BLASLONG, BLASLONG, BLASLONG, double, double, double *, BLASLONG, double *, BLASLONG, double *, BLASLONG, double *);
680   int    (*zgemv_r) (BLASLONG, BLASLONG, BLASLONG, double, double, double *, BLASLONG, double *, BLASLONG, double *, BLASLONG, double *);
681   int    (*zgemv_c) (BLASLONG, BLASLONG, BLASLONG, double, double, double *, BLASLONG, double *, BLASLONG, double *, BLASLONG, double *);
682   int    (*zgemv_o) (BLASLONG, BLASLONG, BLASLONG, double, double, double *, BLASLONG, double *, BLASLONG, double *, BLASLONG, double *);
683   int    (*zgemv_u) (BLASLONG, BLASLONG, BLASLONG, double, double, double *, BLASLONG, double *, BLASLONG, double *, BLASLONG, double *);
684   int    (*zgemv_s) (BLASLONG, BLASLONG, BLASLONG, double, double, double *, BLASLONG, double *, BLASLONG, double *, BLASLONG, double *);
685   int    (*zgemv_d) (BLASLONG, BLASLONG, BLASLONG, double, double, double *, BLASLONG, double *, BLASLONG, double *, BLASLONG, double *);
686   int    (*zgeru_k) (BLASLONG, BLASLONG, BLASLONG, double, double, double *, BLASLONG, double *, BLASLONG, double *, BLASLONG, double *);
687   int    (*zgerc_k) (BLASLONG, BLASLONG, BLASLONG, double, double, double *, BLASLONG, double *, BLASLONG, double *, BLASLONG, double *);
688   int    (*zgerv_k) (BLASLONG, BLASLONG, BLASLONG, double, double, double *, BLASLONG, double *, BLASLONG, double *, BLASLONG, double *);
689   int    (*zgerd_k) (BLASLONG, BLASLONG, BLASLONG, double, double, double *, BLASLONG, double *, BLASLONG, double *, BLASLONG, double *);
690
691   int    (*zsymv_L) (BLASLONG, BLASLONG, double,  double, double  *, BLASLONG, double  *, BLASLONG, double  *, BLASLONG, double *);
692   int    (*zsymv_U) (BLASLONG, BLASLONG, double,  double, double  *, BLASLONG, double  *, BLASLONG, double  *, BLASLONG, double *);
693   int    (*zhemv_L) (BLASLONG, BLASLONG, double,  double, double  *, BLASLONG, double  *, BLASLONG, double  *, BLASLONG, double *);
694   int    (*zhemv_U) (BLASLONG, BLASLONG, double,  double, double  *, BLASLONG, double  *, BLASLONG, double  *, BLASLONG, double *);
695   int    (*zhemv_M) (BLASLONG, BLASLONG, double,  double, double  *, BLASLONG, double  *, BLASLONG, double  *, BLASLONG, double *);
696   int    (*zhemv_V) (BLASLONG, BLASLONG, double,  double, double  *, BLASLONG, double  *, BLASLONG, double  *, BLASLONG, double *);
697
698   int    (*zgemm_kernel_n )(BLASLONG, BLASLONG, BLASLONG, double, double, double *, double *, double *, BLASLONG);
699   int    (*zgemm_kernel_l )(BLASLONG, BLASLONG, BLASLONG, double, double, double *, double *, double *, BLASLONG);
700   int    (*zgemm_kernel_r )(BLASLONG, BLASLONG, BLASLONG, double, double, double *, double *, double *, BLASLONG);
701   int    (*zgemm_kernel_b )(BLASLONG, BLASLONG, BLASLONG, double, double, double *, double *, double *, BLASLONG);
702   int    (*zgemm_beta     )(BLASLONG, BLASLONG, BLASLONG, double, double, double *, BLASLONG, double *, BLASLONG, double  *, BLASLONG);
703
704   int    (*zgemm_incopy   )(BLASLONG, BLASLONG, double *, BLASLONG, double *);
705   int    (*zgemm_itcopy   )(BLASLONG, BLASLONG, double *, BLASLONG, double *);
706   int    (*zgemm_oncopy   )(BLASLONG, BLASLONG, double *, BLASLONG, double *);
707   int    (*zgemm_otcopy   )(BLASLONG, BLASLONG, double *, BLASLONG, double *);
708
709   int    (*ztrsm_kernel_LN)(BLASLONG, BLASLONG, BLASLONG, double, double, double *, double *, double *, BLASLONG, BLASLONG);
710   int    (*ztrsm_kernel_LT)(BLASLONG, BLASLONG, BLASLONG, double, double, double *, double *, double *, BLASLONG, BLASLONG);
711   int    (*ztrsm_kernel_LR)(BLASLONG, BLASLONG, BLASLONG, double, double, double *, double *, double *, BLASLONG, BLASLONG);
712   int    (*ztrsm_kernel_LC)(BLASLONG, BLASLONG, BLASLONG, double, double, double *, double *, double *, BLASLONG, BLASLONG);
713   int    (*ztrsm_kernel_RN)(BLASLONG, BLASLONG, BLASLONG, double, double, double *, double *, double *, BLASLONG, BLASLONG);
714   int    (*ztrsm_kernel_RT)(BLASLONG, BLASLONG, BLASLONG, double, double, double *, double *, double *, BLASLONG, BLASLONG);
715   int    (*ztrsm_kernel_RR)(BLASLONG, BLASLONG, BLASLONG, double, double, double *, double *, double *, BLASLONG, BLASLONG);
716   int    (*ztrsm_kernel_RC)(BLASLONG, BLASLONG, BLASLONG, double, double, double *, double *, double *, BLASLONG, BLASLONG);
717
718   int    (*ztrsm_iunucopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, double *);
719   int    (*ztrsm_iunncopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, double *);
720   int    (*ztrsm_iutucopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, double *);
721   int    (*ztrsm_iutncopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, double *);
722   int    (*ztrsm_ilnucopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, double *);
723   int    (*ztrsm_ilnncopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, double *);
724   int    (*ztrsm_iltucopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, double *);
725   int    (*ztrsm_iltncopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, double *);
726   int    (*ztrsm_ounucopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, double *);
727   int    (*ztrsm_ounncopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, double *);
728   int    (*ztrsm_outucopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, double *);
729   int    (*ztrsm_outncopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, double *);
730   int    (*ztrsm_olnucopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, double *);
731   int    (*ztrsm_olnncopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, double *);
732   int    (*ztrsm_oltucopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, double *);
733   int    (*ztrsm_oltncopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, double *);
734
735   int    (*ztrmm_kernel_RN)(BLASLONG, BLASLONG, BLASLONG, double, double, double *, double *, double *, BLASLONG, BLASLONG);
736   int    (*ztrmm_kernel_RT)(BLASLONG, BLASLONG, BLASLONG, double, double, double *, double *, double *, BLASLONG, BLASLONG);
737   int    (*ztrmm_kernel_RR)(BLASLONG, BLASLONG, BLASLONG, double, double, double *, double *, double *, BLASLONG, BLASLONG);
738   int    (*ztrmm_kernel_RC)(BLASLONG, BLASLONG, BLASLONG, double, double, double *, double *, double *, BLASLONG, BLASLONG);
739   int    (*ztrmm_kernel_LN)(BLASLONG, BLASLONG, BLASLONG, double, double, double *, double *, double *, BLASLONG, BLASLONG);
740   int    (*ztrmm_kernel_LT)(BLASLONG, BLASLONG, BLASLONG, double, double, double *, double *, double *, BLASLONG, BLASLONG);
741   int    (*ztrmm_kernel_LR)(BLASLONG, BLASLONG, BLASLONG, double, double, double *, double *, double *, BLASLONG, BLASLONG);
742   int    (*ztrmm_kernel_LC)(BLASLONG, BLASLONG, BLASLONG, double, double, double *, double *, double *, BLASLONG, BLASLONG);
743
744   int    (*ztrmm_iunucopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
745   int    (*ztrmm_iunncopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
746   int    (*ztrmm_iutucopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
747   int    (*ztrmm_iutncopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
748   int    (*ztrmm_ilnucopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
749   int    (*ztrmm_ilnncopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
750   int    (*ztrmm_iltucopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
751   int    (*ztrmm_iltncopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
752   int    (*ztrmm_ounucopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
753   int    (*ztrmm_ounncopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
754   int    (*ztrmm_outucopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
755   int    (*ztrmm_outncopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
756   int    (*ztrmm_olnucopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
757   int    (*ztrmm_olnncopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
758   int    (*ztrmm_oltucopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
759   int    (*ztrmm_oltncopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
760
761   int    (*zsymm_iutcopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
762   int    (*zsymm_iltcopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
763   int    (*zsymm_outcopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
764   int    (*zsymm_oltcopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
765
766   int    (*zhemm_iutcopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
767   int    (*zhemm_iltcopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
768   int    (*zhemm_outcopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
769   int    (*zhemm_oltcopy)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
770
771   int zgemm3m_p, zgemm3m_q, zgemm3m_r;
772   int zgemm3m_unroll_m, zgemm3m_unroll_n, zgemm3m_unroll_mn;
773
774   int    (*zgemm3m_kernel)(BLASLONG, BLASLONG, BLASLONG, double, double, double *, double *, double *, BLASLONG);
775
776   int    (*zgemm3m_incopyb)(BLASLONG, BLASLONG, double *, BLASLONG, double *);
777   int    (*zgemm3m_incopyr)(BLASLONG, BLASLONG, double *, BLASLONG, double *);
778   int    (*zgemm3m_incopyi)(BLASLONG, BLASLONG, double *, BLASLONG, double *);
779   int    (*zgemm3m_itcopyb)(BLASLONG, BLASLONG, double *, BLASLONG, double *);
780   int    (*zgemm3m_itcopyr)(BLASLONG, BLASLONG, double *, BLASLONG, double *);
781   int    (*zgemm3m_itcopyi)(BLASLONG, BLASLONG, double *, BLASLONG, double *);
782
783   int    (*zgemm3m_oncopyb)(BLASLONG, BLASLONG, double *, BLASLONG, double, double, double *);
784   int    (*zgemm3m_oncopyr)(BLASLONG, BLASLONG, double *, BLASLONG, double, double, double *);
785   int    (*zgemm3m_oncopyi)(BLASLONG, BLASLONG, double *, BLASLONG, double, double, double *);
786   int    (*zgemm3m_otcopyb)(BLASLONG, BLASLONG, double *, BLASLONG, double, double, double *);
787   int    (*zgemm3m_otcopyr)(BLASLONG, BLASLONG, double *, BLASLONG, double, double, double *);
788   int    (*zgemm3m_otcopyi)(BLASLONG, BLASLONG, double *, BLASLONG, double, double, double *);
789
790   int    (*zsymm3m_iucopyb)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
791   int    (*zsymm3m_ilcopyb)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
792   int    (*zsymm3m_iucopyr)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
793   int    (*zsymm3m_ilcopyr)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
794   int    (*zsymm3m_iucopyi)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
795   int    (*zsymm3m_ilcopyi)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
796
797   int    (*zsymm3m_oucopyb)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double, double, double *);
798   int    (*zsymm3m_olcopyb)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double, double, double *);
799   int    (*zsymm3m_oucopyr)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double, double, double *);
800   int    (*zsymm3m_olcopyr)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double, double, double *);
801   int    (*zsymm3m_oucopyi)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double, double, double *);
802   int    (*zsymm3m_olcopyi)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double, double, double *);
803
804   int    (*zhemm3m_iucopyb)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
805   int    (*zhemm3m_ilcopyb)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
806   int    (*zhemm3m_iucopyr)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
807   int    (*zhemm3m_ilcopyr)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
808   int    (*zhemm3m_iucopyi)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
809   int    (*zhemm3m_ilcopyi)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double *);
810
811   int    (*zhemm3m_oucopyb)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double, double, double *);
812   int    (*zhemm3m_olcopyb)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double, double, double *);
813   int    (*zhemm3m_oucopyr)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double, double, double *);
814   int    (*zhemm3m_olcopyr)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double, double, double *);
815   int    (*zhemm3m_oucopyi)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double, double, double *);
816   int    (*zhemm3m_olcopyi)(BLASLONG, BLASLONG, double *, BLASLONG, BLASLONG, BLASLONG, double, double, double *);
817
818   int    (*zneg_tcopy)   (BLASLONG, BLASLONG, double *, BLASLONG, double *);
819   int    (*zlaswp_ncopy) (BLASLONG, BLASLONG, BLASLONG, double *, BLASLONG, blasint *, double *);
820 #endif
821
822 #ifdef EXPRECISION
823
824   int xgemm_p, xgemm_q, xgemm_r;
825   int xgemm_unroll_m, xgemm_unroll_n, xgemm_unroll_mn;
826
827   xdouble (*xamax_k) (BLASLONG, xdouble *, BLASLONG);
828   xdouble (*xamin_k) (BLASLONG, xdouble *, BLASLONG);
829 BLASLONG (*ixamax_k)(BLASLONG, xdouble *, BLASLONG);
830 BLASLONG (*ixamin_k)(BLASLONG, xdouble *, BLASLONG);
831
832   xdouble (*xnrm2_k) (BLASLONG, xdouble *, BLASLONG);
833   xdouble (*xasum_k) (BLASLONG, xdouble *, BLASLONG);
834   xdouble (*xsum_k) (BLASLONG, xdouble *, BLASLONG);
835   int    (*xcopy_k) (BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG);
836   openblas_complex_xdouble (*xdotu_k) (BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG);
837   openblas_complex_xdouble (*xdotc_k) (BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG);
838   int    (*xqrot_k) (BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble, xdouble);
839
840   int    (*xaxpy_k) (BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG);
841   int    (*xaxpyc_k)(BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG);
842   int    (*xscal_k) (BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG);
843   int    (*xswap_k) (BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG);
844
845   int    (*xgemv_n) (BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *);
846   int    (*xgemv_t) (BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *);
847   int    (*xgemv_r) (BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *);
848   int    (*xgemv_c) (BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *);
849   int    (*xgemv_o) (BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *);
850   int    (*xgemv_u) (BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *);
851   int    (*xgemv_s) (BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *);
852   int    (*xgemv_d) (BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *);
853   int    (*xgeru_k) (BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *);
854   int    (*xgerc_k) (BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *);
855   int    (*xgerv_k) (BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *);
856   int    (*xgerd_k) (BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble *);
857
858   int    (*xsymv_L) (BLASLONG, BLASLONG, xdouble,  xdouble, xdouble  *, BLASLONG, xdouble  *, BLASLONG, xdouble  *, BLASLONG, xdouble *);
859   int    (*xsymv_U) (BLASLONG, BLASLONG, xdouble,  xdouble, xdouble  *, BLASLONG, xdouble  *, BLASLONG, xdouble  *, BLASLONG, xdouble *);
860   int    (*xhemv_L) (BLASLONG, BLASLONG, xdouble,  xdouble, xdouble  *, BLASLONG, xdouble  *, BLASLONG, xdouble  *, BLASLONG, xdouble *);
861   int    (*xhemv_U) (BLASLONG, BLASLONG, xdouble,  xdouble, xdouble  *, BLASLONG, xdouble  *, BLASLONG, xdouble  *, BLASLONG, xdouble *);
862   int    (*xhemv_M) (BLASLONG, BLASLONG, xdouble,  xdouble, xdouble  *, BLASLONG, xdouble  *, BLASLONG, xdouble  *, BLASLONG, xdouble *);
863   int    (*xhemv_V) (BLASLONG, BLASLONG, xdouble,  xdouble, xdouble  *, BLASLONG, xdouble  *, BLASLONG, xdouble  *, BLASLONG, xdouble *);
864
865   int    (*xgemm_kernel_n )(BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, xdouble *, xdouble *, BLASLONG);
866   int    (*xgemm_kernel_l )(BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, xdouble *, xdouble *, BLASLONG);
867   int    (*xgemm_kernel_r )(BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, xdouble *, xdouble *, BLASLONG);
868   int    (*xgemm_kernel_b )(BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, xdouble *, xdouble *, BLASLONG);
869   int    (*xgemm_beta     )(BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, BLASLONG, xdouble *, BLASLONG, xdouble  *, BLASLONG);
870
871   int    (*xgemm_incopy   )(BLASLONG, BLASLONG, xdouble *, BLASLONG, xdouble *);
872   int    (*xgemm_itcopy   )(BLASLONG, BLASLONG, xdouble *, BLASLONG, xdouble *);
873   int    (*xgemm_oncopy   )(BLASLONG, BLASLONG, xdouble *, BLASLONG, xdouble *);
874   int    (*xgemm_otcopy   )(BLASLONG, BLASLONG, xdouble *, BLASLONG, xdouble *);
875
876   int    (*xtrsm_kernel_LN)(BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, xdouble *, xdouble *, BLASLONG, BLASLONG);
877   int    (*xtrsm_kernel_LT)(BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, xdouble *, xdouble *, BLASLONG, BLASLONG);
878   int    (*xtrsm_kernel_LR)(BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, xdouble *, xdouble *, BLASLONG, BLASLONG);
879   int    (*xtrsm_kernel_LC)(BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, xdouble *, xdouble *, BLASLONG, BLASLONG);
880   int    (*xtrsm_kernel_RN)(BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, xdouble *, xdouble *, BLASLONG, BLASLONG);
881   int    (*xtrsm_kernel_RT)(BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, xdouble *, xdouble *, BLASLONG, BLASLONG);
882   int    (*xtrsm_kernel_RR)(BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, xdouble *, xdouble *, BLASLONG, BLASLONG);
883   int    (*xtrsm_kernel_RC)(BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, xdouble *, xdouble *, BLASLONG, BLASLONG);
884
885   int    (*xtrsm_iunucopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, xdouble *);
886   int    (*xtrsm_iunncopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, xdouble *);
887   int    (*xtrsm_iutucopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, xdouble *);
888   int    (*xtrsm_iutncopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, xdouble *);
889   int    (*xtrsm_ilnucopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, xdouble *);
890   int    (*xtrsm_ilnncopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, xdouble *);
891   int    (*xtrsm_iltucopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, xdouble *);
892   int    (*xtrsm_iltncopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, xdouble *);
893   int    (*xtrsm_ounucopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, xdouble *);
894   int    (*xtrsm_ounncopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, xdouble *);
895   int    (*xtrsm_outucopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, xdouble *);
896   int    (*xtrsm_outncopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, xdouble *);
897   int    (*xtrsm_olnucopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, xdouble *);
898   int    (*xtrsm_olnncopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, xdouble *);
899   int    (*xtrsm_oltucopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, xdouble *);
900   int    (*xtrsm_oltncopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, xdouble *);
901
902   int    (*xtrmm_kernel_RN)(BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, xdouble *, xdouble *, BLASLONG, BLASLONG);
903   int    (*xtrmm_kernel_RT)(BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, xdouble *, xdouble *, BLASLONG, BLASLONG);
904   int    (*xtrmm_kernel_RR)(BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, xdouble *, xdouble *, BLASLONG, BLASLONG);
905   int    (*xtrmm_kernel_RC)(BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, xdouble *, xdouble *, BLASLONG, BLASLONG);
906   int    (*xtrmm_kernel_LN)(BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, xdouble *, xdouble *, BLASLONG, BLASLONG);
907   int    (*xtrmm_kernel_LT)(BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, xdouble *, xdouble *, BLASLONG, BLASLONG);
908   int    (*xtrmm_kernel_LR)(BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, xdouble *, xdouble *, BLASLONG, BLASLONG);
909   int    (*xtrmm_kernel_LC)(BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, xdouble *, xdouble *, BLASLONG, BLASLONG);
910
911   int    (*xtrmm_iunucopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
912   int    (*xtrmm_iunncopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
913   int    (*xtrmm_iutucopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
914   int    (*xtrmm_iutncopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
915   int    (*xtrmm_ilnucopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
916   int    (*xtrmm_ilnncopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
917   int    (*xtrmm_iltucopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
918   int    (*xtrmm_iltncopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
919   int    (*xtrmm_ounucopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
920   int    (*xtrmm_ounncopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
921   int    (*xtrmm_outucopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
922   int    (*xtrmm_outncopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
923   int    (*xtrmm_olnucopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
924   int    (*xtrmm_olnncopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
925   int    (*xtrmm_oltucopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
926   int    (*xtrmm_oltncopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
927
928   int    (*xsymm_iutcopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
929   int    (*xsymm_iltcopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
930   int    (*xsymm_outcopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
931   int    (*xsymm_oltcopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
932
933   int    (*xhemm_iutcopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
934   int    (*xhemm_iltcopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
935   int    (*xhemm_outcopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
936   int    (*xhemm_oltcopy)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
937
938   int xgemm3m_p, xgemm3m_q, xgemm3m_r;
939   int xgemm3m_unroll_m, xgemm3m_unroll_n, xgemm3m_unroll_mn;
940
941   int    (*xgemm3m_kernel)(BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *, xdouble *, xdouble *, BLASLONG);
942
943   int    (*xgemm3m_incopyb)(BLASLONG, BLASLONG, xdouble *, BLASLONG, xdouble *);
944   int    (*xgemm3m_incopyr)(BLASLONG, BLASLONG, xdouble *, BLASLONG, xdouble *);
945   int    (*xgemm3m_incopyi)(BLASLONG, BLASLONG, xdouble *, BLASLONG, xdouble *);
946   int    (*xgemm3m_itcopyb)(BLASLONG, BLASLONG, xdouble *, BLASLONG, xdouble *);
947   int    (*xgemm3m_itcopyr)(BLASLONG, BLASLONG, xdouble *, BLASLONG, xdouble *);
948   int    (*xgemm3m_itcopyi)(BLASLONG, BLASLONG, xdouble *, BLASLONG, xdouble *);
949
950   int    (*xgemm3m_oncopyb)(BLASLONG, BLASLONG, xdouble *, BLASLONG, xdouble, xdouble, xdouble *);
951   int    (*xgemm3m_oncopyr)(BLASLONG, BLASLONG, xdouble *, BLASLONG, xdouble, xdouble, xdouble *);
952   int    (*xgemm3m_oncopyi)(BLASLONG, BLASLONG, xdouble *, BLASLONG, xdouble, xdouble, xdouble *);
953   int    (*xgemm3m_otcopyb)(BLASLONG, BLASLONG, xdouble *, BLASLONG, xdouble, xdouble, xdouble *);
954   int    (*xgemm3m_otcopyr)(BLASLONG, BLASLONG, xdouble *, BLASLONG, xdouble, xdouble, xdouble *);
955   int    (*xgemm3m_otcopyi)(BLASLONG, BLASLONG, xdouble *, BLASLONG, xdouble, xdouble, xdouble *);
956
957   int    (*xsymm3m_iucopyb)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
958   int    (*xsymm3m_ilcopyb)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
959   int    (*xsymm3m_iucopyr)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
960   int    (*xsymm3m_ilcopyr)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
961   int    (*xsymm3m_iucopyi)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
962   int    (*xsymm3m_ilcopyi)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
963
964   int    (*xsymm3m_oucopyb)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *);
965   int    (*xsymm3m_olcopyb)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *);
966   int    (*xsymm3m_oucopyr)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *);
967   int    (*xsymm3m_olcopyr)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *);
968   int    (*xsymm3m_oucopyi)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *);
969   int    (*xsymm3m_olcopyi)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *);
970
971   int    (*xhemm3m_iucopyb)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
972   int    (*xhemm3m_ilcopyb)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
973   int    (*xhemm3m_iucopyr)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
974   int    (*xhemm3m_ilcopyr)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
975   int    (*xhemm3m_iucopyi)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
976   int    (*xhemm3m_ilcopyi)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble *);
977
978   int    (*xhemm3m_oucopyb)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *);
979   int    (*xhemm3m_olcopyb)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *);
980   int    (*xhemm3m_oucopyr)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *);
981   int    (*xhemm3m_olcopyr)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *);
982   int    (*xhemm3m_oucopyi)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *);
983   int    (*xhemm3m_olcopyi)(BLASLONG, BLASLONG, xdouble *, BLASLONG, BLASLONG, BLASLONG, xdouble, xdouble, xdouble *);
984
985   int    (*xneg_tcopy)   (BLASLONG, BLASLONG, xdouble *, BLASLONG, xdouble *);
986   int    (*xlaswp_ncopy) (BLASLONG, BLASLONG, BLASLONG, xdouble *, BLASLONG, blasint *, xdouble *);
987
988 #endif
989
990
991   void (*init)(void);
992
993   int snum_opt, dnum_opt, qnum_opt;
994
995 #if BUILD_SINGLE
996   int    (*saxpby_k)     (BLASLONG, float, float*, BLASLONG,float, float*, BLASLONG);
997 #endif
998 #if BUILD_DOUBLE
999   int    (*daxpby_k)     (BLASLONG, double, double*, BLASLONG,double, double*, BLASLONG);
1000 #endif
1001 #if BUILD_COMPLEX
1002   int    (*caxpby_k)     (BLASLONG, float, float,  float*, BLASLONG,float,float, float*, BLASLONG);
1003 #endif
1004 #if BUILD_COMPLEX16
1005   int    (*zaxpby_k)     (BLASLONG, double, double,  double*, BLASLONG,double,double, double*, BLASLONG);
1006 #endif
1007
1008 #if BUILD_SINGLE
1009   int    (*somatcopy_k_cn)      (BLASLONG, BLASLONG, float, float*, BLASLONG, float*, BLASLONG);
1010   int    (*somatcopy_k_ct)      (BLASLONG, BLASLONG, float, float*, BLASLONG, float*, BLASLONG);
1011   int    (*somatcopy_k_rn)      (BLASLONG, BLASLONG, float, float*, BLASLONG, float*, BLASLONG);
1012   int    (*somatcopy_k_rt)      (BLASLONG, BLASLONG, float, float*, BLASLONG, float*, BLASLONG);
1013 #endif
1014
1015 #if BUILD_DOUBLE
1016   int    (*domatcopy_k_cn)      (BLASLONG, BLASLONG, double, double*, BLASLONG, double*, BLASLONG);
1017   int    (*domatcopy_k_ct)      (BLASLONG, BLASLONG, double, double*, BLASLONG, double*, BLASLONG);
1018   int    (*domatcopy_k_rn)      (BLASLONG, BLASLONG, double, double*, BLASLONG, double*, BLASLONG);
1019   int    (*domatcopy_k_rt)      (BLASLONG, BLASLONG, double, double*, BLASLONG, double*, BLASLONG);
1020 #endif
1021
1022 #if BUILD_COMPLEX
1023   int    (*comatcopy_k_cn)      (BLASLONG, BLASLONG, float, float, float*, BLASLONG, float*, BLASLONG);
1024   int    (*comatcopy_k_ct)      (BLASLONG, BLASLONG, float, float, float*, BLASLONG, float*, BLASLONG);
1025   int    (*comatcopy_k_rn)      (BLASLONG, BLASLONG, float, float, float*, BLASLONG, float*, BLASLONG);
1026   int    (*comatcopy_k_rt)      (BLASLONG, BLASLONG, float, float, float*, BLASLONG, float*, BLASLONG);
1027
1028   int    (*comatcopy_k_cnc)     (BLASLONG, BLASLONG, float, float, float*, BLASLONG, float*, BLASLONG);
1029   int    (*comatcopy_k_ctc)     (BLASLONG, BLASLONG, float, float, float*, BLASLONG, float*, BLASLONG);
1030   int    (*comatcopy_k_rnc)     (BLASLONG, BLASLONG, float, float, float*, BLASLONG, float*, BLASLONG);
1031   int    (*comatcopy_k_rtc)     (BLASLONG, BLASLONG, float, float, float*, BLASLONG, float*, BLASLONG);
1032 #endif
1033
1034 #if BUILD_COMPLEX16
1035   int    (*zomatcopy_k_cn)      (BLASLONG, BLASLONG, double, double, double*, BLASLONG, double*, BLASLONG);
1036   int    (*zomatcopy_k_ct)      (BLASLONG, BLASLONG, double, double, double*, BLASLONG, double*, BLASLONG);
1037   int    (*zomatcopy_k_rn)      (BLASLONG, BLASLONG, double, double, double*, BLASLONG, double*, BLASLONG);
1038   int    (*zomatcopy_k_rt)      (BLASLONG, BLASLONG, double, double, double*, BLASLONG, double*, BLASLONG);
1039
1040   int    (*zomatcopy_k_cnc)     (BLASLONG, BLASLONG, double, double, double*, BLASLONG, double*, BLASLONG);
1041   int    (*zomatcopy_k_ctc)     (BLASLONG, BLASLONG, double, double, double*, BLASLONG, double*, BLASLONG);
1042   int    (*zomatcopy_k_rnc)     (BLASLONG, BLASLONG, double, double, double*, BLASLONG, double*, BLASLONG);
1043   int    (*zomatcopy_k_rtc)     (BLASLONG, BLASLONG, double, double, double*, BLASLONG, double*, BLASLONG);
1044 #endif
1045
1046 #if BUILD_SINGLE
1047   int    (*simatcopy_k_cn)      (BLASLONG, BLASLONG, float, float*, BLASLONG);
1048   int    (*simatcopy_k_ct)      (BLASLONG, BLASLONG, float, float*, BLASLONG);
1049   int    (*simatcopy_k_rn)      (BLASLONG, BLASLONG, float, float*, BLASLONG);
1050   int    (*simatcopy_k_rt)      (BLASLONG, BLASLONG, float, float*, BLASLONG);
1051 #endif
1052
1053 #if BUILD_DOUBLE
1054   int    (*dimatcopy_k_cn)      (BLASLONG, BLASLONG, double, double*, BLASLONG);
1055   int    (*dimatcopy_k_ct)      (BLASLONG, BLASLONG, double, double*, BLASLONG);
1056   int    (*dimatcopy_k_rn)      (BLASLONG, BLASLONG, double, double*, BLASLONG);
1057   int    (*dimatcopy_k_rt)      (BLASLONG, BLASLONG, double, double*, BLASLONG);
1058 #endif
1059
1060 #if BUILD_COMPLEX
1061   int    (*cimatcopy_k_cn)      (BLASLONG, BLASLONG, float, float, float*, BLASLONG);
1062   int    (*cimatcopy_k_ct)      (BLASLONG, BLASLONG, float, float, float*, BLASLONG);
1063   int    (*cimatcopy_k_rn)      (BLASLONG, BLASLONG, float, float, float*, BLASLONG);
1064   int    (*cimatcopy_k_rt)      (BLASLONG, BLASLONG, float, float, float*, BLASLONG);
1065
1066   int    (*cimatcopy_k_cnc)     (BLASLONG, BLASLONG, float, float, float*, BLASLONG);
1067   int    (*cimatcopy_k_ctc)     (BLASLONG, BLASLONG, float, float, float*, BLASLONG);
1068   int    (*cimatcopy_k_rnc)     (BLASLONG, BLASLONG, float, float, float*, BLASLONG);
1069   int    (*cimatcopy_k_rtc)     (BLASLONG, BLASLONG, float, float, float*, BLASLONG);
1070 #endif
1071
1072 #if BUILD_COMPLEX16
1073   int    (*zimatcopy_k_cn)      (BLASLONG, BLASLONG, double, double, double*, BLASLONG);
1074   int    (*zimatcopy_k_ct)      (BLASLONG, BLASLONG, double, double, double*, BLASLONG);
1075   int    (*zimatcopy_k_rn)      (BLASLONG, BLASLONG, double, double, double*, BLASLONG);
1076   int    (*zimatcopy_k_rt)      (BLASLONG, BLASLONG, double, double, double*, BLASLONG);
1077
1078   int    (*zimatcopy_k_cnc)     (BLASLONG, BLASLONG, double, double, double*, BLASLONG);
1079   int    (*zimatcopy_k_ctc)     (BLASLONG, BLASLONG, double, double, double*, BLASLONG);
1080   int    (*zimatcopy_k_rnc)     (BLASLONG, BLASLONG, double, double, double*, BLASLONG);
1081   int    (*zimatcopy_k_rtc)     (BLASLONG, BLASLONG, double, double, double*, BLASLONG);
1082 #endif
1083
1084 #if BUILD_SINGLE
1085   int    (*sgeadd_k) (BLASLONG, BLASLONG, float, float *, BLASLONG, float, float *, BLASLONG); 
1086 #endif
1087 #if BUILD_DOUBLE
1088   int    (*dgeadd_k) (BLASLONG, BLASLONG, double, double *, BLASLONG, double, double *, BLASLONG); 
1089 #endif
1090 #if BUILD_COMPLEX
1091   int    (*cgeadd_k) (BLASLONG, BLASLONG, float, float,  float *,  BLASLONG, float, float, float *, BLASLONG); 
1092 #endif
1093 #if BUILD_COMPLEX16
1094   int    (*zgeadd_k) (BLASLONG, BLASLONG, double, double, double *, BLASLONG, double, double, double *, BLASLONG); 
1095 #endif
1096 } gotoblas_t;
1097
1098 extern gotoblas_t *gotoblas;
1099
1100 #define DTB_ENTRIES  gotoblas -> dtb_entries
1101 #define GEMM_OFFSET_A   gotoblas -> offsetA
1102 #define GEMM_OFFSET_B   gotoblas -> offsetB
1103 #define GEMM_ALIGN      gotoblas -> align
1104
1105 #define HAVE_EX_L2      gotoblas -> exclusive_cache
1106
1107 #ifdef BUILD_HALF
1108 #define SHGEMM_P                gotoblas -> shgemm_p
1109 #define SHGEMM_Q                gotoblas -> shgemm_q
1110 #define SHGEMM_R                gotoblas -> shgemm_r
1111 #define SHGEMM_UNROLL_M gotoblas -> shgemm_unroll_m
1112 #define SHGEMM_UNROLL_N gotoblas -> shgemm_unroll_n
1113 #define SHGEMM_UNROLL_MN        gotoblas -> shgemm_unroll_mn
1114 #endif
1115
1116 #if  (BUILD_SINGLE)
1117 #define SGEMM_P         gotoblas -> sgemm_p
1118 #define SGEMM_Q         gotoblas -> sgemm_q
1119 #define SGEMM_R         gotoblas -> sgemm_r
1120 #define SGEMM_UNROLL_M  gotoblas -> sgemm_unroll_m
1121 #define SGEMM_UNROLL_N  gotoblas -> sgemm_unroll_n
1122 #define SGEMM_UNROLL_MN gotoblas -> sgemm_unroll_mn
1123 #endif
1124
1125 #if  (BUILD_DOUBLE)
1126 #define DGEMM_P         gotoblas -> dgemm_p
1127 #define DGEMM_Q         gotoblas -> dgemm_q
1128 #define DGEMM_R         gotoblas -> dgemm_r
1129 #define DGEMM_UNROLL_M  gotoblas -> dgemm_unroll_m
1130 #define DGEMM_UNROLL_N  gotoblas -> dgemm_unroll_n
1131 #define DGEMM_UNROLL_MN gotoblas -> dgemm_unroll_mn
1132 #if ! (BUILD_SINGLE)
1133 #define SGEMM_P         gotoblas -> sgemm_p
1134 #define SGEMM_Q         gotoblas -> sgemm_q
1135 #define SGEMM_R         gotoblas -> sgemm_r
1136 #define SGEMM_UNROLL_M  gotoblas -> sgemm_unroll_m
1137 #define SGEMM_UNROLL_N  gotoblas -> sgemm_unroll_n
1138 #define SGEMM_UNROLL_MN gotoblas -> sgemm_unroll_mn
1139 #endif
1140 #endif
1141
1142 #define QGEMM_P         gotoblas -> qgemm_p
1143 #define QGEMM_Q         gotoblas -> qgemm_q
1144 #define QGEMM_R         gotoblas -> qgemm_r
1145 #define QGEMM_UNROLL_M  gotoblas -> qgemm_unroll_m
1146 #define QGEMM_UNROLL_N  gotoblas -> qgemm_unroll_n
1147 #define QGEMM_UNROLL_MN gotoblas -> qgemm_unroll_mn
1148
1149 #if BUILD_COMPLEX
1150 #define CGEMM_P         gotoblas -> cgemm_p
1151 #define CGEMM_Q         gotoblas -> cgemm_q
1152 #define CGEMM_R         gotoblas -> cgemm_r
1153 #define CGEMM_UNROLL_M  gotoblas -> cgemm_unroll_m
1154 #define CGEMM_UNROLL_N  gotoblas -> cgemm_unroll_n
1155 #define CGEMM_UNROLL_MN gotoblas -> cgemm_unroll_mn
1156 #ifndef BUILD_SINGLE
1157 #define SGEMM_P         gotoblas -> sgemm_p
1158 #define SGEMM_Q         gotoblas -> sgemm_q
1159 #define SGEMM_R         1024
1160 #define SGEMM_UNROLL_M  gotoblas -> sgemm_unroll_m
1161 #define SGEMM_UNROLL_N  gotoblas -> sgemm_unroll_n
1162 #define SGEMM_UNROLL_MN gotoblas -> sgemm_unroll_mn
1163 #endif
1164 #endif
1165
1166 #if BUILD_COMPLEX16
1167 #define ZGEMM_P         gotoblas -> zgemm_p
1168 #define ZGEMM_Q         gotoblas -> zgemm_q
1169 #define ZGEMM_R         gotoblas -> zgemm_r
1170 #define ZGEMM_UNROLL_M  gotoblas -> zgemm_unroll_m
1171 #define ZGEMM_UNROLL_N  gotoblas -> zgemm_unroll_n
1172 #define ZGEMM_UNROLL_MN gotoblas -> zgemm_unroll_mn
1173 #ifndef BUILD_DOUBLE
1174 #define DGEMM_P         gotoblas -> dgemm_p
1175 #define DGEMM_Q         gotoblas -> dgemm_q
1176 #define DGEMM_R         1024
1177 #define DGEMM_UNROLL_M  gotoblas -> dgemm_unroll_m
1178 #define DGEMM_UNROLL_N  gotoblas -> dgemm_unroll_n
1179 #define DGEMM_UNROLL_MN gotoblas -> dgemm_unroll_mn
1180 #endif
1181 #ifndef BUILD_COMPLEX
1182 #define CGEMM_P         gotoblas -> cgemm_p
1183 #define CGEMM_Q         gotoblas -> cgemm_q
1184 #define CGEMM_R         gotoblas -> cgemm_r
1185 #define CGEMM_UNROLL_M  gotoblas -> cgemm_unroll_m
1186 #define CGEMM_UNROLL_N  gotoblas -> cgemm_unroll_n
1187 #define CGEMM_UNROLL_MN gotoblas -> cgemm_unroll_mn
1188 #endif
1189 #endif
1190
1191 #define XGEMM_P         gotoblas -> xgemm_p
1192 #define XGEMM_Q         gotoblas -> xgemm_q
1193 #define XGEMM_R         gotoblas -> xgemm_r
1194 #define XGEMM_UNROLL_M  gotoblas -> xgemm_unroll_m
1195 #define XGEMM_UNROLL_N  gotoblas -> xgemm_unroll_n
1196 #define XGEMM_UNROLL_MN gotoblas -> xgemm_unroll_mn
1197
1198 #define CGEMM3M_P               gotoblas -> cgemm3m_p
1199 #define CGEMM3M_Q               gotoblas -> cgemm3m_q
1200 #define CGEMM3M_R               gotoblas -> cgemm3m_r
1201 #define CGEMM3M_UNROLL_M        gotoblas -> cgemm3m_unroll_m
1202 #define CGEMM3M_UNROLL_N        gotoblas -> cgemm3m_unroll_n
1203 #define CGEMM3M_UNROLL_MN       gotoblas -> cgemm3m_unroll_mn
1204
1205 #define ZGEMM3M_P               gotoblas -> zgemm3m_p
1206 #define ZGEMM3M_Q               gotoblas -> zgemm3m_q
1207 #define ZGEMM3M_R               gotoblas -> zgemm3m_r
1208 #define ZGEMM3M_UNROLL_M        gotoblas -> zgemm3m_unroll_m
1209 #define ZGEMM3M_UNROLL_N        gotoblas -> zgemm3m_unroll_n
1210 #define ZGEMM3M_UNROLL_MN       gotoblas -> zgemm3m_unroll_mn
1211
1212 #define XGEMM3M_P               gotoblas -> xgemm3m_p
1213 #define XGEMM3M_Q               gotoblas -> xgemm3m_q
1214 #define XGEMM3M_R               gotoblas -> xgemm3m_r
1215 #define XGEMM3M_UNROLL_M        gotoblas -> xgemm3m_unroll_m
1216 #define XGEMM3M_UNROLL_N        gotoblas -> xgemm3m_unroll_n
1217 #define XGEMM3M_UNROLL_MN       gotoblas -> xgemm3m_unroll_mn
1218
1219 #else
1220
1221 #define DTB_ENTRIES  DTB_DEFAULT_ENTRIES
1222
1223 #define GEMM_OFFSET_A   GEMM_DEFAULT_OFFSET_A
1224 #define GEMM_OFFSET_B   GEMM_DEFAULT_OFFSET_B
1225 #define GEMM_ALIGN      GEMM_DEFAULT_ALIGN
1226
1227 #ifdef HAVE_EXCLUSIVE_CACHE
1228 #define HAVE_EX_L2      1
1229 #else
1230 #define HAVE_EX_L2      0
1231 #endif
1232
1233 #ifdef BUILD_HALF
1234 #define SHGEMM_P                SHGEMM_DEFAULT_P
1235 #define SHGEMM_Q                SHGEMM_DEFAULT_Q
1236 #define SHGEMM_R                SHGEMM_DEFAULT_R
1237 #define SHGEMM_UNROLL_M SHGEMM_DEFAULT_UNROLL_M
1238 #define SHGEMM_UNROLL_N SHGEMM_DEFAULT_UNROLL_N
1239 #ifdef  SHGEMM_DEFAULT_UNROLL_MN
1240 #define SHGEMM_UNROLL_MN        SHGEMM_DEFAULT_UNROLL_MN
1241 #else
1242 #define SHGEMM_UNROLL_MN        MAX((SHGEMM_UNROLL_M), (SHGEMM_UNROLL_N))
1243 #endif
1244 #endif
1245
1246 #define SGEMM_P         SGEMM_DEFAULT_P
1247 #define SGEMM_Q         SGEMM_DEFAULT_Q
1248 #define SGEMM_R         SGEMM_DEFAULT_R
1249 #define SGEMM_UNROLL_M  SGEMM_DEFAULT_UNROLL_M
1250 #define SGEMM_UNROLL_N  SGEMM_DEFAULT_UNROLL_N
1251 #ifdef  SGEMM_DEFAULT_UNROLL_MN
1252 #define SGEMM_UNROLL_MN SGEMM_DEFAULT_UNROLL_MN
1253 #else
1254 #define SGEMM_UNROLL_MN MAX((SGEMM_UNROLL_M), (SGEMM_UNROLL_N))
1255 #endif
1256
1257 #define DGEMM_P         DGEMM_DEFAULT_P
1258 #define DGEMM_Q         DGEMM_DEFAULT_Q
1259 #define DGEMM_R         DGEMM_DEFAULT_R
1260 #define DGEMM_UNROLL_M  DGEMM_DEFAULT_UNROLL_M
1261 #define DGEMM_UNROLL_N  DGEMM_DEFAULT_UNROLL_N
1262 #ifdef  DGEMM_DEFAULT_UNROLL_MN
1263 #define DGEMM_UNROLL_MN DGEMM_DEFAULT_UNROLL_MN
1264 #else
1265 #define DGEMM_UNROLL_MN MAX((DGEMM_UNROLL_M), (DGEMM_UNROLL_N))
1266 #endif
1267
1268 #define QGEMM_P         QGEMM_DEFAULT_P
1269 #define QGEMM_Q         QGEMM_DEFAULT_Q
1270 #define QGEMM_R         QGEMM_DEFAULT_R
1271 #define QGEMM_UNROLL_M  QGEMM_DEFAULT_UNROLL_M
1272 #define QGEMM_UNROLL_N  QGEMM_DEFAULT_UNROLL_N
1273 #define QGEMM_UNROLL_MN MAX((QGEMM_UNROLL_M), (QGEMM_UNROLL_N))
1274
1275 #define CGEMM_P         CGEMM_DEFAULT_P
1276 #define CGEMM_Q         CGEMM_DEFAULT_Q
1277 #define CGEMM_R         CGEMM_DEFAULT_R
1278 #define CGEMM_UNROLL_M  CGEMM_DEFAULT_UNROLL_M
1279 #define CGEMM_UNROLL_N  CGEMM_DEFAULT_UNROLL_N
1280 #ifdef  CGEMM_DEFAULT_UNROLL_MN
1281 #define CGEMM_UNROLL_MN CGEMM_DEFAULT_UNROLL_MN
1282 #else
1283 #define CGEMM_UNROLL_MN MAX((CGEMM_UNROLL_M), (CGEMM_UNROLL_N))
1284 #endif
1285
1286 #define ZGEMM_P         ZGEMM_DEFAULT_P
1287 #define ZGEMM_Q         ZGEMM_DEFAULT_Q
1288 #define ZGEMM_R         ZGEMM_DEFAULT_R
1289 #define ZGEMM_UNROLL_M  ZGEMM_DEFAULT_UNROLL_M
1290 #define ZGEMM_UNROLL_N  ZGEMM_DEFAULT_UNROLL_N
1291 #ifdef  ZGEMM_DEFAULT_UNROLL_MN
1292 #define ZGEMM_UNROLL_MN ZGEMM_DEFAULT_UNROLL_MN
1293 #else
1294 #define ZGEMM_UNROLL_MN MAX((ZGEMM_UNROLL_M), (ZGEMM_UNROLL_N))
1295 #endif
1296
1297 #define XGEMM_P         XGEMM_DEFAULT_P
1298 #define XGEMM_Q         XGEMM_DEFAULT_Q
1299 #define XGEMM_R         XGEMM_DEFAULT_R
1300 #define XGEMM_UNROLL_M  XGEMM_DEFAULT_UNROLL_M
1301 #define XGEMM_UNROLL_N  XGEMM_DEFAULT_UNROLL_N
1302 #define XGEMM_UNROLL_MN MAX((XGEMM_UNROLL_M), (XGEMM_UNROLL_N))
1303
1304 #ifdef CGEMM3M_DEFAULT_UNROLL_N
1305
1306 #define CGEMM3M_P               CGEMM3M_DEFAULT_P
1307 #define CGEMM3M_Q               CGEMM3M_DEFAULT_Q
1308 #define CGEMM3M_R               CGEMM3M_DEFAULT_R
1309 #define CGEMM3M_UNROLL_M        CGEMM3M_DEFAULT_UNROLL_M
1310 #define CGEMM3M_UNROLL_N        CGEMM3M_DEFAULT_UNROLL_N
1311 #define CGEMM3M_UNROLL_MN       MAX((CGEMM3M_UNROLL_M), (CGEMM3M_UNROLL_N))
1312
1313 #else
1314
1315 #define CGEMM3M_P               SGEMM_DEFAULT_P
1316 #define CGEMM3M_Q               SGEMM_DEFAULT_Q
1317 #define CGEMM3M_R               SGEMM_DEFAULT_R
1318 #define CGEMM3M_UNROLL_M        SGEMM_DEFAULT_UNROLL_M
1319 #define CGEMM3M_UNROLL_N        SGEMM_DEFAULT_UNROLL_N
1320 #define CGEMM3M_UNROLL_MN       MAX((CGEMM_UNROLL_M), (CGEMM_UNROLL_N))
1321
1322 #endif
1323
1324
1325 #ifdef ZGEMM3M_DEFAULT_UNROLL_N
1326
1327 #define ZGEMM3M_P               ZGEMM3M_DEFAULT_P
1328 #define ZGEMM3M_Q               ZGEMM3M_DEFAULT_Q
1329 #define ZGEMM3M_R               ZGEMM3M_DEFAULT_R
1330 #define ZGEMM3M_UNROLL_M        ZGEMM3M_DEFAULT_UNROLL_M
1331 #define ZGEMM3M_UNROLL_N        ZGEMM3M_DEFAULT_UNROLL_N
1332 #define ZGEMM3M_UNROLL_MN       MAX((ZGEMM_UNROLL_M), (ZGEMM_UNROLL_N))
1333
1334 #else
1335
1336 #define ZGEMM3M_P               DGEMM_DEFAULT_P
1337 #define ZGEMM3M_Q               DGEMM_DEFAULT_Q
1338 #define ZGEMM3M_R               DGEMM_DEFAULT_R
1339 #define ZGEMM3M_UNROLL_M        DGEMM_DEFAULT_UNROLL_M
1340 #define ZGEMM3M_UNROLL_N        DGEMM_DEFAULT_UNROLL_N
1341 #define ZGEMM3M_UNROLL_MN       MAX((ZGEMM_UNROLL_M), (ZGEMM_UNROLL_N))
1342
1343 #endif
1344
1345 #define XGEMM3M_P               QGEMM_DEFAULT_P
1346 #define XGEMM3M_Q               QGEMM_DEFAULT_Q
1347 #define XGEMM3M_R               QGEMM_DEFAULT_R
1348 #define XGEMM3M_UNROLL_M        QGEMM_DEFAULT_UNROLL_M
1349 #define XGEMM3M_UNROLL_N        QGEMM_DEFAULT_UNROLL_N
1350 #define XGEMM3M_UNROLL_MN       MAX((QGEMM_UNROLL_M), (QGEMM_UNROLL_N))
1351
1352
1353 #endif
1354 #endif
1355
1356 #ifndef COMPLEX
1357 #if   (XDOUBLE)
1358 #define GEMM_P                  QGEMM_P
1359 #define GEMM_Q                  QGEMM_Q
1360 #define GEMM_R                  QGEMM_R
1361 #define GEMM_UNROLL_M           QGEMM_UNROLL_M
1362 #define GEMM_UNROLL_N           QGEMM_UNROLL_N
1363 #define GEMM_UNROLL_MN          QGEMM_UNROLL_MN
1364 #define GEMM_DEFAULT_P          QGEMM_DEFAULT_P
1365 #define GEMM_DEFAULT_Q          QGEMM_DEFAULT_Q
1366 #define GEMM_DEFAULT_R          QGEMM_DEFAULT_R
1367 #define GEMM_DEFAULT_UNROLL_M   QGEMM_DEFAULT_UNROLL_M
1368 #define GEMM_DEFAULT_UNROLL_N   QGEMM_DEFAULT_UNROLL_N
1369 #elif defined(DOUBLE)
1370 #define GEMM_P                  DGEMM_P
1371 #define GEMM_Q                  DGEMM_Q
1372 #define GEMM_R                  DGEMM_R
1373 #define GEMM_UNROLL_M           DGEMM_UNROLL_M
1374 #define GEMM_UNROLL_N           DGEMM_UNROLL_N
1375 #define GEMM_UNROLL_MN          DGEMM_UNROLL_MN
1376 #define GEMM_DEFAULT_P          DGEMM_DEFAULT_P
1377 #define GEMM_DEFAULT_Q          DGEMM_DEFAULT_Q
1378 #define GEMM_DEFAULT_R          DGEMM_DEFAULT_R
1379 #define GEMM_DEFAULT_UNROLL_M   DGEMM_DEFAULT_UNROLL_M
1380 #define GEMM_DEFAULT_UNROLL_N   DGEMM_DEFAULT_UNROLL_N
1381 #elif (HALF)
1382 #define GEMM_P                  SHGEMM_P
1383 #define GEMM_Q                  SHGEMM_Q
1384 #define GEMM_R                  SHGEMM_R
1385 #define GEMM_UNROLL_M           SHGEMM_UNROLL_M
1386 #define GEMM_UNROLL_N           SHGEMM_UNROLL_N
1387 #define GEMM_UNROLL_MN          SHGEMM_UNROLL_MN
1388 #define GEMM_DEFAULT_P          SHGEMM_DEFAULT_P
1389 #define GEMM_DEFAULT_Q          SHGEMM_DEFAULT_Q
1390 #define GEMM_DEFAULT_R          SHGEMM_DEFAULT_R
1391 #define GEMM_DEFAULT_UNROLL_M   SHGEMM_DEFAULT_UNROLL_M
1392 #define GEMM_DEFAULT_UNROLL_N   SHGEMM_DEFAULT_UNROLL_N
1393 #else
1394 #define GEMM_P                  SGEMM_P
1395 #define GEMM_Q                  SGEMM_Q
1396 #define GEMM_R                  SGEMM_R
1397 #define GEMM_UNROLL_M           SGEMM_UNROLL_M
1398 #define GEMM_UNROLL_N           SGEMM_UNROLL_N
1399 #define GEMM_UNROLL_MN          SGEMM_UNROLL_MN
1400 #define GEMM_DEFAULT_P          SGEMM_DEFAULT_P
1401 #define GEMM_DEFAULT_Q          SGEMM_DEFAULT_Q
1402 #define GEMM_DEFAULT_R          SGEMM_DEFAULT_R
1403 #define GEMM_DEFAULT_UNROLL_M   SGEMM_DEFAULT_UNROLL_M
1404 #define GEMM_DEFAULT_UNROLL_N   SGEMM_DEFAULT_UNROLL_N
1405 #endif
1406 #else
1407 #if   (XDOUBLE)
1408 #define GEMM_P                  XGEMM_P
1409 #define GEMM_Q                  XGEMM_Q
1410 #define GEMM_R                  XGEMM_R
1411 #define GEMM_UNROLL_M           XGEMM_UNROLL_M
1412 #define GEMM_UNROLL_N           XGEMM_UNROLL_N
1413 #define GEMM_UNROLL_MN          XGEMM_UNROLL_MN
1414 #define GEMM_DEFAULT_P          XGEMM_DEFAULT_P
1415 #define GEMM_DEFAULT_Q          XGEMM_DEFAULT_Q
1416 #define GEMM_DEFAULT_R          XGEMM_DEFAULT_R
1417 #define GEMM_DEFAULT_UNROLL_M   XGEMM_DEFAULT_UNROLL_M
1418 #define GEMM_DEFAULT_UNROLL_N   XGEMM_DEFAULT_UNROLL_N
1419 #elif defined(DOUBLE)
1420 #define GEMM_P                  ZGEMM_P
1421 #define GEMM_Q                  ZGEMM_Q
1422 #define GEMM_R                  ZGEMM_R
1423 #define GEMM_UNROLL_M           ZGEMM_UNROLL_M
1424 #define GEMM_UNROLL_N           ZGEMM_UNROLL_N
1425 #define GEMM_UNROLL_MN          ZGEMM_UNROLL_MN
1426 #define GEMM_DEFAULT_P          ZGEMM_DEFAULT_P
1427 #define GEMM_DEFAULT_Q          ZGEMM_DEFAULT_Q
1428 #define GEMM_DEFAULT_R          ZGEMM_DEFAULT_R
1429 #define GEMM_DEFAULT_UNROLL_M   ZGEMM_DEFAULT_UNROLL_M
1430 #define GEMM_DEFAULT_UNROLL_N   ZGEMM_DEFAULT_UNROLL_N
1431 #else
1432 #define GEMM_P                  CGEMM_P
1433 #define GEMM_Q                  CGEMM_Q
1434 #define GEMM_R                  CGEMM_R
1435 #define GEMM_UNROLL_M           CGEMM_UNROLL_M
1436 #define GEMM_UNROLL_N           CGEMM_UNROLL_N
1437 #define GEMM_UNROLL_MN          CGEMM_UNROLL_MN
1438 #define GEMM_DEFAULT_P          CGEMM_DEFAULT_P
1439 #define GEMM_DEFAULT_Q          CGEMM_DEFAULT_Q
1440 #define GEMM_DEFAULT_R          CGEMM_DEFAULT_R
1441 #define GEMM_DEFAULT_UNROLL_M   CGEMM_DEFAULT_UNROLL_M
1442 #define GEMM_DEFAULT_UNROLL_N   CGEMM_DEFAULT_UNROLL_N
1443 #endif
1444 #endif
1445
1446 #ifdef XDOUBLE
1447 #define GEMM3M_UNROLL_M XGEMM3M_UNROLL_M
1448 #define GEMM3M_UNROLL_N XGEMM3M_UNROLL_N
1449 #elif defined(DOUBLE)
1450 #define GEMM3M_UNROLL_M ZGEMM3M_UNROLL_M
1451 #define GEMM3M_UNROLL_N ZGEMM3M_UNROLL_N
1452 #else
1453 #define GEMM3M_UNROLL_M CGEMM3M_UNROLL_M
1454 #define GEMM3M_UNROLL_N CGEMM3M_UNROLL_N
1455 #endif
1456
1457
1458 #ifndef QGEMM_DEFAULT_UNROLL_M
1459 #define QGEMM_DEFAULT_UNROLL_M 2
1460 #endif
1461
1462 #ifndef QGEMM_DEFAULT_UNROLL_N
1463 #define QGEMM_DEFAULT_UNROLL_N 2
1464 #endif
1465
1466 #ifndef XGEMM_DEFAULT_UNROLL_M
1467 #define XGEMM_DEFAULT_UNROLL_M 2
1468 #endif
1469
1470 #ifndef XGEMM_DEFAULT_UNROLL_N
1471 #define XGEMM_DEFAULT_UNROLL_N 2
1472 #endif
1473
1474 #ifndef GEMM_THREAD
1475 #define GEMM_THREAD gemm_thread_n
1476 #endif
1477
1478 #ifndef SHGEMM_DEFAULT_R
1479 #define SHGEMM_DEFAULT_R (((BUFFER_SIZE - ((SHGEMM_DEFAULT_P * SHGEMM_DEFAULT_Q *  4 + GEMM_DEFAULT_OFFSET_A + GEMM_DEFAULT_ALIGN) & ~GEMM_DEFAULT_ALIGN)) / (SHGEMM_DEFAULT_Q *  4) - 15) & ~15UL)
1480 #endif
1481
1482 #ifndef SGEMM_DEFAULT_R
1483 #define SGEMM_DEFAULT_R (((BUFFER_SIZE - ((SGEMM_DEFAULT_P * SGEMM_DEFAULT_Q *  4 + GEMM_DEFAULT_OFFSET_A + GEMM_DEFAULT_ALIGN) & ~GEMM_DEFAULT_ALIGN)) / (SGEMM_DEFAULT_Q *  4) - 15) & ~15UL)
1484 #endif
1485
1486 #ifndef DGEMM_DEFAULT_R
1487 #define DGEMM_DEFAULT_R (((BUFFER_SIZE - ((DGEMM_DEFAULT_P * DGEMM_DEFAULT_Q *  8 + GEMM_DEFAULT_OFFSET_A + GEMM_DEFAULT_ALIGN) & ~GEMM_DEFAULT_ALIGN)) / (DGEMM_DEFAULT_Q *  8) - 15) & ~15UL)
1488 #endif
1489
1490 #ifndef QGEMM_DEFAULT_R
1491 #define QGEMM_DEFAULT_R (((BUFFER_SIZE - ((QGEMM_DEFAULT_P * QGEMM_DEFAULT_Q * 16 + GEMM_DEFAULT_OFFSET_A + GEMM_DEFAULT_ALIGN) & ~GEMM_DEFAULT_ALIGN)) / (QGEMM_DEFAULT_Q * 16) - 15) & ~15UL)
1492 #endif
1493
1494 #ifndef CGEMM_DEFAULT_R
1495 #define CGEMM_DEFAULT_R (((BUFFER_SIZE - ((CGEMM_DEFAULT_P * CGEMM_DEFAULT_Q *  8 + GEMM_DEFAULT_OFFSET_A + GEMM_DEFAULT_ALIGN) & ~GEMM_DEFAULT_ALIGN)) / (CGEMM_DEFAULT_Q *  8) - 15) & ~15UL)
1496 #endif
1497
1498 #ifndef ZGEMM_DEFAULT_R
1499 #define ZGEMM_DEFAULT_R (((BUFFER_SIZE - ((ZGEMM_DEFAULT_P * ZGEMM_DEFAULT_Q * 16 + GEMM_DEFAULT_OFFSET_A + GEMM_DEFAULT_ALIGN) & ~GEMM_DEFAULT_ALIGN)) / (ZGEMM_DEFAULT_Q * 16) - 15) & ~15UL)
1500 #endif
1501
1502 #ifndef XGEMM_DEFAULT_R
1503 #define XGEMM_DEFAULT_R (((BUFFER_SIZE - ((XGEMM_DEFAULT_P * XGEMM_DEFAULT_Q * 32 + GEMM_DEFAULT_OFFSET_A + GEMM_DEFAULT_ALIGN) & ~GEMM_DEFAULT_ALIGN)) / (XGEMM_DEFAULT_Q * 32) - 15) & ~15UL)
1504 #endif
1505
1506 #ifndef SNUMOPT
1507 #define SNUMOPT         2
1508 #endif
1509
1510 #ifndef DNUMOPT
1511 #define DNUMOPT         2
1512 #endif
1513
1514 #ifndef QNUMOPT
1515 #define QNUMOPT         1
1516 #endif
1517
1518 #ifndef GEMM3M_P
1519 #ifdef XDOUBLE
1520 #define GEMM3M_P        XGEMM3M_P
1521 #elif defined (DOUBLE)
1522 #define GEMM3M_P        ZGEMM3M_P
1523 #else
1524 #define GEMM3M_P        CGEMM3M_P
1525 #endif
1526 #endif
1527
1528 #ifndef GEMM3M_Q
1529 #ifdef XDOUBLE
1530 #define GEMM3M_Q        XGEMM3M_Q
1531 #elif defined (DOUBLE)
1532 #define GEMM3M_Q        ZGEMM3M_Q
1533 #else
1534 #define GEMM3M_Q        CGEMM3M_Q
1535 #endif
1536 #endif
1537
1538 #ifndef GEMM3M_R
1539 #ifdef XDOUBLE
1540 #define GEMM3M_R        XGEMM3M_R
1541 #elif defined (DOUBLE)
1542 #define GEMM3M_R        ZGEMM3M_R
1543 #else
1544 #define GEMM3M_R        CGEMM3M_R
1545 #endif
1546 #endif
1547
1548
1549 #endif