aboutsummaryrefslogtreecommitdiffhomepage
path: root/unsupported/Eigen/CXX11/src/Tensor/TensorUInt128.h
diff options
context:
space:
mode:
authorGravatar Ville Kallioniemi <ville.kallioniemi@oracle.com>2016-02-01 20:25:02 -0700
committerGravatar Ville Kallioniemi <ville.kallioniemi@oracle.com>2016-02-01 20:25:02 -0700
commitaedea349aabb44d51a4e64cd2c96242f0cea95ba (patch)
tree284440b5e638392bb5342f73e59045a358a1df02 /unsupported/Eigen/CXX11/src/Tensor/TensorUInt128.h
parentf0fdefa96fdbdafe0daaa47a2dd54b9e77cf9716 (diff)
Replace separate low word constructors with a single templated constructor.
Diffstat (limited to 'unsupported/Eigen/CXX11/src/Tensor/TensorUInt128.h')
-rw-r--r--unsupported/Eigen/CXX11/src/Tensor/TensorUInt128.h21
1 files changed, 8 insertions, 13 deletions
diff --git a/unsupported/Eigen/CXX11/src/Tensor/TensorUInt128.h b/unsupported/Eigen/CXX11/src/Tensor/TensorUInt128.h
index 0d34f7ee6..981515f4b 100644
--- a/unsupported/Eigen/CXX11/src/Tensor/TensorUInt128.h
+++ b/unsupported/Eigen/CXX11/src/Tensor/TensorUInt128.h
@@ -33,24 +33,19 @@ struct TensorUInt128
HIGH high;
LOW low;
+ template<typename OTHER_HIGH, typename OTHER_LOW>
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
- TensorUInt128(int32_t x) : high(0), low(x) {
- eigen_assert(x >= 0);
- }
- EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
- TensorUInt128(uint32_t x) : high(0), low(x) { }
- EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
- TensorUInt128(long x) : high(0), low(x) {
- eigen_assert(x >= 0);
+ TensorUInt128(const TensorUInt128<OTHER_HIGH, OTHER_LOW>& other) : high(other.high), low(other.low) {
+ static_assert(sizeof(OTHER_HIGH) <= sizeof(HIGH), "high too wide");
+ static_assert(sizeof(OTHER_LOW) <= sizeof(LOW), "low too wide");
}
+
+ template<typename T>
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
- TensorUInt128(unsigned long x) : high(0), low(x) { }
- EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
- TensorUInt128(int64_t x) : high(0), low(x) {
+ explicit TensorUInt128(const T& x) : high(0), low(x) {
eigen_assert(x >= 0);
}
- EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
- TensorUInt128(uint64_t x) : high(0), low(x) { }
+
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE
TensorUInt128(uint64_t y, uint64_t x) : high(y), low(x) { }