File indexing completed on 2025-09-15 08:51:17
0001 #ifndef BOOST_QVM_GEN_SWIZZLE2_HPP_INCLUDED
0002 #define BOOST_QVM_GEN_SWIZZLE2_HPP_INCLUDED
0003
0004
0005
0006
0007
0008
0009 #include <boost/qvm/config.hpp>
0010 #include <boost/qvm/detail/swizzle_traits.hpp>
0011 #include <boost/qvm/enable_if.hpp>
0012
0013 namespace boost { namespace qvm {
0014
0015 BOOST_QVM_INLINE_TRIVIAL
0016 qvm_detail::sw01_<qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > const &
0017 _11()
0018 {
0019 return *reinterpret_cast<qvm_detail::sw01_<qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > const *>(qvm_detail::get_null());
0020 }
0021 BOOST_QVM_INLINE_TRIVIAL
0022 qvm_detail::sw01_<qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > const &
0023 _01()
0024 {
0025 return *reinterpret_cast<qvm_detail::sw01_<qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > const *>(qvm_detail::get_null());
0026 }
0027 template <class V>
0028 BOOST_QVM_INLINE_TRIVIAL
0029 typename enable_if_c<
0030 is_vec<V>::value && vec_traits<V>::dim>=4,
0031 qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2 > > > const &>::type
0032 W1( V const & a )
0033 {
0034 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2 > > > const &>(a);
0035 }
0036 template <class V>
0037 BOOST_QVM_INLINE_TRIVIAL
0038 typename enable_if_c<
0039 is_vec<V>::value && vec_traits<V>::dim>=4,
0040 qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2 > > > &>::type
0041 W1( V & a )
0042 {
0043 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2 > > > &>(a);
0044 }
0045 template <class V>
0046 BOOST_QVM_INLINE_TRIVIAL
0047 typename enable_if_c<
0048 is_vec<V>::value && vec_traits<V>::dim>=3,
0049 qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2 > > > const &>::type
0050 Z1( V const & a )
0051 {
0052 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2 > > > const &>(a);
0053 }
0054 template <class V>
0055 BOOST_QVM_INLINE_TRIVIAL
0056 typename enable_if_c<
0057 is_vec<V>::value && vec_traits<V>::dim>=3,
0058 qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2 > > > &>::type
0059 Z1( V & a )
0060 {
0061 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2 > > > &>(a);
0062 }
0063 template <class V>
0064 BOOST_QVM_INLINE_TRIVIAL
0065 typename enable_if_c<
0066 is_vec<V>::value && vec_traits<V>::dim>=2,
0067 qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2 > > > const &>::type
0068 Y1( V const & a )
0069 {
0070 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2 > > > const &>(a);
0071 }
0072 template <class V>
0073 BOOST_QVM_INLINE_TRIVIAL
0074 typename enable_if_c<
0075 is_vec<V>::value && vec_traits<V>::dim>=2,
0076 qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2 > > > &>::type
0077 Y1( V & a )
0078 {
0079 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2 > > > &>(a);
0080 }
0081 template <class V>
0082 BOOST_QVM_INLINE_TRIVIAL
0083 typename enable_if_c<
0084 is_vec<V>::value && vec_traits<V>::dim>=1,
0085 qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > const &>::type
0086 X1( V const & a )
0087 {
0088 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > const &>(a);
0089 }
0090 template <class S>
0091 BOOST_QVM_INLINE_TRIVIAL
0092 typename enable_if_c<
0093 is_scalar<S>::value,
0094 qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > const &>::type
0095 X1( S const & a )
0096 {
0097 return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > const &>(a);
0098 }
0099 template <class V>
0100 BOOST_QVM_INLINE_TRIVIAL
0101 typename enable_if_c<
0102 is_vec<V>::value && vec_traits<V>::dim>=1,
0103 qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > &>::type
0104 X1( V & a )
0105 {
0106 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > &>(a);
0107 }
0108 template <class S>
0109 BOOST_QVM_INLINE_TRIVIAL
0110 typename enable_if_c<
0111 is_scalar<S>::value,
0112 qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > &>::type
0113 X1( S & a )
0114 {
0115 return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > &>(a);
0116 }
0117 BOOST_QVM_INLINE_TRIVIAL
0118 qvm_detail::sw01_<qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > const &
0119 _10()
0120 {
0121 return *reinterpret_cast<qvm_detail::sw01_<qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > const *>(qvm_detail::get_null());
0122 }
0123 BOOST_QVM_INLINE_TRIVIAL
0124 qvm_detail::sw01_<qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > const &
0125 _00()
0126 {
0127 return *reinterpret_cast<qvm_detail::sw01_<qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > const *>(qvm_detail::get_null());
0128 }
0129 template <class V>
0130 BOOST_QVM_INLINE_TRIVIAL
0131 typename enable_if_c<
0132 is_vec<V>::value && vec_traits<V>::dim>=4,
0133 qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1 > > > const &>::type
0134 W0( V const & a )
0135 {
0136 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1 > > > const &>(a);
0137 }
0138 template <class V>
0139 BOOST_QVM_INLINE_TRIVIAL
0140 typename enable_if_c<
0141 is_vec<V>::value && vec_traits<V>::dim>=4,
0142 qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1 > > > &>::type
0143 W0( V & a )
0144 {
0145 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1 > > > &>(a);
0146 }
0147 template <class V>
0148 BOOST_QVM_INLINE_TRIVIAL
0149 typename enable_if_c<
0150 is_vec<V>::value && vec_traits<V>::dim>=3,
0151 qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1 > > > const &>::type
0152 Z0( V const & a )
0153 {
0154 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1 > > > const &>(a);
0155 }
0156 template <class V>
0157 BOOST_QVM_INLINE_TRIVIAL
0158 typename enable_if_c<
0159 is_vec<V>::value && vec_traits<V>::dim>=3,
0160 qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1 > > > &>::type
0161 Z0( V & a )
0162 {
0163 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1 > > > &>(a);
0164 }
0165 template <class V>
0166 BOOST_QVM_INLINE_TRIVIAL
0167 typename enable_if_c<
0168 is_vec<V>::value && vec_traits<V>::dim>=2,
0169 qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1 > > > const &>::type
0170 Y0( V const & a )
0171 {
0172 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1 > > > const &>(a);
0173 }
0174 template <class V>
0175 BOOST_QVM_INLINE_TRIVIAL
0176 typename enable_if_c<
0177 is_vec<V>::value && vec_traits<V>::dim>=2,
0178 qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1 > > > &>::type
0179 Y0( V & a )
0180 {
0181 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1 > > > &>(a);
0182 }
0183 template <class V>
0184 BOOST_QVM_INLINE_TRIVIAL
0185 typename enable_if_c<
0186 is_vec<V>::value && vec_traits<V>::dim>=1,
0187 qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > const &>::type
0188 X0( V const & a )
0189 {
0190 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > const &>(a);
0191 }
0192 template <class S>
0193 BOOST_QVM_INLINE_TRIVIAL
0194 typename enable_if_c<
0195 is_scalar<S>::value,
0196 qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > const &>::type
0197 X0( S const & a )
0198 {
0199 return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > const &>(a);
0200 }
0201 template <class V>
0202 BOOST_QVM_INLINE_TRIVIAL
0203 typename enable_if_c<
0204 is_vec<V>::value && vec_traits<V>::dim>=1,
0205 qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > &>::type
0206 X0( V & a )
0207 {
0208 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > &>(a);
0209 }
0210 template <class S>
0211 BOOST_QVM_INLINE_TRIVIAL
0212 typename enable_if_c<
0213 is_scalar<S>::value,
0214 qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > &>::type
0215 X0( S & a )
0216 {
0217 return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > &>(a);
0218 }
0219 template <class V>
0220 BOOST_QVM_INLINE_TRIVIAL
0221 typename enable_if_c<
0222 is_vec<V>::value && vec_traits<V>::dim>=4,
0223 qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3 > > > const &>::type
0224 _1W( V const & a )
0225 {
0226 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3 > > > const &>(a);
0227 }
0228 template <class V>
0229 BOOST_QVM_INLINE_TRIVIAL
0230 typename enable_if_c<
0231 is_vec<V>::value && vec_traits<V>::dim>=4,
0232 qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3 > > > &>::type
0233 _1W( V & a )
0234 {
0235 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3 > > > &>(a);
0236 }
0237 template <class V>
0238 BOOST_QVM_INLINE_TRIVIAL
0239 typename enable_if_c<
0240 is_vec<V>::value && vec_traits<V>::dim>=4,
0241 qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3 > > > const &>::type
0242 _0W( V const & a )
0243 {
0244 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3 > > > const &>(a);
0245 }
0246 template <class V>
0247 BOOST_QVM_INLINE_TRIVIAL
0248 typename enable_if_c<
0249 is_vec<V>::value && vec_traits<V>::dim>=4,
0250 qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3 > > > &>::type
0251 _0W( V & a )
0252 {
0253 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3 > > > &>(a);
0254 }
0255 template <class V>
0256 BOOST_QVM_INLINE_TRIVIAL
0257 typename enable_if_c<
0258 is_vec<V>::value && vec_traits<V>::dim>=4,
0259 qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3 > > > const &>::type
0260 WW( V const & a )
0261 {
0262 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3 > > > const &>(a);
0263 }
0264 template <class V>
0265 BOOST_QVM_INLINE_TRIVIAL
0266 typename enable_if_c<
0267 is_vec<V>::value && vec_traits<V>::dim>=4,
0268 qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3 > > > &>::type
0269 WW( V & a )
0270 {
0271 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3 > > > &>(a);
0272 }
0273 template <class V>
0274 BOOST_QVM_INLINE_TRIVIAL
0275 typename enable_if_c<
0276 is_vec<V>::value && vec_traits<V>::dim>=4,
0277 qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3 > > > const &>::type
0278 ZW( V const & a )
0279 {
0280 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3 > > > const &>(a);
0281 }
0282 template <class V>
0283 BOOST_QVM_INLINE_TRIVIAL
0284 typename enable_if_c<
0285 is_vec<V>::value && vec_traits<V>::dim>=4,
0286 qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3 > > > &>::type
0287 ZW( V & a )
0288 {
0289 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3 > > > &>(a);
0290 }
0291 template <class V>
0292 BOOST_QVM_INLINE_TRIVIAL
0293 typename enable_if_c<
0294 is_vec<V>::value && vec_traits<V>::dim>=4,
0295 qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3 > > > const &>::type
0296 YW( V const & a )
0297 {
0298 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3 > > > const &>(a);
0299 }
0300 template <class V>
0301 BOOST_QVM_INLINE_TRIVIAL
0302 typename enable_if_c<
0303 is_vec<V>::value && vec_traits<V>::dim>=4,
0304 qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3 > > > &>::type
0305 YW( V & a )
0306 {
0307 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3 > > > &>(a);
0308 }
0309 template <class V>
0310 BOOST_QVM_INLINE_TRIVIAL
0311 typename enable_if_c<
0312 is_vec<V>::value && vec_traits<V>::dim>=4,
0313 qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3 > > > const &>::type
0314 XW( V const & a )
0315 {
0316 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3 > > > const &>(a);
0317 }
0318 template <class V>
0319 BOOST_QVM_INLINE_TRIVIAL
0320 typename enable_if_c<
0321 is_vec<V>::value && vec_traits<V>::dim>=4,
0322 qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3 > > > &>::type
0323 XW( V & a )
0324 {
0325 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3 > > > &>(a);
0326 }
0327 template <class V>
0328 BOOST_QVM_INLINE_TRIVIAL
0329 typename enable_if_c<
0330 is_vec<V>::value && vec_traits<V>::dim>=3,
0331 qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2 > > > const &>::type
0332 _1Z( V const & a )
0333 {
0334 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2 > > > const &>(a);
0335 }
0336 template <class V>
0337 BOOST_QVM_INLINE_TRIVIAL
0338 typename enable_if_c<
0339 is_vec<V>::value && vec_traits<V>::dim>=3,
0340 qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2 > > > &>::type
0341 _1Z( V & a )
0342 {
0343 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2 > > > &>(a);
0344 }
0345 template <class V>
0346 BOOST_QVM_INLINE_TRIVIAL
0347 typename enable_if_c<
0348 is_vec<V>::value && vec_traits<V>::dim>=3,
0349 qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2 > > > const &>::type
0350 _0Z( V const & a )
0351 {
0352 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2 > > > const &>(a);
0353 }
0354 template <class V>
0355 BOOST_QVM_INLINE_TRIVIAL
0356 typename enable_if_c<
0357 is_vec<V>::value && vec_traits<V>::dim>=3,
0358 qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2 > > > &>::type
0359 _0Z( V & a )
0360 {
0361 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2 > > > &>(a);
0362 }
0363 template <class V>
0364 BOOST_QVM_INLINE_TRIVIAL
0365 typename enable_if_c<
0366 is_vec<V>::value && vec_traits<V>::dim>=4,
0367 qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2 > > > const &>::type
0368 WZ( V const & a )
0369 {
0370 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2 > > > const &>(a);
0371 }
0372 template <class V>
0373 BOOST_QVM_INLINE_TRIVIAL
0374 typename enable_if_c<
0375 is_vec<V>::value && vec_traits<V>::dim>=4,
0376 qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2 > > > &>::type
0377 WZ( V & a )
0378 {
0379 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2 > > > &>(a);
0380 }
0381 template <class V>
0382 BOOST_QVM_INLINE_TRIVIAL
0383 typename enable_if_c<
0384 is_vec<V>::value && vec_traits<V>::dim>=3,
0385 qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2 > > > const &>::type
0386 ZZ( V const & a )
0387 {
0388 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2 > > > const &>(a);
0389 }
0390 template <class V>
0391 BOOST_QVM_INLINE_TRIVIAL
0392 typename enable_if_c<
0393 is_vec<V>::value && vec_traits<V>::dim>=3,
0394 qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2 > > > &>::type
0395 ZZ( V & a )
0396 {
0397 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2 > > > &>(a);
0398 }
0399 template <class V>
0400 BOOST_QVM_INLINE_TRIVIAL
0401 typename enable_if_c<
0402 is_vec<V>::value && vec_traits<V>::dim>=3,
0403 qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2 > > > const &>::type
0404 YZ( V const & a )
0405 {
0406 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2 > > > const &>(a);
0407 }
0408 template <class V>
0409 BOOST_QVM_INLINE_TRIVIAL
0410 typename enable_if_c<
0411 is_vec<V>::value && vec_traits<V>::dim>=3,
0412 qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2 > > > &>::type
0413 YZ( V & a )
0414 {
0415 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2 > > > &>(a);
0416 }
0417 template <class V>
0418 BOOST_QVM_INLINE_TRIVIAL
0419 typename enable_if_c<
0420 is_vec<V>::value && vec_traits<V>::dim>=3,
0421 qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2 > > > const &>::type
0422 XZ( V const & a )
0423 {
0424 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2 > > > const &>(a);
0425 }
0426 template <class V>
0427 BOOST_QVM_INLINE_TRIVIAL
0428 typename enable_if_c<
0429 is_vec<V>::value && vec_traits<V>::dim>=3,
0430 qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2 > > > &>::type
0431 XZ( V & a )
0432 {
0433 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2 > > > &>(a);
0434 }
0435 template <class V>
0436 BOOST_QVM_INLINE_TRIVIAL
0437 typename enable_if_c<
0438 is_vec<V>::value && vec_traits<V>::dim>=2,
0439 qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1 > > > const &>::type
0440 _1Y( V const & a )
0441 {
0442 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1 > > > const &>(a);
0443 }
0444 template <class V>
0445 BOOST_QVM_INLINE_TRIVIAL
0446 typename enable_if_c<
0447 is_vec<V>::value && vec_traits<V>::dim>=2,
0448 qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1 > > > &>::type
0449 _1Y( V & a )
0450 {
0451 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1 > > > &>(a);
0452 }
0453 template <class V>
0454 BOOST_QVM_INLINE_TRIVIAL
0455 typename enable_if_c<
0456 is_vec<V>::value && vec_traits<V>::dim>=2,
0457 qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1 > > > const &>::type
0458 _0Y( V const & a )
0459 {
0460 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1 > > > const &>(a);
0461 }
0462 template <class V>
0463 BOOST_QVM_INLINE_TRIVIAL
0464 typename enable_if_c<
0465 is_vec<V>::value && vec_traits<V>::dim>=2,
0466 qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1 > > > &>::type
0467 _0Y( V & a )
0468 {
0469 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1 > > > &>(a);
0470 }
0471 template <class V>
0472 BOOST_QVM_INLINE_TRIVIAL
0473 typename enable_if_c<
0474 is_vec<V>::value && vec_traits<V>::dim>=4,
0475 qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1 > > > const &>::type
0476 WY( V const & a )
0477 {
0478 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1 > > > const &>(a);
0479 }
0480 template <class V>
0481 BOOST_QVM_INLINE_TRIVIAL
0482 typename enable_if_c<
0483 is_vec<V>::value && vec_traits<V>::dim>=4,
0484 qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1 > > > &>::type
0485 WY( V & a )
0486 {
0487 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1 > > > &>(a);
0488 }
0489 template <class V>
0490 BOOST_QVM_INLINE_TRIVIAL
0491 typename enable_if_c<
0492 is_vec<V>::value && vec_traits<V>::dim>=3,
0493 qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1 > > > const &>::type
0494 ZY( V const & a )
0495 {
0496 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1 > > > const &>(a);
0497 }
0498 template <class V>
0499 BOOST_QVM_INLINE_TRIVIAL
0500 typename enable_if_c<
0501 is_vec<V>::value && vec_traits<V>::dim>=3,
0502 qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1 > > > &>::type
0503 ZY( V & a )
0504 {
0505 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1 > > > &>(a);
0506 }
0507 template <class V>
0508 BOOST_QVM_INLINE_TRIVIAL
0509 typename enable_if_c<
0510 is_vec<V>::value && vec_traits<V>::dim>=2,
0511 qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1 > > > const &>::type
0512 YY( V const & a )
0513 {
0514 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1 > > > const &>(a);
0515 }
0516 template <class V>
0517 BOOST_QVM_INLINE_TRIVIAL
0518 typename enable_if_c<
0519 is_vec<V>::value && vec_traits<V>::dim>=2,
0520 qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1 > > > &>::type
0521 YY( V & a )
0522 {
0523 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1 > > > &>(a);
0524 }
0525 template <class V>
0526 BOOST_QVM_INLINE_TRIVIAL
0527 typename enable_if_c<
0528 is_vec<V>::value && vec_traits<V>::dim>=2,
0529 qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1 > > > const &>::type
0530 XY( V const & a )
0531 {
0532 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1 > > > const &>(a);
0533 }
0534 template <class V>
0535 BOOST_QVM_INLINE_TRIVIAL
0536 typename enable_if_c<
0537 is_vec<V>::value && vec_traits<V>::dim>=2,
0538 qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1 > > > &>::type
0539 XY( V & a )
0540 {
0541 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1 > > > &>(a);
0542 }
0543 template <class V>
0544 BOOST_QVM_INLINE_TRIVIAL
0545 typename enable_if_c<
0546 is_vec<V>::value && vec_traits<V>::dim>=1,
0547 qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > const &>::type
0548 _1X( V const & a )
0549 {
0550 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > const &>(a);
0551 }
0552 template <class S>
0553 BOOST_QVM_INLINE_TRIVIAL
0554 typename enable_if_c<
0555 is_scalar<S>::value,
0556 qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > const &>::type
0557 _1X( S const & a )
0558 {
0559 return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > const &>(a);
0560 }
0561 template <class V>
0562 BOOST_QVM_INLINE_TRIVIAL
0563 typename enable_if_c<
0564 is_vec<V>::value && vec_traits<V>::dim>=1,
0565 qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > &>::type
0566 _1X( V & a )
0567 {
0568 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > &>(a);
0569 }
0570 template <class S>
0571 BOOST_QVM_INLINE_TRIVIAL
0572 typename enable_if_c<
0573 is_scalar<S>::value,
0574 qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > &>::type
0575 _1X( S & a )
0576 {
0577 return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > &>(a);
0578 }
0579 template <class V>
0580 BOOST_QVM_INLINE_TRIVIAL
0581 typename enable_if_c<
0582 is_vec<V>::value && vec_traits<V>::dim>=1,
0583 qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > const &>::type
0584 _0X( V const & a )
0585 {
0586 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > const &>(a);
0587 }
0588 template <class S>
0589 BOOST_QVM_INLINE_TRIVIAL
0590 typename enable_if_c<
0591 is_scalar<S>::value,
0592 qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > const &>::type
0593 _0X( S const & a )
0594 {
0595 return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > const &>(a);
0596 }
0597 template <class V>
0598 BOOST_QVM_INLINE_TRIVIAL
0599 typename enable_if_c<
0600 is_vec<V>::value && vec_traits<V>::dim>=1,
0601 qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > &>::type
0602 _0X( V & a )
0603 {
0604 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > &>(a);
0605 }
0606 template <class S>
0607 BOOST_QVM_INLINE_TRIVIAL
0608 typename enable_if_c<
0609 is_scalar<S>::value,
0610 qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > &>::type
0611 _0X( S & a )
0612 {
0613 return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > &>(a);
0614 }
0615 template <class V>
0616 BOOST_QVM_INLINE_TRIVIAL
0617 typename enable_if_c<
0618 is_vec<V>::value && vec_traits<V>::dim>=4,
0619 qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0 > > > const &>::type
0620 WX( V const & a )
0621 {
0622 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0 > > > const &>(a);
0623 }
0624 template <class V>
0625 BOOST_QVM_INLINE_TRIVIAL
0626 typename enable_if_c<
0627 is_vec<V>::value && vec_traits<V>::dim>=4,
0628 qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0 > > > &>::type
0629 WX( V & a )
0630 {
0631 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0 > > > &>(a);
0632 }
0633 template <class V>
0634 BOOST_QVM_INLINE_TRIVIAL
0635 typename enable_if_c<
0636 is_vec<V>::value && vec_traits<V>::dim>=3,
0637 qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0 > > > const &>::type
0638 ZX( V const & a )
0639 {
0640 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0 > > > const &>(a);
0641 }
0642 template <class V>
0643 BOOST_QVM_INLINE_TRIVIAL
0644 typename enable_if_c<
0645 is_vec<V>::value && vec_traits<V>::dim>=3,
0646 qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0 > > > &>::type
0647 ZX( V & a )
0648 {
0649 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0 > > > &>(a);
0650 }
0651 template <class V>
0652 BOOST_QVM_INLINE_TRIVIAL
0653 typename enable_if_c<
0654 is_vec<V>::value && vec_traits<V>::dim>=2,
0655 qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0 > > > const &>::type
0656 YX( V const & a )
0657 {
0658 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0 > > > const &>(a);
0659 }
0660 template <class V>
0661 BOOST_QVM_INLINE_TRIVIAL
0662 typename enable_if_c<
0663 is_vec<V>::value && vec_traits<V>::dim>=2,
0664 qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0 > > > &>::type
0665 YX( V & a )
0666 {
0667 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0 > > > &>(a);
0668 }
0669 template <class V>
0670 BOOST_QVM_INLINE_TRIVIAL
0671 typename enable_if_c<
0672 is_vec<V>::value && vec_traits<V>::dim>=1,
0673 qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > const &>::type
0674 XX( V const & a )
0675 {
0676 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > const &>(a);
0677 }
0678 template <class S>
0679 BOOST_QVM_INLINE_TRIVIAL
0680 typename enable_if_c<
0681 is_scalar<S>::value,
0682 qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > const &>::type
0683 XX( S const & a )
0684 {
0685 return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > const &>(a);
0686 }
0687 template <class V>
0688 BOOST_QVM_INLINE_TRIVIAL
0689 typename enable_if_c<
0690 is_vec<V>::value && vec_traits<V>::dim>=1,
0691 qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > &>::type
0692 XX( V & a )
0693 {
0694 return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > &>(a);
0695 }
0696 template <class S>
0697 BOOST_QVM_INLINE_TRIVIAL
0698 typename enable_if_c<
0699 is_scalar<S>::value,
0700 qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > &>::type
0701 XX( S & a )
0702 {
0703 return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > &>(a);
0704 }
0705 } }
0706
0707 #endif