#ifndef EIGEN_CXX11_TENSOR_TENSOR_MORPHING_H
#define EIGEN_CXX11_TENSOR_TENSOR_MORPHING_H
#include "./InternalHeaderCheck.h"
namespace Eigen {
namespace internal {
traits<TensorReshapingOp<NewDimensions, XprType>>;
eval<TensorReshapingOp<NewDimensions, XprType>, Eigen::Dense>;
nested<TensorReshapingOp<NewDimensions, XprType>, 1, typename eval<TensorReshapingOp<NewDimensions, XprType>>::type>;
}
template <typename NewDimensions, typename XprType>
class TensorReshapingOp : public TensorBase<TensorReshapingOp<NewDimensions, XprType>, WriteAccessors> { … };
TensorEvaluator<const TensorReshapingOp<NewDimensions, ArgType>, Device>;
TensorEvaluator<TensorReshapingOp<NewDimensions, ArgType>, Device>;
namespace internal {
traits<TensorSlicingOp<StartIndices, Sizes, XprType>>;
eval<TensorSlicingOp<StartIndices, Sizes, XprType>, Eigen::Dense>;
nested<TensorSlicingOp<StartIndices, Sizes, XprType>, 1, typename eval<TensorSlicingOp<StartIndices, Sizes, XprType>>::type>;
}
template <typename StartIndices, typename Sizes, typename XprType>
class TensorSlicingOp : public TensorBase<TensorSlicingOp<StartIndices, Sizes, XprType>> { … };
namespace internal {
template <typename Index, typename Device, bool BlockAccess>
struct MemcpyTriggerForSlicing { … };
#ifdef EIGEN_USE_GPU
template <typename Index, bool BlockAccess>
struct MemcpyTriggerForSlicing<Index, GpuDevice, BlockAccess> {
EIGEN_DEVICE_FUNC MemcpyTriggerForSlicing(const GpuDevice&) {}
EIGEN_DEVICE_FUNC bool operator()(Index, Index contiguous) const { return contiguous > 4 * 1024 * 1024; }
};
#endif
#ifdef EIGEN_USE_SYCL
template <typename Index, bool BlockAccess>
struct MemcpyTriggerForSlicing<Index, Eigen::SyclDevice, BlockAccess> {
EIGEN_DEVICE_FUNC MemcpyTriggerForSlicing(const SyclDevice&) {}
EIGEN_DEVICE_FUNC bool operator()(Index, Index contiguous) const { return contiguous > 4 * 1024 * 1024; }
};
#endif
}
TensorEvaluator<const TensorSlicingOp<StartIndices, Sizes, ArgType>, Device>;
TensorEvaluator<TensorSlicingOp<StartIndices, Sizes, ArgType>, Device>;
namespace internal {
traits<TensorStridingSlicingOp<StartIndices, StopIndices, Strides, XprType>>;
eval<TensorStridingSlicingOp<StartIndices, StopIndices, Strides, XprType>, Eigen::Dense>;
nested<TensorStridingSlicingOp<StartIndices, StopIndices, Strides, XprType>, 1, typename eval<TensorStridingSlicingOp<StartIndices, StopIndices, Strides, XprType>>::type>;
}
template <typename StartIndices, typename StopIndices, typename Strides, typename XprType>
class TensorStridingSlicingOp
: public TensorBase<TensorStridingSlicingOp<StartIndices, StopIndices, Strides, XprType>> { … };
TensorEvaluator<const TensorStridingSlicingOp<StartIndices, StopIndices, Strides, ArgType>, Device>;
TensorEvaluator<TensorStridingSlicingOp<StartIndices, StopIndices, Strides, ArgType>, Device>;
}
#endif