Tpetra parallel linear algebra  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
TpetraExt_MatrixMatrix.cpp
1 // @HEADER
2 // *****************************************************************************
3 // Tpetra: Templated Linear Algebra Services Package
4 //
5 // Copyright 2008 NTESS and the Tpetra contributors.
6 // SPDX-License-Identifier: BSD-3-Clause
7 // *****************************************************************************
8 // @HEADER
9 
10 #include "TpetraExt_MatrixMatrix.hpp"
11 
12 #ifdef HAVE_TPETRA_EXPLICIT_INSTANTIATION
13 
14 #include "TpetraCore_ETIHelperMacros.h"
16 
17 namespace Tpetra {
18 
19  TPETRA_ETI_MANGLING_TYPEDEFS()
20 
21  TPETRA_INSTANTIATE_SLGN(TPETRA_MATRIXMATRIX_INSTANT)
22 
23  // Zoltan2 wants Scalar = int (Bug 6298).
24  // This is already covered above for the GO = int case.
25  //
26  // FIXME (mfh 07 Oct 2015) I'm hand-rolling this for now.
27  // It would be better to let CMake do the ETI generation,
28  // as with CrsMatrix.
29 
30  // NOTE: The Zoltan2 adaptation stuff only gets engaged for full ETI.
31  // If we're doing reduced ETI, we disable all of this
32 
33 #ifndef HAVE_TPETRA_REDUCED_ETI
34 
35 #ifdef HAVE_TPETRA_INST_INT_LONG
36 #ifdef HAVE_TPETRA_INST_LONG_DOUBLE
37 #define TPETRA_MATRIXMATRIX_INSTANT_SC_LONG_DOUBLE_LO_INT_GO_LONG( NT ) \
38  TPETRA_MATRIXMATRIX_INSTANT( longdouble, int, long, NT )
39 
40  TPETRA_INSTANTIATE_N(TPETRA_MATRIXMATRIX_INSTANT_SC_LONG_DOUBLE_LO_INT_GO_LONG)
41 #else
42 #define TPETRA_MATRIXMATRIX_INSTANT_SC_INT_LO_INT_GO_LONG( NT ) \
43  TPETRA_MATRIXMATRIX_INSTANT( int, int, long, NT )
44 
45  TPETRA_INSTANTIATE_N(TPETRA_MATRIXMATRIX_INSTANT_SC_INT_LO_INT_GO_LONG)
46 #endif //HAVE_TPETRA_INST_LONG_DOUBLE
47 #endif // HAVE_TPETRA_INST_INT_LONG
48 
49 #ifdef HAVE_TPETRA_INST_INT_LONG_LONG
50 #ifdef HAVE_TPETRA_INST_LONG_DOUBLE
51 #define TPETRA_MATRIXMATRIX_INSTANT_SC_LONG_DOUBLE_LO_INT_GO_LONG_LONG( NT ) \
52  TPETRA_MATRIXMATRIX_INSTANT( longdouble, int, longlong, NT )
53 
54  TPETRA_INSTANTIATE_N(TPETRA_MATRIXMATRIX_INSTANT_SC_LONG_DOUBLE_LO_INT_GO_LONG_LONG)
55 #else
56 #define TPETRA_MATRIXMATRIX_INSTANT_SC_INT_LO_INT_GO_LONG_LONG( NT ) \
57  TPETRA_MATRIXMATRIX_INSTANT( int, int, longlong, NT )
58 
59  TPETRA_INSTANTIATE_N(TPETRA_MATRIXMATRIX_INSTANT_SC_INT_LO_INT_GO_LONG_LONG)
60 #endif //HAVE_TPETRA_INST_LONG_DOUBLE
61 #endif // HAVE_TPETRA_INST_INT_LONG_LONG
62 
63 #ifdef HAVE_TPETRA_INST_INT_UNSIGNED
64 #ifdef HAVE_TPETRA_INST_LONG_DOUBLE
65 #define TPETRA_MATRIXMATRIX_INSTANT_SC_LONG_DOUBLE_LO_INT_GO_UNSIGNED( NT ) \
66  TPETRA_MATRIXMATRIX_INSTANT( longdouble, int, unsigned, NT )
67 
68  TPETRA_INSTANTIATE_N(TPETRA_MATRIXMATRIX_INSTANT_SC_LONG_DOUBLE_LO_INT_GO_UNSIGNED)
69 #else
70 #define TPETRA_MATRIXMATRIX_INSTANT_SC_INT_LO_INT_GO_UNSIGNED( NT ) \
71  TPETRA_MATRIXMATRIX_INSTANT( int, int, unsigned, NT )
72 
73  TPETRA_INSTANTIATE_N(TPETRA_MATRIXMATRIX_INSTANT_SC_INT_LO_INT_GO_UNSIGNED)
74 #endif //HAVE_TPETRA_INST_LONG_DOUBLE
75 #endif // HAVE_TPETRA_INST_INT_UNSIGNED
76 
77 #ifdef HAVE_TPETRA_INST_INT_UNSIGNED_LONG
78 #ifdef HAVE_TPETRA_INST_LONG_DOUBLE
79 #define TPETRA_MATRIXMATRIX_INSTANT_SC_LONG_DOUBLE_LO_INT_GO_UNSIGNED_LONG( NT ) \
80  TPETRA_MATRIXMATRIX_INSTANT( longdouble, int, unsignedlong, NT )
81 
82  TPETRA_INSTANTIATE_N(TPETRA_MATRIXMATRIX_INSTANT_SC_LONG_DOUBLE_LO_INT_GO_UNSIGNED_LONG)
83 #else
84 #define TPETRA_MATRIXMATRIX_INSTANT_SC_INT_LO_INT_GO_UNSIGNED_LONG( NT ) \
85  TPETRA_MATRIXMATRIX_INSTANT( int, int, unsignedlong, NT )
86 
87  TPETRA_INSTANTIATE_N(TPETRA_MATRIXMATRIX_INSTANT_SC_INT_LO_INT_GO_UNSIGNED_LONG)
88 #endif //HAVE_TPETRA_INST_LONG_DOUBLE
89 #endif // HAVE_TPETRA_INST_INT_UNSIGNED_LONG
90 
91 #endif // HAVE_TPETRA_REDUCED_ETI
92 
93 } // namespace Tpetra
94 
95 #endif // HAVE_TPETRA_EXPLICIT_INSTANTIATION