swizzle3.hpp 214 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158
  1. //Copyright (c) 2008-2017 Emil Dotchevski and Reverge Studios, Inc.
  2. //Distributed under the Boost Software License, Version 1.0. (See accompanying
  3. //file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  4. #ifndef BOOST_QVM_FA16BB11ADAE248879FE52DB2543E53C
  5. #define BOOST_QVM_FA16BB11ADAE248879FE52DB2543E53C
  6. //This file was generated by a program. Do not edit manually.
  7. #include <boost/qvm/detail/swizzle_traits.hpp>
  8. #include <boost/qvm/enable_if.hpp>
  9. #include <boost/qvm/inline.hpp>
  10. namespace
  11. boost
  12. {
  13. namespace
  14. qvm
  15. {
  16. BOOST_QVM_INLINE_TRIVIAL
  17. qvm_detail::sw01_<qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > const &
  18. _111()
  19. {
  20. return *reinterpret_cast<qvm_detail::sw01_<qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > const *>(qvm_detail::get_null());
  21. }
  22. BOOST_QVM_INLINE_TRIVIAL
  23. qvm_detail::sw01_<qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > const &
  24. _011()
  25. {
  26. return *reinterpret_cast<qvm_detail::sw01_<qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > const *>(qvm_detail::get_null());
  27. }
  28. template <class V>
  29. BOOST_QVM_INLINE_TRIVIAL
  30. typename enable_if_c<
  31. is_vec<V>::value && vec_traits<V>::dim>=4,
  32. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > const &>::type
  33. W11( V const & a )
  34. {
  35. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
  36. }
  37. template <class V>
  38. BOOST_QVM_INLINE_TRIVIAL
  39. typename enable_if_c<
  40. is_vec<V>::value && vec_traits<V>::dim>=4,
  41. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > &>::type
  42. W11( V & a )
  43. {
  44. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > &>(a);
  45. }
  46. template <class V>
  47. BOOST_QVM_INLINE_TRIVIAL
  48. typename enable_if_c<
  49. is_vec<V>::value && vec_traits<V>::dim>=3,
  50. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > const &>::type
  51. Z11( V const & a )
  52. {
  53. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
  54. }
  55. template <class V>
  56. BOOST_QVM_INLINE_TRIVIAL
  57. typename enable_if_c<
  58. is_vec<V>::value && vec_traits<V>::dim>=3,
  59. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > &>::type
  60. Z11( V & a )
  61. {
  62. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > &>(a);
  63. }
  64. template <class V>
  65. BOOST_QVM_INLINE_TRIVIAL
  66. typename enable_if_c<
  67. is_vec<V>::value && vec_traits<V>::dim>=2,
  68. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > const &>::type
  69. Y11( V const & a )
  70. {
  71. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
  72. }
  73. template <class V>
  74. BOOST_QVM_INLINE_TRIVIAL
  75. typename enable_if_c<
  76. is_vec<V>::value && vec_traits<V>::dim>=2,
  77. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > &>::type
  78. Y11( V & a )
  79. {
  80. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > &>(a);
  81. }
  82. template <class V>
  83. BOOST_QVM_INLINE_TRIVIAL
  84. typename enable_if_c<
  85. is_vec<V>::value && vec_traits<V>::dim>=1,
  86. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > const &>::type
  87. X11( V const & a )
  88. {
  89. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
  90. }
  91. template <class S>
  92. BOOST_QVM_INLINE_TRIVIAL
  93. typename enable_if_c<
  94. is_scalar<S>::value,
  95. qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > const &>::type
  96. X11( S const & a )
  97. {
  98. return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
  99. }
  100. template <class V>
  101. BOOST_QVM_INLINE_TRIVIAL
  102. typename enable_if_c<
  103. is_vec<V>::value && vec_traits<V>::dim>=1,
  104. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > &>::type
  105. X11( V & a )
  106. {
  107. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > &>(a);
  108. }
  109. template <class S>
  110. BOOST_QVM_INLINE_TRIVIAL
  111. typename enable_if_c<
  112. is_scalar<S>::value,
  113. qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > &>::type
  114. X11( S & a )
  115. {
  116. return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2 > > > > &>(a);
  117. }
  118. BOOST_QVM_INLINE_TRIVIAL
  119. qvm_detail::sw01_<qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > const &
  120. _101()
  121. {
  122. return *reinterpret_cast<qvm_detail::sw01_<qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > const *>(qvm_detail::get_null());
  123. }
  124. BOOST_QVM_INLINE_TRIVIAL
  125. qvm_detail::sw01_<qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > const &
  126. _001()
  127. {
  128. return *reinterpret_cast<qvm_detail::sw01_<qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > const *>(qvm_detail::get_null());
  129. }
  130. template <class V>
  131. BOOST_QVM_INLINE_TRIVIAL
  132. typename enable_if_c<
  133. is_vec<V>::value && vec_traits<V>::dim>=4,
  134. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > const &>::type
  135. W01( V const & a )
  136. {
  137. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
  138. }
  139. template <class V>
  140. BOOST_QVM_INLINE_TRIVIAL
  141. typename enable_if_c<
  142. is_vec<V>::value && vec_traits<V>::dim>=4,
  143. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > &>::type
  144. W01( V & a )
  145. {
  146. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > &>(a);
  147. }
  148. template <class V>
  149. BOOST_QVM_INLINE_TRIVIAL
  150. typename enable_if_c<
  151. is_vec<V>::value && vec_traits<V>::dim>=3,
  152. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > const &>::type
  153. Z01( V const & a )
  154. {
  155. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
  156. }
  157. template <class V>
  158. BOOST_QVM_INLINE_TRIVIAL
  159. typename enable_if_c<
  160. is_vec<V>::value && vec_traits<V>::dim>=3,
  161. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > &>::type
  162. Z01( V & a )
  163. {
  164. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > &>(a);
  165. }
  166. template <class V>
  167. BOOST_QVM_INLINE_TRIVIAL
  168. typename enable_if_c<
  169. is_vec<V>::value && vec_traits<V>::dim>=2,
  170. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > const &>::type
  171. Y01( V const & a )
  172. {
  173. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
  174. }
  175. template <class V>
  176. BOOST_QVM_INLINE_TRIVIAL
  177. typename enable_if_c<
  178. is_vec<V>::value && vec_traits<V>::dim>=2,
  179. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > &>::type
  180. Y01( V & a )
  181. {
  182. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > &>(a);
  183. }
  184. template <class V>
  185. BOOST_QVM_INLINE_TRIVIAL
  186. typename enable_if_c<
  187. is_vec<V>::value && vec_traits<V>::dim>=1,
  188. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > const &>::type
  189. X01( V const & a )
  190. {
  191. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
  192. }
  193. template <class S>
  194. BOOST_QVM_INLINE_TRIVIAL
  195. typename enable_if_c<
  196. is_scalar<S>::value,
  197. qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > const &>::type
  198. X01( S const & a )
  199. {
  200. return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
  201. }
  202. template <class V>
  203. BOOST_QVM_INLINE_TRIVIAL
  204. typename enable_if_c<
  205. is_vec<V>::value && vec_traits<V>::dim>=1,
  206. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > &>::type
  207. X01( V & a )
  208. {
  209. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > &>(a);
  210. }
  211. template <class S>
  212. BOOST_QVM_INLINE_TRIVIAL
  213. typename enable_if_c<
  214. is_scalar<S>::value,
  215. qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > &>::type
  216. X01( S & a )
  217. {
  218. return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2 > > > > &>(a);
  219. }
  220. template <class V>
  221. BOOST_QVM_INLINE_TRIVIAL
  222. typename enable_if_c<
  223. is_vec<V>::value && vec_traits<V>::dim>=4,
  224. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2 > > > > const &>::type
  225. _1W1( V const & a )
  226. {
  227. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
  228. }
  229. template <class V>
  230. BOOST_QVM_INLINE_TRIVIAL
  231. typename enable_if_c<
  232. is_vec<V>::value && vec_traits<V>::dim>=4,
  233. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2 > > > > &>::type
  234. _1W1( V & a )
  235. {
  236. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2 > > > > &>(a);
  237. }
  238. template <class V>
  239. BOOST_QVM_INLINE_TRIVIAL
  240. typename enable_if_c<
  241. is_vec<V>::value && vec_traits<V>::dim>=4,
  242. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2 > > > > const &>::type
  243. _0W1( V const & a )
  244. {
  245. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
  246. }
  247. template <class V>
  248. BOOST_QVM_INLINE_TRIVIAL
  249. typename enable_if_c<
  250. is_vec<V>::value && vec_traits<V>::dim>=4,
  251. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2 > > > > &>::type
  252. _0W1( V & a )
  253. {
  254. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2 > > > > &>(a);
  255. }
  256. template <class V>
  257. BOOST_QVM_INLINE_TRIVIAL
  258. typename enable_if_c<
  259. is_vec<V>::value && vec_traits<V>::dim>=4,
  260. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2 > > > > const &>::type
  261. WW1( V const & a )
  262. {
  263. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
  264. }
  265. template <class V>
  266. BOOST_QVM_INLINE_TRIVIAL
  267. typename enable_if_c<
  268. is_vec<V>::value && vec_traits<V>::dim>=4,
  269. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2 > > > > &>::type
  270. WW1( V & a )
  271. {
  272. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2 > > > > &>(a);
  273. }
  274. template <class V>
  275. BOOST_QVM_INLINE_TRIVIAL
  276. typename enable_if_c<
  277. is_vec<V>::value && vec_traits<V>::dim>=4,
  278. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2 > > > > const &>::type
  279. ZW1( V const & a )
  280. {
  281. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
  282. }
  283. template <class V>
  284. BOOST_QVM_INLINE_TRIVIAL
  285. typename enable_if_c<
  286. is_vec<V>::value && vec_traits<V>::dim>=4,
  287. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2 > > > > &>::type
  288. ZW1( V & a )
  289. {
  290. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2 > > > > &>(a);
  291. }
  292. template <class V>
  293. BOOST_QVM_INLINE_TRIVIAL
  294. typename enable_if_c<
  295. is_vec<V>::value && vec_traits<V>::dim>=4,
  296. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2 > > > > const &>::type
  297. YW1( V const & a )
  298. {
  299. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
  300. }
  301. template <class V>
  302. BOOST_QVM_INLINE_TRIVIAL
  303. typename enable_if_c<
  304. is_vec<V>::value && vec_traits<V>::dim>=4,
  305. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2 > > > > &>::type
  306. YW1( V & a )
  307. {
  308. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2 > > > > &>(a);
  309. }
  310. template <class V>
  311. BOOST_QVM_INLINE_TRIVIAL
  312. typename enable_if_c<
  313. is_vec<V>::value && vec_traits<V>::dim>=4,
  314. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2 > > > > const &>::type
  315. XW1( V const & a )
  316. {
  317. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
  318. }
  319. template <class V>
  320. BOOST_QVM_INLINE_TRIVIAL
  321. typename enable_if_c<
  322. is_vec<V>::value && vec_traits<V>::dim>=4,
  323. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2 > > > > &>::type
  324. XW1( V & a )
  325. {
  326. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2 > > > > &>(a);
  327. }
  328. template <class V>
  329. BOOST_QVM_INLINE_TRIVIAL
  330. typename enable_if_c<
  331. is_vec<V>::value && vec_traits<V>::dim>=3,
  332. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2 > > > > const &>::type
  333. _1Z1( V const & a )
  334. {
  335. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
  336. }
  337. template <class V>
  338. BOOST_QVM_INLINE_TRIVIAL
  339. typename enable_if_c<
  340. is_vec<V>::value && vec_traits<V>::dim>=3,
  341. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2 > > > > &>::type
  342. _1Z1( V & a )
  343. {
  344. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2 > > > > &>(a);
  345. }
  346. template <class V>
  347. BOOST_QVM_INLINE_TRIVIAL
  348. typename enable_if_c<
  349. is_vec<V>::value && vec_traits<V>::dim>=3,
  350. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2 > > > > const &>::type
  351. _0Z1( V const & a )
  352. {
  353. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
  354. }
  355. template <class V>
  356. BOOST_QVM_INLINE_TRIVIAL
  357. typename enable_if_c<
  358. is_vec<V>::value && vec_traits<V>::dim>=3,
  359. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2 > > > > &>::type
  360. _0Z1( V & a )
  361. {
  362. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2 > > > > &>(a);
  363. }
  364. template <class V>
  365. BOOST_QVM_INLINE_TRIVIAL
  366. typename enable_if_c<
  367. is_vec<V>::value && vec_traits<V>::dim>=4,
  368. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2 > > > > const &>::type
  369. WZ1( V const & a )
  370. {
  371. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
  372. }
  373. template <class V>
  374. BOOST_QVM_INLINE_TRIVIAL
  375. typename enable_if_c<
  376. is_vec<V>::value && vec_traits<V>::dim>=4,
  377. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2 > > > > &>::type
  378. WZ1( V & a )
  379. {
  380. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2 > > > > &>(a);
  381. }
  382. template <class V>
  383. BOOST_QVM_INLINE_TRIVIAL
  384. typename enable_if_c<
  385. is_vec<V>::value && vec_traits<V>::dim>=3,
  386. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2 > > > > const &>::type
  387. ZZ1( V const & a )
  388. {
  389. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
  390. }
  391. template <class V>
  392. BOOST_QVM_INLINE_TRIVIAL
  393. typename enable_if_c<
  394. is_vec<V>::value && vec_traits<V>::dim>=3,
  395. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2 > > > > &>::type
  396. ZZ1( V & a )
  397. {
  398. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2 > > > > &>(a);
  399. }
  400. template <class V>
  401. BOOST_QVM_INLINE_TRIVIAL
  402. typename enable_if_c<
  403. is_vec<V>::value && vec_traits<V>::dim>=3,
  404. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2 > > > > const &>::type
  405. YZ1( V const & a )
  406. {
  407. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
  408. }
  409. template <class V>
  410. BOOST_QVM_INLINE_TRIVIAL
  411. typename enable_if_c<
  412. is_vec<V>::value && vec_traits<V>::dim>=3,
  413. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2 > > > > &>::type
  414. YZ1( V & a )
  415. {
  416. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2 > > > > &>(a);
  417. }
  418. template <class V>
  419. BOOST_QVM_INLINE_TRIVIAL
  420. typename enable_if_c<
  421. is_vec<V>::value && vec_traits<V>::dim>=3,
  422. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2 > > > > const &>::type
  423. XZ1( V const & a )
  424. {
  425. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
  426. }
  427. template <class V>
  428. BOOST_QVM_INLINE_TRIVIAL
  429. typename enable_if_c<
  430. is_vec<V>::value && vec_traits<V>::dim>=3,
  431. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2 > > > > &>::type
  432. XZ1( V & a )
  433. {
  434. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2 > > > > &>(a);
  435. }
  436. template <class V>
  437. BOOST_QVM_INLINE_TRIVIAL
  438. typename enable_if_c<
  439. is_vec<V>::value && vec_traits<V>::dim>=2,
  440. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2 > > > > const &>::type
  441. _1Y1( V const & a )
  442. {
  443. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
  444. }
  445. template <class V>
  446. BOOST_QVM_INLINE_TRIVIAL
  447. typename enable_if_c<
  448. is_vec<V>::value && vec_traits<V>::dim>=2,
  449. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2 > > > > &>::type
  450. _1Y1( V & a )
  451. {
  452. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2 > > > > &>(a);
  453. }
  454. template <class V>
  455. BOOST_QVM_INLINE_TRIVIAL
  456. typename enable_if_c<
  457. is_vec<V>::value && vec_traits<V>::dim>=2,
  458. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2 > > > > const &>::type
  459. _0Y1( V const & a )
  460. {
  461. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
  462. }
  463. template <class V>
  464. BOOST_QVM_INLINE_TRIVIAL
  465. typename enable_if_c<
  466. is_vec<V>::value && vec_traits<V>::dim>=2,
  467. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2 > > > > &>::type
  468. _0Y1( V & a )
  469. {
  470. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2 > > > > &>(a);
  471. }
  472. template <class V>
  473. BOOST_QVM_INLINE_TRIVIAL
  474. typename enable_if_c<
  475. is_vec<V>::value && vec_traits<V>::dim>=4,
  476. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2 > > > > const &>::type
  477. WY1( V const & a )
  478. {
  479. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
  480. }
  481. template <class V>
  482. BOOST_QVM_INLINE_TRIVIAL
  483. typename enable_if_c<
  484. is_vec<V>::value && vec_traits<V>::dim>=4,
  485. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2 > > > > &>::type
  486. WY1( V & a )
  487. {
  488. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2 > > > > &>(a);
  489. }
  490. template <class V>
  491. BOOST_QVM_INLINE_TRIVIAL
  492. typename enable_if_c<
  493. is_vec<V>::value && vec_traits<V>::dim>=3,
  494. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2 > > > > const &>::type
  495. ZY1( V const & a )
  496. {
  497. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
  498. }
  499. template <class V>
  500. BOOST_QVM_INLINE_TRIVIAL
  501. typename enable_if_c<
  502. is_vec<V>::value && vec_traits<V>::dim>=3,
  503. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2 > > > > &>::type
  504. ZY1( V & a )
  505. {
  506. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2 > > > > &>(a);
  507. }
  508. template <class V>
  509. BOOST_QVM_INLINE_TRIVIAL
  510. typename enable_if_c<
  511. is_vec<V>::value && vec_traits<V>::dim>=2,
  512. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2 > > > > const &>::type
  513. YY1( V const & a )
  514. {
  515. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
  516. }
  517. template <class V>
  518. BOOST_QVM_INLINE_TRIVIAL
  519. typename enable_if_c<
  520. is_vec<V>::value && vec_traits<V>::dim>=2,
  521. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2 > > > > &>::type
  522. YY1( V & a )
  523. {
  524. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2 > > > > &>(a);
  525. }
  526. template <class V>
  527. BOOST_QVM_INLINE_TRIVIAL
  528. typename enable_if_c<
  529. is_vec<V>::value && vec_traits<V>::dim>=2,
  530. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2 > > > > const &>::type
  531. XY1( V const & a )
  532. {
  533. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
  534. }
  535. template <class V>
  536. BOOST_QVM_INLINE_TRIVIAL
  537. typename enable_if_c<
  538. is_vec<V>::value && vec_traits<V>::dim>=2,
  539. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2 > > > > &>::type
  540. XY1( V & a )
  541. {
  542. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2 > > > > &>(a);
  543. }
  544. template <class V>
  545. BOOST_QVM_INLINE_TRIVIAL
  546. typename enable_if_c<
  547. is_vec<V>::value && vec_traits<V>::dim>=1,
  548. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > const &>::type
  549. _1X1( V const & a )
  550. {
  551. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
  552. }
  553. template <class S>
  554. BOOST_QVM_INLINE_TRIVIAL
  555. typename enable_if_c<
  556. is_scalar<S>::value,
  557. qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > const &>::type
  558. _1X1( S const & a )
  559. {
  560. return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
  561. }
  562. template <class V>
  563. BOOST_QVM_INLINE_TRIVIAL
  564. typename enable_if_c<
  565. is_vec<V>::value && vec_traits<V>::dim>=1,
  566. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > &>::type
  567. _1X1( V & a )
  568. {
  569. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > &>(a);
  570. }
  571. template <class S>
  572. BOOST_QVM_INLINE_TRIVIAL
  573. typename enable_if_c<
  574. is_scalar<S>::value,
  575. qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > &>::type
  576. _1X1( S & a )
  577. {
  578. return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > &>(a);
  579. }
  580. template <class V>
  581. BOOST_QVM_INLINE_TRIVIAL
  582. typename enable_if_c<
  583. is_vec<V>::value && vec_traits<V>::dim>=1,
  584. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > const &>::type
  585. _0X1( V const & a )
  586. {
  587. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
  588. }
  589. template <class S>
  590. BOOST_QVM_INLINE_TRIVIAL
  591. typename enable_if_c<
  592. is_scalar<S>::value,
  593. qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > const &>::type
  594. _0X1( S const & a )
  595. {
  596. return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
  597. }
  598. template <class V>
  599. BOOST_QVM_INLINE_TRIVIAL
  600. typename enable_if_c<
  601. is_vec<V>::value && vec_traits<V>::dim>=1,
  602. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > &>::type
  603. _0X1( V & a )
  604. {
  605. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > &>(a);
  606. }
  607. template <class S>
  608. BOOST_QVM_INLINE_TRIVIAL
  609. typename enable_if_c<
  610. is_scalar<S>::value,
  611. qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > &>::type
  612. _0X1( S & a )
  613. {
  614. return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > &>(a);
  615. }
  616. template <class V>
  617. BOOST_QVM_INLINE_TRIVIAL
  618. typename enable_if_c<
  619. is_vec<V>::value && vec_traits<V>::dim>=4,
  620. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > const &>::type
  621. WX1( V const & a )
  622. {
  623. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
  624. }
  625. template <class V>
  626. BOOST_QVM_INLINE_TRIVIAL
  627. typename enable_if_c<
  628. is_vec<V>::value && vec_traits<V>::dim>=4,
  629. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > &>::type
  630. WX1( V & a )
  631. {
  632. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > &>(a);
  633. }
  634. template <class V>
  635. BOOST_QVM_INLINE_TRIVIAL
  636. typename enable_if_c<
  637. is_vec<V>::value && vec_traits<V>::dim>=3,
  638. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > const &>::type
  639. ZX1( V const & a )
  640. {
  641. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
  642. }
  643. template <class V>
  644. BOOST_QVM_INLINE_TRIVIAL
  645. typename enable_if_c<
  646. is_vec<V>::value && vec_traits<V>::dim>=3,
  647. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > &>::type
  648. ZX1( V & a )
  649. {
  650. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > &>(a);
  651. }
  652. template <class V>
  653. BOOST_QVM_INLINE_TRIVIAL
  654. typename enable_if_c<
  655. is_vec<V>::value && vec_traits<V>::dim>=2,
  656. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > const &>::type
  657. YX1( V const & a )
  658. {
  659. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
  660. }
  661. template <class V>
  662. BOOST_QVM_INLINE_TRIVIAL
  663. typename enable_if_c<
  664. is_vec<V>::value && vec_traits<V>::dim>=2,
  665. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > &>::type
  666. YX1( V & a )
  667. {
  668. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > &>(a);
  669. }
  670. template <class V>
  671. BOOST_QVM_INLINE_TRIVIAL
  672. typename enable_if_c<
  673. is_vec<V>::value && vec_traits<V>::dim>=1,
  674. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > const &>::type
  675. XX1( V const & a )
  676. {
  677. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
  678. }
  679. template <class S>
  680. BOOST_QVM_INLINE_TRIVIAL
  681. typename enable_if_c<
  682. is_scalar<S>::value,
  683. qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > const &>::type
  684. XX1( S const & a )
  685. {
  686. return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > const &>(a);
  687. }
  688. template <class V>
  689. BOOST_QVM_INLINE_TRIVIAL
  690. typename enable_if_c<
  691. is_vec<V>::value && vec_traits<V>::dim>=1,
  692. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > &>::type
  693. XX1( V & a )
  694. {
  695. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > &>(a);
  696. }
  697. template <class S>
  698. BOOST_QVM_INLINE_TRIVIAL
  699. typename enable_if_c<
  700. is_scalar<S>::value,
  701. qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > &>::type
  702. XX1( S & a )
  703. {
  704. return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2 > > > > &>(a);
  705. }
  706. BOOST_QVM_INLINE_TRIVIAL
  707. qvm_detail::sw01_<qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > const &
  708. _110()
  709. {
  710. return *reinterpret_cast<qvm_detail::sw01_<qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > const *>(qvm_detail::get_null());
  711. }
  712. BOOST_QVM_INLINE_TRIVIAL
  713. qvm_detail::sw01_<qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > const &
  714. _010()
  715. {
  716. return *reinterpret_cast<qvm_detail::sw01_<qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > const *>(qvm_detail::get_null());
  717. }
  718. template <class V>
  719. BOOST_QVM_INLINE_TRIVIAL
  720. typename enable_if_c<
  721. is_vec<V>::value && vec_traits<V>::dim>=4,
  722. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > const &>::type
  723. W10( V const & a )
  724. {
  725. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
  726. }
  727. template <class V>
  728. BOOST_QVM_INLINE_TRIVIAL
  729. typename enable_if_c<
  730. is_vec<V>::value && vec_traits<V>::dim>=4,
  731. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > &>::type
  732. W10( V & a )
  733. {
  734. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > &>(a);
  735. }
  736. template <class V>
  737. BOOST_QVM_INLINE_TRIVIAL
  738. typename enable_if_c<
  739. is_vec<V>::value && vec_traits<V>::dim>=3,
  740. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > const &>::type
  741. Z10( V const & a )
  742. {
  743. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
  744. }
  745. template <class V>
  746. BOOST_QVM_INLINE_TRIVIAL
  747. typename enable_if_c<
  748. is_vec<V>::value && vec_traits<V>::dim>=3,
  749. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > &>::type
  750. Z10( V & a )
  751. {
  752. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > &>(a);
  753. }
  754. template <class V>
  755. BOOST_QVM_INLINE_TRIVIAL
  756. typename enable_if_c<
  757. is_vec<V>::value && vec_traits<V>::dim>=2,
  758. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > const &>::type
  759. Y10( V const & a )
  760. {
  761. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
  762. }
  763. template <class V>
  764. BOOST_QVM_INLINE_TRIVIAL
  765. typename enable_if_c<
  766. is_vec<V>::value && vec_traits<V>::dim>=2,
  767. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > &>::type
  768. Y10( V & a )
  769. {
  770. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > &>(a);
  771. }
  772. template <class V>
  773. BOOST_QVM_INLINE_TRIVIAL
  774. typename enable_if_c<
  775. is_vec<V>::value && vec_traits<V>::dim>=1,
  776. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > const &>::type
  777. X10( V const & a )
  778. {
  779. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
  780. }
  781. template <class S>
  782. BOOST_QVM_INLINE_TRIVIAL
  783. typename enable_if_c<
  784. is_scalar<S>::value,
  785. qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > const &>::type
  786. X10( S const & a )
  787. {
  788. return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
  789. }
  790. template <class V>
  791. BOOST_QVM_INLINE_TRIVIAL
  792. typename enable_if_c<
  793. is_vec<V>::value && vec_traits<V>::dim>=1,
  794. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > &>::type
  795. X10( V & a )
  796. {
  797. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > &>(a);
  798. }
  799. template <class S>
  800. BOOST_QVM_INLINE_TRIVIAL
  801. typename enable_if_c<
  802. is_scalar<S>::value,
  803. qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > &>::type
  804. X10( S & a )
  805. {
  806. return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1 > > > > &>(a);
  807. }
  808. BOOST_QVM_INLINE_TRIVIAL
  809. qvm_detail::sw01_<qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > const &
  810. _100()
  811. {
  812. return *reinterpret_cast<qvm_detail::sw01_<qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > const *>(qvm_detail::get_null());
  813. }
  814. BOOST_QVM_INLINE_TRIVIAL
  815. qvm_detail::sw01_<qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > const &
  816. _000()
  817. {
  818. return *reinterpret_cast<qvm_detail::sw01_<qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > const *>(qvm_detail::get_null());
  819. }
  820. template <class V>
  821. BOOST_QVM_INLINE_TRIVIAL
  822. typename enable_if_c<
  823. is_vec<V>::value && vec_traits<V>::dim>=4,
  824. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > const &>::type
  825. W00( V const & a )
  826. {
  827. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
  828. }
  829. template <class V>
  830. BOOST_QVM_INLINE_TRIVIAL
  831. typename enable_if_c<
  832. is_vec<V>::value && vec_traits<V>::dim>=4,
  833. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > &>::type
  834. W00( V & a )
  835. {
  836. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > &>(a);
  837. }
  838. template <class V>
  839. BOOST_QVM_INLINE_TRIVIAL
  840. typename enable_if_c<
  841. is_vec<V>::value && vec_traits<V>::dim>=3,
  842. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > const &>::type
  843. Z00( V const & a )
  844. {
  845. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
  846. }
  847. template <class V>
  848. BOOST_QVM_INLINE_TRIVIAL
  849. typename enable_if_c<
  850. is_vec<V>::value && vec_traits<V>::dim>=3,
  851. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > &>::type
  852. Z00( V & a )
  853. {
  854. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > &>(a);
  855. }
  856. template <class V>
  857. BOOST_QVM_INLINE_TRIVIAL
  858. typename enable_if_c<
  859. is_vec<V>::value && vec_traits<V>::dim>=2,
  860. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > const &>::type
  861. Y00( V const & a )
  862. {
  863. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
  864. }
  865. template <class V>
  866. BOOST_QVM_INLINE_TRIVIAL
  867. typename enable_if_c<
  868. is_vec<V>::value && vec_traits<V>::dim>=2,
  869. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > &>::type
  870. Y00( V & a )
  871. {
  872. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > &>(a);
  873. }
  874. template <class V>
  875. BOOST_QVM_INLINE_TRIVIAL
  876. typename enable_if_c<
  877. is_vec<V>::value && vec_traits<V>::dim>=1,
  878. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > const &>::type
  879. X00( V const & a )
  880. {
  881. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
  882. }
  883. template <class S>
  884. BOOST_QVM_INLINE_TRIVIAL
  885. typename enable_if_c<
  886. is_scalar<S>::value,
  887. qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > const &>::type
  888. X00( S const & a )
  889. {
  890. return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
  891. }
  892. template <class V>
  893. BOOST_QVM_INLINE_TRIVIAL
  894. typename enable_if_c<
  895. is_vec<V>::value && vec_traits<V>::dim>=1,
  896. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > &>::type
  897. X00( V & a )
  898. {
  899. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > &>(a);
  900. }
  901. template <class S>
  902. BOOST_QVM_INLINE_TRIVIAL
  903. typename enable_if_c<
  904. is_scalar<S>::value,
  905. qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > &>::type
  906. X00( S & a )
  907. {
  908. return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1 > > > > &>(a);
  909. }
  910. template <class V>
  911. BOOST_QVM_INLINE_TRIVIAL
  912. typename enable_if_c<
  913. is_vec<V>::value && vec_traits<V>::dim>=4,
  914. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1 > > > > const &>::type
  915. _1W0( V const & a )
  916. {
  917. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
  918. }
  919. template <class V>
  920. BOOST_QVM_INLINE_TRIVIAL
  921. typename enable_if_c<
  922. is_vec<V>::value && vec_traits<V>::dim>=4,
  923. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1 > > > > &>::type
  924. _1W0( V & a )
  925. {
  926. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1 > > > > &>(a);
  927. }
  928. template <class V>
  929. BOOST_QVM_INLINE_TRIVIAL
  930. typename enable_if_c<
  931. is_vec<V>::value && vec_traits<V>::dim>=4,
  932. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1 > > > > const &>::type
  933. _0W0( V const & a )
  934. {
  935. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
  936. }
  937. template <class V>
  938. BOOST_QVM_INLINE_TRIVIAL
  939. typename enable_if_c<
  940. is_vec<V>::value && vec_traits<V>::dim>=4,
  941. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1 > > > > &>::type
  942. _0W0( V & a )
  943. {
  944. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1 > > > > &>(a);
  945. }
  946. template <class V>
  947. BOOST_QVM_INLINE_TRIVIAL
  948. typename enable_if_c<
  949. is_vec<V>::value && vec_traits<V>::dim>=4,
  950. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1 > > > > const &>::type
  951. WW0( V const & a )
  952. {
  953. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
  954. }
  955. template <class V>
  956. BOOST_QVM_INLINE_TRIVIAL
  957. typename enable_if_c<
  958. is_vec<V>::value && vec_traits<V>::dim>=4,
  959. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1 > > > > &>::type
  960. WW0( V & a )
  961. {
  962. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1 > > > > &>(a);
  963. }
  964. template <class V>
  965. BOOST_QVM_INLINE_TRIVIAL
  966. typename enable_if_c<
  967. is_vec<V>::value && vec_traits<V>::dim>=4,
  968. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1 > > > > const &>::type
  969. ZW0( V const & a )
  970. {
  971. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
  972. }
  973. template <class V>
  974. BOOST_QVM_INLINE_TRIVIAL
  975. typename enable_if_c<
  976. is_vec<V>::value && vec_traits<V>::dim>=4,
  977. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1 > > > > &>::type
  978. ZW0( V & a )
  979. {
  980. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1 > > > > &>(a);
  981. }
  982. template <class V>
  983. BOOST_QVM_INLINE_TRIVIAL
  984. typename enable_if_c<
  985. is_vec<V>::value && vec_traits<V>::dim>=4,
  986. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1 > > > > const &>::type
  987. YW0( V const & a )
  988. {
  989. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
  990. }
  991. template <class V>
  992. BOOST_QVM_INLINE_TRIVIAL
  993. typename enable_if_c<
  994. is_vec<V>::value && vec_traits<V>::dim>=4,
  995. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1 > > > > &>::type
  996. YW0( V & a )
  997. {
  998. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1 > > > > &>(a);
  999. }
  1000. template <class V>
  1001. BOOST_QVM_INLINE_TRIVIAL
  1002. typename enable_if_c<
  1003. is_vec<V>::value && vec_traits<V>::dim>=4,
  1004. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1 > > > > const &>::type
  1005. XW0( V const & a )
  1006. {
  1007. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
  1008. }
  1009. template <class V>
  1010. BOOST_QVM_INLINE_TRIVIAL
  1011. typename enable_if_c<
  1012. is_vec<V>::value && vec_traits<V>::dim>=4,
  1013. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1 > > > > &>::type
  1014. XW0( V & a )
  1015. {
  1016. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1 > > > > &>(a);
  1017. }
  1018. template <class V>
  1019. BOOST_QVM_INLINE_TRIVIAL
  1020. typename enable_if_c<
  1021. is_vec<V>::value && vec_traits<V>::dim>=3,
  1022. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1 > > > > const &>::type
  1023. _1Z0( V const & a )
  1024. {
  1025. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
  1026. }
  1027. template <class V>
  1028. BOOST_QVM_INLINE_TRIVIAL
  1029. typename enable_if_c<
  1030. is_vec<V>::value && vec_traits<V>::dim>=3,
  1031. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1 > > > > &>::type
  1032. _1Z0( V & a )
  1033. {
  1034. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1 > > > > &>(a);
  1035. }
  1036. template <class V>
  1037. BOOST_QVM_INLINE_TRIVIAL
  1038. typename enable_if_c<
  1039. is_vec<V>::value && vec_traits<V>::dim>=3,
  1040. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1 > > > > const &>::type
  1041. _0Z0( V const & a )
  1042. {
  1043. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
  1044. }
  1045. template <class V>
  1046. BOOST_QVM_INLINE_TRIVIAL
  1047. typename enable_if_c<
  1048. is_vec<V>::value && vec_traits<V>::dim>=3,
  1049. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1 > > > > &>::type
  1050. _0Z0( V & a )
  1051. {
  1052. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1 > > > > &>(a);
  1053. }
  1054. template <class V>
  1055. BOOST_QVM_INLINE_TRIVIAL
  1056. typename enable_if_c<
  1057. is_vec<V>::value && vec_traits<V>::dim>=4,
  1058. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1 > > > > const &>::type
  1059. WZ0( V const & a )
  1060. {
  1061. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
  1062. }
  1063. template <class V>
  1064. BOOST_QVM_INLINE_TRIVIAL
  1065. typename enable_if_c<
  1066. is_vec<V>::value && vec_traits<V>::dim>=4,
  1067. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1 > > > > &>::type
  1068. WZ0( V & a )
  1069. {
  1070. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1 > > > > &>(a);
  1071. }
  1072. template <class V>
  1073. BOOST_QVM_INLINE_TRIVIAL
  1074. typename enable_if_c<
  1075. is_vec<V>::value && vec_traits<V>::dim>=3,
  1076. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1 > > > > const &>::type
  1077. ZZ0( V const & a )
  1078. {
  1079. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
  1080. }
  1081. template <class V>
  1082. BOOST_QVM_INLINE_TRIVIAL
  1083. typename enable_if_c<
  1084. is_vec<V>::value && vec_traits<V>::dim>=3,
  1085. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1 > > > > &>::type
  1086. ZZ0( V & a )
  1087. {
  1088. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1 > > > > &>(a);
  1089. }
  1090. template <class V>
  1091. BOOST_QVM_INLINE_TRIVIAL
  1092. typename enable_if_c<
  1093. is_vec<V>::value && vec_traits<V>::dim>=3,
  1094. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1 > > > > const &>::type
  1095. YZ0( V const & a )
  1096. {
  1097. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
  1098. }
  1099. template <class V>
  1100. BOOST_QVM_INLINE_TRIVIAL
  1101. typename enable_if_c<
  1102. is_vec<V>::value && vec_traits<V>::dim>=3,
  1103. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1 > > > > &>::type
  1104. YZ0( V & a )
  1105. {
  1106. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1 > > > > &>(a);
  1107. }
  1108. template <class V>
  1109. BOOST_QVM_INLINE_TRIVIAL
  1110. typename enable_if_c<
  1111. is_vec<V>::value && vec_traits<V>::dim>=3,
  1112. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1 > > > > const &>::type
  1113. XZ0( V const & a )
  1114. {
  1115. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
  1116. }
  1117. template <class V>
  1118. BOOST_QVM_INLINE_TRIVIAL
  1119. typename enable_if_c<
  1120. is_vec<V>::value && vec_traits<V>::dim>=3,
  1121. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1 > > > > &>::type
  1122. XZ0( V & a )
  1123. {
  1124. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1 > > > > &>(a);
  1125. }
  1126. template <class V>
  1127. BOOST_QVM_INLINE_TRIVIAL
  1128. typename enable_if_c<
  1129. is_vec<V>::value && vec_traits<V>::dim>=2,
  1130. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1 > > > > const &>::type
  1131. _1Y0( V const & a )
  1132. {
  1133. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
  1134. }
  1135. template <class V>
  1136. BOOST_QVM_INLINE_TRIVIAL
  1137. typename enable_if_c<
  1138. is_vec<V>::value && vec_traits<V>::dim>=2,
  1139. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1 > > > > &>::type
  1140. _1Y0( V & a )
  1141. {
  1142. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1 > > > > &>(a);
  1143. }
  1144. template <class V>
  1145. BOOST_QVM_INLINE_TRIVIAL
  1146. typename enable_if_c<
  1147. is_vec<V>::value && vec_traits<V>::dim>=2,
  1148. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1 > > > > const &>::type
  1149. _0Y0( V const & a )
  1150. {
  1151. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
  1152. }
  1153. template <class V>
  1154. BOOST_QVM_INLINE_TRIVIAL
  1155. typename enable_if_c<
  1156. is_vec<V>::value && vec_traits<V>::dim>=2,
  1157. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1 > > > > &>::type
  1158. _0Y0( V & a )
  1159. {
  1160. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1 > > > > &>(a);
  1161. }
  1162. template <class V>
  1163. BOOST_QVM_INLINE_TRIVIAL
  1164. typename enable_if_c<
  1165. is_vec<V>::value && vec_traits<V>::dim>=4,
  1166. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1 > > > > const &>::type
  1167. WY0( V const & a )
  1168. {
  1169. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
  1170. }
  1171. template <class V>
  1172. BOOST_QVM_INLINE_TRIVIAL
  1173. typename enable_if_c<
  1174. is_vec<V>::value && vec_traits<V>::dim>=4,
  1175. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1 > > > > &>::type
  1176. WY0( V & a )
  1177. {
  1178. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1 > > > > &>(a);
  1179. }
  1180. template <class V>
  1181. BOOST_QVM_INLINE_TRIVIAL
  1182. typename enable_if_c<
  1183. is_vec<V>::value && vec_traits<V>::dim>=3,
  1184. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1 > > > > const &>::type
  1185. ZY0( V const & a )
  1186. {
  1187. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
  1188. }
  1189. template <class V>
  1190. BOOST_QVM_INLINE_TRIVIAL
  1191. typename enable_if_c<
  1192. is_vec<V>::value && vec_traits<V>::dim>=3,
  1193. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1 > > > > &>::type
  1194. ZY0( V & a )
  1195. {
  1196. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1 > > > > &>(a);
  1197. }
  1198. template <class V>
  1199. BOOST_QVM_INLINE_TRIVIAL
  1200. typename enable_if_c<
  1201. is_vec<V>::value && vec_traits<V>::dim>=2,
  1202. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1 > > > > const &>::type
  1203. YY0( V const & a )
  1204. {
  1205. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
  1206. }
  1207. template <class V>
  1208. BOOST_QVM_INLINE_TRIVIAL
  1209. typename enable_if_c<
  1210. is_vec<V>::value && vec_traits<V>::dim>=2,
  1211. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1 > > > > &>::type
  1212. YY0( V & a )
  1213. {
  1214. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1 > > > > &>(a);
  1215. }
  1216. template <class V>
  1217. BOOST_QVM_INLINE_TRIVIAL
  1218. typename enable_if_c<
  1219. is_vec<V>::value && vec_traits<V>::dim>=2,
  1220. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1 > > > > const &>::type
  1221. XY0( V const & a )
  1222. {
  1223. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
  1224. }
  1225. template <class V>
  1226. BOOST_QVM_INLINE_TRIVIAL
  1227. typename enable_if_c<
  1228. is_vec<V>::value && vec_traits<V>::dim>=2,
  1229. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1 > > > > &>::type
  1230. XY0( V & a )
  1231. {
  1232. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1 > > > > &>(a);
  1233. }
  1234. template <class V>
  1235. BOOST_QVM_INLINE_TRIVIAL
  1236. typename enable_if_c<
  1237. is_vec<V>::value && vec_traits<V>::dim>=1,
  1238. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > const &>::type
  1239. _1X0( V const & a )
  1240. {
  1241. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
  1242. }
  1243. template <class S>
  1244. BOOST_QVM_INLINE_TRIVIAL
  1245. typename enable_if_c<
  1246. is_scalar<S>::value,
  1247. qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > const &>::type
  1248. _1X0( S const & a )
  1249. {
  1250. return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
  1251. }
  1252. template <class V>
  1253. BOOST_QVM_INLINE_TRIVIAL
  1254. typename enable_if_c<
  1255. is_vec<V>::value && vec_traits<V>::dim>=1,
  1256. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > &>::type
  1257. _1X0( V & a )
  1258. {
  1259. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > &>(a);
  1260. }
  1261. template <class S>
  1262. BOOST_QVM_INLINE_TRIVIAL
  1263. typename enable_if_c<
  1264. is_scalar<S>::value,
  1265. qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > &>::type
  1266. _1X0( S & a )
  1267. {
  1268. return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > &>(a);
  1269. }
  1270. template <class V>
  1271. BOOST_QVM_INLINE_TRIVIAL
  1272. typename enable_if_c<
  1273. is_vec<V>::value && vec_traits<V>::dim>=1,
  1274. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > const &>::type
  1275. _0X0( V const & a )
  1276. {
  1277. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
  1278. }
  1279. template <class S>
  1280. BOOST_QVM_INLINE_TRIVIAL
  1281. typename enable_if_c<
  1282. is_scalar<S>::value,
  1283. qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > const &>::type
  1284. _0X0( S const & a )
  1285. {
  1286. return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
  1287. }
  1288. template <class V>
  1289. BOOST_QVM_INLINE_TRIVIAL
  1290. typename enable_if_c<
  1291. is_vec<V>::value && vec_traits<V>::dim>=1,
  1292. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > &>::type
  1293. _0X0( V & a )
  1294. {
  1295. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > &>(a);
  1296. }
  1297. template <class S>
  1298. BOOST_QVM_INLINE_TRIVIAL
  1299. typename enable_if_c<
  1300. is_scalar<S>::value,
  1301. qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > &>::type
  1302. _0X0( S & a )
  1303. {
  1304. return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > &>(a);
  1305. }
  1306. template <class V>
  1307. BOOST_QVM_INLINE_TRIVIAL
  1308. typename enable_if_c<
  1309. is_vec<V>::value && vec_traits<V>::dim>=4,
  1310. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > const &>::type
  1311. WX0( V const & a )
  1312. {
  1313. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
  1314. }
  1315. template <class V>
  1316. BOOST_QVM_INLINE_TRIVIAL
  1317. typename enable_if_c<
  1318. is_vec<V>::value && vec_traits<V>::dim>=4,
  1319. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > &>::type
  1320. WX0( V & a )
  1321. {
  1322. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > &>(a);
  1323. }
  1324. template <class V>
  1325. BOOST_QVM_INLINE_TRIVIAL
  1326. typename enable_if_c<
  1327. is_vec<V>::value && vec_traits<V>::dim>=3,
  1328. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > const &>::type
  1329. ZX0( V const & a )
  1330. {
  1331. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
  1332. }
  1333. template <class V>
  1334. BOOST_QVM_INLINE_TRIVIAL
  1335. typename enable_if_c<
  1336. is_vec<V>::value && vec_traits<V>::dim>=3,
  1337. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > &>::type
  1338. ZX0( V & a )
  1339. {
  1340. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > &>(a);
  1341. }
  1342. template <class V>
  1343. BOOST_QVM_INLINE_TRIVIAL
  1344. typename enable_if_c<
  1345. is_vec<V>::value && vec_traits<V>::dim>=2,
  1346. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > const &>::type
  1347. YX0( V const & a )
  1348. {
  1349. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
  1350. }
  1351. template <class V>
  1352. BOOST_QVM_INLINE_TRIVIAL
  1353. typename enable_if_c<
  1354. is_vec<V>::value && vec_traits<V>::dim>=2,
  1355. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > &>::type
  1356. YX0( V & a )
  1357. {
  1358. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > &>(a);
  1359. }
  1360. template <class V>
  1361. BOOST_QVM_INLINE_TRIVIAL
  1362. typename enable_if_c<
  1363. is_vec<V>::value && vec_traits<V>::dim>=1,
  1364. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > const &>::type
  1365. XX0( V const & a )
  1366. {
  1367. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
  1368. }
  1369. template <class S>
  1370. BOOST_QVM_INLINE_TRIVIAL
  1371. typename enable_if_c<
  1372. is_scalar<S>::value,
  1373. qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > const &>::type
  1374. XX0( S const & a )
  1375. {
  1376. return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > const &>(a);
  1377. }
  1378. template <class V>
  1379. BOOST_QVM_INLINE_TRIVIAL
  1380. typename enable_if_c<
  1381. is_vec<V>::value && vec_traits<V>::dim>=1,
  1382. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > &>::type
  1383. XX0( V & a )
  1384. {
  1385. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > &>(a);
  1386. }
  1387. template <class S>
  1388. BOOST_QVM_INLINE_TRIVIAL
  1389. typename enable_if_c<
  1390. is_scalar<S>::value,
  1391. qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > &>::type
  1392. XX0( S & a )
  1393. {
  1394. return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1 > > > > &>(a);
  1395. }
  1396. template <class V>
  1397. BOOST_QVM_INLINE_TRIVIAL
  1398. typename enable_if_c<
  1399. is_vec<V>::value && vec_traits<V>::dim>=4,
  1400. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3 > > > > const &>::type
  1401. _11W( V const & a )
  1402. {
  1403. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3 > > > > const &>(a);
  1404. }
  1405. template <class V>
  1406. BOOST_QVM_INLINE_TRIVIAL
  1407. typename enable_if_c<
  1408. is_vec<V>::value && vec_traits<V>::dim>=4,
  1409. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3 > > > > &>::type
  1410. _11W( V & a )
  1411. {
  1412. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3 > > > > &>(a);
  1413. }
  1414. template <class V>
  1415. BOOST_QVM_INLINE_TRIVIAL
  1416. typename enable_if_c<
  1417. is_vec<V>::value && vec_traits<V>::dim>=4,
  1418. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3 > > > > const &>::type
  1419. _01W( V const & a )
  1420. {
  1421. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3 > > > > const &>(a);
  1422. }
  1423. template <class V>
  1424. BOOST_QVM_INLINE_TRIVIAL
  1425. typename enable_if_c<
  1426. is_vec<V>::value && vec_traits<V>::dim>=4,
  1427. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3 > > > > &>::type
  1428. _01W( V & a )
  1429. {
  1430. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3 > > > > &>(a);
  1431. }
  1432. template <class V>
  1433. BOOST_QVM_INLINE_TRIVIAL
  1434. typename enable_if_c<
  1435. is_vec<V>::value && vec_traits<V>::dim>=4,
  1436. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3 > > > > const &>::type
  1437. W1W( V const & a )
  1438. {
  1439. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3 > > > > const &>(a);
  1440. }
  1441. template <class V>
  1442. BOOST_QVM_INLINE_TRIVIAL
  1443. typename enable_if_c<
  1444. is_vec<V>::value && vec_traits<V>::dim>=4,
  1445. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3 > > > > &>::type
  1446. W1W( V & a )
  1447. {
  1448. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3 > > > > &>(a);
  1449. }
  1450. template <class V>
  1451. BOOST_QVM_INLINE_TRIVIAL
  1452. typename enable_if_c<
  1453. is_vec<V>::value && vec_traits<V>::dim>=4,
  1454. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3 > > > > const &>::type
  1455. Z1W( V const & a )
  1456. {
  1457. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3 > > > > const &>(a);
  1458. }
  1459. template <class V>
  1460. BOOST_QVM_INLINE_TRIVIAL
  1461. typename enable_if_c<
  1462. is_vec<V>::value && vec_traits<V>::dim>=4,
  1463. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3 > > > > &>::type
  1464. Z1W( V & a )
  1465. {
  1466. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3 > > > > &>(a);
  1467. }
  1468. template <class V>
  1469. BOOST_QVM_INLINE_TRIVIAL
  1470. typename enable_if_c<
  1471. is_vec<V>::value && vec_traits<V>::dim>=4,
  1472. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3 > > > > const &>::type
  1473. Y1W( V const & a )
  1474. {
  1475. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3 > > > > const &>(a);
  1476. }
  1477. template <class V>
  1478. BOOST_QVM_INLINE_TRIVIAL
  1479. typename enable_if_c<
  1480. is_vec<V>::value && vec_traits<V>::dim>=4,
  1481. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3 > > > > &>::type
  1482. Y1W( V & a )
  1483. {
  1484. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3 > > > > &>(a);
  1485. }
  1486. template <class V>
  1487. BOOST_QVM_INLINE_TRIVIAL
  1488. typename enable_if_c<
  1489. is_vec<V>::value && vec_traits<V>::dim>=4,
  1490. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3 > > > > const &>::type
  1491. X1W( V const & a )
  1492. {
  1493. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3 > > > > const &>(a);
  1494. }
  1495. template <class V>
  1496. BOOST_QVM_INLINE_TRIVIAL
  1497. typename enable_if_c<
  1498. is_vec<V>::value && vec_traits<V>::dim>=4,
  1499. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3 > > > > &>::type
  1500. X1W( V & a )
  1501. {
  1502. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3 > > > > &>(a);
  1503. }
  1504. template <class V>
  1505. BOOST_QVM_INLINE_TRIVIAL
  1506. typename enable_if_c<
  1507. is_vec<V>::value && vec_traits<V>::dim>=4,
  1508. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3 > > > > const &>::type
  1509. _10W( V const & a )
  1510. {
  1511. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3 > > > > const &>(a);
  1512. }
  1513. template <class V>
  1514. BOOST_QVM_INLINE_TRIVIAL
  1515. typename enable_if_c<
  1516. is_vec<V>::value && vec_traits<V>::dim>=4,
  1517. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3 > > > > &>::type
  1518. _10W( V & a )
  1519. {
  1520. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3 > > > > &>(a);
  1521. }
  1522. template <class V>
  1523. BOOST_QVM_INLINE_TRIVIAL
  1524. typename enable_if_c<
  1525. is_vec<V>::value && vec_traits<V>::dim>=4,
  1526. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3 > > > > const &>::type
  1527. _00W( V const & a )
  1528. {
  1529. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3 > > > > const &>(a);
  1530. }
  1531. template <class V>
  1532. BOOST_QVM_INLINE_TRIVIAL
  1533. typename enable_if_c<
  1534. is_vec<V>::value && vec_traits<V>::dim>=4,
  1535. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3 > > > > &>::type
  1536. _00W( V & a )
  1537. {
  1538. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3 > > > > &>(a);
  1539. }
  1540. template <class V>
  1541. BOOST_QVM_INLINE_TRIVIAL
  1542. typename enable_if_c<
  1543. is_vec<V>::value && vec_traits<V>::dim>=4,
  1544. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3 > > > > const &>::type
  1545. W0W( V const & a )
  1546. {
  1547. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3 > > > > const &>(a);
  1548. }
  1549. template <class V>
  1550. BOOST_QVM_INLINE_TRIVIAL
  1551. typename enable_if_c<
  1552. is_vec<V>::value && vec_traits<V>::dim>=4,
  1553. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3 > > > > &>::type
  1554. W0W( V & a )
  1555. {
  1556. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3 > > > > &>(a);
  1557. }
  1558. template <class V>
  1559. BOOST_QVM_INLINE_TRIVIAL
  1560. typename enable_if_c<
  1561. is_vec<V>::value && vec_traits<V>::dim>=4,
  1562. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3 > > > > const &>::type
  1563. Z0W( V const & a )
  1564. {
  1565. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3 > > > > const &>(a);
  1566. }
  1567. template <class V>
  1568. BOOST_QVM_INLINE_TRIVIAL
  1569. typename enable_if_c<
  1570. is_vec<V>::value && vec_traits<V>::dim>=4,
  1571. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3 > > > > &>::type
  1572. Z0W( V & a )
  1573. {
  1574. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3 > > > > &>(a);
  1575. }
  1576. template <class V>
  1577. BOOST_QVM_INLINE_TRIVIAL
  1578. typename enable_if_c<
  1579. is_vec<V>::value && vec_traits<V>::dim>=4,
  1580. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3 > > > > const &>::type
  1581. Y0W( V const & a )
  1582. {
  1583. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3 > > > > const &>(a);
  1584. }
  1585. template <class V>
  1586. BOOST_QVM_INLINE_TRIVIAL
  1587. typename enable_if_c<
  1588. is_vec<V>::value && vec_traits<V>::dim>=4,
  1589. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3 > > > > &>::type
  1590. Y0W( V & a )
  1591. {
  1592. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3 > > > > &>(a);
  1593. }
  1594. template <class V>
  1595. BOOST_QVM_INLINE_TRIVIAL
  1596. typename enable_if_c<
  1597. is_vec<V>::value && vec_traits<V>::dim>=4,
  1598. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3 > > > > const &>::type
  1599. X0W( V const & a )
  1600. {
  1601. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3 > > > > const &>(a);
  1602. }
  1603. template <class V>
  1604. BOOST_QVM_INLINE_TRIVIAL
  1605. typename enable_if_c<
  1606. is_vec<V>::value && vec_traits<V>::dim>=4,
  1607. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3 > > > > &>::type
  1608. X0W( V & a )
  1609. {
  1610. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3 > > > > &>(a);
  1611. }
  1612. template <class V>
  1613. BOOST_QVM_INLINE_TRIVIAL
  1614. typename enable_if_c<
  1615. is_vec<V>::value && vec_traits<V>::dim>=4,
  1616. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3 > > > > const &>::type
  1617. _1WW( V const & a )
  1618. {
  1619. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3 > > > > const &>(a);
  1620. }
  1621. template <class V>
  1622. BOOST_QVM_INLINE_TRIVIAL
  1623. typename enable_if_c<
  1624. is_vec<V>::value && vec_traits<V>::dim>=4,
  1625. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3 > > > > &>::type
  1626. _1WW( V & a )
  1627. {
  1628. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3 > > > > &>(a);
  1629. }
  1630. template <class V>
  1631. BOOST_QVM_INLINE_TRIVIAL
  1632. typename enable_if_c<
  1633. is_vec<V>::value && vec_traits<V>::dim>=4,
  1634. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3 > > > > const &>::type
  1635. _0WW( V const & a )
  1636. {
  1637. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3 > > > > const &>(a);
  1638. }
  1639. template <class V>
  1640. BOOST_QVM_INLINE_TRIVIAL
  1641. typename enable_if_c<
  1642. is_vec<V>::value && vec_traits<V>::dim>=4,
  1643. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3 > > > > &>::type
  1644. _0WW( V & a )
  1645. {
  1646. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3 > > > > &>(a);
  1647. }
  1648. template <class V>
  1649. BOOST_QVM_INLINE_TRIVIAL
  1650. typename enable_if_c<
  1651. is_vec<V>::value && vec_traits<V>::dim>=4,
  1652. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3 > > > > const &>::type
  1653. WWW( V const & a )
  1654. {
  1655. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3 > > > > const &>(a);
  1656. }
  1657. template <class V>
  1658. BOOST_QVM_INLINE_TRIVIAL
  1659. typename enable_if_c<
  1660. is_vec<V>::value && vec_traits<V>::dim>=4,
  1661. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3 > > > > &>::type
  1662. WWW( V & a )
  1663. {
  1664. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3 > > > > &>(a);
  1665. }
  1666. template <class V>
  1667. BOOST_QVM_INLINE_TRIVIAL
  1668. typename enable_if_c<
  1669. is_vec<V>::value && vec_traits<V>::dim>=4,
  1670. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3 > > > > const &>::type
  1671. ZWW( V const & a )
  1672. {
  1673. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3 > > > > const &>(a);
  1674. }
  1675. template <class V>
  1676. BOOST_QVM_INLINE_TRIVIAL
  1677. typename enable_if_c<
  1678. is_vec<V>::value && vec_traits<V>::dim>=4,
  1679. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3 > > > > &>::type
  1680. ZWW( V & a )
  1681. {
  1682. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3 > > > > &>(a);
  1683. }
  1684. template <class V>
  1685. BOOST_QVM_INLINE_TRIVIAL
  1686. typename enable_if_c<
  1687. is_vec<V>::value && vec_traits<V>::dim>=4,
  1688. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3 > > > > const &>::type
  1689. YWW( V const & a )
  1690. {
  1691. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3 > > > > const &>(a);
  1692. }
  1693. template <class V>
  1694. BOOST_QVM_INLINE_TRIVIAL
  1695. typename enable_if_c<
  1696. is_vec<V>::value && vec_traits<V>::dim>=4,
  1697. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3 > > > > &>::type
  1698. YWW( V & a )
  1699. {
  1700. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3 > > > > &>(a);
  1701. }
  1702. template <class V>
  1703. BOOST_QVM_INLINE_TRIVIAL
  1704. typename enable_if_c<
  1705. is_vec<V>::value && vec_traits<V>::dim>=4,
  1706. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3 > > > > const &>::type
  1707. XWW( V const & a )
  1708. {
  1709. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3 > > > > const &>(a);
  1710. }
  1711. template <class V>
  1712. BOOST_QVM_INLINE_TRIVIAL
  1713. typename enable_if_c<
  1714. is_vec<V>::value && vec_traits<V>::dim>=4,
  1715. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3 > > > > &>::type
  1716. XWW( V & a )
  1717. {
  1718. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3 > > > > &>(a);
  1719. }
  1720. template <class V>
  1721. BOOST_QVM_INLINE_TRIVIAL
  1722. typename enable_if_c<
  1723. is_vec<V>::value && vec_traits<V>::dim>=4,
  1724. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3 > > > > const &>::type
  1725. _1ZW( V const & a )
  1726. {
  1727. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3 > > > > const &>(a);
  1728. }
  1729. template <class V>
  1730. BOOST_QVM_INLINE_TRIVIAL
  1731. typename enable_if_c<
  1732. is_vec<V>::value && vec_traits<V>::dim>=4,
  1733. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3 > > > > &>::type
  1734. _1ZW( V & a )
  1735. {
  1736. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3 > > > > &>(a);
  1737. }
  1738. template <class V>
  1739. BOOST_QVM_INLINE_TRIVIAL
  1740. typename enable_if_c<
  1741. is_vec<V>::value && vec_traits<V>::dim>=4,
  1742. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3 > > > > const &>::type
  1743. _0ZW( V const & a )
  1744. {
  1745. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3 > > > > const &>(a);
  1746. }
  1747. template <class V>
  1748. BOOST_QVM_INLINE_TRIVIAL
  1749. typename enable_if_c<
  1750. is_vec<V>::value && vec_traits<V>::dim>=4,
  1751. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3 > > > > &>::type
  1752. _0ZW( V & a )
  1753. {
  1754. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3 > > > > &>(a);
  1755. }
  1756. template <class V>
  1757. BOOST_QVM_INLINE_TRIVIAL
  1758. typename enable_if_c<
  1759. is_vec<V>::value && vec_traits<V>::dim>=4,
  1760. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3 > > > > const &>::type
  1761. WZW( V const & a )
  1762. {
  1763. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3 > > > > const &>(a);
  1764. }
  1765. template <class V>
  1766. BOOST_QVM_INLINE_TRIVIAL
  1767. typename enable_if_c<
  1768. is_vec<V>::value && vec_traits<V>::dim>=4,
  1769. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3 > > > > &>::type
  1770. WZW( V & a )
  1771. {
  1772. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3 > > > > &>(a);
  1773. }
  1774. template <class V>
  1775. BOOST_QVM_INLINE_TRIVIAL
  1776. typename enable_if_c<
  1777. is_vec<V>::value && vec_traits<V>::dim>=4,
  1778. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3 > > > > const &>::type
  1779. ZZW( V const & a )
  1780. {
  1781. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3 > > > > const &>(a);
  1782. }
  1783. template <class V>
  1784. BOOST_QVM_INLINE_TRIVIAL
  1785. typename enable_if_c<
  1786. is_vec<V>::value && vec_traits<V>::dim>=4,
  1787. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3 > > > > &>::type
  1788. ZZW( V & a )
  1789. {
  1790. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3 > > > > &>(a);
  1791. }
  1792. template <class V>
  1793. BOOST_QVM_INLINE_TRIVIAL
  1794. typename enable_if_c<
  1795. is_vec<V>::value && vec_traits<V>::dim>=4,
  1796. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3 > > > > const &>::type
  1797. YZW( V const & a )
  1798. {
  1799. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3 > > > > const &>(a);
  1800. }
  1801. template <class V>
  1802. BOOST_QVM_INLINE_TRIVIAL
  1803. typename enable_if_c<
  1804. is_vec<V>::value && vec_traits<V>::dim>=4,
  1805. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3 > > > > &>::type
  1806. YZW( V & a )
  1807. {
  1808. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3 > > > > &>(a);
  1809. }
  1810. template <class V>
  1811. BOOST_QVM_INLINE_TRIVIAL
  1812. typename enable_if_c<
  1813. is_vec<V>::value && vec_traits<V>::dim>=4,
  1814. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3 > > > > const &>::type
  1815. XZW( V const & a )
  1816. {
  1817. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3 > > > > const &>(a);
  1818. }
  1819. template <class V>
  1820. BOOST_QVM_INLINE_TRIVIAL
  1821. typename enable_if_c<
  1822. is_vec<V>::value && vec_traits<V>::dim>=4,
  1823. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3 > > > > &>::type
  1824. XZW( V & a )
  1825. {
  1826. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3 > > > > &>(a);
  1827. }
  1828. template <class V>
  1829. BOOST_QVM_INLINE_TRIVIAL
  1830. typename enable_if_c<
  1831. is_vec<V>::value && vec_traits<V>::dim>=4,
  1832. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3 > > > > const &>::type
  1833. _1YW( V const & a )
  1834. {
  1835. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3 > > > > const &>(a);
  1836. }
  1837. template <class V>
  1838. BOOST_QVM_INLINE_TRIVIAL
  1839. typename enable_if_c<
  1840. is_vec<V>::value && vec_traits<V>::dim>=4,
  1841. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3 > > > > &>::type
  1842. _1YW( V & a )
  1843. {
  1844. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3 > > > > &>(a);
  1845. }
  1846. template <class V>
  1847. BOOST_QVM_INLINE_TRIVIAL
  1848. typename enable_if_c<
  1849. is_vec<V>::value && vec_traits<V>::dim>=4,
  1850. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3 > > > > const &>::type
  1851. _0YW( V const & a )
  1852. {
  1853. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3 > > > > const &>(a);
  1854. }
  1855. template <class V>
  1856. BOOST_QVM_INLINE_TRIVIAL
  1857. typename enable_if_c<
  1858. is_vec<V>::value && vec_traits<V>::dim>=4,
  1859. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3 > > > > &>::type
  1860. _0YW( V & a )
  1861. {
  1862. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3 > > > > &>(a);
  1863. }
  1864. template <class V>
  1865. BOOST_QVM_INLINE_TRIVIAL
  1866. typename enable_if_c<
  1867. is_vec<V>::value && vec_traits<V>::dim>=4,
  1868. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3 > > > > const &>::type
  1869. WYW( V const & a )
  1870. {
  1871. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3 > > > > const &>(a);
  1872. }
  1873. template <class V>
  1874. BOOST_QVM_INLINE_TRIVIAL
  1875. typename enable_if_c<
  1876. is_vec<V>::value && vec_traits<V>::dim>=4,
  1877. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3 > > > > &>::type
  1878. WYW( V & a )
  1879. {
  1880. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3 > > > > &>(a);
  1881. }
  1882. template <class V>
  1883. BOOST_QVM_INLINE_TRIVIAL
  1884. typename enable_if_c<
  1885. is_vec<V>::value && vec_traits<V>::dim>=4,
  1886. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3 > > > > const &>::type
  1887. ZYW( V const & a )
  1888. {
  1889. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3 > > > > const &>(a);
  1890. }
  1891. template <class V>
  1892. BOOST_QVM_INLINE_TRIVIAL
  1893. typename enable_if_c<
  1894. is_vec<V>::value && vec_traits<V>::dim>=4,
  1895. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3 > > > > &>::type
  1896. ZYW( V & a )
  1897. {
  1898. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3 > > > > &>(a);
  1899. }
  1900. template <class V>
  1901. BOOST_QVM_INLINE_TRIVIAL
  1902. typename enable_if_c<
  1903. is_vec<V>::value && vec_traits<V>::dim>=4,
  1904. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3 > > > > const &>::type
  1905. YYW( V const & a )
  1906. {
  1907. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3 > > > > const &>(a);
  1908. }
  1909. template <class V>
  1910. BOOST_QVM_INLINE_TRIVIAL
  1911. typename enable_if_c<
  1912. is_vec<V>::value && vec_traits<V>::dim>=4,
  1913. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3 > > > > &>::type
  1914. YYW( V & a )
  1915. {
  1916. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3 > > > > &>(a);
  1917. }
  1918. template <class V>
  1919. BOOST_QVM_INLINE_TRIVIAL
  1920. typename enable_if_c<
  1921. is_vec<V>::value && vec_traits<V>::dim>=4,
  1922. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3 > > > > const &>::type
  1923. XYW( V const & a )
  1924. {
  1925. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3 > > > > const &>(a);
  1926. }
  1927. template <class V>
  1928. BOOST_QVM_INLINE_TRIVIAL
  1929. typename enable_if_c<
  1930. is_vec<V>::value && vec_traits<V>::dim>=4,
  1931. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3 > > > > &>::type
  1932. XYW( V & a )
  1933. {
  1934. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3 > > > > &>(a);
  1935. }
  1936. template <class V>
  1937. BOOST_QVM_INLINE_TRIVIAL
  1938. typename enable_if_c<
  1939. is_vec<V>::value && vec_traits<V>::dim>=4,
  1940. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3 > > > > const &>::type
  1941. _1XW( V const & a )
  1942. {
  1943. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3 > > > > const &>(a);
  1944. }
  1945. template <class V>
  1946. BOOST_QVM_INLINE_TRIVIAL
  1947. typename enable_if_c<
  1948. is_vec<V>::value && vec_traits<V>::dim>=4,
  1949. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3 > > > > &>::type
  1950. _1XW( V & a )
  1951. {
  1952. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3 > > > > &>(a);
  1953. }
  1954. template <class V>
  1955. BOOST_QVM_INLINE_TRIVIAL
  1956. typename enable_if_c<
  1957. is_vec<V>::value && vec_traits<V>::dim>=4,
  1958. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3 > > > > const &>::type
  1959. _0XW( V const & a )
  1960. {
  1961. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3 > > > > const &>(a);
  1962. }
  1963. template <class V>
  1964. BOOST_QVM_INLINE_TRIVIAL
  1965. typename enable_if_c<
  1966. is_vec<V>::value && vec_traits<V>::dim>=4,
  1967. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3 > > > > &>::type
  1968. _0XW( V & a )
  1969. {
  1970. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3 > > > > &>(a);
  1971. }
  1972. template <class V>
  1973. BOOST_QVM_INLINE_TRIVIAL
  1974. typename enable_if_c<
  1975. is_vec<V>::value && vec_traits<V>::dim>=4,
  1976. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3 > > > > const &>::type
  1977. WXW( V const & a )
  1978. {
  1979. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3 > > > > const &>(a);
  1980. }
  1981. template <class V>
  1982. BOOST_QVM_INLINE_TRIVIAL
  1983. typename enable_if_c<
  1984. is_vec<V>::value && vec_traits<V>::dim>=4,
  1985. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3 > > > > &>::type
  1986. WXW( V & a )
  1987. {
  1988. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3 > > > > &>(a);
  1989. }
  1990. template <class V>
  1991. BOOST_QVM_INLINE_TRIVIAL
  1992. typename enable_if_c<
  1993. is_vec<V>::value && vec_traits<V>::dim>=4,
  1994. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3 > > > > const &>::type
  1995. ZXW( V const & a )
  1996. {
  1997. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3 > > > > const &>(a);
  1998. }
  1999. template <class V>
  2000. BOOST_QVM_INLINE_TRIVIAL
  2001. typename enable_if_c<
  2002. is_vec<V>::value && vec_traits<V>::dim>=4,
  2003. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3 > > > > &>::type
  2004. ZXW( V & a )
  2005. {
  2006. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3 > > > > &>(a);
  2007. }
  2008. template <class V>
  2009. BOOST_QVM_INLINE_TRIVIAL
  2010. typename enable_if_c<
  2011. is_vec<V>::value && vec_traits<V>::dim>=4,
  2012. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3 > > > > const &>::type
  2013. YXW( V const & a )
  2014. {
  2015. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3 > > > > const &>(a);
  2016. }
  2017. template <class V>
  2018. BOOST_QVM_INLINE_TRIVIAL
  2019. typename enable_if_c<
  2020. is_vec<V>::value && vec_traits<V>::dim>=4,
  2021. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3 > > > > &>::type
  2022. YXW( V & a )
  2023. {
  2024. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3 > > > > &>(a);
  2025. }
  2026. template <class V>
  2027. BOOST_QVM_INLINE_TRIVIAL
  2028. typename enable_if_c<
  2029. is_vec<V>::value && vec_traits<V>::dim>=4,
  2030. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3 > > > > const &>::type
  2031. XXW( V const & a )
  2032. {
  2033. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3 > > > > const &>(a);
  2034. }
  2035. template <class V>
  2036. BOOST_QVM_INLINE_TRIVIAL
  2037. typename enable_if_c<
  2038. is_vec<V>::value && vec_traits<V>::dim>=4,
  2039. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3 > > > > &>::type
  2040. XXW( V & a )
  2041. {
  2042. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3 > > > > &>(a);
  2043. }
  2044. template <class V>
  2045. BOOST_QVM_INLINE_TRIVIAL
  2046. typename enable_if_c<
  2047. is_vec<V>::value && vec_traits<V>::dim>=3,
  2048. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2 > > > > const &>::type
  2049. _11Z( V const & a )
  2050. {
  2051. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2 > > > > const &>(a);
  2052. }
  2053. template <class V>
  2054. BOOST_QVM_INLINE_TRIVIAL
  2055. typename enable_if_c<
  2056. is_vec<V>::value && vec_traits<V>::dim>=3,
  2057. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2 > > > > &>::type
  2058. _11Z( V & a )
  2059. {
  2060. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2 > > > > &>(a);
  2061. }
  2062. template <class V>
  2063. BOOST_QVM_INLINE_TRIVIAL
  2064. typename enable_if_c<
  2065. is_vec<V>::value && vec_traits<V>::dim>=3,
  2066. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2 > > > > const &>::type
  2067. _01Z( V const & a )
  2068. {
  2069. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2 > > > > const &>(a);
  2070. }
  2071. template <class V>
  2072. BOOST_QVM_INLINE_TRIVIAL
  2073. typename enable_if_c<
  2074. is_vec<V>::value && vec_traits<V>::dim>=3,
  2075. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2 > > > > &>::type
  2076. _01Z( V & a )
  2077. {
  2078. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2 > > > > &>(a);
  2079. }
  2080. template <class V>
  2081. BOOST_QVM_INLINE_TRIVIAL
  2082. typename enable_if_c<
  2083. is_vec<V>::value && vec_traits<V>::dim>=4,
  2084. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2 > > > > const &>::type
  2085. W1Z( V const & a )
  2086. {
  2087. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2 > > > > const &>(a);
  2088. }
  2089. template <class V>
  2090. BOOST_QVM_INLINE_TRIVIAL
  2091. typename enable_if_c<
  2092. is_vec<V>::value && vec_traits<V>::dim>=4,
  2093. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2 > > > > &>::type
  2094. W1Z( V & a )
  2095. {
  2096. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2 > > > > &>(a);
  2097. }
  2098. template <class V>
  2099. BOOST_QVM_INLINE_TRIVIAL
  2100. typename enable_if_c<
  2101. is_vec<V>::value && vec_traits<V>::dim>=3,
  2102. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2 > > > > const &>::type
  2103. Z1Z( V const & a )
  2104. {
  2105. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2 > > > > const &>(a);
  2106. }
  2107. template <class V>
  2108. BOOST_QVM_INLINE_TRIVIAL
  2109. typename enable_if_c<
  2110. is_vec<V>::value && vec_traits<V>::dim>=3,
  2111. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2 > > > > &>::type
  2112. Z1Z( V & a )
  2113. {
  2114. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2 > > > > &>(a);
  2115. }
  2116. template <class V>
  2117. BOOST_QVM_INLINE_TRIVIAL
  2118. typename enable_if_c<
  2119. is_vec<V>::value && vec_traits<V>::dim>=3,
  2120. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2 > > > > const &>::type
  2121. Y1Z( V const & a )
  2122. {
  2123. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2 > > > > const &>(a);
  2124. }
  2125. template <class V>
  2126. BOOST_QVM_INLINE_TRIVIAL
  2127. typename enable_if_c<
  2128. is_vec<V>::value && vec_traits<V>::dim>=3,
  2129. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2 > > > > &>::type
  2130. Y1Z( V & a )
  2131. {
  2132. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2 > > > > &>(a);
  2133. }
  2134. template <class V>
  2135. BOOST_QVM_INLINE_TRIVIAL
  2136. typename enable_if_c<
  2137. is_vec<V>::value && vec_traits<V>::dim>=3,
  2138. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2 > > > > const &>::type
  2139. X1Z( V const & a )
  2140. {
  2141. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2 > > > > const &>(a);
  2142. }
  2143. template <class V>
  2144. BOOST_QVM_INLINE_TRIVIAL
  2145. typename enable_if_c<
  2146. is_vec<V>::value && vec_traits<V>::dim>=3,
  2147. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2 > > > > &>::type
  2148. X1Z( V & a )
  2149. {
  2150. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2 > > > > &>(a);
  2151. }
  2152. template <class V>
  2153. BOOST_QVM_INLINE_TRIVIAL
  2154. typename enable_if_c<
  2155. is_vec<V>::value && vec_traits<V>::dim>=3,
  2156. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2 > > > > const &>::type
  2157. _10Z( V const & a )
  2158. {
  2159. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2 > > > > const &>(a);
  2160. }
  2161. template <class V>
  2162. BOOST_QVM_INLINE_TRIVIAL
  2163. typename enable_if_c<
  2164. is_vec<V>::value && vec_traits<V>::dim>=3,
  2165. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2 > > > > &>::type
  2166. _10Z( V & a )
  2167. {
  2168. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2 > > > > &>(a);
  2169. }
  2170. template <class V>
  2171. BOOST_QVM_INLINE_TRIVIAL
  2172. typename enable_if_c<
  2173. is_vec<V>::value && vec_traits<V>::dim>=3,
  2174. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2 > > > > const &>::type
  2175. _00Z( V const & a )
  2176. {
  2177. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2 > > > > const &>(a);
  2178. }
  2179. template <class V>
  2180. BOOST_QVM_INLINE_TRIVIAL
  2181. typename enable_if_c<
  2182. is_vec<V>::value && vec_traits<V>::dim>=3,
  2183. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2 > > > > &>::type
  2184. _00Z( V & a )
  2185. {
  2186. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2 > > > > &>(a);
  2187. }
  2188. template <class V>
  2189. BOOST_QVM_INLINE_TRIVIAL
  2190. typename enable_if_c<
  2191. is_vec<V>::value && vec_traits<V>::dim>=4,
  2192. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2 > > > > const &>::type
  2193. W0Z( V const & a )
  2194. {
  2195. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2 > > > > const &>(a);
  2196. }
  2197. template <class V>
  2198. BOOST_QVM_INLINE_TRIVIAL
  2199. typename enable_if_c<
  2200. is_vec<V>::value && vec_traits<V>::dim>=4,
  2201. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2 > > > > &>::type
  2202. W0Z( V & a )
  2203. {
  2204. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2 > > > > &>(a);
  2205. }
  2206. template <class V>
  2207. BOOST_QVM_INLINE_TRIVIAL
  2208. typename enable_if_c<
  2209. is_vec<V>::value && vec_traits<V>::dim>=3,
  2210. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2 > > > > const &>::type
  2211. Z0Z( V const & a )
  2212. {
  2213. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2 > > > > const &>(a);
  2214. }
  2215. template <class V>
  2216. BOOST_QVM_INLINE_TRIVIAL
  2217. typename enable_if_c<
  2218. is_vec<V>::value && vec_traits<V>::dim>=3,
  2219. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2 > > > > &>::type
  2220. Z0Z( V & a )
  2221. {
  2222. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2 > > > > &>(a);
  2223. }
  2224. template <class V>
  2225. BOOST_QVM_INLINE_TRIVIAL
  2226. typename enable_if_c<
  2227. is_vec<V>::value && vec_traits<V>::dim>=3,
  2228. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2 > > > > const &>::type
  2229. Y0Z( V const & a )
  2230. {
  2231. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2 > > > > const &>(a);
  2232. }
  2233. template <class V>
  2234. BOOST_QVM_INLINE_TRIVIAL
  2235. typename enable_if_c<
  2236. is_vec<V>::value && vec_traits<V>::dim>=3,
  2237. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2 > > > > &>::type
  2238. Y0Z( V & a )
  2239. {
  2240. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2 > > > > &>(a);
  2241. }
  2242. template <class V>
  2243. BOOST_QVM_INLINE_TRIVIAL
  2244. typename enable_if_c<
  2245. is_vec<V>::value && vec_traits<V>::dim>=3,
  2246. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2 > > > > const &>::type
  2247. X0Z( V const & a )
  2248. {
  2249. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2 > > > > const &>(a);
  2250. }
  2251. template <class V>
  2252. BOOST_QVM_INLINE_TRIVIAL
  2253. typename enable_if_c<
  2254. is_vec<V>::value && vec_traits<V>::dim>=3,
  2255. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2 > > > > &>::type
  2256. X0Z( V & a )
  2257. {
  2258. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2 > > > > &>(a);
  2259. }
  2260. template <class V>
  2261. BOOST_QVM_INLINE_TRIVIAL
  2262. typename enable_if_c<
  2263. is_vec<V>::value && vec_traits<V>::dim>=4,
  2264. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2 > > > > const &>::type
  2265. _1WZ( V const & a )
  2266. {
  2267. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2 > > > > const &>(a);
  2268. }
  2269. template <class V>
  2270. BOOST_QVM_INLINE_TRIVIAL
  2271. typename enable_if_c<
  2272. is_vec<V>::value && vec_traits<V>::dim>=4,
  2273. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2 > > > > &>::type
  2274. _1WZ( V & a )
  2275. {
  2276. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2 > > > > &>(a);
  2277. }
  2278. template <class V>
  2279. BOOST_QVM_INLINE_TRIVIAL
  2280. typename enable_if_c<
  2281. is_vec<V>::value && vec_traits<V>::dim>=4,
  2282. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2 > > > > const &>::type
  2283. _0WZ( V const & a )
  2284. {
  2285. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2 > > > > const &>(a);
  2286. }
  2287. template <class V>
  2288. BOOST_QVM_INLINE_TRIVIAL
  2289. typename enable_if_c<
  2290. is_vec<V>::value && vec_traits<V>::dim>=4,
  2291. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2 > > > > &>::type
  2292. _0WZ( V & a )
  2293. {
  2294. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2 > > > > &>(a);
  2295. }
  2296. template <class V>
  2297. BOOST_QVM_INLINE_TRIVIAL
  2298. typename enable_if_c<
  2299. is_vec<V>::value && vec_traits<V>::dim>=4,
  2300. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2 > > > > const &>::type
  2301. WWZ( V const & a )
  2302. {
  2303. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2 > > > > const &>(a);
  2304. }
  2305. template <class V>
  2306. BOOST_QVM_INLINE_TRIVIAL
  2307. typename enable_if_c<
  2308. is_vec<V>::value && vec_traits<V>::dim>=4,
  2309. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2 > > > > &>::type
  2310. WWZ( V & a )
  2311. {
  2312. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2 > > > > &>(a);
  2313. }
  2314. template <class V>
  2315. BOOST_QVM_INLINE_TRIVIAL
  2316. typename enable_if_c<
  2317. is_vec<V>::value && vec_traits<V>::dim>=4,
  2318. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2 > > > > const &>::type
  2319. ZWZ( V const & a )
  2320. {
  2321. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2 > > > > const &>(a);
  2322. }
  2323. template <class V>
  2324. BOOST_QVM_INLINE_TRIVIAL
  2325. typename enable_if_c<
  2326. is_vec<V>::value && vec_traits<V>::dim>=4,
  2327. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2 > > > > &>::type
  2328. ZWZ( V & a )
  2329. {
  2330. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2 > > > > &>(a);
  2331. }
  2332. template <class V>
  2333. BOOST_QVM_INLINE_TRIVIAL
  2334. typename enable_if_c<
  2335. is_vec<V>::value && vec_traits<V>::dim>=4,
  2336. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2 > > > > const &>::type
  2337. YWZ( V const & a )
  2338. {
  2339. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2 > > > > const &>(a);
  2340. }
  2341. template <class V>
  2342. BOOST_QVM_INLINE_TRIVIAL
  2343. typename enable_if_c<
  2344. is_vec<V>::value && vec_traits<V>::dim>=4,
  2345. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2 > > > > &>::type
  2346. YWZ( V & a )
  2347. {
  2348. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2 > > > > &>(a);
  2349. }
  2350. template <class V>
  2351. BOOST_QVM_INLINE_TRIVIAL
  2352. typename enable_if_c<
  2353. is_vec<V>::value && vec_traits<V>::dim>=4,
  2354. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2 > > > > const &>::type
  2355. XWZ( V const & a )
  2356. {
  2357. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2 > > > > const &>(a);
  2358. }
  2359. template <class V>
  2360. BOOST_QVM_INLINE_TRIVIAL
  2361. typename enable_if_c<
  2362. is_vec<V>::value && vec_traits<V>::dim>=4,
  2363. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2 > > > > &>::type
  2364. XWZ( V & a )
  2365. {
  2366. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2 > > > > &>(a);
  2367. }
  2368. template <class V>
  2369. BOOST_QVM_INLINE_TRIVIAL
  2370. typename enable_if_c<
  2371. is_vec<V>::value && vec_traits<V>::dim>=3,
  2372. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2 > > > > const &>::type
  2373. _1ZZ( V const & a )
  2374. {
  2375. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2 > > > > const &>(a);
  2376. }
  2377. template <class V>
  2378. BOOST_QVM_INLINE_TRIVIAL
  2379. typename enable_if_c<
  2380. is_vec<V>::value && vec_traits<V>::dim>=3,
  2381. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2 > > > > &>::type
  2382. _1ZZ( V & a )
  2383. {
  2384. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2 > > > > &>(a);
  2385. }
  2386. template <class V>
  2387. BOOST_QVM_INLINE_TRIVIAL
  2388. typename enable_if_c<
  2389. is_vec<V>::value && vec_traits<V>::dim>=3,
  2390. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2 > > > > const &>::type
  2391. _0ZZ( V const & a )
  2392. {
  2393. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2 > > > > const &>(a);
  2394. }
  2395. template <class V>
  2396. BOOST_QVM_INLINE_TRIVIAL
  2397. typename enable_if_c<
  2398. is_vec<V>::value && vec_traits<V>::dim>=3,
  2399. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2 > > > > &>::type
  2400. _0ZZ( V & a )
  2401. {
  2402. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2 > > > > &>(a);
  2403. }
  2404. template <class V>
  2405. BOOST_QVM_INLINE_TRIVIAL
  2406. typename enable_if_c<
  2407. is_vec<V>::value && vec_traits<V>::dim>=4,
  2408. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2 > > > > const &>::type
  2409. WZZ( V const & a )
  2410. {
  2411. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2 > > > > const &>(a);
  2412. }
  2413. template <class V>
  2414. BOOST_QVM_INLINE_TRIVIAL
  2415. typename enable_if_c<
  2416. is_vec<V>::value && vec_traits<V>::dim>=4,
  2417. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2 > > > > &>::type
  2418. WZZ( V & a )
  2419. {
  2420. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2 > > > > &>(a);
  2421. }
  2422. template <class V>
  2423. BOOST_QVM_INLINE_TRIVIAL
  2424. typename enable_if_c<
  2425. is_vec<V>::value && vec_traits<V>::dim>=3,
  2426. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2 > > > > const &>::type
  2427. ZZZ( V const & a )
  2428. {
  2429. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2 > > > > const &>(a);
  2430. }
  2431. template <class V>
  2432. BOOST_QVM_INLINE_TRIVIAL
  2433. typename enable_if_c<
  2434. is_vec<V>::value && vec_traits<V>::dim>=3,
  2435. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2 > > > > &>::type
  2436. ZZZ( V & a )
  2437. {
  2438. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2 > > > > &>(a);
  2439. }
  2440. template <class V>
  2441. BOOST_QVM_INLINE_TRIVIAL
  2442. typename enable_if_c<
  2443. is_vec<V>::value && vec_traits<V>::dim>=3,
  2444. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2 > > > > const &>::type
  2445. YZZ( V const & a )
  2446. {
  2447. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2 > > > > const &>(a);
  2448. }
  2449. template <class V>
  2450. BOOST_QVM_INLINE_TRIVIAL
  2451. typename enable_if_c<
  2452. is_vec<V>::value && vec_traits<V>::dim>=3,
  2453. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2 > > > > &>::type
  2454. YZZ( V & a )
  2455. {
  2456. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2 > > > > &>(a);
  2457. }
  2458. template <class V>
  2459. BOOST_QVM_INLINE_TRIVIAL
  2460. typename enable_if_c<
  2461. is_vec<V>::value && vec_traits<V>::dim>=3,
  2462. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2 > > > > const &>::type
  2463. XZZ( V const & a )
  2464. {
  2465. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2 > > > > const &>(a);
  2466. }
  2467. template <class V>
  2468. BOOST_QVM_INLINE_TRIVIAL
  2469. typename enable_if_c<
  2470. is_vec<V>::value && vec_traits<V>::dim>=3,
  2471. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2 > > > > &>::type
  2472. XZZ( V & a )
  2473. {
  2474. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2 > > > > &>(a);
  2475. }
  2476. template <class V>
  2477. BOOST_QVM_INLINE_TRIVIAL
  2478. typename enable_if_c<
  2479. is_vec<V>::value && vec_traits<V>::dim>=3,
  2480. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2 > > > > const &>::type
  2481. _1YZ( V const & a )
  2482. {
  2483. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2 > > > > const &>(a);
  2484. }
  2485. template <class V>
  2486. BOOST_QVM_INLINE_TRIVIAL
  2487. typename enable_if_c<
  2488. is_vec<V>::value && vec_traits<V>::dim>=3,
  2489. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2 > > > > &>::type
  2490. _1YZ( V & a )
  2491. {
  2492. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2 > > > > &>(a);
  2493. }
  2494. template <class V>
  2495. BOOST_QVM_INLINE_TRIVIAL
  2496. typename enable_if_c<
  2497. is_vec<V>::value && vec_traits<V>::dim>=3,
  2498. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2 > > > > const &>::type
  2499. _0YZ( V const & a )
  2500. {
  2501. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2 > > > > const &>(a);
  2502. }
  2503. template <class V>
  2504. BOOST_QVM_INLINE_TRIVIAL
  2505. typename enable_if_c<
  2506. is_vec<V>::value && vec_traits<V>::dim>=3,
  2507. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2 > > > > &>::type
  2508. _0YZ( V & a )
  2509. {
  2510. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2 > > > > &>(a);
  2511. }
  2512. template <class V>
  2513. BOOST_QVM_INLINE_TRIVIAL
  2514. typename enable_if_c<
  2515. is_vec<V>::value && vec_traits<V>::dim>=4,
  2516. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2 > > > > const &>::type
  2517. WYZ( V const & a )
  2518. {
  2519. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2 > > > > const &>(a);
  2520. }
  2521. template <class V>
  2522. BOOST_QVM_INLINE_TRIVIAL
  2523. typename enable_if_c<
  2524. is_vec<V>::value && vec_traits<V>::dim>=4,
  2525. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2 > > > > &>::type
  2526. WYZ( V & a )
  2527. {
  2528. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2 > > > > &>(a);
  2529. }
  2530. template <class V>
  2531. BOOST_QVM_INLINE_TRIVIAL
  2532. typename enable_if_c<
  2533. is_vec<V>::value && vec_traits<V>::dim>=3,
  2534. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2 > > > > const &>::type
  2535. ZYZ( V const & a )
  2536. {
  2537. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2 > > > > const &>(a);
  2538. }
  2539. template <class V>
  2540. BOOST_QVM_INLINE_TRIVIAL
  2541. typename enable_if_c<
  2542. is_vec<V>::value && vec_traits<V>::dim>=3,
  2543. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2 > > > > &>::type
  2544. ZYZ( V & a )
  2545. {
  2546. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2 > > > > &>(a);
  2547. }
  2548. template <class V>
  2549. BOOST_QVM_INLINE_TRIVIAL
  2550. typename enable_if_c<
  2551. is_vec<V>::value && vec_traits<V>::dim>=3,
  2552. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2 > > > > const &>::type
  2553. YYZ( V const & a )
  2554. {
  2555. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2 > > > > const &>(a);
  2556. }
  2557. template <class V>
  2558. BOOST_QVM_INLINE_TRIVIAL
  2559. typename enable_if_c<
  2560. is_vec<V>::value && vec_traits<V>::dim>=3,
  2561. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2 > > > > &>::type
  2562. YYZ( V & a )
  2563. {
  2564. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2 > > > > &>(a);
  2565. }
  2566. template <class V>
  2567. BOOST_QVM_INLINE_TRIVIAL
  2568. typename enable_if_c<
  2569. is_vec<V>::value && vec_traits<V>::dim>=3,
  2570. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2 > > > > const &>::type
  2571. XYZ( V const & a )
  2572. {
  2573. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2 > > > > const &>(a);
  2574. }
  2575. template <class V>
  2576. BOOST_QVM_INLINE_TRIVIAL
  2577. typename enable_if_c<
  2578. is_vec<V>::value && vec_traits<V>::dim>=3,
  2579. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2 > > > > &>::type
  2580. XYZ( V & a )
  2581. {
  2582. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2 > > > > &>(a);
  2583. }
  2584. template <class V>
  2585. BOOST_QVM_INLINE_TRIVIAL
  2586. typename enable_if_c<
  2587. is_vec<V>::value && vec_traits<V>::dim>=3,
  2588. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2 > > > > const &>::type
  2589. _1XZ( V const & a )
  2590. {
  2591. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2 > > > > const &>(a);
  2592. }
  2593. template <class V>
  2594. BOOST_QVM_INLINE_TRIVIAL
  2595. typename enable_if_c<
  2596. is_vec<V>::value && vec_traits<V>::dim>=3,
  2597. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2 > > > > &>::type
  2598. _1XZ( V & a )
  2599. {
  2600. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2 > > > > &>(a);
  2601. }
  2602. template <class V>
  2603. BOOST_QVM_INLINE_TRIVIAL
  2604. typename enable_if_c<
  2605. is_vec<V>::value && vec_traits<V>::dim>=3,
  2606. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2 > > > > const &>::type
  2607. _0XZ( V const & a )
  2608. {
  2609. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2 > > > > const &>(a);
  2610. }
  2611. template <class V>
  2612. BOOST_QVM_INLINE_TRIVIAL
  2613. typename enable_if_c<
  2614. is_vec<V>::value && vec_traits<V>::dim>=3,
  2615. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2 > > > > &>::type
  2616. _0XZ( V & a )
  2617. {
  2618. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2 > > > > &>(a);
  2619. }
  2620. template <class V>
  2621. BOOST_QVM_INLINE_TRIVIAL
  2622. typename enable_if_c<
  2623. is_vec<V>::value && vec_traits<V>::dim>=4,
  2624. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2 > > > > const &>::type
  2625. WXZ( V const & a )
  2626. {
  2627. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2 > > > > const &>(a);
  2628. }
  2629. template <class V>
  2630. BOOST_QVM_INLINE_TRIVIAL
  2631. typename enable_if_c<
  2632. is_vec<V>::value && vec_traits<V>::dim>=4,
  2633. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2 > > > > &>::type
  2634. WXZ( V & a )
  2635. {
  2636. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2 > > > > &>(a);
  2637. }
  2638. template <class V>
  2639. BOOST_QVM_INLINE_TRIVIAL
  2640. typename enable_if_c<
  2641. is_vec<V>::value && vec_traits<V>::dim>=3,
  2642. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2 > > > > const &>::type
  2643. ZXZ( V const & a )
  2644. {
  2645. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2 > > > > const &>(a);
  2646. }
  2647. template <class V>
  2648. BOOST_QVM_INLINE_TRIVIAL
  2649. typename enable_if_c<
  2650. is_vec<V>::value && vec_traits<V>::dim>=3,
  2651. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2 > > > > &>::type
  2652. ZXZ( V & a )
  2653. {
  2654. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2 > > > > &>(a);
  2655. }
  2656. template <class V>
  2657. BOOST_QVM_INLINE_TRIVIAL
  2658. typename enable_if_c<
  2659. is_vec<V>::value && vec_traits<V>::dim>=3,
  2660. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2 > > > > const &>::type
  2661. YXZ( V const & a )
  2662. {
  2663. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2 > > > > const &>(a);
  2664. }
  2665. template <class V>
  2666. BOOST_QVM_INLINE_TRIVIAL
  2667. typename enable_if_c<
  2668. is_vec<V>::value && vec_traits<V>::dim>=3,
  2669. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2 > > > > &>::type
  2670. YXZ( V & a )
  2671. {
  2672. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2 > > > > &>(a);
  2673. }
  2674. template <class V>
  2675. BOOST_QVM_INLINE_TRIVIAL
  2676. typename enable_if_c<
  2677. is_vec<V>::value && vec_traits<V>::dim>=3,
  2678. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2 > > > > const &>::type
  2679. XXZ( V const & a )
  2680. {
  2681. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2 > > > > const &>(a);
  2682. }
  2683. template <class V>
  2684. BOOST_QVM_INLINE_TRIVIAL
  2685. typename enable_if_c<
  2686. is_vec<V>::value && vec_traits<V>::dim>=3,
  2687. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2 > > > > &>::type
  2688. XXZ( V & a )
  2689. {
  2690. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2 > > > > &>(a);
  2691. }
  2692. template <class V>
  2693. BOOST_QVM_INLINE_TRIVIAL
  2694. typename enable_if_c<
  2695. is_vec<V>::value && vec_traits<V>::dim>=2,
  2696. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1 > > > > const &>::type
  2697. _11Y( V const & a )
  2698. {
  2699. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1 > > > > const &>(a);
  2700. }
  2701. template <class V>
  2702. BOOST_QVM_INLINE_TRIVIAL
  2703. typename enable_if_c<
  2704. is_vec<V>::value && vec_traits<V>::dim>=2,
  2705. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1 > > > > &>::type
  2706. _11Y( V & a )
  2707. {
  2708. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1 > > > > &>(a);
  2709. }
  2710. template <class V>
  2711. BOOST_QVM_INLINE_TRIVIAL
  2712. typename enable_if_c<
  2713. is_vec<V>::value && vec_traits<V>::dim>=2,
  2714. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1 > > > > const &>::type
  2715. _01Y( V const & a )
  2716. {
  2717. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1 > > > > const &>(a);
  2718. }
  2719. template <class V>
  2720. BOOST_QVM_INLINE_TRIVIAL
  2721. typename enable_if_c<
  2722. is_vec<V>::value && vec_traits<V>::dim>=2,
  2723. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1 > > > > &>::type
  2724. _01Y( V & a )
  2725. {
  2726. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1 > > > > &>(a);
  2727. }
  2728. template <class V>
  2729. BOOST_QVM_INLINE_TRIVIAL
  2730. typename enable_if_c<
  2731. is_vec<V>::value && vec_traits<V>::dim>=4,
  2732. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1 > > > > const &>::type
  2733. W1Y( V const & a )
  2734. {
  2735. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1 > > > > const &>(a);
  2736. }
  2737. template <class V>
  2738. BOOST_QVM_INLINE_TRIVIAL
  2739. typename enable_if_c<
  2740. is_vec<V>::value && vec_traits<V>::dim>=4,
  2741. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1 > > > > &>::type
  2742. W1Y( V & a )
  2743. {
  2744. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1 > > > > &>(a);
  2745. }
  2746. template <class V>
  2747. BOOST_QVM_INLINE_TRIVIAL
  2748. typename enable_if_c<
  2749. is_vec<V>::value && vec_traits<V>::dim>=3,
  2750. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1 > > > > const &>::type
  2751. Z1Y( V const & a )
  2752. {
  2753. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1 > > > > const &>(a);
  2754. }
  2755. template <class V>
  2756. BOOST_QVM_INLINE_TRIVIAL
  2757. typename enable_if_c<
  2758. is_vec<V>::value && vec_traits<V>::dim>=3,
  2759. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1 > > > > &>::type
  2760. Z1Y( V & a )
  2761. {
  2762. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1 > > > > &>(a);
  2763. }
  2764. template <class V>
  2765. BOOST_QVM_INLINE_TRIVIAL
  2766. typename enable_if_c<
  2767. is_vec<V>::value && vec_traits<V>::dim>=2,
  2768. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1 > > > > const &>::type
  2769. Y1Y( V const & a )
  2770. {
  2771. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1 > > > > const &>(a);
  2772. }
  2773. template <class V>
  2774. BOOST_QVM_INLINE_TRIVIAL
  2775. typename enable_if_c<
  2776. is_vec<V>::value && vec_traits<V>::dim>=2,
  2777. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1 > > > > &>::type
  2778. Y1Y( V & a )
  2779. {
  2780. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1 > > > > &>(a);
  2781. }
  2782. template <class V>
  2783. BOOST_QVM_INLINE_TRIVIAL
  2784. typename enable_if_c<
  2785. is_vec<V>::value && vec_traits<V>::dim>=2,
  2786. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1 > > > > const &>::type
  2787. X1Y( V const & a )
  2788. {
  2789. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1 > > > > const &>(a);
  2790. }
  2791. template <class V>
  2792. BOOST_QVM_INLINE_TRIVIAL
  2793. typename enable_if_c<
  2794. is_vec<V>::value && vec_traits<V>::dim>=2,
  2795. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1 > > > > &>::type
  2796. X1Y( V & a )
  2797. {
  2798. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1 > > > > &>(a);
  2799. }
  2800. template <class V>
  2801. BOOST_QVM_INLINE_TRIVIAL
  2802. typename enable_if_c<
  2803. is_vec<V>::value && vec_traits<V>::dim>=2,
  2804. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1 > > > > const &>::type
  2805. _10Y( V const & a )
  2806. {
  2807. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1 > > > > const &>(a);
  2808. }
  2809. template <class V>
  2810. BOOST_QVM_INLINE_TRIVIAL
  2811. typename enable_if_c<
  2812. is_vec<V>::value && vec_traits<V>::dim>=2,
  2813. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1 > > > > &>::type
  2814. _10Y( V & a )
  2815. {
  2816. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1 > > > > &>(a);
  2817. }
  2818. template <class V>
  2819. BOOST_QVM_INLINE_TRIVIAL
  2820. typename enable_if_c<
  2821. is_vec<V>::value && vec_traits<V>::dim>=2,
  2822. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1 > > > > const &>::type
  2823. _00Y( V const & a )
  2824. {
  2825. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1 > > > > const &>(a);
  2826. }
  2827. template <class V>
  2828. BOOST_QVM_INLINE_TRIVIAL
  2829. typename enable_if_c<
  2830. is_vec<V>::value && vec_traits<V>::dim>=2,
  2831. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1 > > > > &>::type
  2832. _00Y( V & a )
  2833. {
  2834. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1 > > > > &>(a);
  2835. }
  2836. template <class V>
  2837. BOOST_QVM_INLINE_TRIVIAL
  2838. typename enable_if_c<
  2839. is_vec<V>::value && vec_traits<V>::dim>=4,
  2840. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1 > > > > const &>::type
  2841. W0Y( V const & a )
  2842. {
  2843. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1 > > > > const &>(a);
  2844. }
  2845. template <class V>
  2846. BOOST_QVM_INLINE_TRIVIAL
  2847. typename enable_if_c<
  2848. is_vec<V>::value && vec_traits<V>::dim>=4,
  2849. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1 > > > > &>::type
  2850. W0Y( V & a )
  2851. {
  2852. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1 > > > > &>(a);
  2853. }
  2854. template <class V>
  2855. BOOST_QVM_INLINE_TRIVIAL
  2856. typename enable_if_c<
  2857. is_vec<V>::value && vec_traits<V>::dim>=3,
  2858. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1 > > > > const &>::type
  2859. Z0Y( V const & a )
  2860. {
  2861. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1 > > > > const &>(a);
  2862. }
  2863. template <class V>
  2864. BOOST_QVM_INLINE_TRIVIAL
  2865. typename enable_if_c<
  2866. is_vec<V>::value && vec_traits<V>::dim>=3,
  2867. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1 > > > > &>::type
  2868. Z0Y( V & a )
  2869. {
  2870. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1 > > > > &>(a);
  2871. }
  2872. template <class V>
  2873. BOOST_QVM_INLINE_TRIVIAL
  2874. typename enable_if_c<
  2875. is_vec<V>::value && vec_traits<V>::dim>=2,
  2876. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1 > > > > const &>::type
  2877. Y0Y( V const & a )
  2878. {
  2879. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1 > > > > const &>(a);
  2880. }
  2881. template <class V>
  2882. BOOST_QVM_INLINE_TRIVIAL
  2883. typename enable_if_c<
  2884. is_vec<V>::value && vec_traits<V>::dim>=2,
  2885. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1 > > > > &>::type
  2886. Y0Y( V & a )
  2887. {
  2888. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1 > > > > &>(a);
  2889. }
  2890. template <class V>
  2891. BOOST_QVM_INLINE_TRIVIAL
  2892. typename enable_if_c<
  2893. is_vec<V>::value && vec_traits<V>::dim>=2,
  2894. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1 > > > > const &>::type
  2895. X0Y( V const & a )
  2896. {
  2897. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1 > > > > const &>(a);
  2898. }
  2899. template <class V>
  2900. BOOST_QVM_INLINE_TRIVIAL
  2901. typename enable_if_c<
  2902. is_vec<V>::value && vec_traits<V>::dim>=2,
  2903. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1 > > > > &>::type
  2904. X0Y( V & a )
  2905. {
  2906. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1 > > > > &>(a);
  2907. }
  2908. template <class V>
  2909. BOOST_QVM_INLINE_TRIVIAL
  2910. typename enable_if_c<
  2911. is_vec<V>::value && vec_traits<V>::dim>=4,
  2912. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1 > > > > const &>::type
  2913. _1WY( V const & a )
  2914. {
  2915. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1 > > > > const &>(a);
  2916. }
  2917. template <class V>
  2918. BOOST_QVM_INLINE_TRIVIAL
  2919. typename enable_if_c<
  2920. is_vec<V>::value && vec_traits<V>::dim>=4,
  2921. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1 > > > > &>::type
  2922. _1WY( V & a )
  2923. {
  2924. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1 > > > > &>(a);
  2925. }
  2926. template <class V>
  2927. BOOST_QVM_INLINE_TRIVIAL
  2928. typename enable_if_c<
  2929. is_vec<V>::value && vec_traits<V>::dim>=4,
  2930. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1 > > > > const &>::type
  2931. _0WY( V const & a )
  2932. {
  2933. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1 > > > > const &>(a);
  2934. }
  2935. template <class V>
  2936. BOOST_QVM_INLINE_TRIVIAL
  2937. typename enable_if_c<
  2938. is_vec<V>::value && vec_traits<V>::dim>=4,
  2939. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1 > > > > &>::type
  2940. _0WY( V & a )
  2941. {
  2942. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1 > > > > &>(a);
  2943. }
  2944. template <class V>
  2945. BOOST_QVM_INLINE_TRIVIAL
  2946. typename enable_if_c<
  2947. is_vec<V>::value && vec_traits<V>::dim>=4,
  2948. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1 > > > > const &>::type
  2949. WWY( V const & a )
  2950. {
  2951. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1 > > > > const &>(a);
  2952. }
  2953. template <class V>
  2954. BOOST_QVM_INLINE_TRIVIAL
  2955. typename enable_if_c<
  2956. is_vec<V>::value && vec_traits<V>::dim>=4,
  2957. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1 > > > > &>::type
  2958. WWY( V & a )
  2959. {
  2960. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1 > > > > &>(a);
  2961. }
  2962. template <class V>
  2963. BOOST_QVM_INLINE_TRIVIAL
  2964. typename enable_if_c<
  2965. is_vec<V>::value && vec_traits<V>::dim>=4,
  2966. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1 > > > > const &>::type
  2967. ZWY( V const & a )
  2968. {
  2969. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1 > > > > const &>(a);
  2970. }
  2971. template <class V>
  2972. BOOST_QVM_INLINE_TRIVIAL
  2973. typename enable_if_c<
  2974. is_vec<V>::value && vec_traits<V>::dim>=4,
  2975. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1 > > > > &>::type
  2976. ZWY( V & a )
  2977. {
  2978. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1 > > > > &>(a);
  2979. }
  2980. template <class V>
  2981. BOOST_QVM_INLINE_TRIVIAL
  2982. typename enable_if_c<
  2983. is_vec<V>::value && vec_traits<V>::dim>=4,
  2984. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1 > > > > const &>::type
  2985. YWY( V const & a )
  2986. {
  2987. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1 > > > > const &>(a);
  2988. }
  2989. template <class V>
  2990. BOOST_QVM_INLINE_TRIVIAL
  2991. typename enable_if_c<
  2992. is_vec<V>::value && vec_traits<V>::dim>=4,
  2993. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1 > > > > &>::type
  2994. YWY( V & a )
  2995. {
  2996. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1 > > > > &>(a);
  2997. }
  2998. template <class V>
  2999. BOOST_QVM_INLINE_TRIVIAL
  3000. typename enable_if_c<
  3001. is_vec<V>::value && vec_traits<V>::dim>=4,
  3002. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1 > > > > const &>::type
  3003. XWY( V const & a )
  3004. {
  3005. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1 > > > > const &>(a);
  3006. }
  3007. template <class V>
  3008. BOOST_QVM_INLINE_TRIVIAL
  3009. typename enable_if_c<
  3010. is_vec<V>::value && vec_traits<V>::dim>=4,
  3011. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1 > > > > &>::type
  3012. XWY( V & a )
  3013. {
  3014. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1 > > > > &>(a);
  3015. }
  3016. template <class V>
  3017. BOOST_QVM_INLINE_TRIVIAL
  3018. typename enable_if_c<
  3019. is_vec<V>::value && vec_traits<V>::dim>=3,
  3020. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1 > > > > const &>::type
  3021. _1ZY( V const & a )
  3022. {
  3023. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1 > > > > const &>(a);
  3024. }
  3025. template <class V>
  3026. BOOST_QVM_INLINE_TRIVIAL
  3027. typename enable_if_c<
  3028. is_vec<V>::value && vec_traits<V>::dim>=3,
  3029. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1 > > > > &>::type
  3030. _1ZY( V & a )
  3031. {
  3032. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1 > > > > &>(a);
  3033. }
  3034. template <class V>
  3035. BOOST_QVM_INLINE_TRIVIAL
  3036. typename enable_if_c<
  3037. is_vec<V>::value && vec_traits<V>::dim>=3,
  3038. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1 > > > > const &>::type
  3039. _0ZY( V const & a )
  3040. {
  3041. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1 > > > > const &>(a);
  3042. }
  3043. template <class V>
  3044. BOOST_QVM_INLINE_TRIVIAL
  3045. typename enable_if_c<
  3046. is_vec<V>::value && vec_traits<V>::dim>=3,
  3047. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1 > > > > &>::type
  3048. _0ZY( V & a )
  3049. {
  3050. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1 > > > > &>(a);
  3051. }
  3052. template <class V>
  3053. BOOST_QVM_INLINE_TRIVIAL
  3054. typename enable_if_c<
  3055. is_vec<V>::value && vec_traits<V>::dim>=4,
  3056. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1 > > > > const &>::type
  3057. WZY( V const & a )
  3058. {
  3059. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1 > > > > const &>(a);
  3060. }
  3061. template <class V>
  3062. BOOST_QVM_INLINE_TRIVIAL
  3063. typename enable_if_c<
  3064. is_vec<V>::value && vec_traits<V>::dim>=4,
  3065. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1 > > > > &>::type
  3066. WZY( V & a )
  3067. {
  3068. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1 > > > > &>(a);
  3069. }
  3070. template <class V>
  3071. BOOST_QVM_INLINE_TRIVIAL
  3072. typename enable_if_c<
  3073. is_vec<V>::value && vec_traits<V>::dim>=3,
  3074. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1 > > > > const &>::type
  3075. ZZY( V const & a )
  3076. {
  3077. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1 > > > > const &>(a);
  3078. }
  3079. template <class V>
  3080. BOOST_QVM_INLINE_TRIVIAL
  3081. typename enable_if_c<
  3082. is_vec<V>::value && vec_traits<V>::dim>=3,
  3083. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1 > > > > &>::type
  3084. ZZY( V & a )
  3085. {
  3086. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1 > > > > &>(a);
  3087. }
  3088. template <class V>
  3089. BOOST_QVM_INLINE_TRIVIAL
  3090. typename enable_if_c<
  3091. is_vec<V>::value && vec_traits<V>::dim>=3,
  3092. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1 > > > > const &>::type
  3093. YZY( V const & a )
  3094. {
  3095. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1 > > > > const &>(a);
  3096. }
  3097. template <class V>
  3098. BOOST_QVM_INLINE_TRIVIAL
  3099. typename enable_if_c<
  3100. is_vec<V>::value && vec_traits<V>::dim>=3,
  3101. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1 > > > > &>::type
  3102. YZY( V & a )
  3103. {
  3104. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1 > > > > &>(a);
  3105. }
  3106. template <class V>
  3107. BOOST_QVM_INLINE_TRIVIAL
  3108. typename enable_if_c<
  3109. is_vec<V>::value && vec_traits<V>::dim>=3,
  3110. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1 > > > > const &>::type
  3111. XZY( V const & a )
  3112. {
  3113. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1 > > > > const &>(a);
  3114. }
  3115. template <class V>
  3116. BOOST_QVM_INLINE_TRIVIAL
  3117. typename enable_if_c<
  3118. is_vec<V>::value && vec_traits<V>::dim>=3,
  3119. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1 > > > > &>::type
  3120. XZY( V & a )
  3121. {
  3122. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1 > > > > &>(a);
  3123. }
  3124. template <class V>
  3125. BOOST_QVM_INLINE_TRIVIAL
  3126. typename enable_if_c<
  3127. is_vec<V>::value && vec_traits<V>::dim>=2,
  3128. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1 > > > > const &>::type
  3129. _1YY( V const & a )
  3130. {
  3131. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1 > > > > const &>(a);
  3132. }
  3133. template <class V>
  3134. BOOST_QVM_INLINE_TRIVIAL
  3135. typename enable_if_c<
  3136. is_vec<V>::value && vec_traits<V>::dim>=2,
  3137. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1 > > > > &>::type
  3138. _1YY( V & a )
  3139. {
  3140. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1 > > > > &>(a);
  3141. }
  3142. template <class V>
  3143. BOOST_QVM_INLINE_TRIVIAL
  3144. typename enable_if_c<
  3145. is_vec<V>::value && vec_traits<V>::dim>=2,
  3146. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1 > > > > const &>::type
  3147. _0YY( V const & a )
  3148. {
  3149. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1 > > > > const &>(a);
  3150. }
  3151. template <class V>
  3152. BOOST_QVM_INLINE_TRIVIAL
  3153. typename enable_if_c<
  3154. is_vec<V>::value && vec_traits<V>::dim>=2,
  3155. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1 > > > > &>::type
  3156. _0YY( V & a )
  3157. {
  3158. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1 > > > > &>(a);
  3159. }
  3160. template <class V>
  3161. BOOST_QVM_INLINE_TRIVIAL
  3162. typename enable_if_c<
  3163. is_vec<V>::value && vec_traits<V>::dim>=4,
  3164. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1 > > > > const &>::type
  3165. WYY( V const & a )
  3166. {
  3167. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1 > > > > const &>(a);
  3168. }
  3169. template <class V>
  3170. BOOST_QVM_INLINE_TRIVIAL
  3171. typename enable_if_c<
  3172. is_vec<V>::value && vec_traits<V>::dim>=4,
  3173. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1 > > > > &>::type
  3174. WYY( V & a )
  3175. {
  3176. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1 > > > > &>(a);
  3177. }
  3178. template <class V>
  3179. BOOST_QVM_INLINE_TRIVIAL
  3180. typename enable_if_c<
  3181. is_vec<V>::value && vec_traits<V>::dim>=3,
  3182. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1 > > > > const &>::type
  3183. ZYY( V const & a )
  3184. {
  3185. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1 > > > > const &>(a);
  3186. }
  3187. template <class V>
  3188. BOOST_QVM_INLINE_TRIVIAL
  3189. typename enable_if_c<
  3190. is_vec<V>::value && vec_traits<V>::dim>=3,
  3191. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1 > > > > &>::type
  3192. ZYY( V & a )
  3193. {
  3194. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1 > > > > &>(a);
  3195. }
  3196. template <class V>
  3197. BOOST_QVM_INLINE_TRIVIAL
  3198. typename enable_if_c<
  3199. is_vec<V>::value && vec_traits<V>::dim>=2,
  3200. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1 > > > > const &>::type
  3201. YYY( V const & a )
  3202. {
  3203. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1 > > > > const &>(a);
  3204. }
  3205. template <class V>
  3206. BOOST_QVM_INLINE_TRIVIAL
  3207. typename enable_if_c<
  3208. is_vec<V>::value && vec_traits<V>::dim>=2,
  3209. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1 > > > > &>::type
  3210. YYY( V & a )
  3211. {
  3212. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1 > > > > &>(a);
  3213. }
  3214. template <class V>
  3215. BOOST_QVM_INLINE_TRIVIAL
  3216. typename enable_if_c<
  3217. is_vec<V>::value && vec_traits<V>::dim>=2,
  3218. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1 > > > > const &>::type
  3219. XYY( V const & a )
  3220. {
  3221. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1 > > > > const &>(a);
  3222. }
  3223. template <class V>
  3224. BOOST_QVM_INLINE_TRIVIAL
  3225. typename enable_if_c<
  3226. is_vec<V>::value && vec_traits<V>::dim>=2,
  3227. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1 > > > > &>::type
  3228. XYY( V & a )
  3229. {
  3230. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1 > > > > &>(a);
  3231. }
  3232. template <class V>
  3233. BOOST_QVM_INLINE_TRIVIAL
  3234. typename enable_if_c<
  3235. is_vec<V>::value && vec_traits<V>::dim>=2,
  3236. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1 > > > > const &>::type
  3237. _1XY( V const & a )
  3238. {
  3239. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1 > > > > const &>(a);
  3240. }
  3241. template <class V>
  3242. BOOST_QVM_INLINE_TRIVIAL
  3243. typename enable_if_c<
  3244. is_vec<V>::value && vec_traits<V>::dim>=2,
  3245. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1 > > > > &>::type
  3246. _1XY( V & a )
  3247. {
  3248. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1 > > > > &>(a);
  3249. }
  3250. template <class V>
  3251. BOOST_QVM_INLINE_TRIVIAL
  3252. typename enable_if_c<
  3253. is_vec<V>::value && vec_traits<V>::dim>=2,
  3254. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1 > > > > const &>::type
  3255. _0XY( V const & a )
  3256. {
  3257. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1 > > > > const &>(a);
  3258. }
  3259. template <class V>
  3260. BOOST_QVM_INLINE_TRIVIAL
  3261. typename enable_if_c<
  3262. is_vec<V>::value && vec_traits<V>::dim>=2,
  3263. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1 > > > > &>::type
  3264. _0XY( V & a )
  3265. {
  3266. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1 > > > > &>(a);
  3267. }
  3268. template <class V>
  3269. BOOST_QVM_INLINE_TRIVIAL
  3270. typename enable_if_c<
  3271. is_vec<V>::value && vec_traits<V>::dim>=4,
  3272. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1 > > > > const &>::type
  3273. WXY( V const & a )
  3274. {
  3275. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1 > > > > const &>(a);
  3276. }
  3277. template <class V>
  3278. BOOST_QVM_INLINE_TRIVIAL
  3279. typename enable_if_c<
  3280. is_vec<V>::value && vec_traits<V>::dim>=4,
  3281. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1 > > > > &>::type
  3282. WXY( V & a )
  3283. {
  3284. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1 > > > > &>(a);
  3285. }
  3286. template <class V>
  3287. BOOST_QVM_INLINE_TRIVIAL
  3288. typename enable_if_c<
  3289. is_vec<V>::value && vec_traits<V>::dim>=3,
  3290. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1 > > > > const &>::type
  3291. ZXY( V const & a )
  3292. {
  3293. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1 > > > > const &>(a);
  3294. }
  3295. template <class V>
  3296. BOOST_QVM_INLINE_TRIVIAL
  3297. typename enable_if_c<
  3298. is_vec<V>::value && vec_traits<V>::dim>=3,
  3299. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1 > > > > &>::type
  3300. ZXY( V & a )
  3301. {
  3302. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1 > > > > &>(a);
  3303. }
  3304. template <class V>
  3305. BOOST_QVM_INLINE_TRIVIAL
  3306. typename enable_if_c<
  3307. is_vec<V>::value && vec_traits<V>::dim>=2,
  3308. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1 > > > > const &>::type
  3309. YXY( V const & a )
  3310. {
  3311. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1 > > > > const &>(a);
  3312. }
  3313. template <class V>
  3314. BOOST_QVM_INLINE_TRIVIAL
  3315. typename enable_if_c<
  3316. is_vec<V>::value && vec_traits<V>::dim>=2,
  3317. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1 > > > > &>::type
  3318. YXY( V & a )
  3319. {
  3320. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1 > > > > &>(a);
  3321. }
  3322. template <class V>
  3323. BOOST_QVM_INLINE_TRIVIAL
  3324. typename enable_if_c<
  3325. is_vec<V>::value && vec_traits<V>::dim>=2,
  3326. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1 > > > > const &>::type
  3327. XXY( V const & a )
  3328. {
  3329. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1 > > > > const &>(a);
  3330. }
  3331. template <class V>
  3332. BOOST_QVM_INLINE_TRIVIAL
  3333. typename enable_if_c<
  3334. is_vec<V>::value && vec_traits<V>::dim>=2,
  3335. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1 > > > > &>::type
  3336. XXY( V & a )
  3337. {
  3338. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1 > > > > &>(a);
  3339. }
  3340. template <class V>
  3341. BOOST_QVM_INLINE_TRIVIAL
  3342. typename enable_if_c<
  3343. is_vec<V>::value && vec_traits<V>::dim>=1,
  3344. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > const &>::type
  3345. _11X( V const & a )
  3346. {
  3347. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  3348. }
  3349. template <class S>
  3350. BOOST_QVM_INLINE_TRIVIAL
  3351. typename enable_if_c<
  3352. is_scalar<S>::value,
  3353. qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > const &>::type
  3354. _11X( S const & a )
  3355. {
  3356. return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  3357. }
  3358. template <class V>
  3359. BOOST_QVM_INLINE_TRIVIAL
  3360. typename enable_if_c<
  3361. is_vec<V>::value && vec_traits<V>::dim>=1,
  3362. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > &>::type
  3363. _11X( V & a )
  3364. {
  3365. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > &>(a);
  3366. }
  3367. template <class S>
  3368. BOOST_QVM_INLINE_TRIVIAL
  3369. typename enable_if_c<
  3370. is_scalar<S>::value,
  3371. qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > &>::type
  3372. _11X( S & a )
  3373. {
  3374. return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > &>(a);
  3375. }
  3376. template <class V>
  3377. BOOST_QVM_INLINE_TRIVIAL
  3378. typename enable_if_c<
  3379. is_vec<V>::value && vec_traits<V>::dim>=1,
  3380. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > const &>::type
  3381. _01X( V const & a )
  3382. {
  3383. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  3384. }
  3385. template <class S>
  3386. BOOST_QVM_INLINE_TRIVIAL
  3387. typename enable_if_c<
  3388. is_scalar<S>::value,
  3389. qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > const &>::type
  3390. _01X( S const & a )
  3391. {
  3392. return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  3393. }
  3394. template <class V>
  3395. BOOST_QVM_INLINE_TRIVIAL
  3396. typename enable_if_c<
  3397. is_vec<V>::value && vec_traits<V>::dim>=1,
  3398. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > &>::type
  3399. _01X( V & a )
  3400. {
  3401. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > &>(a);
  3402. }
  3403. template <class S>
  3404. BOOST_QVM_INLINE_TRIVIAL
  3405. typename enable_if_c<
  3406. is_scalar<S>::value,
  3407. qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > &>::type
  3408. _01X( S & a )
  3409. {
  3410. return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > &>(a);
  3411. }
  3412. template <class V>
  3413. BOOST_QVM_INLINE_TRIVIAL
  3414. typename enable_if_c<
  3415. is_vec<V>::value && vec_traits<V>::dim>=4,
  3416. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > const &>::type
  3417. W1X( V const & a )
  3418. {
  3419. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  3420. }
  3421. template <class V>
  3422. BOOST_QVM_INLINE_TRIVIAL
  3423. typename enable_if_c<
  3424. is_vec<V>::value && vec_traits<V>::dim>=4,
  3425. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > &>::type
  3426. W1X( V & a )
  3427. {
  3428. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > &>(a);
  3429. }
  3430. template <class V>
  3431. BOOST_QVM_INLINE_TRIVIAL
  3432. typename enable_if_c<
  3433. is_vec<V>::value && vec_traits<V>::dim>=3,
  3434. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > const &>::type
  3435. Z1X( V const & a )
  3436. {
  3437. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  3438. }
  3439. template <class V>
  3440. BOOST_QVM_INLINE_TRIVIAL
  3441. typename enable_if_c<
  3442. is_vec<V>::value && vec_traits<V>::dim>=3,
  3443. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > &>::type
  3444. Z1X( V & a )
  3445. {
  3446. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > &>(a);
  3447. }
  3448. template <class V>
  3449. BOOST_QVM_INLINE_TRIVIAL
  3450. typename enable_if_c<
  3451. is_vec<V>::value && vec_traits<V>::dim>=2,
  3452. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > const &>::type
  3453. Y1X( V const & a )
  3454. {
  3455. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  3456. }
  3457. template <class V>
  3458. BOOST_QVM_INLINE_TRIVIAL
  3459. typename enable_if_c<
  3460. is_vec<V>::value && vec_traits<V>::dim>=2,
  3461. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > &>::type
  3462. Y1X( V & a )
  3463. {
  3464. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > &>(a);
  3465. }
  3466. template <class V>
  3467. BOOST_QVM_INLINE_TRIVIAL
  3468. typename enable_if_c<
  3469. is_vec<V>::value && vec_traits<V>::dim>=1,
  3470. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > const &>::type
  3471. X1X( V const & a )
  3472. {
  3473. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  3474. }
  3475. template <class S>
  3476. BOOST_QVM_INLINE_TRIVIAL
  3477. typename enable_if_c<
  3478. is_scalar<S>::value,
  3479. qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > const &>::type
  3480. X1X( S const & a )
  3481. {
  3482. return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  3483. }
  3484. template <class V>
  3485. BOOST_QVM_INLINE_TRIVIAL
  3486. typename enable_if_c<
  3487. is_vec<V>::value && vec_traits<V>::dim>=1,
  3488. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > &>::type
  3489. X1X( V & a )
  3490. {
  3491. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > &>(a);
  3492. }
  3493. template <class S>
  3494. BOOST_QVM_INLINE_TRIVIAL
  3495. typename enable_if_c<
  3496. is_scalar<S>::value,
  3497. qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > &>::type
  3498. X1X( S & a )
  3499. {
  3500. return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0 > > > > &>(a);
  3501. }
  3502. template <class V>
  3503. BOOST_QVM_INLINE_TRIVIAL
  3504. typename enable_if_c<
  3505. is_vec<V>::value && vec_traits<V>::dim>=1,
  3506. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > const &>::type
  3507. _10X( V const & a )
  3508. {
  3509. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  3510. }
  3511. template <class S>
  3512. BOOST_QVM_INLINE_TRIVIAL
  3513. typename enable_if_c<
  3514. is_scalar<S>::value,
  3515. qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > const &>::type
  3516. _10X( S const & a )
  3517. {
  3518. return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  3519. }
  3520. template <class V>
  3521. BOOST_QVM_INLINE_TRIVIAL
  3522. typename enable_if_c<
  3523. is_vec<V>::value && vec_traits<V>::dim>=1,
  3524. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > &>::type
  3525. _10X( V & a )
  3526. {
  3527. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > &>(a);
  3528. }
  3529. template <class S>
  3530. BOOST_QVM_INLINE_TRIVIAL
  3531. typename enable_if_c<
  3532. is_scalar<S>::value,
  3533. qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > &>::type
  3534. _10X( S & a )
  3535. {
  3536. return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > &>(a);
  3537. }
  3538. template <class V>
  3539. BOOST_QVM_INLINE_TRIVIAL
  3540. typename enable_if_c<
  3541. is_vec<V>::value && vec_traits<V>::dim>=1,
  3542. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > const &>::type
  3543. _00X( V const & a )
  3544. {
  3545. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  3546. }
  3547. template <class S>
  3548. BOOST_QVM_INLINE_TRIVIAL
  3549. typename enable_if_c<
  3550. is_scalar<S>::value,
  3551. qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > const &>::type
  3552. _00X( S const & a )
  3553. {
  3554. return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  3555. }
  3556. template <class V>
  3557. BOOST_QVM_INLINE_TRIVIAL
  3558. typename enable_if_c<
  3559. is_vec<V>::value && vec_traits<V>::dim>=1,
  3560. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > &>::type
  3561. _00X( V & a )
  3562. {
  3563. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > &>(a);
  3564. }
  3565. template <class S>
  3566. BOOST_QVM_INLINE_TRIVIAL
  3567. typename enable_if_c<
  3568. is_scalar<S>::value,
  3569. qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > &>::type
  3570. _00X( S & a )
  3571. {
  3572. return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > &>(a);
  3573. }
  3574. template <class V>
  3575. BOOST_QVM_INLINE_TRIVIAL
  3576. typename enable_if_c<
  3577. is_vec<V>::value && vec_traits<V>::dim>=4,
  3578. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > const &>::type
  3579. W0X( V const & a )
  3580. {
  3581. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  3582. }
  3583. template <class V>
  3584. BOOST_QVM_INLINE_TRIVIAL
  3585. typename enable_if_c<
  3586. is_vec<V>::value && vec_traits<V>::dim>=4,
  3587. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > &>::type
  3588. W0X( V & a )
  3589. {
  3590. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > &>(a);
  3591. }
  3592. template <class V>
  3593. BOOST_QVM_INLINE_TRIVIAL
  3594. typename enable_if_c<
  3595. is_vec<V>::value && vec_traits<V>::dim>=3,
  3596. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > const &>::type
  3597. Z0X( V const & a )
  3598. {
  3599. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  3600. }
  3601. template <class V>
  3602. BOOST_QVM_INLINE_TRIVIAL
  3603. typename enable_if_c<
  3604. is_vec<V>::value && vec_traits<V>::dim>=3,
  3605. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > &>::type
  3606. Z0X( V & a )
  3607. {
  3608. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > &>(a);
  3609. }
  3610. template <class V>
  3611. BOOST_QVM_INLINE_TRIVIAL
  3612. typename enable_if_c<
  3613. is_vec<V>::value && vec_traits<V>::dim>=2,
  3614. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > const &>::type
  3615. Y0X( V const & a )
  3616. {
  3617. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  3618. }
  3619. template <class V>
  3620. BOOST_QVM_INLINE_TRIVIAL
  3621. typename enable_if_c<
  3622. is_vec<V>::value && vec_traits<V>::dim>=2,
  3623. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > &>::type
  3624. Y0X( V & a )
  3625. {
  3626. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > &>(a);
  3627. }
  3628. template <class V>
  3629. BOOST_QVM_INLINE_TRIVIAL
  3630. typename enable_if_c<
  3631. is_vec<V>::value && vec_traits<V>::dim>=1,
  3632. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > const &>::type
  3633. X0X( V const & a )
  3634. {
  3635. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  3636. }
  3637. template <class S>
  3638. BOOST_QVM_INLINE_TRIVIAL
  3639. typename enable_if_c<
  3640. is_scalar<S>::value,
  3641. qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > const &>::type
  3642. X0X( S const & a )
  3643. {
  3644. return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  3645. }
  3646. template <class V>
  3647. BOOST_QVM_INLINE_TRIVIAL
  3648. typename enable_if_c<
  3649. is_vec<V>::value && vec_traits<V>::dim>=1,
  3650. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > &>::type
  3651. X0X( V & a )
  3652. {
  3653. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > &>(a);
  3654. }
  3655. template <class S>
  3656. BOOST_QVM_INLINE_TRIVIAL
  3657. typename enable_if_c<
  3658. is_scalar<S>::value,
  3659. qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > &>::type
  3660. X0X( S & a )
  3661. {
  3662. return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0 > > > > &>(a);
  3663. }
  3664. template <class V>
  3665. BOOST_QVM_INLINE_TRIVIAL
  3666. typename enable_if_c<
  3667. is_vec<V>::value && vec_traits<V>::dim>=4,
  3668. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0 > > > > const &>::type
  3669. _1WX( V const & a )
  3670. {
  3671. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  3672. }
  3673. template <class V>
  3674. BOOST_QVM_INLINE_TRIVIAL
  3675. typename enable_if_c<
  3676. is_vec<V>::value && vec_traits<V>::dim>=4,
  3677. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0 > > > > &>::type
  3678. _1WX( V & a )
  3679. {
  3680. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0 > > > > &>(a);
  3681. }
  3682. template <class V>
  3683. BOOST_QVM_INLINE_TRIVIAL
  3684. typename enable_if_c<
  3685. is_vec<V>::value && vec_traits<V>::dim>=4,
  3686. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0 > > > > const &>::type
  3687. _0WX( V const & a )
  3688. {
  3689. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  3690. }
  3691. template <class V>
  3692. BOOST_QVM_INLINE_TRIVIAL
  3693. typename enable_if_c<
  3694. is_vec<V>::value && vec_traits<V>::dim>=4,
  3695. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0 > > > > &>::type
  3696. _0WX( V & a )
  3697. {
  3698. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0 > > > > &>(a);
  3699. }
  3700. template <class V>
  3701. BOOST_QVM_INLINE_TRIVIAL
  3702. typename enable_if_c<
  3703. is_vec<V>::value && vec_traits<V>::dim>=4,
  3704. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0 > > > > const &>::type
  3705. WWX( V const & a )
  3706. {
  3707. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  3708. }
  3709. template <class V>
  3710. BOOST_QVM_INLINE_TRIVIAL
  3711. typename enable_if_c<
  3712. is_vec<V>::value && vec_traits<V>::dim>=4,
  3713. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0 > > > > &>::type
  3714. WWX( V & a )
  3715. {
  3716. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0 > > > > &>(a);
  3717. }
  3718. template <class V>
  3719. BOOST_QVM_INLINE_TRIVIAL
  3720. typename enable_if_c<
  3721. is_vec<V>::value && vec_traits<V>::dim>=4,
  3722. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0 > > > > const &>::type
  3723. ZWX( V const & a )
  3724. {
  3725. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  3726. }
  3727. template <class V>
  3728. BOOST_QVM_INLINE_TRIVIAL
  3729. typename enable_if_c<
  3730. is_vec<V>::value && vec_traits<V>::dim>=4,
  3731. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0 > > > > &>::type
  3732. ZWX( V & a )
  3733. {
  3734. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0 > > > > &>(a);
  3735. }
  3736. template <class V>
  3737. BOOST_QVM_INLINE_TRIVIAL
  3738. typename enable_if_c<
  3739. is_vec<V>::value && vec_traits<V>::dim>=4,
  3740. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0 > > > > const &>::type
  3741. YWX( V const & a )
  3742. {
  3743. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  3744. }
  3745. template <class V>
  3746. BOOST_QVM_INLINE_TRIVIAL
  3747. typename enable_if_c<
  3748. is_vec<V>::value && vec_traits<V>::dim>=4,
  3749. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0 > > > > &>::type
  3750. YWX( V & a )
  3751. {
  3752. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0 > > > > &>(a);
  3753. }
  3754. template <class V>
  3755. BOOST_QVM_INLINE_TRIVIAL
  3756. typename enable_if_c<
  3757. is_vec<V>::value && vec_traits<V>::dim>=4,
  3758. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0 > > > > const &>::type
  3759. XWX( V const & a )
  3760. {
  3761. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  3762. }
  3763. template <class V>
  3764. BOOST_QVM_INLINE_TRIVIAL
  3765. typename enable_if_c<
  3766. is_vec<V>::value && vec_traits<V>::dim>=4,
  3767. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0 > > > > &>::type
  3768. XWX( V & a )
  3769. {
  3770. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0 > > > > &>(a);
  3771. }
  3772. template <class V>
  3773. BOOST_QVM_INLINE_TRIVIAL
  3774. typename enable_if_c<
  3775. is_vec<V>::value && vec_traits<V>::dim>=3,
  3776. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0 > > > > const &>::type
  3777. _1ZX( V const & a )
  3778. {
  3779. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  3780. }
  3781. template <class V>
  3782. BOOST_QVM_INLINE_TRIVIAL
  3783. typename enable_if_c<
  3784. is_vec<V>::value && vec_traits<V>::dim>=3,
  3785. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0 > > > > &>::type
  3786. _1ZX( V & a )
  3787. {
  3788. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0 > > > > &>(a);
  3789. }
  3790. template <class V>
  3791. BOOST_QVM_INLINE_TRIVIAL
  3792. typename enable_if_c<
  3793. is_vec<V>::value && vec_traits<V>::dim>=3,
  3794. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0 > > > > const &>::type
  3795. _0ZX( V const & a )
  3796. {
  3797. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  3798. }
  3799. template <class V>
  3800. BOOST_QVM_INLINE_TRIVIAL
  3801. typename enable_if_c<
  3802. is_vec<V>::value && vec_traits<V>::dim>=3,
  3803. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0 > > > > &>::type
  3804. _0ZX( V & a )
  3805. {
  3806. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0 > > > > &>(a);
  3807. }
  3808. template <class V>
  3809. BOOST_QVM_INLINE_TRIVIAL
  3810. typename enable_if_c<
  3811. is_vec<V>::value && vec_traits<V>::dim>=4,
  3812. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0 > > > > const &>::type
  3813. WZX( V const & a )
  3814. {
  3815. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  3816. }
  3817. template <class V>
  3818. BOOST_QVM_INLINE_TRIVIAL
  3819. typename enable_if_c<
  3820. is_vec<V>::value && vec_traits<V>::dim>=4,
  3821. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0 > > > > &>::type
  3822. WZX( V & a )
  3823. {
  3824. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0 > > > > &>(a);
  3825. }
  3826. template <class V>
  3827. BOOST_QVM_INLINE_TRIVIAL
  3828. typename enable_if_c<
  3829. is_vec<V>::value && vec_traits<V>::dim>=3,
  3830. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0 > > > > const &>::type
  3831. ZZX( V const & a )
  3832. {
  3833. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  3834. }
  3835. template <class V>
  3836. BOOST_QVM_INLINE_TRIVIAL
  3837. typename enable_if_c<
  3838. is_vec<V>::value && vec_traits<V>::dim>=3,
  3839. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0 > > > > &>::type
  3840. ZZX( V & a )
  3841. {
  3842. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0 > > > > &>(a);
  3843. }
  3844. template <class V>
  3845. BOOST_QVM_INLINE_TRIVIAL
  3846. typename enable_if_c<
  3847. is_vec<V>::value && vec_traits<V>::dim>=3,
  3848. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0 > > > > const &>::type
  3849. YZX( V const & a )
  3850. {
  3851. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  3852. }
  3853. template <class V>
  3854. BOOST_QVM_INLINE_TRIVIAL
  3855. typename enable_if_c<
  3856. is_vec<V>::value && vec_traits<V>::dim>=3,
  3857. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0 > > > > &>::type
  3858. YZX( V & a )
  3859. {
  3860. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0 > > > > &>(a);
  3861. }
  3862. template <class V>
  3863. BOOST_QVM_INLINE_TRIVIAL
  3864. typename enable_if_c<
  3865. is_vec<V>::value && vec_traits<V>::dim>=3,
  3866. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0 > > > > const &>::type
  3867. XZX( V const & a )
  3868. {
  3869. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  3870. }
  3871. template <class V>
  3872. BOOST_QVM_INLINE_TRIVIAL
  3873. typename enable_if_c<
  3874. is_vec<V>::value && vec_traits<V>::dim>=3,
  3875. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0 > > > > &>::type
  3876. XZX( V & a )
  3877. {
  3878. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0 > > > > &>(a);
  3879. }
  3880. template <class V>
  3881. BOOST_QVM_INLINE_TRIVIAL
  3882. typename enable_if_c<
  3883. is_vec<V>::value && vec_traits<V>::dim>=2,
  3884. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0 > > > > const &>::type
  3885. _1YX( V const & a )
  3886. {
  3887. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  3888. }
  3889. template <class V>
  3890. BOOST_QVM_INLINE_TRIVIAL
  3891. typename enable_if_c<
  3892. is_vec<V>::value && vec_traits<V>::dim>=2,
  3893. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0 > > > > &>::type
  3894. _1YX( V & a )
  3895. {
  3896. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0 > > > > &>(a);
  3897. }
  3898. template <class V>
  3899. BOOST_QVM_INLINE_TRIVIAL
  3900. typename enable_if_c<
  3901. is_vec<V>::value && vec_traits<V>::dim>=2,
  3902. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0 > > > > const &>::type
  3903. _0YX( V const & a )
  3904. {
  3905. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  3906. }
  3907. template <class V>
  3908. BOOST_QVM_INLINE_TRIVIAL
  3909. typename enable_if_c<
  3910. is_vec<V>::value && vec_traits<V>::dim>=2,
  3911. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0 > > > > &>::type
  3912. _0YX( V & a )
  3913. {
  3914. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0 > > > > &>(a);
  3915. }
  3916. template <class V>
  3917. BOOST_QVM_INLINE_TRIVIAL
  3918. typename enable_if_c<
  3919. is_vec<V>::value && vec_traits<V>::dim>=4,
  3920. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0 > > > > const &>::type
  3921. WYX( V const & a )
  3922. {
  3923. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  3924. }
  3925. template <class V>
  3926. BOOST_QVM_INLINE_TRIVIAL
  3927. typename enable_if_c<
  3928. is_vec<V>::value && vec_traits<V>::dim>=4,
  3929. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0 > > > > &>::type
  3930. WYX( V & a )
  3931. {
  3932. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0 > > > > &>(a);
  3933. }
  3934. template <class V>
  3935. BOOST_QVM_INLINE_TRIVIAL
  3936. typename enable_if_c<
  3937. is_vec<V>::value && vec_traits<V>::dim>=3,
  3938. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0 > > > > const &>::type
  3939. ZYX( V const & a )
  3940. {
  3941. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  3942. }
  3943. template <class V>
  3944. BOOST_QVM_INLINE_TRIVIAL
  3945. typename enable_if_c<
  3946. is_vec<V>::value && vec_traits<V>::dim>=3,
  3947. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0 > > > > &>::type
  3948. ZYX( V & a )
  3949. {
  3950. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0 > > > > &>(a);
  3951. }
  3952. template <class V>
  3953. BOOST_QVM_INLINE_TRIVIAL
  3954. typename enable_if_c<
  3955. is_vec<V>::value && vec_traits<V>::dim>=2,
  3956. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0 > > > > const &>::type
  3957. YYX( V const & a )
  3958. {
  3959. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  3960. }
  3961. template <class V>
  3962. BOOST_QVM_INLINE_TRIVIAL
  3963. typename enable_if_c<
  3964. is_vec<V>::value && vec_traits<V>::dim>=2,
  3965. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0 > > > > &>::type
  3966. YYX( V & a )
  3967. {
  3968. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0 > > > > &>(a);
  3969. }
  3970. template <class V>
  3971. BOOST_QVM_INLINE_TRIVIAL
  3972. typename enable_if_c<
  3973. is_vec<V>::value && vec_traits<V>::dim>=2,
  3974. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0 > > > > const &>::type
  3975. XYX( V const & a )
  3976. {
  3977. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  3978. }
  3979. template <class V>
  3980. BOOST_QVM_INLINE_TRIVIAL
  3981. typename enable_if_c<
  3982. is_vec<V>::value && vec_traits<V>::dim>=2,
  3983. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0 > > > > &>::type
  3984. XYX( V & a )
  3985. {
  3986. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0 > > > > &>(a);
  3987. }
  3988. template <class V>
  3989. BOOST_QVM_INLINE_TRIVIAL
  3990. typename enable_if_c<
  3991. is_vec<V>::value && vec_traits<V>::dim>=1,
  3992. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > const &>::type
  3993. _1XX( V const & a )
  3994. {
  3995. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  3996. }
  3997. template <class S>
  3998. BOOST_QVM_INLINE_TRIVIAL
  3999. typename enable_if_c<
  4000. is_scalar<S>::value,
  4001. qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > const &>::type
  4002. _1XX( S const & a )
  4003. {
  4004. return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  4005. }
  4006. template <class V>
  4007. BOOST_QVM_INLINE_TRIVIAL
  4008. typename enable_if_c<
  4009. is_vec<V>::value && vec_traits<V>::dim>=1,
  4010. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > &>::type
  4011. _1XX( V & a )
  4012. {
  4013. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > &>(a);
  4014. }
  4015. template <class S>
  4016. BOOST_QVM_INLINE_TRIVIAL
  4017. typename enable_if_c<
  4018. is_scalar<S>::value,
  4019. qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > &>::type
  4020. _1XX( S & a )
  4021. {
  4022. return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > &>(a);
  4023. }
  4024. template <class V>
  4025. BOOST_QVM_INLINE_TRIVIAL
  4026. typename enable_if_c<
  4027. is_vec<V>::value && vec_traits<V>::dim>=1,
  4028. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > const &>::type
  4029. _0XX( V const & a )
  4030. {
  4031. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  4032. }
  4033. template <class S>
  4034. BOOST_QVM_INLINE_TRIVIAL
  4035. typename enable_if_c<
  4036. is_scalar<S>::value,
  4037. qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > const &>::type
  4038. _0XX( S const & a )
  4039. {
  4040. return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  4041. }
  4042. template <class V>
  4043. BOOST_QVM_INLINE_TRIVIAL
  4044. typename enable_if_c<
  4045. is_vec<V>::value && vec_traits<V>::dim>=1,
  4046. qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > &>::type
  4047. _0XX( V & a )
  4048. {
  4049. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > &>(a);
  4050. }
  4051. template <class S>
  4052. BOOST_QVM_INLINE_TRIVIAL
  4053. typename enable_if_c<
  4054. is_scalar<S>::value,
  4055. qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > &>::type
  4056. _0XX( S & a )
  4057. {
  4058. return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<-1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > &>(a);
  4059. }
  4060. template <class V>
  4061. BOOST_QVM_INLINE_TRIVIAL
  4062. typename enable_if_c<
  4063. is_vec<V>::value && vec_traits<V>::dim>=4,
  4064. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > const &>::type
  4065. WXX( V const & a )
  4066. {
  4067. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  4068. }
  4069. template <class V>
  4070. BOOST_QVM_INLINE_TRIVIAL
  4071. typename enable_if_c<
  4072. is_vec<V>::value && vec_traits<V>::dim>=4,
  4073. qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > &>::type
  4074. WXX( V & a )
  4075. {
  4076. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<3,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > &>(a);
  4077. }
  4078. template <class V>
  4079. BOOST_QVM_INLINE_TRIVIAL
  4080. typename enable_if_c<
  4081. is_vec<V>::value && vec_traits<V>::dim>=3,
  4082. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > const &>::type
  4083. ZXX( V const & a )
  4084. {
  4085. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  4086. }
  4087. template <class V>
  4088. BOOST_QVM_INLINE_TRIVIAL
  4089. typename enable_if_c<
  4090. is_vec<V>::value && vec_traits<V>::dim>=3,
  4091. qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > &>::type
  4092. ZXX( V & a )
  4093. {
  4094. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<2,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > &>(a);
  4095. }
  4096. template <class V>
  4097. BOOST_QVM_INLINE_TRIVIAL
  4098. typename enable_if_c<
  4099. is_vec<V>::value && vec_traits<V>::dim>=2,
  4100. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > const &>::type
  4101. YXX( V const & a )
  4102. {
  4103. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  4104. }
  4105. template <class V>
  4106. BOOST_QVM_INLINE_TRIVIAL
  4107. typename enable_if_c<
  4108. is_vec<V>::value && vec_traits<V>::dim>=2,
  4109. qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > &>::type
  4110. YXX( V & a )
  4111. {
  4112. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<1,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > &>(a);
  4113. }
  4114. template <class V>
  4115. BOOST_QVM_INLINE_TRIVIAL
  4116. typename enable_if_c<
  4117. is_vec<V>::value && vec_traits<V>::dim>=1,
  4118. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > const &>::type
  4119. XXX( V const & a )
  4120. {
  4121. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  4122. }
  4123. template <class S>
  4124. BOOST_QVM_INLINE_TRIVIAL
  4125. typename enable_if_c<
  4126. is_scalar<S>::value,
  4127. qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > const &>::type
  4128. XXX( S const & a )
  4129. {
  4130. return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > const &>(a);
  4131. }
  4132. template <class V>
  4133. BOOST_QVM_INLINE_TRIVIAL
  4134. typename enable_if_c<
  4135. is_vec<V>::value && vec_traits<V>::dim>=1,
  4136. qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > &>::type
  4137. XXX( V & a )
  4138. {
  4139. return reinterpret_cast<qvm_detail::sw_<V,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > &>(a);
  4140. }
  4141. template <class S>
  4142. BOOST_QVM_INLINE_TRIVIAL
  4143. typename enable_if_c<
  4144. is_scalar<S>::value,
  4145. qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > &>::type
  4146. XXX( S & a )
  4147. {
  4148. return reinterpret_cast<qvm_detail::sws_<S,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0,qvm_detail::swizzle_idx<0 > > > > &>(a);
  4149. }
  4150. }
  4151. }
  4152. #endif