diff options
author | Eugene Zhulenev <ezhulenev@google.com> | 2019-10-17 11:17:33 -0700 |
---|---|---|
committer | Eugene Zhulenev <ezhulenev@google.com> | 2019-10-17 11:17:33 -0700 |
commit | df0e8b81370f741c734e4f4187d029d6a8cb18f2 (patch) | |
tree | 69347bdb7dd4196768cc9373ed7aac50c8340a0a /unsupported/Eigen/CXX11/src/Tensor/TensorConcatenation.h | |
parent | 0d2a14ce11c85abdfc68ca37fc66e3cace088b24 (diff) |
Propagate block evaluation preference through rvalue tensor expressions
Diffstat (limited to 'unsupported/Eigen/CXX11/src/Tensor/TensorConcatenation.h')
-rw-r--r-- | unsupported/Eigen/CXX11/src/Tensor/TensorConcatenation.h | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/unsupported/Eigen/CXX11/src/Tensor/TensorConcatenation.h b/unsupported/Eigen/CXX11/src/Tensor/TensorConcatenation.h index c24e74ec6..26276abaf 100644 --- a/unsupported/Eigen/CXX11/src/Tensor/TensorConcatenation.h +++ b/unsupported/Eigen/CXX11/src/Tensor/TensorConcatenation.h @@ -122,13 +122,15 @@ struct TensorEvaluator<const TensorConcatenationOp<Axis, LeftArgType, RightArgTy typedef StorageMemory<CoeffReturnType, Device> Storage; typedef typename Storage::Type EvaluatorPointerType; enum { - IsAligned = false, - PacketAccess = TensorEvaluator<LeftArgType, Device>::PacketAccess & TensorEvaluator<RightArgType, Device>::PacketAccess, - BlockAccess = false, - BlockAccessV2 = false, - PreferBlockAccess = false, - Layout = TensorEvaluator<LeftArgType, Device>::Layout, - RawAccess = false + IsAligned = false, + PacketAccess = TensorEvaluator<LeftArgType, Device>::PacketAccess && + TensorEvaluator<RightArgType, Device>::PacketAccess, + BlockAccess = false, + BlockAccessV2 = false, + PreferBlockAccess = TensorEvaluator<LeftArgType, Device>::PreferBlockAccess || + TensorEvaluator<RightArgType, Device>::PreferBlockAccess, + Layout = TensorEvaluator<LeftArgType, Device>::Layout, + RawAccess = false }; //===- Tensor block evaluation strategy (see TensorBlock.h) -------------===// @@ -320,13 +322,15 @@ template<typename Axis, typename LeftArgType, typename RightArgType, typename De typedef TensorConcatenationOp<Axis, LeftArgType, RightArgType> XprType; typedef typename Base::Dimensions Dimensions; enum { - IsAligned = false, - PacketAccess = TensorEvaluator<LeftArgType, Device>::PacketAccess & TensorEvaluator<RightArgType, Device>::PacketAccess, - BlockAccess = false, - BlockAccessV2 = false, - PreferBlockAccess = false, - Layout = TensorEvaluator<LeftArgType, Device>::Layout, - RawAccess = false + IsAligned = false, + PacketAccess = TensorEvaluator<LeftArgType, Device>::PacketAccess && + TensorEvaluator<RightArgType, Device>::PacketAccess, + BlockAccess = false, + BlockAccessV2 = false, + PreferBlockAccess = TensorEvaluator<LeftArgType, Device>::PreferBlockAccess || + TensorEvaluator<RightArgType, Device>::PreferBlockAccess, + Layout = TensorEvaluator<LeftArgType, Device>::Layout, + RawAccess = false }; //===- Tensor block evaluation strategy (see TensorBlock.h) -------------===// |