diff options
Diffstat (limited to 'unsupported/Eigen/CXX11/src/Tensor/TensorSyclPlaceHolder.h')
-rw-r--r-- | unsupported/Eigen/CXX11/src/Tensor/TensorSyclPlaceHolder.h | 142 |
1 files changed, 45 insertions, 97 deletions
diff --git a/unsupported/Eigen/CXX11/src/Tensor/TensorSyclPlaceHolder.h b/unsupported/Eigen/CXX11/src/Tensor/TensorSyclPlaceHolder.h index 87995a25e..43a63c73d 100644 --- a/unsupported/Eigen/CXX11/src/Tensor/TensorSyclPlaceHolder.h +++ b/unsupported/Eigen/CXX11/src/Tensor/TensorSyclPlaceHolder.h @@ -19,8 +19,8 @@ * *****************************************************************/ -#ifndef UNSUPPORTED_EIGEN_CXX11_SRC_TENSORYSYCL_PLACEHOLDER_HPP -#define UNSUPPORTED_EIGEN_CXX11_SRC_TENSORYSYCL_PLACEHOLDER_HPP +#ifndef UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSORSYCL_PLACEHOLDER_HPP +#define UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSORSYCL_PLACEHOLDER_HPP namespace Eigen { namespace internal { @@ -31,91 +31,52 @@ namespace internal { template <typename Scalar, size_t N> struct PlaceHolder { static constexpr size_t I = N; - using Type = Scalar; + typedef Scalar Type; }; -template <typename PlainObjectType, int Options_, - template <class> class MakePointer_, size_t N> -struct PlaceHolder<const TensorMap<PlainObjectType, Options_, MakePointer_>, - N> { - static constexpr size_t I = N; - - using Type = const TensorMap<PlainObjectType, Options_, MakePointer_>; - - typedef typename Type::Self Self; - typedef typename Type::Base Base; - typedef typename Type::Nested Nested; - typedef typename Type::StorageKind StorageKind; - typedef typename Type::Index Index; - typedef typename Type::Scalar Scalar; - typedef typename Type::RealScalar RealScalar; - typedef typename Type::CoeffReturnType CoeffReturnType; +/// \brief specialisation of the PlaceHolder node for const TensorMap +#define TENSORMAPPLACEHOLDER(CVQual)\ +template <typename PlainObjectType, int Options_, template <class> class MakePointer_, size_t N>\ +struct PlaceHolder<CVQual TensorMap<PlainObjectType, Options_, MakePointer_>, N> {\ + static const size_t I = N;\ + typedef CVQual TensorMap<PlainObjectType, Options_, MakePointer_> Type;\ + typedef typename Type::Self Self;\ + typedef typename Type::Base Base;\ + typedef typename Type::Nested Nested;\ + typedef typename Type::StorageKind StorageKind;\ + typedef typename Type::Index Index;\ + typedef typename Type::Scalar Scalar;\ + typedef typename Type::RealScalar RealScalar;\ + typedef typename Type::CoeffReturnType CoeffReturnType;\ }; -/// \brief specialisation of the PlaceHolder node for TensorForcedEvalOp. The -/// TensorForcedEvalOp act as a leaf node for its parent node. -template <typename Expression, size_t N> -struct PlaceHolder<const TensorForcedEvalOp<Expression>, N> { - static constexpr size_t I = N; - - using Type = const TensorForcedEvalOp<Expression>; - - typedef typename Type::Nested Nested; - typedef typename Type::StorageKind StorageKind; - typedef typename Type::Index Index; - - typedef typename Type::Scalar Scalar; - typedef typename Type::Packet Packet; +TENSORMAPPLACEHOLDER(const) +TENSORMAPPLACEHOLDER() +#undef TENSORMAPPLACEHOLDER - typedef typename Type::RealScalar RealScalar; - typedef typename Type::CoeffReturnType CoeffReturnType; - typedef typename Type::PacketReturnType PacketReturnType; +/// \brief specialisation of the PlaceHolder node for TensorForcedEvalOp. The +/// TensorForcedEvalOp acts as a leaf node for its parent node. +#define TENSORFORCEDEVALPLACEHOLDER(CVQual)\ +template <typename Expression, size_t N>\ +struct PlaceHolder<CVQual TensorForcedEvalOp<Expression>, N> {\ + static const size_t I = N;\ + typedef CVQual TensorForcedEvalOp<Expression> Type;\ + typedef typename Type::Nested Nested;\ + typedef typename Type::StorageKind StorageKind;\ + typedef typename Type::Index Index;\ + typedef typename Type::Scalar Scalar;\ + typedef typename Type::Packet Packet;\ + typedef typename Type::RealScalar RealScalar;\ + typedef typename Type::CoeffReturnType CoeffReturnType;\ + typedef typename Type::PacketReturnType PacketReturnType;\ }; -template <typename Expression, size_t N> -struct PlaceHolder<TensorForcedEvalOp<Expression>, N> { - static constexpr size_t I = N; - - using Type = TensorForcedEvalOp<Expression>; - - typedef typename Type::Nested Nested; - typedef typename Type::StorageKind StorageKind; - typedef typename Type::Index Index; +TENSORFORCEDEVALPLACEHOLDER(const) +TENSORFORCEDEVALPLACEHOLDER() +#undef TENSORFORCEDEVALPLACEHOLDER - typedef typename Type::Scalar Scalar; - typedef typename Type::Packet Packet; - - typedef typename Type::RealScalar RealScalar; - typedef typename Type::CoeffReturnType CoeffReturnType; - typedef typename Type::PacketReturnType PacketReturnType; -}; - -/// \brief specialisation of the PlaceHolder node for const TensorMap -template <typename PlainObjectType, int Options_, - template <class> class Makepointer_, size_t N> -struct PlaceHolder<TensorMap<PlainObjectType, Options_, Makepointer_>, N> { - static constexpr size_t I = N; - - using Type = TensorMap<PlainObjectType, Options_, Makepointer_>; - - typedef typename Type::Self Self; - typedef typename Type::Base Base; - typedef typename Type::Nested Nested; - typedef typename Type::StorageKind StorageKind; - typedef typename Type::Index Index; - typedef typename Type::Scalar Scalar; - typedef typename Type::Packet Packet; - typedef typename Type::RealScalar RealScalar; - typedef typename Type::CoeffReturnType CoeffReturnType; - typedef typename Base::PacketReturnType PacketReturnType; -}; - -/// specialisation of the traits struct for PlaceHolder -template <typename PlainObjectType, int Options_, - template <class> class Makepointer_, size_t N> -struct traits< - PlaceHolder<TensorMap<PlainObjectType, Options_, Makepointer_>, N>> - : public traits<PlainObjectType> { +template <typename PlainObjectType, int Options_, template <class> class Makepointer_, size_t N> +struct traits<PlaceHolder<const TensorMap<PlainObjectType, Options_, Makepointer_>, N> >: public traits<PlainObjectType> { typedef traits<PlainObjectType> BaseTraits; typedef typename BaseTraits::Scalar Scalar; typedef typename BaseTraits::StorageKind StorageKind; @@ -128,24 +89,11 @@ struct traits< }; }; -template <typename PlainObjectType, int Options_, - template <class> class Makepointer_, size_t N> -struct traits< - PlaceHolder<const TensorMap<PlainObjectType, Options_, Makepointer_>, N>> - : public traits<PlainObjectType> { - typedef traits<PlainObjectType> BaseTraits; - typedef typename BaseTraits::Scalar Scalar; - typedef typename BaseTraits::StorageKind StorageKind; - typedef typename BaseTraits::Index Index; - static const int NumDimensions = BaseTraits::NumDimensions; - static const int Layout = BaseTraits::Layout; - enum { - Options = Options_, - Flags = BaseTraits::Flags, - }; -}; +template <typename PlainObjectType, int Options_, template <class> class Makepointer_, size_t N> +struct traits<PlaceHolder<TensorMap<PlainObjectType, Options_, Makepointer_>, N> > +: traits<PlaceHolder<const TensorMap<PlainObjectType, Options_, Makepointer_>, N> > {}; -} // end namespoace internal +} // end namespace internal } // end namespoace Eigen -#endif // UNSUPPORTED_EIGEN_CXX11_SRC_TENSORYSYCL_PLACEHOLDER_HPP +#endif // UNSUPPORTED_EIGEN_CXX11_SRC_TENSOR_TENSORSYCL_PLACEHOLDER_HPP |