Merge pull request #3219 from austinpagan/Gemm.ErrorFix
[platform/upstream/openblas.git] / relapack / config.h
1 #ifndef RELAPACK_CONFIG_H
2 #define RELAPACK_CONFIG_H
3
4 // ReLAPACK configuration file.
5 // See also config.md
6
7
8 ///////////////////////////////
9 // BLAS/LAPACK obect symbols //
10 ///////////////////////////////
11
12 // BLAS routines linked against have a trailing underscore
13 #define BLAS_UNDERSCORE 1
14 // LAPACK routines linked against have a trailing underscore
15 #define LAPACK_UNDERSCORE BLAS_UNDERSCORE
16
17 // Complex BLAS/LAPACK routines return their result in the first argument
18 // This option must be enabled when linking to MKL for ctrsyl and ztrsyl to
19 // work.
20 #define COMPLEX_FUNCTIONS_AS_ROUTINES 0
21 #ifdef F_INTERFACE_INTEL
22 #define COMPLEX_FUNCTIONS_AS_ROUTINES 1
23 #endif
24 #define BLAS_COMPLEX_FUNCTIONS_AS_ROUTINES COMPLEX_FUNCTIONS_AS_ROUTINES
25 #define LAPACK_BLAS_COMPLEX_FUNCTIONS_AS_ROUTINES COMPLEX_FUNCTIONS_AS_ROUTINES
26
27 // The BLAS-like extension xgemmt is provided by an external library.
28 #define HAVE_XGEMMT 0
29
30
31 ////////////////////////////
32 // Use malloc in ReLAPACK //
33 ////////////////////////////
34
35 #define ALLOW_MALLOC 1
36 // allow malloc in xsygst for improved performance
37 #define XSYGST_ALLOW_MALLOC ALLOW_MALLOC
38 // allow malloc in xsytrf if the passed work buffer is too small
39 //#define XSYTRF_ALLOW_MALLOC ALLOW_MALLOC
40 #define XSYTRF_ALLOW_MALLOC 0
41
42 ////////////////////////////////
43 // LAPACK routine replacement //
44 ////////////////////////////////
45 // The following macros specify which routines are included in the library under
46 // LAPACK's symbol names: 1 included, 0 not included
47
48 #define INCLUDE_ALL 1
49
50 #define INCLUDE_XLAUUM INCLUDE_ALL
51 #define INCLUDE_SLAUUM INCLUDE_XLAUUM
52 #define INCLUDE_DLAUUM INCLUDE_XLAUUM
53 #define INCLUDE_CLAUUM INCLUDE_XLAUUM
54 #define INCLUDE_ZLAUUM INCLUDE_XLAUUM
55
56 #define INCLUDE_XSYGST INCLUDE_ALL
57 #define INCLUDE_SSYGST INCLUDE_XSYGST
58 #define INCLUDE_DSYGST INCLUDE_XSYGST
59 #define INCLUDE_CHEGST INCLUDE_XSYGST
60 #define INCLUDE_ZHEGST INCLUDE_XSYGST
61
62 #define INCLUDE_XTRTRI INCLUDE_ALL
63 #define INCLUDE_STRTRI INCLUDE_XTRTRI
64 #define INCLUDE_DTRTRI INCLUDE_XTRTRI
65 #define INCLUDE_CTRTRI INCLUDE_XTRTRI
66 #define INCLUDE_ZTRTRI INCLUDE_XTRTRI
67
68 #define INCLUDE_XPOTRF INCLUDE_ALL
69 #define INCLUDE_SPOTRF INCLUDE_XPOTRF
70 #define INCLUDE_DPOTRF INCLUDE_XPOTRF
71 #define INCLUDE_CPOTRF INCLUDE_XPOTRF
72 #define INCLUDE_ZPOTRF INCLUDE_XPOTRF
73
74 #define INCLUDE_XPBTRF INCLUDE_ALL
75 #define INCLUDE_SPBTRF INCLUDE_XPBTRF
76 #define INCLUDE_DPBTRF INCLUDE_XPBTRF
77 #define INCLUDE_CPBTRF INCLUDE_XPBTRF
78 #define INCLUDE_ZPBTRF INCLUDE_XPBTRF
79
80 #define INCLUDE_XSYTRF INCLUDE_ALL
81 #define INCLUDE_SSYTRF INCLUDE_XSYTRF
82 #define INCLUDE_DSYTRF INCLUDE_XSYTRF
83 #define INCLUDE_CSYTRF INCLUDE_XSYTRF
84 #define INCLUDE_CHETRF INCLUDE_XSYTRF
85 #define INCLUDE_ZSYTRF INCLUDE_XSYTRF
86 #define INCLUDE_ZHETRF INCLUDE_XSYTRF
87 #define INCLUDE_SSYTRF_ROOK INCLUDE_SSYTRF
88 #define INCLUDE_DSYTRF_ROOK INCLUDE_DSYTRF
89 #define INCLUDE_CSYTRF_ROOK INCLUDE_CSYTRF
90 #define INCLUDE_CHETRF_ROOK INCLUDE_CHETRF
91 #define INCLUDE_ZSYTRF_ROOK INCLUDE_ZSYTRF
92 #define INCLUDE_ZHETRF_ROOK INCLUDE_ZHETRF
93
94 #define INCLUDE_XGETRF INCLUDE_ALL
95 #define INCLUDE_SGETRF INCLUDE_XGETRF
96 #define INCLUDE_DGETRF INCLUDE_XGETRF
97 #define INCLUDE_CGETRF INCLUDE_XGETRF
98 #define INCLUDE_ZGETRF INCLUDE_XGETRF
99
100 #define INCLUDE_XGBTRF INCLUDE_ALL
101 #define INCLUDE_SGBTRF INCLUDE_XGBTRF
102 #define INCLUDE_DGBTRF INCLUDE_XGBTRF
103 #define INCLUDE_CGBTRF INCLUDE_XGBTRF
104 #define INCLUDE_ZGBTRF INCLUDE_XGBTRF
105
106 #define INCLUDE_XTRSYL INCLUDE_ALL
107 #define INCLUDE_STRSYL INCLUDE_XTRSYL
108 #define INCLUDE_DTRSYL INCLUDE_XTRSYL
109 #define INCLUDE_CTRSYL INCLUDE_XTRSYL
110 #define INCLUDE_ZTRSYL INCLUDE_XTRSYL
111
112 #define INCLUDE_XTGSYL INCLUDE_ALL
113 #define INCLUDE_STGSYL INCLUDE_XTGSYL
114 #define INCLUDE_DTGSYL INCLUDE_XTGSYL
115 #define INCLUDE_CTGSYL INCLUDE_XTGSYL
116 #define INCLUDE_ZTGSYL INCLUDE_XTGSYL
117
118 #define INCLUDE_XGEMMT 0
119 #define INCLUDE_SGEMMT INCLUDE_XGEMMT
120 #define INCLUDE_DGEMMT INCLUDE_XGEMMT
121 #define INCLUDE_CGEMMT INCLUDE_XGEMMT
122 #define INCLUDE_ZGEMMT INCLUDE_XGEMMT
123
124
125 /////////////////////
126 // crossover sizes //
127 /////////////////////
128
129 // default crossover size
130 #define CROSSOVER 24
131
132 // individual crossover sizes
133 #define CROSSOVER_XLAUUM CROSSOVER
134 #define CROSSOVER_SLAUUM CROSSOVER_XLAUUM
135 #define CROSSOVER_DLAUUM CROSSOVER_XLAUUM
136 #define CROSSOVER_CLAUUM CROSSOVER_XLAUUM
137 #define CROSSOVER_ZLAUUM CROSSOVER_XLAUUM
138
139 #define CROSSOVER_XSYGST CROSSOVER
140 #define CROSSOVER_SSYGST CROSSOVER_XSYGST
141 #define CROSSOVER_DSYGST CROSSOVER_XSYGST
142 #define CROSSOVER_CHEGST CROSSOVER_XSYGST
143 #define CROSSOVER_ZHEGST CROSSOVER_XSYGST
144
145 #define CROSSOVER_XTRTRI CROSSOVER
146 #define CROSSOVER_STRTRI CROSSOVER_XTRTRI
147 #define CROSSOVER_DTRTRI CROSSOVER_XTRTRI
148 #define CROSSOVER_CTRTRI CROSSOVER_XTRTRI
149 #define CROSSOVER_ZTRTRI CROSSOVER_XTRTRI
150
151 #define CROSSOVER_XPOTRF CROSSOVER
152 #define CROSSOVER_SPOTRF CROSSOVER_XPOTRF
153 #define CROSSOVER_DPOTRF CROSSOVER_XPOTRF
154 #define CROSSOVER_CPOTRF CROSSOVER_XPOTRF
155 #define CROSSOVER_ZPOTRF CROSSOVER_XPOTRF
156
157 #define CROSSOVER_XPBTRF CROSSOVER
158 #define CROSSOVER_SPBTRF CROSSOVER_XPBTRF
159 #define CROSSOVER_DPBTRF CROSSOVER_XPBTRF
160 #define CROSSOVER_CPBTRF CROSSOVER_XPBTRF
161 #define CROSSOVER_ZPBTRF CROSSOVER_XPBTRF
162
163 #define CROSSOVER_XSYTRF CROSSOVER
164 #define CROSSOVER_SSYTRF CROSSOVER_XSYTRF
165 #define CROSSOVER_DSYTRF CROSSOVER_XSYTRF
166 #define CROSSOVER_CSYTRF CROSSOVER_XSYTRF
167 #define CROSSOVER_CHETRF CROSSOVER_XSYTRF
168 #define CROSSOVER_ZSYTRF CROSSOVER_XSYTRF
169 #define CROSSOVER_ZHETRF CROSSOVER_XSYTRF
170 #define CROSSOVER_SSYTRF_ROOK CROSSOVER_SSYTRF
171 #define CROSSOVER_DSYTRF_ROOK CROSSOVER_DSYTRF
172 #define CROSSOVER_CSYTRF_ROOK CROSSOVER_CSYTRF
173 #define CROSSOVER_CHETRF_ROOK CROSSOVER_CHETRF
174 #define CROSSOVER_ZSYTRF_ROOK CROSSOVER_ZSYTRF
175 #define CROSSOVER_ZHETRF_ROOK CROSSOVER_ZHETRF
176
177 #define CROSSOVER_XGETRF CROSSOVER
178 #define CROSSOVER_SGETRF CROSSOVER_XGETRF
179 #define CROSSOVER_DGETRF CROSSOVER_XGETRF
180 #define CROSSOVER_CGETRF CROSSOVER_XGETRF
181 #define CROSSOVER_ZGETRF CROSSOVER_XGETRF
182
183 #define CROSSOVER_XGBTRF CROSSOVER
184 #define CROSSOVER_SGBTRF CROSSOVER_XGBTRF
185 #define CROSSOVER_DGBTRF CROSSOVER_XGBTRF
186 #define CROSSOVER_CGBTRF CROSSOVER_XGBTRF
187 #define CROSSOVER_ZGBTRF CROSSOVER_XGBTRF
188
189 #define CROSSOVER_XTRSYL CROSSOVER
190 #define CROSSOVER_STRSYL CROSSOVER_XTRSYL
191 #define CROSSOVER_DTRSYL CROSSOVER_XTRSYL
192 #define CROSSOVER_CTRSYL CROSSOVER_XTRSYL
193 #define CROSSOVER_ZTRSYL CROSSOVER_XTRSYL
194
195 #define CROSSOVER_XTGSYL CROSSOVER
196 #define CROSSOVER_STGSYL CROSSOVER_XTGSYL
197 #define CROSSOVER_DTGSYL CROSSOVER_XTGSYL
198 #define CROSSOVER_CTGSYL CROSSOVER_XTGSYL
199 #define CROSSOVER_ZTGSYL CROSSOVER_XTGSYL
200
201 // sytrf helper routine
202 #define CROSSOVER_XGEMMT CROSSOVER_XSYTRF
203 #define CROSSOVER_SGEMMT CROSSOVER_XGEMMT
204 #define CROSSOVER_DGEMMT CROSSOVER_XGEMMT
205 #define CROSSOVER_CGEMMT CROSSOVER_XGEMMT
206 #define CROSSOVER_ZGEMMT CROSSOVER_XGEMMT
207
208 #endif /* RELAPACK_CONFIG_H */