summaryrefslogtreecommitdiff
path: root/boost/qvm
diff options
context:
space:
mode:
authorDongHun Kwak <dh0128.kwak@samsung.com>2017-09-13 11:08:07 +0900
committerDongHun Kwak <dh0128.kwak@samsung.com>2017-09-13 11:09:00 +0900
commitb5c87084afaef42b2d058f68091be31988a6a874 (patch)
treeadef9a65870a41181687e11d57fdf98e7629de3c /boost/qvm
parent34bd32e225e2a8a94104489b31c42e5801cc1f4a (diff)
downloadboost-b5c87084afaef42b2d058f68091be31988a6a874.tar.gz
boost-b5c87084afaef42b2d058f68091be31988a6a874.tar.bz2
boost-b5c87084afaef42b2d058f68091be31988a6a874.zip
Imported Upstream version 1.64.0upstream/1.64.0
Change-Id: Id9212edd016dd55f21172c427aa7894d1d24148b Signed-off-by: DongHun Kwak <dh0128.kwak@samsung.com>
Diffstat (limited to 'boost/qvm')
-rw-r--r--boost/qvm/all.hpp5
-rw-r--r--boost/qvm/detail/swizzle_traits.hpp73
-rw-r--r--boost/qvm/gen/mat_operations2.hpp174
-rw-r--r--boost/qvm/gen/mat_operations3.hpp187
-rw-r--r--boost/qvm/gen/mat_operations4.hpp204
-rw-r--r--boost/qvm/gen/swizzle2.hpp90
-rw-r--r--boost/qvm/gen/swizzle3.hpp342
-rw-r--r--boost/qvm/gen/swizzle4.hpp1170
-rw-r--r--boost/qvm/gen/vec_operations2.hpp34
-rw-r--r--boost/qvm/gen/vec_operations3.hpp35
-rw-r--r--boost/qvm/gen/vec_operations4.hpp36
-rw-r--r--boost/qvm/mat_index.hpp145
-rw-r--r--boost/qvm/mat_operations.hpp33
-rw-r--r--boost/qvm/mat_traits_defaults.hpp95
-rw-r--r--boost/qvm/quat_traits_defaults.hpp40
-rw-r--r--boost/qvm/scalar_traits.hpp1
-rw-r--r--boost/qvm/vec_index.hpp145
-rw-r--r--boost/qvm/vec_operations.hpp32
-rw-r--r--boost/qvm/vec_traits_defaults.hpp94
19 files changed, 2639 insertions, 296 deletions
diff --git a/boost/qvm/all.hpp b/boost/qvm/all.hpp
index b52a3339ba..73e8b81f27 100644
--- a/boost/qvm/all.hpp
+++ b/boost/qvm/all.hpp
@@ -9,20 +9,21 @@
#include <boost/qvm/error.hpp>
#include <boost/qvm/mat_operations.hpp>
#include <boost/qvm/mat_access.hpp>
-#include <boost/qvm/mat_index.hpp>
+#include <boost/qvm/mat_traits_defaults.hpp>
#include <boost/qvm/mat_traits_array.hpp>
#include <boost/qvm/map.hpp>
#include <boost/qvm/mat.hpp>
#include <boost/qvm/math.hpp>
#include <boost/qvm/quat_operations.hpp>
#include <boost/qvm/quat_access.hpp>
+#include <boost/qvm/quat_traits_defaults.hpp>
#include <boost/qvm/quat_traits.hpp>
#include <boost/qvm/quat.hpp>
#include <boost/qvm/quat_vec_operations.hpp>
#include <boost/qvm/swizzle.hpp>
#include <boost/qvm/vec_operations.hpp>
#include <boost/qvm/vec_access.hpp>
-#include <boost/qvm/vec_index.hpp>
+#include <boost/qvm/vec_traits_defaults.hpp>
#include <boost/qvm/vec_traits_array.hpp>
#include <boost/qvm/vec.hpp>
#include <boost/qvm/vec_mat_operations.hpp>
diff --git a/boost/qvm/detail/swizzle_traits.hpp b/boost/qvm/detail/swizzle_traits.hpp
index 4b304fa68c..8ead2976f5 100644
--- a/boost/qvm/detail/swizzle_traits.hpp
+++ b/boost/qvm/detail/swizzle_traits.hpp
@@ -184,6 +184,28 @@ boost
return r;
}
};
+
+ template <class OriginalType,class SwizzleList>
+ class
+ sws_
+ {
+ sws_( sws_ const & );
+ sws_ & operator=( sws_ const & );
+ ~sws_();
+
+ BOOST_QVM_STATIC_ASSERT((validate_swizzle_list<SwizzleList,1>::value));
+
+ public:
+
+ template <class R>
+ BOOST_QVM_INLINE_TRIVIAL
+ operator R() const
+ {
+ R r;
+ assign(r,*this);
+ return r;
+ }
+ };
}
template <class OriginalVector,class SwizzleList>
@@ -246,6 +268,43 @@ boost
}
};
+ template <class OriginalScalar,class SwizzleList>
+ struct
+ vec_traits<qvm_detail::sws_<OriginalScalar,SwizzleList> >
+ {
+ typedef qvm_detail::sws_<OriginalScalar,SwizzleList> this_vector;
+ typedef OriginalScalar scalar_type;
+ static int const dim=qvm_detail::swizzle_list_length<SwizzleList>::value;
+
+ template <int I>
+ static
+ BOOST_QVM_INLINE_CRITICAL
+ scalar_type
+ read_element( this_vector const & x )
+ {
+ BOOST_QVM_STATIC_ASSERT(I>=0);
+ BOOST_QVM_STATIC_ASSERT(I<dim);
+ int const idx=qvm_detail::swizzle<SwizzleList,I>::value;
+ BOOST_QVM_STATIC_ASSERT(idx<1);
+ return idx==0?
+ reinterpret_cast<OriginalScalar const &>(x) :
+ qvm_detail::const_value<this_vector,idx>::value();
+ }
+
+ template <int I>
+ static
+ BOOST_QVM_INLINE_CRITICAL
+ scalar_type &
+ write_element( this_vector & x )
+ {
+ BOOST_QVM_STATIC_ASSERT(I>=0);
+ BOOST_QVM_STATIC_ASSERT(I<dim);
+ int const idx=qvm_detail::swizzle<SwizzleList,I>::value;
+ BOOST_QVM_STATIC_ASSERT(idx==0);
+ return reinterpret_cast<OriginalScalar &>(x);
+ }
+ };
+
template <class OriginalVector,class SwizzleList,int D>
struct
deduce_vec<qvm_detail::sw_<OriginalVector,SwizzleList>,D>
@@ -259,6 +318,20 @@ boost
{
typedef vec<typename vec_traits<OriginalVector>::scalar_type,D> type;
};
+
+ template <class Scalar,class SwizzleList,int D>
+ struct
+ deduce_vec<qvm_detail::sws_<Scalar,SwizzleList>,D>
+ {
+ typedef vec<Scalar,D> type;
+ };
+
+ template <class Scalar,class SwizzleList,int D>
+ struct
+ deduce_vec2<qvm_detail::sws_<Scalar,SwizzleList>,qvm_detail::sws_<Scalar,SwizzleList>,D>
+ {
+ typedef vec<Scalar,D> type;
+ };
}
}
diff --git a/boost/qvm/gen/mat_operations2.hpp b/boost/qvm/gen/mat_operations2.hpp
index 105ebde2ea..6fbda7a800 100644
--- a/boost/qvm/gen/mat_operations2.hpp
+++ b/boost/qvm/gen/mat_operations2.hpp
@@ -490,6 +490,42 @@ boost
template <class A,class B>
BOOST_QVM_INLINE_OPERATIONS
typename lazy_enable_if_c<
+ is_scalar<A>::value && mat_traits<B>::rows==2 && mat_traits<B>::cols==2,
+ deduce_mat<B> >::type
+ operator*( A a, B const & b )
+ {
+ typedef typename deduce_mat<B>::type R;
+ R r;
+ mat_traits<R>::template write_element<0,0>(r)=a*mat_traits<B>::template read_element<0,0>(b);
+ mat_traits<R>::template write_element<0,1>(r)=a*mat_traits<B>::template read_element<0,1>(b);
+ mat_traits<R>::template write_element<1,0>(r)=a*mat_traits<B>::template read_element<1,0>(b);
+ mat_traits<R>::template write_element<1,1>(r)=a*mat_traits<B>::template read_element<1,1>(b);
+ return r;
+ }
+
+ namespace
+ sfinae
+ {
+ using ::boost::qvm::operator*;
+ }
+
+ namespace
+ qvm_detail
+ {
+ template <int R,int C>
+ struct mul_sm_defined;
+
+ template <>
+ struct
+ mul_sm_defined<2,2>
+ {
+ static bool const value=true;
+ };
+ }
+
+ template <class A,class B>
+ BOOST_QVM_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
mat_traits<A>::rows==2 && mat_traits<A>::cols==1 && is_scalar<B>::value,
deduce_mat<A> >::type
operator*( A const & a, B b )
@@ -524,6 +560,40 @@ boost
template <class A,class B>
BOOST_QVM_INLINE_OPERATIONS
typename lazy_enable_if_c<
+ is_scalar<A>::value && mat_traits<B>::rows==2 && mat_traits<B>::cols==1,
+ deduce_mat<B> >::type
+ operator*( A a, B const & b )
+ {
+ typedef typename deduce_mat<B>::type R;
+ R r;
+ mat_traits<R>::template write_element<0,0>(r)=a*mat_traits<B>::template read_element<0,0>(b);
+ mat_traits<R>::template write_element<1,0>(r)=a*mat_traits<B>::template read_element<1,0>(b);
+ return r;
+ }
+
+ namespace
+ sfinae
+ {
+ using ::boost::qvm::operator*;
+ }
+
+ namespace
+ qvm_detail
+ {
+ template <int R,int C>
+ struct mul_sm_defined;
+
+ template <>
+ struct
+ mul_sm_defined<2,1>
+ {
+ static bool const value=true;
+ };
+ }
+
+ template <class A,class B>
+ BOOST_QVM_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
mat_traits<A>::rows==1 && mat_traits<A>::cols==2 && is_scalar<B>::value,
deduce_mat<A> >::type
operator*( A const & a, B b )
@@ -557,6 +627,40 @@ boost
template <class A,class B>
BOOST_QVM_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ is_scalar<A>::value && mat_traits<B>::rows==1 && mat_traits<B>::cols==2,
+ deduce_mat<B> >::type
+ operator*( A a, B const & b )
+ {
+ typedef typename deduce_mat<B>::type R;
+ R r;
+ mat_traits<R>::template write_element<0,0>(r)=a*mat_traits<B>::template read_element<0,0>(b);
+ mat_traits<R>::template write_element<0,1>(r)=a*mat_traits<B>::template read_element<0,1>(b);
+ return r;
+ }
+
+ namespace
+ sfinae
+ {
+ using ::boost::qvm::operator*;
+ }
+
+ namespace
+ qvm_detail
+ {
+ template <int R,int C>
+ struct mul_sm_defined;
+
+ template <>
+ struct
+ mul_sm_defined<1,2>
+ {
+ static bool const value=true;
+ };
+ }
+
+ template <class A,class B>
+ BOOST_QVM_INLINE_OPERATIONS
typename enable_if_c<
mat_traits<A>::rows==2 && mat_traits<A>::cols==2 && is_scalar<B>::value,
A &>::type
@@ -692,6 +796,42 @@ boost
template <class A,class B>
BOOST_QVM_INLINE_OPERATIONS
typename lazy_enable_if_c<
+ is_scalar<A>::value && mat_traits<B>::rows==2 && mat_traits<B>::cols==2,
+ deduce_mat<B> >::type
+ operator/( A a, B const & b )
+ {
+ typedef typename deduce_mat<B>::type R;
+ R r;
+ mat_traits<R>::template write_element<0,0>(r)=a/mat_traits<B>::template read_element<0,0>(b);
+ mat_traits<R>::template write_element<0,1>(r)=a/mat_traits<B>::template read_element<0,1>(b);
+ mat_traits<R>::template write_element<1,0>(r)=a/mat_traits<B>::template read_element<1,0>(b);
+ mat_traits<R>::template write_element<1,1>(r)=a/mat_traits<B>::template read_element<1,1>(b);
+ return r;
+ }
+
+ namespace
+ sfinae
+ {
+ using ::boost::qvm::operator/;
+ }
+
+ namespace
+ qvm_detail
+ {
+ template <int R,int C>
+ struct div_sm_defined;
+
+ template <>
+ struct
+ div_sm_defined<2,2>
+ {
+ static bool const value=true;
+ };
+ }
+
+ template <class A,class B>
+ BOOST_QVM_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
mat_traits<A>::rows==2 && mat_traits<A>::cols==1 && is_scalar<B>::value,
deduce_mat<A> >::type
operator/( A const & a, B b )
@@ -726,6 +866,40 @@ boost
template <class A,class B>
BOOST_QVM_INLINE_OPERATIONS
typename lazy_enable_if_c<
+ is_scalar<A>::value && mat_traits<B>::rows==2 && mat_traits<B>::cols==1,
+ deduce_mat<B> >::type
+ operator/( A a, B const & b )
+ {
+ typedef typename deduce_mat<B>::type R;
+ R r;
+ mat_traits<R>::template write_element<0,0>(r)=a/mat_traits<B>::template read_element<0,0>(b);
+ mat_traits<R>::template write_element<1,0>(r)=a/mat_traits<B>::template read_element<1,0>(b);
+ return r;
+ }
+
+ namespace
+ sfinae
+ {
+ using ::boost::qvm::operator/;
+ }
+
+ namespace
+ qvm_detail
+ {
+ template <int R,int C>
+ struct div_sm_defined;
+
+ template <>
+ struct
+ div_sm_defined<2,1>
+ {
+ static bool const value=true;
+ };
+ }
+
+ template <class A,class B>
+ BOOST_QVM_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
mat_traits<A>::rows==1 && mat_traits<A>::cols==2 && is_scalar<B>::value,
deduce_mat<A> >::type
operator/( A const & a, B b )
diff --git a/boost/qvm/gen/mat_operations3.hpp b/boost/qvm/gen/mat_operations3.hpp
index 1458cf64d9..5b0e74b458 100644
--- a/boost/qvm/gen/mat_operations3.hpp
+++ b/boost/qvm/gen/mat_operations3.hpp
@@ -525,6 +525,47 @@ boost
template <class A,class B>
BOOST_QVM_INLINE_OPERATIONS
typename lazy_enable_if_c<
+ is_scalar<A>::value && mat_traits<B>::rows==3 && mat_traits<B>::cols==3,
+ deduce_mat<B> >::type
+ operator*( A a, B const & b )
+ {
+ typedef typename deduce_mat<B>::type R;
+ R r;
+ mat_traits<R>::template write_element<0,0>(r)=a*mat_traits<B>::template read_element<0,0>(b);
+ mat_traits<R>::template write_element<0,1>(r)=a*mat_traits<B>::template read_element<0,1>(b);
+ mat_traits<R>::template write_element<0,2>(r)=a*mat_traits<B>::template read_element<0,2>(b);
+ mat_traits<R>::template write_element<1,0>(r)=a*mat_traits<B>::template read_element<1,0>(b);
+ mat_traits<R>::template write_element<1,1>(r)=a*mat_traits<B>::template read_element<1,1>(b);
+ mat_traits<R>::template write_element<1,2>(r)=a*mat_traits<B>::template read_element<1,2>(b);
+ mat_traits<R>::template write_element<2,0>(r)=a*mat_traits<B>::template read_element<2,0>(b);
+ mat_traits<R>::template write_element<2,1>(r)=a*mat_traits<B>::template read_element<2,1>(b);
+ mat_traits<R>::template write_element<2,2>(r)=a*mat_traits<B>::template read_element<2,2>(b);
+ return r;
+ }
+
+ namespace
+ sfinae
+ {
+ using ::boost::qvm::operator*;
+ }
+
+ namespace
+ qvm_detail
+ {
+ template <int R,int C>
+ struct mul_sm_defined;
+
+ template <>
+ struct
+ mul_sm_defined<3,3>
+ {
+ static bool const value=true;
+ };
+ }
+
+ template <class A,class B>
+ BOOST_QVM_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
mat_traits<A>::rows==3 && mat_traits<A>::cols==1 && is_scalar<B>::value,
deduce_mat<A> >::type
operator*( A const & a, B b )
@@ -560,6 +601,41 @@ boost
template <class A,class B>
BOOST_QVM_INLINE_OPERATIONS
typename lazy_enable_if_c<
+ is_scalar<A>::value && mat_traits<B>::rows==3 && mat_traits<B>::cols==1,
+ deduce_mat<B> >::type
+ operator*( A a, B const & b )
+ {
+ typedef typename deduce_mat<B>::type R;
+ R r;
+ mat_traits<R>::template write_element<0,0>(r)=a*mat_traits<B>::template read_element<0,0>(b);
+ mat_traits<R>::template write_element<1,0>(r)=a*mat_traits<B>::template read_element<1,0>(b);
+ mat_traits<R>::template write_element<2,0>(r)=a*mat_traits<B>::template read_element<2,0>(b);
+ return r;
+ }
+
+ namespace
+ sfinae
+ {
+ using ::boost::qvm::operator*;
+ }
+
+ namespace
+ qvm_detail
+ {
+ template <int R,int C>
+ struct mul_sm_defined;
+
+ template <>
+ struct
+ mul_sm_defined<3,1>
+ {
+ static bool const value=true;
+ };
+ }
+
+ template <class A,class B>
+ BOOST_QVM_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
mat_traits<A>::rows==1 && mat_traits<A>::cols==3 && is_scalar<B>::value,
deduce_mat<A> >::type
operator*( A const & a, B b )
@@ -594,6 +670,41 @@ boost
template <class A,class B>
BOOST_QVM_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ is_scalar<A>::value && mat_traits<B>::rows==1 && mat_traits<B>::cols==3,
+ deduce_mat<B> >::type
+ operator*( A a, B const & b )
+ {
+ typedef typename deduce_mat<B>::type R;
+ R r;
+ mat_traits<R>::template write_element<0,0>(r)=a*mat_traits<B>::template read_element<0,0>(b);
+ mat_traits<R>::template write_element<0,1>(r)=a*mat_traits<B>::template read_element<0,1>(b);
+ mat_traits<R>::template write_element<0,2>(r)=a*mat_traits<B>::template read_element<0,2>(b);
+ return r;
+ }
+
+ namespace
+ sfinae
+ {
+ using ::boost::qvm::operator*;
+ }
+
+ namespace
+ qvm_detail
+ {
+ template <int R,int C>
+ struct mul_sm_defined;
+
+ template <>
+ struct
+ mul_sm_defined<1,3>
+ {
+ static bool const value=true;
+ };
+ }
+
+ template <class A,class B>
+ BOOST_QVM_INLINE_OPERATIONS
typename enable_if_c<
mat_traits<A>::rows==3 && mat_traits<A>::cols==3 && is_scalar<B>::value,
A &>::type
@@ -741,6 +852,47 @@ boost
template <class A,class B>
BOOST_QVM_INLINE_OPERATIONS
typename lazy_enable_if_c<
+ is_scalar<A>::value && mat_traits<B>::rows==3 && mat_traits<B>::cols==3,
+ deduce_mat<B> >::type
+ operator/( A a, B const & b )
+ {
+ typedef typename deduce_mat<B>::type R;
+ R r;
+ mat_traits<R>::template write_element<0,0>(r)=a/mat_traits<B>::template read_element<0,0>(b);
+ mat_traits<R>::template write_element<0,1>(r)=a/mat_traits<B>::template read_element<0,1>(b);
+ mat_traits<R>::template write_element<0,2>(r)=a/mat_traits<B>::template read_element<0,2>(b);
+ mat_traits<R>::template write_element<1,0>(r)=a/mat_traits<B>::template read_element<1,0>(b);
+ mat_traits<R>::template write_element<1,1>(r)=a/mat_traits<B>::template read_element<1,1>(b);
+ mat_traits<R>::template write_element<1,2>(r)=a/mat_traits<B>::template read_element<1,2>(b);
+ mat_traits<R>::template write_element<2,0>(r)=a/mat_traits<B>::template read_element<2,0>(b);
+ mat_traits<R>::template write_element<2,1>(r)=a/mat_traits<B>::template read_element<2,1>(b);
+ mat_traits<R>::template write_element<2,2>(r)=a/mat_traits<B>::template read_element<2,2>(b);
+ return r;
+ }
+
+ namespace
+ sfinae
+ {
+ using ::boost::qvm::operator/;
+ }
+
+ namespace
+ qvm_detail
+ {
+ template <int R,int C>
+ struct div_sm_defined;
+
+ template <>
+ struct
+ div_sm_defined<3,3>
+ {
+ static bool const value=true;
+ };
+ }
+
+ template <class A,class B>
+ BOOST_QVM_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
mat_traits<A>::rows==3 && mat_traits<A>::cols==1 && is_scalar<B>::value,
deduce_mat<A> >::type
operator/( A const & a, B b )
@@ -776,6 +928,41 @@ boost
template <class A,class B>
BOOST_QVM_INLINE_OPERATIONS
typename lazy_enable_if_c<
+ is_scalar<A>::value && mat_traits<B>::rows==3 && mat_traits<B>::cols==1,
+ deduce_mat<B> >::type
+ operator/( A a, B const & b )
+ {
+ typedef typename deduce_mat<B>::type R;
+ R r;
+ mat_traits<R>::template write_element<0,0>(r)=a/mat_traits<B>::template read_element<0,0>(b);
+ mat_traits<R>::template write_element<1,0>(r)=a/mat_traits<B>::template read_element<1,0>(b);
+ mat_traits<R>::template write_element<2,0>(r)=a/mat_traits<B>::template read_element<2,0>(b);
+ return r;
+ }
+
+ namespace
+ sfinae
+ {
+ using ::boost::qvm::operator/;
+ }
+
+ namespace
+ qvm_detail
+ {
+ template <int R,int C>
+ struct div_sm_defined;
+
+ template <>
+ struct
+ div_sm_defined<3,1>
+ {
+ static bool const value=true;
+ };
+ }
+
+ template <class A,class B>
+ BOOST_QVM_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
mat_traits<A>::rows==1 && mat_traits<A>::cols==3 && is_scalar<B>::value,
deduce_mat<A> >::type
operator/( A const & a, B b )
diff --git a/boost/qvm/gen/mat_operations4.hpp b/boost/qvm/gen/mat_operations4.hpp
index 0dab7fba9f..ad115f916d 100644
--- a/boost/qvm/gen/mat_operations4.hpp
+++ b/boost/qvm/gen/mat_operations4.hpp
@@ -568,6 +568,54 @@ boost
template <class A,class B>
BOOST_QVM_INLINE_OPERATIONS
typename lazy_enable_if_c<
+ is_scalar<A>::value && mat_traits<B>::rows==4 && mat_traits<B>::cols==4,
+ deduce_mat<B> >::type
+ operator*( A a, B const & b )
+ {
+ typedef typename deduce_mat<B>::type R;
+ R r;
+ mat_traits<R>::template write_element<0,0>(r)=a*mat_traits<B>::template read_element<0,0>(b);
+ mat_traits<R>::template write_element<0,1>(r)=a*mat_traits<B>::template read_element<0,1>(b);
+ mat_traits<R>::template write_element<0,2>(r)=a*mat_traits<B>::template read_element<0,2>(b);
+ mat_traits<R>::template write_element<0,3>(r)=a*mat_traits<B>::template read_element<0,3>(b);
+ mat_traits<R>::template write_element<1,0>(r)=a*mat_traits<B>::template read_element<1,0>(b);
+ mat_traits<R>::template write_element<1,1>(r)=a*mat_traits<B>::template read_element<1,1>(b);
+ mat_traits<R>::template write_element<1,2>(r)=a*mat_traits<B>::template read_element<1,2>(b);
+ mat_traits<R>::template write_element<1,3>(r)=a*mat_traits<B>::template read_element<1,3>(b);
+ mat_traits<R>::template write_element<2,0>(r)=a*mat_traits<B>::template read_element<2,0>(b);
+ mat_traits<R>::template write_element<2,1>(r)=a*mat_traits<B>::template read_element<2,1>(b);
+ mat_traits<R>::template write_element<2,2>(r)=a*mat_traits<B>::template read_element<2,2>(b);
+ mat_traits<R>::template write_element<2,3>(r)=a*mat_traits<B>::template read_element<2,3>(b);
+ mat_traits<R>::template write_element<3,0>(r)=a*mat_traits<B>::template read_element<3,0>(b);
+ mat_traits<R>::template write_element<3,1>(r)=a*mat_traits<B>::template read_element<3,1>(b);
+ mat_traits<R>::template write_element<3,2>(r)=a*mat_traits<B>::template read_element<3,2>(b);
+ mat_traits<R>::template write_element<3,3>(r)=a*mat_traits<B>::template read_element<3,3>(b);
+ return r;
+ }
+
+ namespace
+ sfinae
+ {
+ using ::boost::qvm::operator*;
+ }
+
+ namespace
+ qvm_detail
+ {
+ template <int R,int C>
+ struct mul_sm_defined;
+
+ template <>
+ struct
+ mul_sm_defined<4,4>
+ {
+ static bool const value=true;
+ };
+ }
+
+ template <class A,class B>
+ BOOST_QVM_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
mat_traits<A>::rows==4 && mat_traits<A>::cols==1 && is_scalar<B>::value,
deduce_mat<A> >::type
operator*( A const & a, B b )
@@ -604,6 +652,42 @@ boost
template <class A,class B>
BOOST_QVM_INLINE_OPERATIONS
typename lazy_enable_if_c<
+ is_scalar<A>::value && mat_traits<B>::rows==4 && mat_traits<B>::cols==1,
+ deduce_mat<B> >::type
+ operator*( A a, B const & b )
+ {
+ typedef typename deduce_mat<B>::type R;
+ R r;
+ mat_traits<R>::template write_element<0,0>(r)=a*mat_traits<B>::template read_element<0,0>(b);
+ mat_traits<R>::template write_element<1,0>(r)=a*mat_traits<B>::template read_element<1,0>(b);
+ mat_traits<R>::template write_element<2,0>(r)=a*mat_traits<B>::template read_element<2,0>(b);
+ mat_traits<R>::template write_element<3,0>(r)=a*mat_traits<B>::template read_element<3,0>(b);
+ return r;
+ }
+
+ namespace
+ sfinae
+ {
+ using ::boost::qvm::operator*;
+ }
+
+ namespace
+ qvm_detail
+ {
+ template <int R,int C>
+ struct mul_sm_defined;
+
+ template <>
+ struct
+ mul_sm_defined<4,1>
+ {
+ static bool const value=true;
+ };
+ }
+
+ template <class A,class B>
+ BOOST_QVM_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
mat_traits<A>::rows==1 && mat_traits<A>::cols==4 && is_scalar<B>::value,
deduce_mat<A> >::type
operator*( A const & a, B b )
@@ -639,6 +723,42 @@ boost
template <class A,class B>
BOOST_QVM_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ is_scalar<A>::value && mat_traits<B>::rows==1 && mat_traits<B>::cols==4,
+ deduce_mat<B> >::type
+ operator*( A a, B const & b )
+ {
+ typedef typename deduce_mat<B>::type R;
+ R r;
+ mat_traits<R>::template write_element<0,0>(r)=a*mat_traits<B>::template read_element<0,0>(b);
+ mat_traits<R>::template write_element<0,1>(r)=a*mat_traits<B>::template read_element<0,1>(b);
+ mat_traits<R>::template write_element<0,2>(r)=a*mat_traits<B>::template read_element<0,2>(b);
+ mat_traits<R>::template write_element<0,3>(r)=a*mat_traits<B>::template read_element<0,3>(b);
+ return r;
+ }
+
+ namespace
+ sfinae
+ {
+ using ::boost::qvm::operator*;
+ }
+
+ namespace
+ qvm_detail
+ {
+ template <int R,int C>
+ struct mul_sm_defined;
+
+ template <>
+ struct
+ mul_sm_defined<1,4>
+ {
+ static bool const value=true;
+ };
+ }
+
+ template <class A,class B>
+ BOOST_QVM_INLINE_OPERATIONS
typename enable_if_c<
mat_traits<A>::rows==4 && mat_traits<A>::cols==4 && is_scalar<B>::value,
A &>::type
@@ -802,6 +922,54 @@ boost
template <class A,class B>
BOOST_QVM_INLINE_OPERATIONS
typename lazy_enable_if_c<
+ is_scalar<A>::value && mat_traits<B>::rows==4 && mat_traits<B>::cols==4,
+ deduce_mat<B> >::type
+ operator/( A a, B const & b )
+ {
+ typedef typename deduce_mat<B>::type R;
+ R r;
+ mat_traits<R>::template write_element<0,0>(r)=a/mat_traits<B>::template read_element<0,0>(b);
+ mat_traits<R>::template write_element<0,1>(r)=a/mat_traits<B>::template read_element<0,1>(b);
+ mat_traits<R>::template write_element<0,2>(r)=a/mat_traits<B>::template read_element<0,2>(b);
+ mat_traits<R>::template write_element<0,3>(r)=a/mat_traits<B>::template read_element<0,3>(b);
+ mat_traits<R>::template write_element<1,0>(r)=a/mat_traits<B>::template read_element<1,0>(b);
+ mat_traits<R>::template write_element<1,1>(r)=a/mat_traits<B>::template read_element<1,1>(b);
+ mat_traits<R>::template write_element<1,2>(r)=a/mat_traits<B>::template read_element<1,2>(b);
+ mat_traits<R>::template write_element<1,3>(r)=a/mat_traits<B>::template read_element<1,3>(b);
+ mat_traits<R>::template write_element<2,0>(r)=a/mat_traits<B>::template read_element<2,0>(b);
+ mat_traits<R>::template write_element<2,1>(r)=a/mat_traits<B>::template read_element<2,1>(b);
+ mat_traits<R>::template write_element<2,2>(r)=a/mat_traits<B>::template read_element<2,2>(b);
+ mat_traits<R>::template write_element<2,3>(r)=a/mat_traits<B>::template read_element<2,3>(b);
+ mat_traits<R>::template write_element<3,0>(r)=a/mat_traits<B>::template read_element<3,0>(b);
+ mat_traits<R>::template write_element<3,1>(r)=a/mat_traits<B>::template read_element<3,1>(b);
+ mat_traits<R>::template write_element<3,2>(r)=a/mat_traits<B>::template read_element<3,2>(b);
+ mat_traits<R>::template write_element<3,3>(r)=a/mat_traits<B>::template read_element<3,3>(b);
+ return r;
+ }
+
+ namespace
+ sfinae
+ {
+ using ::boost::qvm::operator/;
+ }
+
+ namespace
+ qvm_detail
+ {
+ template <int R,int C>
+ struct div_sm_defined;
+
+ template <>
+ struct
+ div_sm_defined<4,4>
+ {
+ static bool const value=true;
+ };
+ }
+
+ template <class A,class B>
+ BOOST_QVM_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
mat_traits<A>::rows==4 && mat_traits<A>::cols==1 && is_scalar<B>::value,
deduce_mat<A> >::type
operator/( A const & a, B b )
@@ -838,6 +1006,42 @@ boost
template <class A,class B>
BOOST_QVM_INLINE_OPERATIONS
typename lazy_enable_if_c<
+ is_scalar<A>::value && mat_traits<B>::rows==4 && mat_traits<B>::cols==1,
+ deduce_mat<B> >::type
+ operator/( A a, B const & b )
+ {
+ typedef typename deduce_mat<B>::type R;
+ R r;
+ mat_traits<R>::template write_element<0,0>(r)=a/mat_traits<B>::template read_element<0,0>(b);
+ mat_traits<R>::template write_element<1,0>(r)=a/mat_traits<B>::template read_element<1,0>(b);
+ mat_traits<R>::template write_element<2,0>(r)=a/mat_traits<B>::template read_element<2,0>(b);
+ mat_traits<R>::template write_element<3,0>(r)=a/mat_traits<B>::template read_element<3,0>(b);
+ return r;
+ }
+
+ namespace
+ sfinae
+ {
+ using ::boost::qvm::operator/;
+ }
+
+ namespace
+ qvm_detail
+ {
+ template <int R,int C>
+ struct div_sm_defined;
+
+ template <>
+ struct
+ div_sm_defined<4,1>
+ {
+ static bool const value=true;
+ };
+ }
+
+ template <class A,class B>
+ BOOST_QVM_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
mat_traits<A>::rows==1 && mat_traits<A>::cols==4 && is_scalar<B>::value,
deduce_mat<A> >::type
operator/( A const & a, B b )
diff --git a/boost/qvm/gen/swizzle2.hpp b/boost/qvm/gen/swizzle2.hpp
index fd953d3812..b894bb6986 100644
--- a/boost/qvm/gen/swizzle2.hpp
+++ b/boost/qvm/gen/swizzle2.hpp
@@ -93,6 +93,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > const &>::type
+ X1( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -102,6 +111,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > &>::type
+ X1( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > &>(a);
+ }
BOOST_QVM_INLINE_TRIVIAL
qvm_detail::sw01_<qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > const &
_10()
@@ -177,6 +195,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > const &>::type
+ X0( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -186,6 +213,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > &>::type
+ X0( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -519,6 +555,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > const &>::type
+ _1X( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -528,6 +573,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > &>::type
+ _1X( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -537,6 +591,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > const &>::type
+ _0X( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -546,6 +609,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > &>::type
+ _0X( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -609,6 +681,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > const &>::type
+ XX( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -618,6 +699,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > &>::type
+ XX( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > &>(a);
+ }
}
}
diff --git a/boost/qvm/gen/swizzle3.hpp b/boost/qvm/gen/swizzle3.hpp
index 30a24c3a35..f1f182d2bd 100644
--- a/boost/qvm/gen/swizzle3.hpp
+++ b/boost/qvm/gen/swizzle3.hpp
@@ -93,6 +93,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > const &>::type
+ X11( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -102,6 +111,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > &>::type
+ X11( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > &>(a);
+ }
BOOST_QVM_INLINE_TRIVIAL
qvm_detail::sw01_<qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > const &
_101()
@@ -177,6 +195,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > const &>::type
+ X01( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -186,6 +213,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > &>::type
+ X01( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -519,6 +555,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > const &>::type
+ _1X1( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -528,6 +573,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > &>::type
+ _1X1( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -537,6 +591,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > const &>::type
+ _0X1( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -546,6 +609,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > &>::type
+ _0X1( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -609,6 +681,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > const &>::type
+ XX1( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -618,6 +699,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > &>::type
+ XX1( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > &>(a);
+ }
BOOST_QVM_INLINE_TRIVIAL
qvm_detail::sw01_<qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > const &
_110()
@@ -693,6 +783,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > const &>::type
+ X10( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -702,6 +801,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > &>::type
+ X10( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > &>(a);
+ }
BOOST_QVM_INLINE_TRIVIAL
qvm_detail::sw01_<qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > const &
_100()
@@ -777,6 +885,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > const &>::type
+ X00( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -786,6 +903,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > &>::type
+ X00( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -1119,6 +1245,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > const &>::type
+ _1X0( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -1128,6 +1263,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > &>::type
+ _1X0( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -1137,6 +1281,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > const &>::type
+ _0X0( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -1146,6 +1299,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > &>::type
+ _0X0( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -1209,6 +1371,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > const &>::type
+ XX0( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -1218,6 +1389,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > &>::type
+ XX0( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -3171,6 +3351,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > const &>::type
+ _11X( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -3180,6 +3369,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > &>::type
+ _11X( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -3189,6 +3387,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > const &>::type
+ _01X( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -3198,6 +3405,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > &>::type
+ _01X( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -3261,6 +3477,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > const &>::type
+ X1X( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -3270,6 +3495,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > &>::type
+ X1X( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -3279,6 +3513,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > const &>::type
+ _10X( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -3288,6 +3531,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > &>::type
+ _10X( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -3297,6 +3549,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > const &>::type
+ _00X( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -3306,6 +3567,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > &>::type
+ _00X( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -3369,6 +3639,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > const &>::type
+ X0X( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -3378,6 +3657,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > &>::type
+ X0X( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -3711,6 +3999,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > const &>::type
+ _1XX( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -3720,6 +4017,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > &>::type
+ _1XX( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -3729,6 +4035,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > const &>::type
+ _0XX( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -3738,6 +4053,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > &>::type
+ _0XX( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -3801,6 +4125,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > const &>::type
+ XXX( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -3810,6 +4143,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > &>::type
+ XXX( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > &>(a);
+ }
}
}
diff --git a/boost/qvm/gen/swizzle4.hpp b/boost/qvm/gen/swizzle4.hpp
index db10e2a3b6..91ba215c8b 100644
--- a/boost/qvm/gen/swizzle4.hpp
+++ b/boost/qvm/gen/swizzle4.hpp
@@ -93,6 +93,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > > const &>::type
+ X111( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -102,6 +111,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > > &>::type
+ X111( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > > &>(a);
+ }
BOOST_QVM_INLINE_TRIVIAL
qvm_detail::sw01_<qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > > const &
_1011()
@@ -177,6 +195,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > > const &>::type
+ X011( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -186,6 +213,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > > &>::type
+ X011( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -519,6 +555,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > > const &>::type
+ _1X11( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -528,6 +573,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > > &>::type
+ _1X11( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -537,6 +591,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > > const &>::type
+ _0X11( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -546,6 +609,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > > &>::type
+ _0X11( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -609,6 +681,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > > const &>::type
+ XX11( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -618,6 +699,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > > &>::type
+ XX11( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > > &>(a);
+ }
BOOST_QVM_INLINE_TRIVIAL
qvm_detail::sw01_<qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > > const &
_1101()
@@ -693,6 +783,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > > const &>::type
+ X101( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -702,6 +801,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > > &>::type
+ X101( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > > &>(a);
+ }
BOOST_QVM_INLINE_TRIVIAL
qvm_detail::sw01_<qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > > const &
_1001()
@@ -777,6 +885,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > > const &>::type
+ X001( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -786,6 +903,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > > &>::type
+ X001( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -1119,6 +1245,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > > const &>::type
+ _1X01( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -1128,6 +1263,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > > &>::type
+ _1X01( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -1137,6 +1281,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > > const &>::type
+ _0X01( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -1146,6 +1299,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > > &>::type
+ _0X01( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -1209,6 +1371,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > > const &>::type
+ XX01( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -1218,6 +1389,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > > &>::type
+ XX01( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -3171,6 +3351,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > const &>::type
+ _11X1( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -3180,6 +3369,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > &>::type
+ _11X1( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -3189,6 +3387,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > const &>::type
+ _01X1( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -3198,6 +3405,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > &>::type
+ _01X1( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -3261,6 +3477,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > const &>::type
+ X1X1( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -3270,6 +3495,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > &>::type
+ X1X1( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -3279,6 +3513,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > const &>::type
+ _10X1( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -3288,6 +3531,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > &>::type
+ _10X1( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -3297,6 +3549,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > const &>::type
+ _00X1( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -3306,6 +3567,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > &>::type
+ _00X1( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -3369,6 +3639,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > const &>::type
+ X0X1( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -3378,6 +3657,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > &>::type
+ X0X1( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -3711,6 +3999,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > const &>::type
+ _1XX1( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -3720,6 +4017,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > &>::type
+ _1XX1( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -3729,6 +4035,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > const &>::type
+ _0XX1( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -3738,6 +4053,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > &>::type
+ _0XX1( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -3801,6 +4125,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > const &>::type
+ XXX1( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -3810,6 +4143,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > &>::type
+ XXX1( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > > &>(a);
+ }
BOOST_QVM_INLINE_TRIVIAL
qvm_detail::sw01_<qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > > const &
_1110()
@@ -3885,6 +4227,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > > const &>::type
+ X110( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -3894,6 +4245,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > > &>::type
+ X110( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > > &>(a);
+ }
BOOST_QVM_INLINE_TRIVIAL
qvm_detail::sw01_<qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > > const &
_1010()
@@ -3969,6 +4329,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > > const &>::type
+ X010( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -3978,6 +4347,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > > &>::type
+ X010( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -4311,6 +4689,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > > const &>::type
+ _1X10( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -4320,6 +4707,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > > &>::type
+ _1X10( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -4329,6 +4725,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > > const &>::type
+ _0X10( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -4338,6 +4743,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > > &>::type
+ _0X10( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -4401,6 +4815,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > > const &>::type
+ XX10( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -4410,6 +4833,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > > &>::type
+ XX10( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > > &>(a);
+ }
BOOST_QVM_INLINE_TRIVIAL
qvm_detail::sw01_<qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > > const &
_1100()
@@ -4485,6 +4917,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > > const &>::type
+ X100( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -4494,6 +4935,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > > &>::type
+ X100( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > > &>(a);
+ }
BOOST_QVM_INLINE_TRIVIAL
qvm_detail::sw01_<qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > > const &
_1000()
@@ -4569,6 +5019,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > > const &>::type
+ X000( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -4578,6 +5037,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > > &>::type
+ X000( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -4911,6 +5379,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > > const &>::type
+ _1X00( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -4920,6 +5397,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > > &>::type
+ _1X00( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -4929,6 +5415,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > > const &>::type
+ _0X00( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -4938,6 +5433,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > > &>::type
+ _0X00( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -5001,6 +5505,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > > const &>::type
+ XX00( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -5010,6 +5523,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > > &>::type
+ XX00( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -6963,6 +7485,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > const &>::type
+ _11X0( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -6972,6 +7503,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > &>::type
+ _11X0( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -6981,6 +7521,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > const &>::type
+ _01X0( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -6990,6 +7539,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > &>::type
+ _01X0( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -7053,6 +7611,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > const &>::type
+ X1X0( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -7062,6 +7629,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > &>::type
+ X1X0( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -7071,6 +7647,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > const &>::type
+ _10X0( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -7080,6 +7665,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > &>::type
+ _10X0( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -7089,6 +7683,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > const &>::type
+ _00X0( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -7098,6 +7701,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > &>::type
+ _00X0( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -7161,6 +7773,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > const &>::type
+ X0X0( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -7170,6 +7791,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > &>::type
+ X0X0( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -7503,6 +8133,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > const &>::type
+ _1XX0( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -7512,6 +8151,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > &>::type
+ _1XX0( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -7521,6 +8169,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > const &>::type
+ _0XX0( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -7530,6 +8187,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > &>::type
+ _0XX0( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -7593,6 +8259,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > const &>::type
+ XXX0( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -7602,6 +8277,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > &>::type
+ XXX0( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -19275,6 +19959,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > const &>::type
+ _111X( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -19284,6 +19977,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > &>::type
+ _111X( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -19293,6 +19995,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > const &>::type
+ _011X( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -19302,6 +20013,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > &>::type
+ _011X( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -19365,6 +20085,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > const &>::type
+ X11X( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -19374,6 +20103,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > &>::type
+ X11X( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -19383,6 +20121,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > const &>::type
+ _101X( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -19392,6 +20139,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > &>::type
+ _101X( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -19401,6 +20157,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > const &>::type
+ _001X( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -19410,6 +20175,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > &>::type
+ _001X( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -19473,6 +20247,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > const &>::type
+ X01X( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -19482,6 +20265,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > &>::type
+ X01X( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -19815,6 +20607,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > const &>::type
+ _1X1X( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -19824,6 +20625,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > &>::type
+ _1X1X( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -19833,6 +20643,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > const &>::type
+ _0X1X( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -19842,6 +20661,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > &>::type
+ _0X1X( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -19905,6 +20733,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > const &>::type
+ XX1X( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -19914,6 +20751,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > &>::type
+ XX1X( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -19923,6 +20769,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > const &>::type
+ _110X( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -19932,6 +20787,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > &>::type
+ _110X( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -19941,6 +20805,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > const &>::type
+ _010X( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -19950,6 +20823,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > &>::type
+ _010X( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -20013,6 +20895,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > const &>::type
+ X10X( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -20022,6 +20913,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > &>::type
+ X10X( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -20031,6 +20931,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > const &>::type
+ _100X( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -20040,6 +20949,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > &>::type
+ _100X( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -20049,6 +20967,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > const &>::type
+ _000X( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -20058,6 +20985,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > &>::type
+ _000X( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -20121,6 +21057,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > const &>::type
+ X00X( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -20130,6 +21075,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > &>::type
+ X00X( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -20463,6 +21417,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > const &>::type
+ _1X0X( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -20472,6 +21435,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > &>::type
+ _1X0X( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -20481,6 +21453,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > const &>::type
+ _0X0X( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -20490,6 +21471,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > &>::type
+ _0X0X( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -20553,6 +21543,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > const &>::type
+ XX0X( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -20562,6 +21561,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > &>::type
+ XX0X( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -22515,6 +23523,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > const &>::type
+ _11XX( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -22524,6 +23541,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > &>::type
+ _11XX( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -22533,6 +23559,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > const &>::type
+ _01XX( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -22542,6 +23577,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > &>::type
+ _01XX( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -22605,6 +23649,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > const &>::type
+ X1XX( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -22614,6 +23667,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > &>::type
+ X1XX( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -22623,6 +23685,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > const &>::type
+ _10XX( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -22632,6 +23703,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > &>::type
+ _10XX( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -22641,6 +23721,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > const &>::type
+ _00XX( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -22650,6 +23739,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > &>::type
+ _00XX( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -22713,6 +23811,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > const &>::type
+ X0XX( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -22722,6 +23829,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > &>::type
+ X0XX( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -23055,6 +24171,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > const &>::type
+ _1XXX( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -23064,6 +24189,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > &>::type
+ _1XXX( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -23073,6 +24207,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > const &>::type
+ _0XXX( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -23082,6 +24225,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > &>::type
+ _0XXX( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -23145,6 +24297,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > const &>::type
+ XXXX( S const & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > const &>(a);
+ }
template <class V>
BOOST_QVM_INLINE_TRIVIAL
typename enable_if_c<
@@ -23154,6 +24315,15 @@ boost
{
return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > &>(a);
}
+ template <class S>
+ BOOST_QVM_INLINE_TRIVIAL
+ typename enable_if_c<
+ is_scalar<S>::value,
+ qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > &>::type
+ XXXX( S & a )
+ {
+ return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > > &>(a);
+ }
}
}
diff --git a/boost/qvm/gen/vec_operations2.hpp b/boost/qvm/gen/vec_operations2.hpp
index 715aec5bdd..00ee6d6eb5 100644
--- a/boost/qvm/gen/vec_operations2.hpp
+++ b/boost/qvm/gen/vec_operations2.hpp
@@ -192,6 +192,40 @@ boost
};
}
+ template <class A,class B>
+ BOOST_QVM_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ is_scalar<A>::value && vec_traits<B>::dim==2,
+ deduce_vec<B> >::type
+ operator*( A a, B const & b )
+ {
+ typedef typename deduce_vec<B>::type R;
+ R r;
+ vec_traits<R>::template write_element<0>(r)=a*vec_traits<B>::template read_element<0>(b);
+ vec_traits<R>::template write_element<1>(r)=a*vec_traits<B>::template read_element<1>(b);
+ return r;
+ }
+
+ namespace
+ sfinae
+ {
+ using ::boost::qvm::operator*;
+ }
+
+ namespace
+ qvm_detail
+ {
+ template <int D>
+ struct mul_sv_defined;
+
+ template <>
+ struct
+ mul_sv_defined<2>
+ {
+ static bool const value=true;
+ };
+ }
+
template <class A,class B>
BOOST_QVM_INLINE_OPERATIONS
typename enable_if_c<
diff --git a/boost/qvm/gen/vec_operations3.hpp b/boost/qvm/gen/vec_operations3.hpp
index 405848fd85..d894066efc 100644
--- a/boost/qvm/gen/vec_operations3.hpp
+++ b/boost/qvm/gen/vec_operations3.hpp
@@ -197,6 +197,41 @@ boost
};
}
+ template <class A,class B>
+ BOOST_QVM_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ is_scalar<A>::value && vec_traits<B>::dim==3,
+ deduce_vec<B> >::type
+ operator*( A a, B const & b )
+ {
+ typedef typename deduce_vec<B>::type R;
+ R r;
+ vec_traits<R>::template write_element<0>(r)=a*vec_traits<B>::template read_element<0>(b);
+ vec_traits<R>::template write_element<1>(r)=a*vec_traits<B>::template read_element<1>(b);
+ vec_traits<R>::template write_element<2>(r)=a*vec_traits<B>::template read_element<2>(b);
+ return r;
+ }
+
+ namespace
+ sfinae
+ {
+ using ::boost::qvm::operator*;
+ }
+
+ namespace
+ qvm_detail
+ {
+ template <int D>
+ struct mul_sv_defined;
+
+ template <>
+ struct
+ mul_sv_defined<3>
+ {
+ static bool const value=true;
+ };
+ }
+
template <class A,class B>
BOOST_QVM_INLINE_OPERATIONS
typename enable_if_c<
diff --git a/boost/qvm/gen/vec_operations4.hpp b/boost/qvm/gen/vec_operations4.hpp
index ac7c8e4c62..91049445a9 100644
--- a/boost/qvm/gen/vec_operations4.hpp
+++ b/boost/qvm/gen/vec_operations4.hpp
@@ -202,6 +202,42 @@ boost
};
}
+ template <class A,class B>
+ BOOST_QVM_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ is_scalar<A>::value && vec_traits<B>::dim==4,
+ deduce_vec<B> >::type
+ operator*( A a, B const & b )
+ {
+ typedef typename deduce_vec<B>::type R;
+ R r;
+ vec_traits<R>::template write_element<0>(r)=a*vec_traits<B>::template read_element<0>(b);
+ vec_traits<R>::template write_element<1>(r)=a*vec_traits<B>::template read_element<1>(b);
+ vec_traits<R>::template write_element<2>(r)=a*vec_traits<B>::template read_element<2>(b);
+ vec_traits<R>::template write_element<3>(r)=a*vec_traits<B>::template read_element<3>(b);
+ return r;
+ }
+
+ namespace
+ sfinae
+ {
+ using ::boost::qvm::operator*;
+ }
+
+ namespace
+ qvm_detail
+ {
+ template <int D>
+ struct mul_sv_defined;
+
+ template <>
+ struct
+ mul_sv_defined<4>
+ {
+ static bool const value=true;
+ };
+ }
+
template <class A,class B>
BOOST_QVM_INLINE_OPERATIONS
typename enable_if_c<
diff --git a/boost/qvm/mat_index.hpp b/boost/qvm/mat_index.hpp
deleted file mode 100644
index e7bcdad1e5..0000000000
--- a/boost/qvm/mat_index.hpp
+++ /dev/null
@@ -1,145 +0,0 @@
-//Copyright (c) 2008-2016 Emil Dotchevski and Reverge Studios, Inc.
-
-//Distributed under the Boost Software License, Version 1.0. (See accompanying
-//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef UUID_90273D9C0E5911E281B7981F6288709B
-#define UUID_90273D9C0E5911E281B7981F6288709B
-
-#include <boost/qvm/mat_traits.hpp>
-#include <boost/qvm/inline.hpp>
-#include <boost/qvm/assert.hpp>
-#include <boost/qvm/enable_if.hpp>
-#include <boost/qvm/error.hpp>
-#include <boost/exception/info.hpp>
-
-namespace
-boost
- {
- namespace
- qvm
- {
- ////////////////////////////////////////////////
-
- namespace
- qvm_detail
- {
- template <int R,int C>
- struct
- mat_index_read_defined
- {
- static bool const value=false;
- };
-
- template <int I,int N>
- struct
- matrix_r
- {
- template <class A>
- static
- BOOST_QVM_INLINE_CRITICAL
- typename mat_traits<A>::scalar_type
- read_element_idx( A const & a, int r, int c )
- {
- return (I/mat_traits<A>::cols)==r && (I%mat_traits<A>::cols)==c?
- mat_traits<A>::template read_element<I/mat_traits<A>::cols,I%mat_traits<A>::cols>(a) :
- matrix_r<I+1,N>::read_element_idx(a,r,c);
- }
- };
-
- template <int N>
- struct
- matrix_r<N,N>
- {
- template <class A>
- static
- BOOST_QVM_INLINE_TRIVIAL
- typename mat_traits<A>::scalar_type
- read_element_idx( A const & a, int, int )
- {
- BOOST_QVM_ASSERT(0);
- return mat_traits<A>::template read_element<0,0>(a);
- }
- };
- }
-
- template <class A>
- BOOST_QVM_INLINE_TRIVIAL
- typename boost::enable_if_c<
- is_mat<A>::value &&
- !qvm_detail::mat_index_read_defined<mat_traits<A>::rows,mat_traits<A>::cols>::value,
- typename mat_traits<A>::scalar_type>::type
- mat_index_read( A const & a, int r, int c )
- {
- return qvm_detail::matrix_r<0,mat_traits<A>::rows*mat_traits<A>::cols>::read_element_idx(a,r,c);
- }
-
- ////////////////////////////////////////////////
-
- namespace
- qvm_detail
- {
- template <int R,int C>
- struct
- mat_index_write_defined
- {
- static bool const value=false;
- };
-
- template <int I,int N>
- struct
- matrix_w
- {
- template <class A>
- static
- BOOST_QVM_INLINE_CRITICAL
- typename mat_traits<A>::scalar_type &
- write_element_idx( A & a, int r, int c )
- {
- return (I/mat_traits<A>::cols)==r && (I%mat_traits<A>::cols)==c?
- mat_traits<A>::template write_element<I/mat_traits<A>::cols,I%mat_traits<A>::cols>(a) :
- matrix_w<I+1,N>::write_element_idx(a,r,c);
- }
- };
-
- template <int N>
- struct
- matrix_w<N,N>
- {
- template <class A>
- static
- BOOST_QVM_INLINE_TRIVIAL
- typename mat_traits<A>::scalar_type &
- write_element_idx( A & a, int, int )
- {
- BOOST_QVM_ASSERT(0);
- return mat_traits<A>::template write_element<0,0>(a);
- }
- };
- }
-
- template <class A>
- BOOST_QVM_INLINE_TRIVIAL
- typename boost::enable_if_c<
- is_mat<A>::value &&
- !qvm_detail::mat_index_write_defined<mat_traits<A>::rows,mat_traits<A>::cols>::value,
- typename mat_traits<A>::scalar_type &>::type
- mat_index_write( A & a, int r, int c )
- {
- return qvm_detail::matrix_w<0,mat_traits<A>::rows*mat_traits<A>::cols>::write_element_idx(a,r,c);
- }
-
- ////////////////////////////////////////////////
-
- namespace
- sfinae
- {
- using ::boost::qvm::mat_index_read;
- using ::boost::qvm::mat_index_write;
- }
-
- ////////////////////////////////////////////////
- }
- }
-
-#endif
diff --git a/boost/qvm/mat_operations.hpp b/boost/qvm/mat_operations.hpp
index 46eaba5efe..0ec221ccff 100644
--- a/boost/qvm/mat_operations.hpp
+++ b/boost/qvm/mat_operations.hpp
@@ -823,6 +823,35 @@ boost
{
template <int M,int N>
struct
+ mul_sm_defined
+ {
+ static bool const value=false;
+ };
+ }
+
+ template <class A,class B>
+ BOOST_QVM_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ is_scalar<A>::value && is_mat<B>::value &&
+ !qvm_detail::mul_sm_defined<mat_traits<B>::rows,mat_traits<B>::cols>::value,
+ deduce_mat<B> >::type
+ operator*( A a, B const & b )
+ {
+ typedef typename deduce_mat<B>::type R;
+ R r;
+ for( int i=0; i!=mat_traits<B>::rows; ++i )
+ for( int j=0; j!=mat_traits<B>::cols; ++j )
+ mat_traits<R>::write_element_idx(i,j,r)=a*mat_traits<B>::read_element_idx(i,j,b);
+ return r;
+ }
+
+ ////////////////////////////////////////////////
+
+ namespace
+ qvm_detail
+ {
+ template <int M,int N>
+ struct
neq_mm_defined
{
static bool const value=false;
@@ -1067,7 +1096,7 @@ boost
static
BOOST_QVM_INLINE_CRITICAL
scalar_type
- read_element( this_matrix const & x )
+ read_element( this_matrix const & )
{
BOOST_QVM_STATIC_ASSERT(Row>=0);
BOOST_QVM_STATIC_ASSERT(Row<Rows);
@@ -1079,7 +1108,7 @@ boost
static
BOOST_QVM_INLINE_CRITICAL
scalar_type
- read_element_idx( int row, int col, this_matrix const & x )
+ read_element_idx( int row, int col, this_matrix const & )
{
BOOST_QVM_ASSERT(row>=0);
BOOST_QVM_ASSERT(row<rows);
diff --git a/boost/qvm/mat_traits_defaults.hpp b/boost/qvm/mat_traits_defaults.hpp
new file mode 100644
index 0000000000..898e79064a
--- /dev/null
+++ b/boost/qvm/mat_traits_defaults.hpp
@@ -0,0 +1,95 @@
+//Copyright (c) 2008-2016 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef UUID_FB4D5BEAC71B11E68D0EEF1707624D53
+#define UUID_FB4D5BEAC71B11E68D0EEF1707624D53
+
+#include <boost/qvm/inline.hpp>
+#include <boost/qvm/assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ qvm
+ {
+ template <class>
+ struct mat_traits;
+
+ namespace
+ qvm_detail
+ {
+ template <int I,int N>
+ struct
+ matrix_w
+ {
+ template <class A>
+ static
+ BOOST_QVM_INLINE_CRITICAL
+ typename mat_traits<A>::scalar_type &
+ write_element_idx( int r, int c, A & a )
+ {
+ return (I/mat_traits<A>::cols)==r && (I%mat_traits<A>::cols)==c?
+ mat_traits<A>::template write_element<I/mat_traits<A>::cols,I%mat_traits<A>::cols>(a) :
+ matrix_w<I+1,N>::write_element_idx(r,c,a);
+ }
+ };
+
+ template <int N>
+ struct
+ matrix_w<N,N>
+ {
+ template <class A>
+ static
+ BOOST_QVM_INLINE_TRIVIAL
+ typename mat_traits<A>::scalar_type &
+ write_element_idx( int, int, A & a )
+ {
+ BOOST_QVM_ASSERT(0);
+ return mat_traits<A>::template write_element<0,0>(a);
+ }
+ };
+ }
+
+ template <class MatType,class ScalarType,int Rows,int Cols>
+ struct
+ mat_traits_defaults
+ {
+ typedef MatType mat_type;
+ typedef ScalarType scalar_type;
+ static int const rows=Rows;
+ static int const cols=Cols;
+
+ template <int Row,int Col>
+ static
+ BOOST_QVM_INLINE_CRITICAL
+ scalar_type
+ read_element( mat_type const & x )
+ {
+ return mat_traits<mat_type>::template write_element<Row,Col>(const_cast<mat_type &>(x));
+ }
+
+ static
+ BOOST_QVM_INLINE_CRITICAL
+ scalar_type
+ read_element_idx( int r, int c, mat_type const & x )
+ {
+ return mat_traits<mat_type>::write_element_idx(r,c,const_cast<mat_type &>(x));
+ }
+
+ protected:
+
+ static
+ BOOST_QVM_INLINE_TRIVIAL
+ scalar_type &
+ write_element_idx( int r, int c, mat_type & m )
+ {
+ return qvm_detail::matrix_w<0,mat_traits<mat_type>::rows*mat_traits<mat_type>::cols>::write_element_idx(r,c,m);
+ }
+ };
+ }
+ }
+
+#endif
diff --git a/boost/qvm/quat_traits_defaults.hpp b/boost/qvm/quat_traits_defaults.hpp
new file mode 100644
index 0000000000..a343b2a3ad
--- /dev/null
+++ b/boost/qvm/quat_traits_defaults.hpp
@@ -0,0 +1,40 @@
+//Copyright (c) 2008-2016 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef UUID_0595DEC2C72D11E6B6B77C2A07624D53
+#define UUID_0595DEC2C72D11E6B6B77C2A07624D53
+
+#include <boost/qvm/inline.hpp>
+#include <boost/qvm/assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ qvm
+ {
+ template <class>
+ struct quat_traits;
+
+ template <class QuatType,class ScalarType>
+ struct
+ quat_traits_defaults
+ {
+ typedef QuatType quat_type;
+ typedef ScalarType scalar_type;
+
+ template <int I>
+ static
+ BOOST_QVM_INLINE_CRITICAL
+ scalar_type
+ read_element( quat_type const & x )
+ {
+ return quat_traits<quat_type>::template write_element<I>(const_cast<quat_type &>(x));
+ }
+ };
+ }
+ }
+
+#endif
diff --git a/boost/qvm/scalar_traits.hpp b/boost/qvm/scalar_traits.hpp
index 8f8107d76b..8552dfa0ab 100644
--- a/boost/qvm/scalar_traits.hpp
+++ b/boost/qvm/scalar_traits.hpp
@@ -47,6 +47,7 @@ boost
template <> struct is_scalar<unsigned long> { static bool const value=true; };
template <> struct is_scalar<float> { static bool const value=true; };
template <> struct is_scalar<double> { static bool const value=true; };
+ template <> struct is_scalar<long double> { static bool const value=true; };
namespace
qvm_detail
diff --git a/boost/qvm/vec_index.hpp b/boost/qvm/vec_index.hpp
deleted file mode 100644
index ba37979109..0000000000
--- a/boost/qvm/vec_index.hpp
+++ /dev/null
@@ -1,145 +0,0 @@
-//Copyright (c) 2008-2016 Emil Dotchevski and Reverge Studios, Inc.
-
-//Distributed under the Boost Software License, Version 1.0. (See accompanying
-//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef UUID_7FF8E2E00E5411E2AB79F7FE6188709B
-#define UUID_7FF8E2E00E5411E2AB79F7FE6188709B
-
-#include <boost/qvm/vec_traits.hpp>
-#include <boost/qvm/inline.hpp>
-#include <boost/qvm/assert.hpp>
-#include <boost/qvm/enable_if.hpp>
-#include <boost/qvm/error.hpp>
-#include <boost/exception/info.hpp>
-
-namespace
-boost
- {
- namespace
- qvm
- {
- ////////////////////////////////////////////////
-
- namespace
- qvm_detail
- {
- template <int D>
- struct
- vec_index_read_defined
- {
- static bool const value=false;
- };
-
- template <int I,int N>
- struct
- vector_r
- {
- template <class A>
- static
- BOOST_QVM_INLINE_CRITICAL
- typename vec_traits<A>::scalar_type
- read_element_idx( A const & a, int i )
- {
- return I==i?
- vec_traits<A>::template read_element<I>(a) :
- vector_r<I+1,N>::read_element_idx(a,i);
- }
- };
-
- template <int N>
- struct
- vector_r<N,N>
- {
- template <class A>
- static
- BOOST_QVM_INLINE_TRIVIAL
- typename vec_traits<A>::scalar_type
- read_element_idx( A const & a, int )
- {
- BOOST_QVM_ASSERT(0);
- return vec_traits<A>::template read_element<0>(a);
- }
- };
- }
-
- template <class A>
- BOOST_QVM_INLINE_TRIVIAL
- typename boost::enable_if_c<
- is_vec<A>::value &&
- !qvm_detail::vec_index_read_defined<vec_traits<A>::dim>::value,
- typename vec_traits<A>::scalar_type>::type
- vec_index_read( A const & a, int i )
- {
- return qvm_detail::vector_r<0,vec_traits<A>::dim>::read_element_idx(a,i);
- }
-
- ////////////////////////////////////////////////
-
- namespace
- qvm_detail
- {
- template <int D>
- struct
- vec_index_write_defined
- {
- static bool const value=false;
- };
-
- template <int I,int N>
- struct
- vector_w
- {
- template <class A>
- static
- BOOST_QVM_INLINE_CRITICAL
- typename vec_traits<A>::scalar_type &
- write_element_idx( A & a, int i )
- {
- return I==i?
- vec_traits<A>::template write_element<I>(a) :
- vector_w<I+1,N>::write_element_idx(a,i);
- }
- };
-
- template <int N>
- struct
- vector_w<N,N>
- {
- template <class A>
- static
- BOOST_QVM_INLINE_TRIVIAL
- typename vec_traits<A>::scalar_type &
- write_element_idx( A & a, int )
- {
- BOOST_QVM_ASSERT(0);
- return vec_traits<A>::template write_element<0>(a);
- }
- };
- }
-
- template <class A>
- BOOST_QVM_INLINE_TRIVIAL
- typename boost::enable_if_c<
- is_vec<A>::value &&
- !qvm_detail::vec_index_write_defined<vec_traits<A>::dim>::value,
- typename vec_traits<A>::scalar_type &>::type
- vec_index_write( A & a, int i )
- {
- return qvm_detail::vector_w<0,vec_traits<A>::dim>::write_element_idx(a,i);
- }
-
- ////////////////////////////////////////////////
-
- namespace
- sfinae
- {
- using ::boost::qvm::vec_index_read;
- using ::boost::qvm::vec_index_write;
- }
-
- ////////////////////////////////////////////////
- }
- }
-
-#endif
diff --git a/boost/qvm/vec_operations.hpp b/boost/qvm/vec_operations.hpp
index 7f259ac3c4..5d42df9842 100644
--- a/boost/qvm/vec_operations.hpp
+++ b/boost/qvm/vec_operations.hpp
@@ -255,7 +255,7 @@ boost
static
BOOST_QVM_INLINE_CRITICAL
scalar_type
- read_element( this_vector const & x )
+ read_element( this_vector const & )
{
BOOST_QVM_STATIC_ASSERT(I>=0);
BOOST_QVM_STATIC_ASSERT(I<Dim);
@@ -265,7 +265,7 @@ boost
static
BOOST_QVM_INLINE_CRITICAL
scalar_type
- read_element_idx( int i, this_vector const & x )
+ read_element_idx( int i, this_vector const & )
{
BOOST_QVM_ASSERT(i>=0);
BOOST_QVM_ASSERT(i<Dim);
@@ -699,6 +699,34 @@ boost
{
template <int D>
struct
+ mul_sv_defined
+ {
+ static bool const value=false;
+ };
+ }
+
+ template <class A,class B>
+ BOOST_QVM_INLINE_OPERATIONS
+ typename lazy_enable_if_c<
+ is_scalar<A>::value && is_vec<B>::value &&
+ !qvm_detail::mul_sv_defined<vec_traits<B>::dim>::value,
+ deduce_vec<B> >::type
+ operator*( A a, B const & b )
+ {
+ typedef typename deduce_vec<B>::type R;
+ R r;
+ for( int i=0; i!=vec_traits<B>::dim; ++i )
+ vec_traits<R>::write_element_idx(i,r)=a*vec_traits<B>::read_element_idx(i,b);
+ return r;
+ }
+
+ ////////////////////////////////////////////////
+
+ namespace
+ qvm_detail
+ {
+ template <int D>
+ struct
neq_vv_defined
{
static bool const value=false;
diff --git a/boost/qvm/vec_traits_defaults.hpp b/boost/qvm/vec_traits_defaults.hpp
new file mode 100644
index 0000000000..80b5f858d0
--- /dev/null
+++ b/boost/qvm/vec_traits_defaults.hpp
@@ -0,0 +1,94 @@
+//Copyright (c) 2008-2016 Emil Dotchevski and Reverge Studios, Inc.
+
+//Distributed under the Boost Software License, Version 1.0. (See accompanying
+//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef UUID_DFFD61ACC72311E6955FFF1F07624D53
+#define UUID_DFFD61ACC72311E6955FFF1F07624D53
+
+#include <boost/qvm/inline.hpp>
+#include <boost/qvm/assert.hpp>
+
+namespace
+boost
+ {
+ namespace
+ qvm
+ {
+ template <class>
+ struct vec_traits;
+
+ namespace
+ qvm_detail
+ {
+ template <int I,int N>
+ struct
+ vector_w
+ {
+ template <class A>
+ static
+ BOOST_QVM_INLINE_CRITICAL
+ typename vec_traits<A>::scalar_type &
+ write_element_idx( int i, A & a )
+ {
+ return I==i?
+ vec_traits<A>::template write_element<I>(a) :
+ vector_w<I+1,N>::write_element_idx(i,a);
+ }
+ };
+
+ template <int N>
+ struct
+ vector_w<N,N>
+ {
+ template <class A>
+ static
+ BOOST_QVM_INLINE_TRIVIAL
+ typename vec_traits<A>::scalar_type &
+ write_element_idx( int, A & a )
+ {
+ BOOST_QVM_ASSERT(0);
+ return vec_traits<A>::template write_element<0>(a);
+ }
+ };
+ }
+
+ template <class VecType,class ScalarType,int Dim>
+ struct
+ vec_traits_defaults
+ {
+ typedef VecType vec_type;
+ typedef ScalarType scalar_type;
+ static int const dim=Dim;
+
+ template <int I>
+ static
+ BOOST_QVM_INLINE_CRITICAL
+ scalar_type
+ read_element( vec_type const & x )
+ {
+ return vec_traits<vec_type>::template write_element<I>(const_cast<vec_type &>(x));
+ }
+
+ static
+ BOOST_QVM_INLINE_CRITICAL
+ scalar_type
+ read_element_idx( int i, vec_type const & x )
+ {
+ return vec_traits<vec_type>::write_element_idx(i,const_cast<vec_type &>(x));
+ }
+
+ protected:
+
+ static
+ BOOST_QVM_INLINE_TRIVIAL
+ scalar_type &
+ write_element_idx( int i, vec_type & m )
+ {
+ return qvm_detail::vector_w<0,vec_traits<vec_type>::dim>::write_element_idx(i,m);
+ }
+ };
+ }
+ }
+
+#endif