annotate libcruft/misc/blaswrap.c @ 12538:6a225fb7d361

Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
author Jarno Rajahalme <jarno.rajahalme@nsn.com>
date Thu, 24 Mar 2011 16:46:34 -0400
parents
children 72c96de7a403
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12538
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
1 /*
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
2
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
3 Copyright (C) 2011 Jarno Rajahalme
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
4
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
5 This file is part of Octave.
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
6
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
7 Octave is free software; you can redistribute it and/or modify it
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
9 Free Software Foundation; either version 3 of the License, or (at your
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
10 option) any later version.
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
11
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
12 Octave is distributed in the hope that it will be useful, but WITHOUT
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
15 for more details.
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
16
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
18 along with Octave; see the file COPYING. If not, see
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
19 <http://www.gnu.org/licenses/>.
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
20
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
21 */
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
22
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
23 /*
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
24
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
25 Wrapper for Apple libBLAS.dylib and libLAPACK.dylib
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
26
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
27 At least on the versions of OSX 10.6 so far (up and including 10.6.6)
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
28 these libraries are incompatible with 64 bit builds, as some functions
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
29 in libBLAS.dylib are not conforming to F2C calling conventions, as
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
30 they should. This breaks them in 64-bit builds on the x86_64
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
31 architecture.
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
32
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
33 Newer gfortran compoilers no longer default to the F2C calling
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
34 convention. These wrappers map the F2C conformant functions in
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
35 libBLAS and libLAPACK to the native gfortran calling convention, so
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
36 that the libraries can be used with software built for x86_64
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
37 architecture.
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
38
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
39 */
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
40
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
41 #ifdef HAVE_CONFIG_H
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
42 #include <config.h> /* USE_BLASWRAP ? */
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
43 #endif
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
44
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
45 #ifdef USE_BLASWRAP
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
46
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
47 /*
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
48 * vecLib is an Apple framework (collection of libraries) containing
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
49 * libBLAS and libLAPACK. The fortran stubs in these libraries are
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
50 * (mostly, but not completely) in the F2C calling convention.
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
51 * We access the libraries via the vecLib framework to make sure we
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
52 * get the Apple versions, rather than some other blas/lapack with the
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
53 * same name.
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
54 */
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
55 #ifndef VECLIB_FILE
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
56 #define VECLIB_FILE "/System/Library/Frameworks/vecLib.framework/Versions/A/vecLib"
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
57 #endif
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
58
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
59 /*
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
60 * Since this is a wrapper for fortran functions, we do not have prototypes for them.
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
61 */
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
62 #pragma GCC diagnostic ignored "-Wmissing-prototypes"
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
63
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
64 #include <dlfcn.h>
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
65 #include <stdlib.h>
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
66
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
67 /*
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
68 * Apple LAPACK follows F2C calling convention,
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
69 * Convert to normal gfortran calling convention
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
70 */
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
71
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
72 static void (*f2c_blas_func[])(void); /* forward declaration for the wrapper */
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
73 static void (*f2c_lapack_func[])(void); /* forward declaration for the wrapper */
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
74
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
75 /*
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
76 * LAPACK Wrappers, only need to convert the return value from double to float
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
77 */
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
78
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
79 typedef double (*F2C_CALL_0)(void);
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
80 typedef double (*F2C_CALL_1)(void *a1);
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
81 typedef double (*F2C_CALL_2)(void *a1, void *a2);
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
82 typedef double (*F2C_CALL_3)(void *a1, void *a2, void *a3);
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
83 typedef double (*F2C_CALL_4)(void *a1, void *a2, void *a3, void *a4);
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
84 typedef double (*F2C_CALL_5)(void *a1, void *a2, void *a3, void *a4, void *a5);
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
85 typedef double (*F2C_CALL_6)(void *a1, void *a2, void *a3, void *a4, void *a5, void *a6);
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
86 typedef double (*F2C_CALL_7)(void *a1, void *a2, void *a3, void *a4, void *a5, void *a6, void *a7);
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
87 typedef double (*F2C_CALL_8)(void *a1, void *a2, void *a3, void *a4, void *a5, void *a6, void *a7, void *a8);
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
88
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
89 #define F2C_LAPACK_CALL_8(name) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
90 float name (void *a1, void *a2, void *a3, void *a4, void *a5, void *a6, void *a7, void *a8) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
91 { \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
92 return ((F2C_CALL_8)f2c_lapack_func[f2c_ ## name]) (a1, a2, a3, a4, a5, a6, a7, a8); \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
93 }
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
94
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
95 #define F2C_LAPACK_CALL_7(name) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
96 float name (void *a1, void *a2, void *a3, void *a4, void *a5, void *a6, void *a7) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
97 { \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
98 return ((F2C_CALL_7)f2c_lapack_func[f2c_ ## name]) (a1, a2, a3, a4, a5, a6, a7); \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
99 }
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
100
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
101 #define F2C_LAPACK_CALL_6(name) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
102 float name (void *a1, void *a2, void *a3, void *a4, void *a5, void *a6) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
103 { \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
104 return ((F2C_CALL_6)f2c_lapack_func[f2c_ ## name]) (a1, a2, a3, a4, a5, a6); \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
105 }
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
106
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
107 #define F2C_LAPACK_CALL_5(name) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
108 float name (void *a1, void *a2, void *a3, void *a4, void *a5) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
109 { \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
110 return ((F2C_CALL_5)f2c_lapack_func[f2c_ ## name]) (a1, a2, a3, a4, a5); \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
111 }
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
112
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
113 #define F2C_LAPACK_CALL_4(name) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
114 float name (void *a1, void *a2, void *a3, void *a4) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
115 { \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
116 return ((F2C_CALL_4)f2c_lapack_func[f2c_ ## name]) (a1, a2, a3, a4); \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
117 }
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
118
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
119 #define F2C_LAPACK_CALL_3(name) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
120 float name (void *a1, void *a2, void *a3) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
121 { \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
122 return ((F2C_CALL_3)f2c_lapack_func[f2c_ ## name]) (a1, a2, a3); \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
123 }
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
124
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
125 #define F2C_LAPACK_CALL_2(name) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
126 float name (void *a1, void *a2) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
127 { \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
128 return ((F2C_CALL_2)f2c_lapack_func[f2c_ ## name]) (a1, a2); \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
129 }
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
130
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
131 #define F2C_LAPACK_CALL_1(name) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
132 float name (void *a1) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
133 { \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
134 return ((F2C_CALL_1)f2c_lapack_func[f2c_ ## name]) (a1); \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
135 }
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
136
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
137 #define F2C_LAPACK_CALL_0(name) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
138 float name (void) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
139 { \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
140 return ((F2C_CALL_0)f2c_lapack_func[f2c_ ## name]) (); \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
141 }
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
142
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
143 #define F2C_LAPACK_CALL_NONE(name)
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
144
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
145 #define F2C_LAPACK_CALL(name, args) F2C_LAPACK_CALL_ ## args (name)
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
146
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
147 #define ENUM_ITEM(name, args) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
148 f2c_ ## name,
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
149
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
150 #define NAME_TO_STRING_CASE(name, args) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
151 case f2c_ ## name: return #name;
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
152
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
153 #define DEFINE_LAPACK_ENUM(name, list) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
154 typedef enum { \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
155 list(ENUM_ITEM) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
156 } name; \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
157 static const char* \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
158 f2c_ ## name ## _name (name n) { \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
159 switch (n) { \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
160 list(NAME_TO_STRING_CASE) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
161 default: return ""; \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
162 } \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
163 } \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
164 list(F2C_LAPACK_CALL)
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
165
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
166 #define DEFINE_BLAS_ENUM(name, list) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
167 typedef enum { \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
168 list(ENUM_ITEM) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
169 } name; \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
170 static const char* \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
171 f2c_ ## name ## _name(name n) { \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
172 switch (n) { \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
173 list(NAME_TO_STRING_CASE) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
174 default: return ""; \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
175 } \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
176 }
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
177
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
178 /*
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
179 * Lapack functions (with argument count) that need the return value
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
180 * converted from double to float
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
181 */
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
182 #define LAPACK_LIST(_) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
183 _(clangb_,7) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
184 _(clange_,6) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
185 _(clangt_,5) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
186 _(clanhb_,7) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
187 _(clanhe_,6) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
188 _(clanhp_,5) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
189 _(clanhs_,5) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
190 _(clanht_,4) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
191 _(clansb_,7) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
192 _(clansp_,5) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
193 _(clansy_,6) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
194 _(clantb_,8) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
195 _(clantp_,6) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
196 _(clantr_,8) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
197 _(scsum1_,3) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
198 _(second_,0) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
199 _(slamc3_,2) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
200 _(slamch_,1) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
201 _(slangb_,7) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
202 _(slange_,6) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
203 _(slangt_,5) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
204 _(slanhs_,5) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
205 _(slansb_,7) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
206 _(slansp_,5) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
207 _(slanst_,4) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
208 _(slansy_,6) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
209 _(slantb_,8) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
210 _(slantp_,6) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
211 _(slantr_,8) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
212 _(slapy2_,2) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
213 _(slapy3_,3) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
214 _(LAPACK_COUNT,NONE)
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
215
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
216 /*
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
217 * These need a bit more complex wrappers
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
218 */
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
219 #define BLAS_LIST(_) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
220 _(cdotu_,6) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
221 _(zdotu_,6) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
222 _(cdotc_,6) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
223 _(zdotc_,6) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
224 _(BLAS_COUNT,NONE)
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
225
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
226 DEFINE_BLAS_ENUM(blas, BLAS_LIST)
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
227
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
228 DEFINE_LAPACK_ENUM(lapack, LAPACK_LIST)
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
229
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
230 /*
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
231 * BLAS wrappers, F2C convention passes retuned complex as an extra first
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
232 * argument
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
233 */
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
234 typedef struct { float r, i; } complex;
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
235 typedef struct { double r, i; } doublecomplex;
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
236
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
237 typedef void (*F2C_BLAS_CALL_6)(void *c, void *a1, void *a2, void *a3, void *a4, void *a5);
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
238
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
239 #define F2C_BLAS_CALL(type, name) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
240 type name (void *a1, void *a2, void *a3, void *a4, void *a5) \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
241 { \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
242 type cplx; \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
243 ((F2C_BLAS_CALL_6)f2c_blas_func[f2c_ ## name]) (&cplx, a1, a2, a3, a4, a5); \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
244 return cplx; \
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
245 }
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
246
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
247 F2C_BLAS_CALL(complex, cdotu_)
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
248 F2C_BLAS_CALL(doublecomplex, zdotu_)
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
249 F2C_BLAS_CALL(complex, cdotc_)
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
250 F2C_BLAS_CALL(doublecomplex, zdotc_)
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
251
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
252
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
253 /*
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
254 * Function pointer arrays, indexed by the enums
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
255 */
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
256 static void (*f2c_blas_func[f2c_BLAS_COUNT])(void) = { 0 };
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
257 static void (*f2c_lapack_func[f2c_LAPACK_COUNT])(void) = { 0 };
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
258
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
259 /*
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
260 * Initialization: This is called before main ().
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
261 * Get the function pointers to the wrapped functions in Apple vecLib
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
262 */
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
263
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
264 static void * apple_vecLib = 0;
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
265
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
266 __attribute__((constructor))
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
267 static void initVecLibWrappers (void)
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
268 {
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
269 apple_vecLib = dlopen (VECLIB_FILE, RTLD_LOCAL | RTLD_NOLOAD | RTLD_FIRST);
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
270 if (0 == apple_vecLib)
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
271 abort ();
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
272
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
273 int i;
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
274 for (i = 0; i < f2c_LAPACK_COUNT; i++)
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
275 if (0 == (f2c_lapack_func[i] = dlsym(apple_vecLib, f2c_lapack_name(i))))
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
276 abort ();
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
277 for (i = 0; i < f2c_BLAS_COUNT; i++)
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
278 if (0 == (f2c_blas_func[i] = dlsym(apple_vecLib, f2c_blas_name(i))))
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
279 abort ();
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
280 }
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
281
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
282 __attribute__((destructor))
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
283 static void finiVecLibWrappers (void)
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
284 {
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
285 if (apple_vecLib)
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
286 dlclose (apple_vecLib);
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
287 apple_vecLib = 0;
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
288 }
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
289
6a225fb7d361 Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff changeset
290 #endif /* USE_BLASWRAP */