Please, help us to better know about our user community by answering the following short survey:
https://forms.gle/wpyrxWi18ox9Z5ae9
Eigen-unsupported
3.4.0
Loading...
Searching...
No Matches
TensorMacros.h
1
// This file is part of Eigen, a lightweight C++ template library
2
// for linear algebra.
3
//
4
// Copyright (C) 2015 Benoit Steiner <benoit.steiner.goog@gmail.com>
5
//
6
// This Source Code Form is subject to the terms of the Mozilla
7
// Public License v. 2.0. If a copy of the MPL was not distributed
8
// with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
9
10
#ifndef EIGEN_CXX11_TENSOR_TENSOR_META_MACROS_H
11
#define EIGEN_CXX11_TENSOR_TENSOR_META_MACROS_H
12
13
29
// SFINAE requires variadic templates
30
#if !defined(EIGEN_GPUCC)
31
#if EIGEN_HAS_VARIADIC_TEMPLATES
32
// SFINAE doesn't work for gcc <= 4.7
33
#ifdef EIGEN_COMP_GNUC
34
#if EIGEN_GNUC_AT_LEAST(4,8)
35
#define EIGEN_HAS_SFINAE
36
#endif
37
#else
38
#define EIGEN_HAS_SFINAE
39
#endif
40
#endif
41
#endif
42
43
#define EIGEN_SFINAE_ENABLE_IF( __condition__ ) \
44
typename internal::enable_if< ( __condition__ ) , int >::type = 0
45
46
// Define a macro to use a reference on the host but a value on the device
47
#if defined(SYCL_DEVICE_ONLY)
48
#define EIGEN_DEVICE_REF
49
#else
50
#define EIGEN_DEVICE_REF &
51
#endif
52
53
// Define a macro for catching SYCL exceptions if exceptions are enabled
54
#define EIGEN_SYCL_TRY_CATCH(X) \
55
do { \
56
EIGEN_TRY {X;} \
57
EIGEN_CATCH(const cl::sycl::exception& e) { \
58
EIGEN_THROW_X(std::runtime_error("SYCL exception at "
+ \
59
std::string(__FILE__) + ":" + \
60
std::to_string(__LINE__) + "\n" + \
61
e.what())); \
62
} \
63
} while (false)
64
65
// Define a macro if local memory flags are unset or one of them is set
66
// Setting both flags is the same as unsetting them
67
#if (!defined(EIGEN_SYCL_LOCAL_MEM) && !defined(EIGEN_SYCL_NO_LOCAL_MEM)) || \
68
(defined(EIGEN_SYCL_LOCAL_MEM) && defined(EIGEN_SYCL_NO_LOCAL_MEM))
69
#define EIGEN_SYCL_LOCAL_MEM_UNSET_OR_ON 1
70
#define EIGEN_SYCL_LOCAL_MEM_UNSET_OR_OFF 1
71
#elif defined(EIGEN_SYCL_LOCAL_MEM) && !defined(EIGEN_SYCL_NO_LOCAL_MEM)
72
#define EIGEN_SYCL_LOCAL_MEM_UNSET_OR_ON 1
73
#elif !defined(EIGEN_SYCL_LOCAL_MEM) && defined(EIGEN_SYCL_NO_LOCAL_MEM)
74
#define EIGEN_SYCL_LOCAL_MEM_UNSET_OR_OFF 1
75
#endif
76
77
#if EIGEN_COMP_CLANG
// workaround clang bug (see http://forum.kde.org/viewtopic.php?f=74&t=102653)
78
#define EIGEN_TENSOR_INHERIT_ASSIGNMENT_EQUAL_OPERATOR(Derived) \
79
using Base::operator =; \
80
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& operator=(const Derived& other) { Base::operator=(other); return *this; } \
81
template <typename OtherDerived> \
82
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived& operator=(const OtherDerived& other) { Base::operator=(other); return *this; }
83
#else
84
#define EIGEN_TENSOR_INHERIT_ASSIGNMENT_EQUAL_OPERATOR(Derived) \
85
EIGEN_INHERIT_ASSIGNMENT_EQUAL_OPERATOR(Derived)
86
#endif
87
94
#define EIGEN_TENSOR_INHERIT_ASSIGNMENT_OPERATORS(Derived) \
95
EIGEN_TENSOR_INHERIT_ASSIGNMENT_EQUAL_OPERATOR(Derived) \
96
EIGEN_DEFAULT_COPY_CONSTRUCTOR(Derived)
97
98
#endif
unsupported
Eigen
CXX11
src
Tensor
TensorMacros.h
Generated on Thu May 4 2023 19:00:16 for Eigen-unsupported by
1.9.6