Ignore:
Timestamp:
Dec 12, 2011, 12:00:15 PM (7 years ago)
Author:
huah
Message:

The final version of IDISA+ toolkit...

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/idisa_cpp/idisa_ssse3.cpp

    r1740 r1767  
     1
     2/* Copyright (c) 2011, Hua Huang and Robert D. Cameron.
     3   Licensed under the Academic Free License 3.0.
     4   This file is generated by the IDISA+ generator;
     5   modifications should be made only by changing the
     6   generator configuration and data files. */
     7
    18#ifndef IDISA_SSSE3_CPP
    29#define IDISA_SSSE3_CPP
     
    499506#define shufflemask8_to_shufflemask4(msk) \
    500507        ((msk&3) | (((msk>>3)&3)<<2) | (((msk>>6)&3)<<4) | (((msk>>9)&3)<<6) | (((msk>>12)&3)<<8) | (((msk>>15)&3)<<10) | (((msk>>18)&3)<<12) | (((msk>>21)&3)<<14))
    501 //The total number of operations is 2
     508//The total number of operations is 2.0
    502509IDISA_ALWAYS_INLINE bitblock128_t simd_nor(bitblock128_t arg1, bitblock128_t arg2)
    503510{
     
    505512}
    506513
    507 //The total number of operations is 1
     514//The total number of operations is 1.0
    508515IDISA_ALWAYS_INLINE bitblock128_t simd_not(bitblock128_t arg1)
    509516{
     
    511518}
    512519
    513 //The total number of operations is 1
     520//The total number of operations is 1.0
    514521IDISA_ALWAYS_INLINE bitblock128_t simd_andc(bitblock128_t arg1, bitblock128_t arg2)
    515522{
     
    517524}
    518525
    519 //The total number of operations is 1
     526//The total number of operations is 1.0
    520527IDISA_ALWAYS_INLINE bitblock128_t simd_or(bitblock128_t arg1, bitblock128_t arg2)
    521528{
     
    523530}
    524531
    525 //The total number of operations is 1
     532//The total number of operations is 1.0
    526533IDISA_ALWAYS_INLINE bitblock128_t simd_and(bitblock128_t arg1, bitblock128_t arg2)
    527534{
     
    529536}
    530537
    531 //The total number of operations is 1
     538//The total number of operations is 1.0
    532539IDISA_ALWAYS_INLINE bitblock128_t simd_xor(bitblock128_t arg1, bitblock128_t arg2)
    533540{
     
    535542}
    536543
    537 //The total number of operations is 1
     544//The total number of operations is 1.0
    538545template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<1>::max(bitblock128_t arg1, bitblock128_t arg2)
    539546{
     
    541548}
    542549
    543 //The total number of operations is 18
     550//The total number of operations is 15.6666666667
    544551template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::max(bitblock128_t arg1, bitblock128_t arg2)
    545552{
    546         return simd128<1>::ifh(simd128<2>::lt(arg1, arg2), arg2, arg1);
    547 }
    548 
    549 //The total number of operations is 9
     553        return simd128<1>::ifh(simd128<2>::himask(), simd_and(arg1, arg2), simd_or(simd_and(arg2, simd128<128>::srli<1>(simd_or(arg1, simd_not(arg2)))), simd_and(arg1, simd128<128>::srli<1>(simd_or(simd_not(arg1), arg2)))));
     554}
     555
     556//The total number of operations is 9.0
    550557template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::max(bitblock128_t arg1, bitblock128_t arg2)
    551558{
     
    554561}
    555562
    556 //The total number of operations is 4
     563//The total number of operations is 4.0
    557564template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::max(bitblock128_t arg1, bitblock128_t arg2)
    558565{
     
    560567}
    561568
    562 //The total number of operations is 1
     569//The total number of operations is 1.0
    563570template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::max(bitblock128_t arg1, bitblock128_t arg2)
    564571{
     
    566573}
    567574
    568 //The total number of operations is 4
     575//The total number of operations is 4.0
    569576template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::max(bitblock128_t arg1, bitblock128_t arg2)
    570577{
     
    572579}
    573580
    574 //The total number of operations is 18
     581//The total number of operations is 17.5
    575582template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::max(bitblock128_t arg1, bitblock128_t arg2)
    576583{
     
    578585}
    579586
    580 //The total number of operations is 64
     587//The total number of operations is 54.75
    581588template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::max(bitblock128_t arg1, bitblock128_t arg2)
    582589{
     
    584591}
    585592
    586 //The total number of operations is 1
     593//The total number of operations is 1.0
    587594template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<1>::mult(bitblock128_t arg1, bitblock128_t arg2)
    588595{
     
    590597}
    591598
    592 //The total number of operations is 23
     599//The total number of operations is 19.6666666667
    593600template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::mult(bitblock128_t arg1, bitblock128_t arg2)
    594601{
     
    598605}
    599606
    600 //The total number of operations is 31
     607//The total number of operations is 31.0
    601608template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::mult(bitblock128_t arg1, bitblock128_t arg2)
    602609{
     
    607614}
    608615
    609 //The total number of operations is 10
     616//The total number of operations is 10.0
    610617template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::mult(bitblock128_t arg1, bitblock128_t arg2)
    611618{
     
    616623}
    617624
    618 //The total number of operations is 1
     625//The total number of operations is 1.0
    619626template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::mult(bitblock128_t arg1, bitblock128_t arg2)
    620627{
     
    622629}
    623630
    624 //The total number of operations is 30
     631//The total number of operations is 30.0
    625632template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::mult(bitblock128_t arg1, bitblock128_t arg2)
    626633{
     
    631638}
    632639
    633 //The total number of operations is 11
     640//The total number of operations is 11.0
    634641template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::mult(bitblock128_t arg1, bitblock128_t arg2)
    635642{
     
    645652}
    646653
    647 //The total number of operations is 205
     654//The total number of operations is 165.0
    648655template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::mult(bitblock128_t arg1, bitblock128_t arg2)
    649656{
     
    659666}
    660667
    661 //The total number of operations is 1
     668//The total number of operations is 1.0
    662669template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<1>::gt(bitblock128_t arg1, bitblock128_t arg2)
    663670{
     
    665672}
    666673
    667 //The total number of operations is 15
     674//The total number of operations is 14.6666666667
    668675template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::gt(bitblock128_t arg1, bitblock128_t arg2)
    669676{
    670         bitblock128_t hiAns = simd128<(1)>::gt(arg1, arg2);
    671         bitblock128_t loAns = simd128<(1)>::ugt(arg1, arg2);
    672         bitblock128_t mask = simd_and(loAns, simd128<2>::srli<(1)>(simd128<(1)>::eq(arg1, arg2)));
    673         mask = simd_or(mask, simd128<2>::slli<(1)>(mask));
    674         return simd_or(simd128<2>::srai<(1)>(hiAns), mask);
    675 }
    676 
    677 //The total number of operations is 10
     677        bitblock128_t tmp = simd_not(arg1);
     678        bitblock128_t tmpAns = simd_or(simd_and(tmp, arg2), simd_and(simd128<128>::slli<1>(simd_and(arg1, simd_not(arg2))), simd_or(tmp, arg2)));
     679        return simd128<1>::ifh(simd128<2>::himask(), tmpAns, simd128<128>::srli<1>(tmpAns));
     680}
     681
     682//The total number of operations is 10.0
    678683template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::gt(bitblock128_t arg1, bitblock128_t arg2)
    679684{
     
    681686}
    682687
    683 //The total number of operations is 1
     688//The total number of operations is 1.0
    684689template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::gt(bitblock128_t arg1, bitblock128_t arg2)
    685690{
     
    687692}
    688693
    689 //The total number of operations is 1
     694//The total number of operations is 1.0
    690695template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::gt(bitblock128_t arg1, bitblock128_t arg2)
    691696{
     
    693698}
    694699
    695 //The total number of operations is 1
     700//The total number of operations is 1.0
    696701template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::gt(bitblock128_t arg1, bitblock128_t arg2)
    697702{
     
    699704}
    700705
    701 //The total number of operations is 15
     706//The total number of operations is 14.5
    702707template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::gt(bitblock128_t arg1, bitblock128_t arg2)
    703708{
     
    709714}
    710715
    711 //The total number of operations is 61
     716//The total number of operations is 51.75
    712717template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::gt(bitblock128_t arg1, bitblock128_t arg2)
    713718{
     
    719724}
    720725
    721 //The total number of operations is 289
     726//The total number of operations is 289.0
    722727template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<1>::umult(bitblock128_t arg1, bitblock128_t arg2)
    723728{
     
    728733}
    729734
    730 //The total number of operations is 139
     735//The total number of operations is 139.0
    731736template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::umult(bitblock128_t arg1, bitblock128_t arg2)
    732737{
     
    737742}
    738743
    739 //The total number of operations is 64
     744//The total number of operations is 64.0
    740745template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::umult(bitblock128_t arg1, bitblock128_t arg2)
    741746{
     
    746751}
    747752
    748 //The total number of operations is 28
     753//The total number of operations is 28.0
    749754template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::umult(bitblock128_t arg1, bitblock128_t arg2)
    750755{
     
    755760}
    756761
    757 //The total number of operations is 10
     762//The total number of operations is 10.0
    758763template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::umult(bitblock128_t arg1, bitblock128_t arg2)
    759764{
     
    764769}
    765770
    766 //The total number of operations is 1
     771//The total number of operations is 1.0
    767772template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::umult(bitblock128_t arg1, bitblock128_t arg2)
    768773{
     
    770775}
    771776
    772 //The total number of operations is 55
     777//The total number of operations is 45.0
    773778template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::umult(bitblock128_t arg1, bitblock128_t arg2)
    774779{
     
    788793}
    789794
    790 //The total number of operations is 1
     795//The total number of operations is 1.0
    791796template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<1>::ult(bitblock128_t arg1, bitblock128_t arg2)
    792797{
     
    794799}
    795800
    796 //The total number of operations is 14
     801//The total number of operations is 13.6666666667
    797802template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::ult(bitblock128_t arg1, bitblock128_t arg2)
    798803{
    799         bitblock128_t tmpAns = simd128<(1)>::ult(arg1, arg2);
    800         bitblock128_t mask = simd_and(tmpAns, simd128<2>::srli<(1)>(simd128<(1)>::eq(arg1, arg2)));
    801         mask = simd_or(mask, simd128<2>::slli<(1)>(mask));
    802         return simd_or(simd128<2>::srai<(1)>(tmpAns), mask);
    803 }
    804 
    805 //The total number of operations is 20
     804        bitblock128_t tmp = simd_not(arg1);
     805        bitblock128_t tmpAns = simd_or(simd_and(tmp, arg2), simd_and(simd128<128>::slli<1>(simd_and(tmp, arg2)), simd_or(tmp, arg2)));
     806        return simd128<1>::ifh(simd128<2>::himask(), tmpAns, simd128<128>::srli<1>(tmpAns));
     807}
     808
     809//The total number of operations is 20.0
    806810template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::ult(bitblock128_t arg1, bitblock128_t arg2)
    807811{
     
    809813}
    810814
    811 //The total number of operations is 7
     815//The total number of operations is 7.0
    812816template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::ult(bitblock128_t arg1, bitblock128_t arg2)
    813817{
     
    816820}
    817821
    818 //The total number of operations is 7
     822//The total number of operations is 7.0
    819823template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::ult(bitblock128_t arg1, bitblock128_t arg2)
    820824{
     
    823827}
    824828
    825 //The total number of operations is 7
     829//The total number of operations is 7.0
    826830template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::ult(bitblock128_t arg1, bitblock128_t arg2)
    827831{
     
    830834}
    831835
    832 //The total number of operations is 18
     836//The total number of operations is 17.5
    833837template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::ult(bitblock128_t arg1, bitblock128_t arg2)
    834838{
     
    839843}
    840844
    841 //The total number of operations is 50
     845//The total number of operations is 40.0833333333
    842846template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::ult(bitblock128_t arg1, bitblock128_t arg2)
    843847{
     
    845849}
    846850
    847 //The total number of operations is 1
     851//The total number of operations is 1.0
    848852template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<1>::lt(bitblock128_t arg1, bitblock128_t arg2)
    849853{
     
    851855}
    852856
    853 //The total number of operations is 15
     857//The total number of operations is 14.6666666667
    854858template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::lt(bitblock128_t arg1, bitblock128_t arg2)
    855859{
    856         bitblock128_t hiAns = simd128<(1)>::lt(arg1, arg2);
    857         bitblock128_t loAns = simd128<(1)>::ult(arg1, arg2);
    858         bitblock128_t mask = simd_and(loAns, simd128<2>::srli<(1)>(simd128<(1)>::eq(arg1, arg2)));
    859         mask = simd_or(mask, simd128<2>::slli<(1)>(mask));
    860         return simd_or(simd128<2>::srai<(1)>(hiAns), mask);
    861 }
    862 
    863 //The total number of operations is 18
     860        bitblock128_t tmp = simd_not(arg2);
     861        bitblock128_t tmpAns = simd_or(simd_and(arg1, tmp), simd_and(simd128<128>::slli<1>(simd_and(simd_not(arg1), arg2)), simd_or(arg1, tmp)));
     862        return simd128<1>::ifh(simd128<2>::himask(), tmpAns, simd128<128>::srli<1>(tmpAns));
     863}
     864
     865//The total number of operations is 18.0
    864866template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::lt(bitblock128_t arg1, bitblock128_t arg2)
    865867{
     
    867869}
    868870
    869 //The total number of operations is 5
     871//The total number of operations is 5.0
    870872template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::lt(bitblock128_t arg1, bitblock128_t arg2)
    871873{
     
    873875}
    874876
    875 //The total number of operations is 5
     877//The total number of operations is 5.0
    876878template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::lt(bitblock128_t arg1, bitblock128_t arg2)
    877879{
     
    879881}
    880882
    881 //The total number of operations is 5
     883//The total number of operations is 5.0
    882884template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::lt(bitblock128_t arg1, bitblock128_t arg2)
    883885{
     
    885887}
    886888
    887 //The total number of operations is 20
     889//The total number of operations is 19.5
    888890template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::lt(bitblock128_t arg1, bitblock128_t arg2)
    889891{
     
    892894}
    893895
    894 //The total number of operations is 70
     896//The total number of operations is 60.75
    895897template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::lt(bitblock128_t arg1, bitblock128_t arg2)
    896898{
     
    902904}
    903905
    904 //The total number of operations is 2
     906//The total number of operations is 2.0
    905907template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::srli(bitblock128_t arg1)
    906908{
     
    908910}
    909911
    910 //The total number of operations is 2
     912//The total number of operations is 2.0
    911913template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::srli(bitblock128_t arg1)
    912914{
     
    914916}
    915917
    916 //The total number of operations is 2
     918//The total number of operations is 2.0
    917919template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::srli(bitblock128_t arg1)
    918920{
     
    920922}
    921923
    922 //The total number of operations is 1
     924//The total number of operations is 1.0
    923925template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::srli(bitblock128_t arg1)
    924926{
     
    926928}
    927929
    928 //The total number of operations is 1
     930//The total number of operations is 1.0
    929931template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::srli(bitblock128_t arg1)
    930932{
     
    932934}
    933935
    934 //The total number of operations is 1
     936//The total number of operations is 1.0
    935937template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::srli(bitblock128_t arg1)
    936938{
     
    938940}
    939941
    940 //The total number of operations is 4
     942//The total number of operations is 2.33333333333
    941943template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::srli(bitblock128_t arg1)
    942944{
     
    944946}
    945947
    946 //The total number of operations is 1
     948//The total number of operations is 1.0
    947949template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<1>::ctz(bitblock128_t arg1)
    948950{
     
    950952}
    951953
    952 //The total number of operations is 14
     954//The total number of operations is 10.6666666667
    953955template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::ctz(bitblock128_t arg1)
    954956{
     
    957959}
    958960
    959 //The total number of operations is 14
     961//The total number of operations is 14.0
    960962template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::ctz(bitblock128_t arg1)
    961963{
     
    963965}
    964966
    965 //The total number of operations is 13
     967//The total number of operations is 13.0
    966968template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::ctz(bitblock128_t arg1)
    967969{
     
    969971}
    970972
    971 //The total number of operations is 16
     973//The total number of operations is 16.0
    972974template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::ctz(bitblock128_t arg1)
    973975{
     
    975977}
    976978
    977 //The total number of operations is 19
     979//The total number of operations is 19.0
    978980template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::ctz(bitblock128_t arg1)
    979981{
     
    981983}
    982984
    983 //The total number of operations is 14
     985//The total number of operations is 14.0
    984986template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::ctz(bitblock128_t arg1)
    985987{
     
    987989}
    988990
    989 //The total number of operations is 30
     991//The total number of operations is 26.6666666667
    990992template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::ctz(bitblock128_t arg1)
    991993{
     
    993995}
    994996
    995 //The total number of operations is 7
     997//The total number of operations is 7.0
    996998template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::sll(bitblock128_t arg1, bitblock128_t shift_mask)
    997999{
     
    9991001}
    10001002
    1001 //The total number of operations is 11
     1003//The total number of operations is 11.0
    10021004template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::sll(bitblock128_t arg1, bitblock128_t shift_mask)
    10031005{
     
    10051007}
    10061008
    1007 //The total number of operations is 1
     1009//The total number of operations is 1.0
    10081010template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<1>::ugt(bitblock128_t arg1, bitblock128_t arg2)
    10091011{
     
    10111013}
    10121014
    1013 //The total number of operations is 14
     1015//The total number of operations is 13.6666666667
    10141016template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::ugt(bitblock128_t arg1, bitblock128_t arg2)
    10151017{
    1016         bitblock128_t tmpAns = simd128<(1)>::ugt(arg1, arg2);
    1017         bitblock128_t mask = simd_and(tmpAns, simd128<2>::srli<(1)>(simd128<(1)>::eq(arg1, arg2)));
    1018         mask = simd_or(mask, simd128<2>::slli<(1)>(mask));
    1019         return simd_or(simd128<2>::srai<(1)>(tmpAns), mask);
    1020 }
    1021 
    1022 //The total number of operations is 12
     1018        bitblock128_t tmp = simd_not(arg2);
     1019        bitblock128_t tmpAns = simd_or(simd_and(arg1, tmp), simd_and(simd128<128>::slli<1>(simd_and(arg1, tmp)), simd_or(arg1, tmp)));
     1020        return simd128<1>::ifh(simd128<2>::himask(), tmpAns, simd128<128>::srli<1>(tmpAns));
     1021}
     1022
     1023//The total number of operations is 12.0
    10231024template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::ugt(bitblock128_t arg1, bitblock128_t arg2)
    10241025{
     
    10261027}
    10271028
    1028 //The total number of operations is 3
     1029//The total number of operations is 3.0
    10291030template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::ugt(bitblock128_t arg1, bitblock128_t arg2)
    10301031{
     
    10331034}
    10341035
    1035 //The total number of operations is 3
     1036//The total number of operations is 3.0
    10361037template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::ugt(bitblock128_t arg1, bitblock128_t arg2)
    10371038{
     
    10401041}
    10411042
    1042 //The total number of operations is 3
     1043//The total number of operations is 3.0
    10431044template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::ugt(bitblock128_t arg1, bitblock128_t arg2)
    10441045{
     
    10471048}
    10481049
    1049 //The total number of operations is 14
     1050//The total number of operations is 13.5
    10501051template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::ugt(bitblock128_t arg1, bitblock128_t arg2)
    10511052{
     
    10561057}
    10571058
    1058 //The total number of operations is 46
     1059//The total number of operations is 37.25
    10591060template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::ugt(bitblock128_t arg1, bitblock128_t arg2)
    10601061{
     
    10651066}
    10661067
    1067 //The total number of operations is 4
     1068//The total number of operations is 4.0
    10681069template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::xor_hl(bitblock128_t arg1)
    10691070{
     
    10711072}
    10721073
    1073 //The total number of operations is 4
     1074//The total number of operations is 4.0
    10741075template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::xor_hl(bitblock128_t arg1)
    10751076{
     
    10771078}
    10781079
    1079 //The total number of operations is 4
     1080//The total number of operations is 4.0
    10801081template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::xor_hl(bitblock128_t arg1)
    10811082{
     
    10831084}
    10841085
    1085 //The total number of operations is 3
     1086//The total number of operations is 3.0
    10861087template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::xor_hl(bitblock128_t arg1)
    10871088{
     
    10891090}
    10901091
    1091 //The total number of operations is 3
     1092//The total number of operations is 3.0
    10921093template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::xor_hl(bitblock128_t arg1)
    10931094{
     
    10951096}
    10961097
    1097 //The total number of operations is 3
     1098//The total number of operations is 3.0
    10981099template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::xor_hl(bitblock128_t arg1)
    10991100{
     
    11011102}
    11021103
    1103 //The total number of operations is 6
     1104//The total number of operations is 4.33333333333
    11041105template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::xor_hl(bitblock128_t arg1)
    11051106{
     
    11131114}
    11141115
    1115 //The total number of operations is 3
     1116//The total number of operations is 3.0
    11161117template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::popcount(bitblock128_t arg1)
    11171118{
     
    11191120}
    11201121
    1121 //The total number of operations is 7
     1122//The total number of operations is 7.0
    11221123template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::popcount(bitblock128_t arg1)
    11231124{
     
    11251126}
    11261127
    1127 //The total number of operations is 11
     1128//The total number of operations is 11.0
    11281129template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::popcount(bitblock128_t arg1)
    11291130{
     
    11311132}
    11321133
    1133 //The total number of operations is 14
     1134//The total number of operations is 14.0
    11341135template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::popcount(bitblock128_t arg1)
    11351136{
     
    11371138}
    11381139
    1139 //The total number of operations is 17
     1140//The total number of operations is 17.0
    11401141template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::popcount(bitblock128_t arg1)
    11411142{
     
    11431144}
    11441145
    1145 //The total number of operations is 12
     1146//The total number of operations is 12.0
    11461147template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::popcount(bitblock128_t arg1)
    11471148{
     
    11491150}
    11501151
    1151 //The total number of operations is 18
     1152//The total number of operations is 16.3333333333
    11521153template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::popcount(bitblock128_t arg1)
    11531154{
     
    11561157}
    11571158
    1158 //The total number of operations is 8
     1159//The total number of operations is 6.33333333333
    11591160template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::neg(bitblock128_t arg1)
    11601161{
     
    11621163}
    11631164
    1164 //The total number of operations is 6
     1165//The total number of operations is 6.0
    11651166template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::neg(bitblock128_t arg1)
    11661167{
     
    11681169}
    11691170
    1170 //The total number of operations is 1
     1171//The total number of operations is 1.0
    11711172template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::neg(bitblock128_t arg1)
    11721173{
     
    11741175}
    11751176
    1176 //The total number of operations is 1
     1177//The total number of operations is 1.0
    11771178template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::neg(bitblock128_t arg1)
    11781179{
     
    11801181}
    11811182
    1182 //The total number of operations is 1
     1183//The total number of operations is 1.0
    11831184template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::neg(bitblock128_t arg1)
    11841185{
     
    11861187}
    11871188
    1188 //The total number of operations is 1
     1189//The total number of operations is 1.0
    11891190template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::neg(bitblock128_t arg1)
    11901191{
     
    11921193}
    11931194
    1194 //The total number of operations is 11
     1195//The total number of operations is 9.33333333333
    11951196template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::neg(bitblock128_t arg1)
    11961197{
     
    11981199}
    11991200
    1200 //The total number of operations is 2
     1201//The total number of operations is 2.0
    12011202template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::slli(bitblock128_t arg1)
    12021203{
     
    12041205}
    12051206
    1206 //The total number of operations is 2
     1207//The total number of operations is 2.0
    12071208template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::slli(bitblock128_t arg1)
    12081209{
     
    12101211}
    12111212
    1212 //The total number of operations is 2
     1213//The total number of operations is 2.0
    12131214template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::slli(bitblock128_t arg1)
    12141215{
     
    12161217}
    12171218
    1218 //The total number of operations is 1
     1219//The total number of operations is 1.0
    12191220template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::slli(bitblock128_t arg1)
    12201221{
     
    12221223}
    12231224
    1224 //The total number of operations is 1
     1225//The total number of operations is 1.0
    12251226template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::slli(bitblock128_t arg1)
    12261227{
     
    12281229}
    12291230
    1230 //The total number of operations is 1
     1231//The total number of operations is 1.0
    12311232template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::slli(bitblock128_t arg1)
    12321233{
     
    12341235}
    12351236
    1236 //The total number of operations is 4
     1237//The total number of operations is 2.33333333333
    12371238template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::slli(bitblock128_t arg1)
    12381239{
     
    12401241}
    12411242
    1242 //The total number of operations is 3
     1243//The total number of operations is 3.0
    12431244template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<1>::ifh(bitblock128_t arg1, bitblock128_t arg2, bitblock128_t arg3)
    12441245{
     
    12461247}
    12471248
    1248 //The total number of operations is 8
     1249//The total number of operations is 8.0
    12491250template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::ifh(bitblock128_t arg1, bitblock128_t arg2, bitblock128_t arg3)
    12501251{
     
    12521253}
    12531254
    1254 //The total number of operations is 13
     1255//The total number of operations is 13.0
    12551256template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::ifh(bitblock128_t arg1, bitblock128_t arg2, bitblock128_t arg3)
    12561257{
     
    12581259}
    12591260
    1260 //The total number of operations is 4
     1261//The total number of operations is 4.0
    12611262template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::ifh(bitblock128_t arg1, bitblock128_t arg2, bitblock128_t arg3)
    12621263{
     
    12641265}
    12651266
    1266 //The total number of operations is 4
     1267//The total number of operations is 4.0
    12671268template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::ifh(bitblock128_t arg1, bitblock128_t arg2, bitblock128_t arg3)
    12681269{
     
    12701271}
    12711272
    1272 //The total number of operations is 4
     1273//The total number of operations is 4.0
    12731274template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::ifh(bitblock128_t arg1, bitblock128_t arg2, bitblock128_t arg3)
    12741275{
     
    12761277}
    12771278
    1278 //The total number of operations is 8
     1279//The total number of operations is 8.0
    12791280template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::ifh(bitblock128_t arg1, bitblock128_t arg2, bitblock128_t arg3)
    12801281{
     
    12821283}
    12831284
    1284 //The total number of operations is 15
     1285//The total number of operations is 13.3333333333
    12851286template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::ifh(bitblock128_t arg1, bitblock128_t arg2, bitblock128_t arg3)
    12861287{
     
    12881289}
    12891290
    1290 //The total number of operations is 1
     1291//The total number of operations is 1.0
    12911292template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<1>::sub(bitblock128_t arg1, bitblock128_t arg2)
    12921293{
     
    12941295}
    12951296
    1296 //The total number of operations is 11
     1297//The total number of operations is 9.33333333333
    12971298template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::sub(bitblock128_t arg1, bitblock128_t arg2)
    12981299{
     
    13011302}
    13021303
    1303 //The total number of operations is 6
     1304//The total number of operations is 6.0
    13041305template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::sub(bitblock128_t arg1, bitblock128_t arg2)
    13051306{
     
    13071308}
    13081309
    1309 //The total number of operations is 1
     1310//The total number of operations is 1.0
    13101311template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::sub(bitblock128_t arg1, bitblock128_t arg2)
    13111312{
     
    13131314}
    13141315
    1315 //The total number of operations is 1
     1316//The total number of operations is 1.0
    13161317template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::sub(bitblock128_t arg1, bitblock128_t arg2)
    13171318{
     
    13191320}
    13201321
    1321 //The total number of operations is 1
     1322//The total number of operations is 1.0
    13221323template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::sub(bitblock128_t arg1, bitblock128_t arg2)
    13231324{
     
    13251326}
    13261327
    1327 //The total number of operations is 1
     1328//The total number of operations is 1.0
    13281329template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::sub(bitblock128_t arg1, bitblock128_t arg2)
    13291330{
     
    13311332}
    13321333
    1333 //The total number of operations is 11
     1334//The total number of operations is 9.33333333333
    13341335template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::sub(bitblock128_t arg1, bitblock128_t arg2)
    13351336{
     
    13401341}
    13411342
    1342 //The total number of operations is 3
     1343//The total number of operations is 3.0
    13431344template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::add_hl(bitblock128_t arg1)
    13441345{
     
    13461347}
    13471348
    1348 //The total number of operations is 4
     1349//The total number of operations is 4.0
    13491350template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::add_hl(bitblock128_t arg1)
    13501351{
     
    13521353}
    13531354
    1354 //The total number of operations is 4
     1355//The total number of operations is 4.0
    13551356template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::add_hl(bitblock128_t arg1)
    13561357{
     
    13581359}
    13591360
    1360 //The total number of operations is 3
     1361//The total number of operations is 3.0
    13611362template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::add_hl(bitblock128_t arg1)
    13621363{
     
    13641365}
    13651366
    1366 //The total number of operations is 3
     1367//The total number of operations is 3.0
    13671368template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::add_hl(bitblock128_t arg1)
    13681369{
     
    13701371}
    13711372
    1372 //The total number of operations is 3
     1373//The total number of operations is 3.0
    13731374template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::add_hl(bitblock128_t arg1)
    13741375{
     
    13761377}
    13771378
    1378 //The total number of operations is 16
     1379//The total number of operations is 12.6666666667
    13791380template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::add_hl(bitblock128_t arg1)
    13801381{
     
    13821383}
    13831384
    1384 //The total number of operations is 7
     1385//The total number of operations is 7.0
    13851386template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::srl(bitblock128_t arg1, bitblock128_t shift_mask)
    13861387{
     
    13881389}
    13891390
    1390 //The total number of operations is 11
     1391//The total number of operations is 11.0
    13911392template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::srl(bitblock128_t arg1, bitblock128_t shift_mask)
    13921393{
     
    14421443}
    14431444
    1444 //The total number of operations is 1
     1445//The total number of operations is 1.0
    14451446template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<1>::min(bitblock128_t arg1, bitblock128_t arg2)
    14461447{
     
    14481449}
    14491450
    1450 //The total number of operations is 18
     1451//The total number of operations is 16.6666666667
    14511452template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::min(bitblock128_t arg1, bitblock128_t arg2)
    14521453{
    1453         return simd128<1>::ifh(simd128<2>::lt(arg1, arg2), arg1, arg2);
    1454 }
    1455 
    1456 //The total number of operations is 9
     1454        bitblock128_t tmp1 = simd128<128>::srli<1>(arg1);
     1455        bitblock128_t tmp2 = simd128<128>::srli<1>(arg2);
     1456        return simd128<1>::ifh(simd128<2>::himask(), simd_or(arg1, arg2), simd_or(simd_and(arg1, simd_and(tmp1, simd_not(tmp2))), simd_and(arg2, simd_or(simd_and(simd_not(tmp1), tmp2), arg1))));
     1457}
     1458
     1459//The total number of operations is 9.0
    14571460template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::min(bitblock128_t arg1, bitblock128_t arg2)
    14581461{
     
    14611464}
    14621465
    1463 //The total number of operations is 4
     1466//The total number of operations is 4.0
    14641467template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::min(bitblock128_t arg1, bitblock128_t arg2)
    14651468{
     
    14671470}
    14681471
    1469 //The total number of operations is 1
     1472//The total number of operations is 1.0
    14701473template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::min(bitblock128_t arg1, bitblock128_t arg2)
    14711474{
     
    14731476}
    14741477
    1475 //The total number of operations is 4
     1478//The total number of operations is 4.0
    14761479template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::min(bitblock128_t arg1, bitblock128_t arg2)
    14771480{
     
    14791482}
    14801483
    1481 //The total number of operations is 18
     1484//The total number of operations is 17.5
    14821485template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::min(bitblock128_t arg1, bitblock128_t arg2)
    14831486{
     
    14851488}
    14861489
    1487 //The total number of operations is 64
     1490//The total number of operations is 54.75
    14881491template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::min(bitblock128_t arg1, bitblock128_t arg2)
    14891492{
     
    15331536}
    15341537
    1535 //The total number of operations is 1
     1538//The total number of operations is 1.0
    15361539template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<1>::umin(bitblock128_t arg1, bitblock128_t arg2)
    15371540{
     
    15391542}
    15401543
    1541 //The total number of operations is 16
     1544//The total number of operations is 16.0
    15421545template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::umin(bitblock128_t arg1, bitblock128_t arg2)
    15431546{
     
    15451548}
    15461549
    1547 //The total number of operations is 6
     1550//The total number of operations is 6.0
    15481551template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::umin(bitblock128_t arg1, bitblock128_t arg2)
    15491552{
     
    15511554}
    15521555
    1553 //The total number of operations is 1
     1556//The total number of operations is 1.0
    15541557template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::umin(bitblock128_t arg1, bitblock128_t arg2)
    15551558{
     
    15571560}
    15581561
    1559 //The total number of operations is 4
     1562//The total number of operations is 4.0
    15601563template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::umin(bitblock128_t arg1, bitblock128_t arg2)
    15611564{
     
    15641567}
    15651568
    1566 //The total number of operations is 7
     1569//The total number of operations is 7.0
    15671570template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::umin(bitblock128_t arg1, bitblock128_t arg2)
    15681571{
     
    15711574}
    15721575
    1573 //The total number of operations is 20
     1576//The total number of operations is 20.0
    15741577template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::umin(bitblock128_t arg1, bitblock128_t arg2)
    15751578{
     
    15801583}
    15811584
    1582 //The total number of operations is 47
     1585//The total number of operations is 43.6666666667
    15831586template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::umin(bitblock128_t arg1, bitblock128_t arg2)
    15841587{
     
    15891592}
    15901593
    1591 //The total number of operations is 9
     1594//The total number of operations is 7.33333333333
    15921595template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::abs(bitblock128_t arg1)
    15931596{
     
    15951598}
    15961599
    1597 //The total number of operations is 19
     1600//The total number of operations is 19.0
    15981601template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::abs(bitblock128_t arg1)
    15991602{
     
    16021605}
    16031606
    1604 //The total number of operations is 1
     1607//The total number of operations is 1.0
    16051608template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::abs(bitblock128_t arg1)
    16061609{
     
    16081611}
    16091612
    1610 //The total number of operations is 1
     1613//The total number of operations is 1.0
    16111614template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::abs(bitblock128_t arg1)
    16121615{
     
    16141617}
    16151618
    1616 //The total number of operations is 1
     1619//The total number of operations is 1.0
    16171620template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::abs(bitblock128_t arg1)
    16181621{
     
    16201623}
    16211624
    1622 //The total number of operations is 13
     1625//The total number of operations is 13.0
    16231626template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::abs(bitblock128_t arg1)
    16241627{
     
    16271630}
    16281631
    1629 //The total number of operations is 45
     1632//The total number of operations is 40.0
    16301633template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::abs(bitblock128_t arg1)
    16311634{
     
    16341637}
    16351638
    1636 //The total number of operations is 2
     1639//The total number of operations is 2.0
    16371640template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<1>::eq(bitblock128_t arg1, bitblock128_t arg2)
    16381641{
     
    16401643}
    16411644
    1642 //The total number of operations is 8
     1645//The total number of operations is 8.0
    16431646template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::eq(bitblock128_t arg1, bitblock128_t arg2)
    16441647{
     
    16491652}
    16501653
    1651 //The total number of operations is 9
     1654//The total number of operations is 9.0
    16521655template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::eq(bitblock128_t arg1, bitblock128_t arg2)
    16531656{
     
    16551658}
    16561659
    1657 //The total number of operations is 1
     1660//The total number of operations is 1.0
    16581661template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::eq(bitblock128_t arg1, bitblock128_t arg2)
    16591662{
     
    16611664}
    16621665
    1663 //The total number of operations is 1
     1666//The total number of operations is 1.0
    16641667template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::eq(bitblock128_t arg1, bitblock128_t arg2)
    16651668{
     
    16671670}
    16681671
    1669 //The total number of operations is 1
     1672//The total number of operations is 1.0
    16701673template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::eq(bitblock128_t arg1, bitblock128_t arg2)
    16711674{
     
    16731676}
    16741677
    1675 //The total number of operations is 5
     1678//The total number of operations is 5.0
    16761679template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::eq(bitblock128_t arg1, bitblock128_t arg2)
    16771680{
     
    16821685}
    16831686
    1684 //The total number of operations is 15
     1687//The total number of operations is 11.6666666667
    16851688template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::eq(bitblock128_t arg1, bitblock128_t arg2)
    16861689{
     
    16911694}
    16921695
    1693 //The total number of operations is 4
     1696//The total number of operations is 4.0
    16941697template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::srai(bitblock128_t arg1)
    16951698{
     
    16971700}
    16981701
    1699 //The total number of operations is 10
     1702//The total number of operations is 10.0
    17001703template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::srai(bitblock128_t arg1)
    17011704{
     
    17041707}
    17051708
    1706 //The total number of operations is 5
     1709//The total number of operations is 5.0
    17071710template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::srai(bitblock128_t arg1)
    17081711{
     
    17111714}
    17121715
    1713 //The total number of operations is 1
     1716//The total number of operations is 1.0
    17141717template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::srai(bitblock128_t arg1)
    17151718{
     
    17171720}
    17181721
    1719 //The total number of operations is 1
     1722//The total number of operations is 1.0
    17201723template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::srai(bitblock128_t arg1)
    17211724{
     
    17231726}
    17241727
    1725 //The total number of operations is 5
     1728//The total number of operations is 4.5
    17261729template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::srai(bitblock128_t arg1)
    17271730{
     
    17291732}
    17301733
    1731 //The total number of operations is 16
     1734//The total number of operations is 11.0833333333
    17321735template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::srai(bitblock128_t arg1)
    17331736{
     
    17771780}
    17781781
    1779 //The total number of operations is 1
     1782//The total number of operations is 1.0
    17801783template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<1>::add(bitblock128_t arg1, bitblock128_t arg2)
    17811784{
     
    17831786}
    17841787
    1785 //The total number of operations is 10
     1788//The total number of operations is 8.33333333333
    17861789template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::add(bitblock128_t arg1, bitblock128_t arg2)
    17871790{
     
    17901793}
    17911794
    1792 //The total number of operations is 6
     1795//The total number of operations is 6.0
    17931796template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::add(bitblock128_t arg1, bitblock128_t arg2)
    17941797{
     
    17961799}
    17971800
    1798 //The total number of operations is 1
     1801//The total number of operations is 1.0
    17991802template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::add(bitblock128_t arg1, bitblock128_t arg2)
    18001803{
     
    18021805}
    18031806
    1804 //The total number of operations is 1
     1807//The total number of operations is 1.0
    18051808template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::add(bitblock128_t arg1, bitblock128_t arg2)
    18061809{
     
    18081811}
    18091812
    1810 //The total number of operations is 1
     1813//The total number of operations is 1.0
    18111814template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::add(bitblock128_t arg1, bitblock128_t arg2)
    18121815{
     
    18141817}
    18151818
    1816 //The total number of operations is 1
     1819//The total number of operations is 1.0
    18171820template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::add(bitblock128_t arg1, bitblock128_t arg2)
    18181821{
     
    18201823}
    18211824
    1822 //The total number of operations is 11
     1825//The total number of operations is 9.33333333333
    18231826template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::add(bitblock128_t arg1, bitblock128_t arg2)
    18241827{
     
    18291832}
    18301833
    1831 //The total number of operations is 1
     1834//The total number of operations is 1.0
    18321835template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<1>::umax(bitblock128_t arg1, bitblock128_t arg2)
    18331836{
     
    18351838}
    18361839
    1837 //The total number of operations is 16
     1840//The total number of operations is 15.6666666667
    18381841template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::umax(bitblock128_t arg1, bitblock128_t arg2)
    18391842{
    1840         return simd_or(simd_and(simd128<(4)>::himask(), simd128<(4)>::umax(arg1, arg2)), simd128<(4)>::umax(simd_and(simd128<(4)>::lomask(), arg1), simd_and(simd128<(4)>::lomask(), arg2)));
    1841 }
    1842 
    1843 //The total number of operations is 6
     1843        return simd128<1>::ifh(simd128<2>::himask(), simd_or(arg1, arg2), simd_or(simd_and(arg2, simd128<128>::srli<1>(simd_or(simd_not(arg1), arg2))), simd_and(arg1, simd128<128>::srli<1>(simd_or(arg1, simd_not(arg2))))));
     1844}
     1845
     1846//The total number of operations is 6.0
    18441847template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::umax(bitblock128_t arg1, bitblock128_t arg2)
    18451848{
     
    18471850}
    18481851
    1849 //The total number of operations is 1
     1852//The total number of operations is 1.0
    18501853template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::umax(bitblock128_t arg1, bitblock128_t arg2)
    18511854{
     
    18531856}
    18541857
    1855 //The total number of operations is 4
     1858//The total number of operations is 4.0
    18561859template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::umax(bitblock128_t arg1, bitblock128_t arg2)
    18571860{
     
    18601863}
    18611864
    1862 //The total number of operations is 7
     1865//The total number of operations is 7.0
    18631866template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::umax(bitblock128_t arg1, bitblock128_t arg2)
    18641867{
     
    18671870}
    18681871
    1869 //The total number of operations is 20
     1872//The total number of operations is 20.0
    18701873template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::umax(bitblock128_t arg1, bitblock128_t arg2)
    18711874{
     
    18761879}
    18771880
    1878 //The total number of operations is 47
     1881//The total number of operations is 43.6666666667
    18791882template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::umax(bitblock128_t arg1, bitblock128_t arg2)
    18801883{
     
    18851888}
    18861889
    1887 //The total number of operations is 93
     1890//The total number of operations is 73.0
    18881891template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<2>::umin_hl(bitblock128_t arg1, bitblock128_t arg2)
    18891892{
     
    18911894}
    18921895
    1893 //The total number of operations is 80
     1896//The total number of operations is 66.6666666667
    18941897template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<4>::umin_hl(bitblock128_t arg1, bitblock128_t arg2)
    18951898{
     
    18971900}
    18981901
    1899 //The total number of operations is 42
     1902//The total number of operations is 35.3333333333
    19001903template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<8>::umin_hl(bitblock128_t arg1, bitblock128_t arg2)
    19011904{
     
    19031906}
    19041907
    1905 //The total number of operations is 7
     1908//The total number of operations is 7.0
    19061909template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<16>::umin_hl(bitblock128_t arg1, bitblock128_t arg2)
    19071910{
     
    19091912}
    19101913
    1911 //The total number of operations is 10
     1914//The total number of operations is 10.0
    19121915template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<32>::umin_hl(bitblock128_t arg1, bitblock128_t arg2)
    19131916{
     
    19151918}
    19161919
    1917 //The total number of operations is 13
     1920//The total number of operations is 13.0
    19181921template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<64>::umin_hl(bitblock128_t arg1, bitblock128_t arg2)
    19191922{
     
    19211924}
    19221925
    1923 //The total number of operations is 34
     1926//The total number of operations is 30.6666666667
    19241927template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<128>::umin_hl(bitblock128_t arg1, bitblock128_t arg2)
    19251928{
     
    19271930}
    19281931
    1929 //The total number of operations is 93
     1932//The total number of operations is 73.0
    19301933template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<2>::add_hl(bitblock128_t arg1, bitblock128_t arg2)
    19311934{
     
    19331936}
    19341937
    1935 //The total number of operations is 74
     1938//The total number of operations is 59.0
    19361939template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<4>::add_hl(bitblock128_t arg1, bitblock128_t arg2)
    19371940{
     
    19391942}
    19401943
    1941 //The total number of operations is 42
     1944//The total number of operations is 35.3333333333
    19421945template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<8>::add_hl(bitblock128_t arg1, bitblock128_t arg2)
    19431946{
     
    19451948}
    19461949
    1947 //The total number of operations is 7
     1950//The total number of operations is 7.0
    19481951template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<16>::add_hl(bitblock128_t arg1, bitblock128_t arg2)
    19491952{
     
    19511954}
    19521955
    1953 //The total number of operations is 1
     1956//The total number of operations is 1.0
    19541957template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<32>::add_hl(bitblock128_t arg1, bitblock128_t arg2)
    19551958{
     
    19571960}
    19581961
    1959 //The total number of operations is 1
     1962//The total number of operations is 1.0
    19601963template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<64>::add_hl(bitblock128_t arg1, bitblock128_t arg2)
    19611964{
     
    19631966}
    19641967
    1965 //The total number of operations is 15
     1968//The total number of operations is 11.6666666667
    19661969template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<128>::add_hl(bitblock128_t arg1, bitblock128_t arg2)
    19671970{
     
    19691972}
    19701973
    1971 //The total number of operations is 120
     1974//The total number of operations is 108.666666667
    19721975template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<2>::packss(bitblock128_t arg1, bitblock128_t arg2)
    19731976{
     
    19771980}
    19781981
    1979 //The total number of operations is 86
     1982//The total number of operations is 79.3333333333
    19801983template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<4>::packss(bitblock128_t arg1, bitblock128_t arg2)
    19811984{
     
    19851988}
    19861989
    1987 //The total number of operations is 36
     1990//The total number of operations is 32.6666666667
    19881991template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<8>::packss(bitblock128_t arg1, bitblock128_t arg2)
    19891992{
     
    19931996}
    19941997
    1995 //The total number of operations is 1
     1998//The total number of operations is 1.0
    19961999template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<16>::packss(bitblock128_t arg1, bitblock128_t arg2)
    19972000{
     
    19992002}
    20002003
    2001 //The total number of operations is 1
     2004//The total number of operations is 1.0
    20022005template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<32>::packss(bitblock128_t arg1, bitblock128_t arg2)
    20032006{
     
    20052008}
    20062009
    2007 //The total number of operations is 77
     2010//The total number of operations is 75.0
    20082011template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<64>::packss(bitblock128_t arg1, bitblock128_t arg2)
    20092012{
     
    20132016}
    20142017
    2015 //The total number of operations is 268
     2018//The total number of operations is 227.666666667
    20162019template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<128>::packss(bitblock128_t arg1, bitblock128_t arg2)
    20172020{
     
    20212024}
    20222025
    2023 //The total number of operations is 24
     2026//The total number of operations is 24.0
    20242027template <> IDISA_ALWAYS_INLINE uint64_t hsimd128<4>::signmask(bitblock128_t arg1)
    20252028{
     
    20292032}
    20302033
    2031 //The total number of operations is 1
     2034//The total number of operations is 1.0
    20322035template <> IDISA_ALWAYS_INLINE uint64_t hsimd128<8>::signmask(bitblock128_t arg1)
    20332036{
     
    20352038}
    20362039
    2037 //The total number of operations is 4
     2040//The total number of operations is 4.0
    20382041template <> IDISA_ALWAYS_INLINE uint64_t hsimd128<16>::signmask(bitblock128_t arg1)
    20392042{
     
    20412044}
    20422045
    2043 //The total number of operations is 7
     2046//The total number of operations is 7.0
    20442047template <> IDISA_ALWAYS_INLINE uint64_t hsimd128<32>::signmask(bitblock128_t arg1)
    20452048{
     
    20472050}
    20482051
    2049 //The total number of operations is 8
     2052//The total number of operations is 8.0
    20502053template <> IDISA_ALWAYS_INLINE uint64_t hsimd128<64>::signmask(bitblock128_t arg1)
    20512054{
     
    20532056}
    20542057
    2055 //The total number of operations is 15
     2058//The total number of operations is 13.3333333333
    20562059template <> IDISA_ALWAYS_INLINE uint64_t hsimd128<128>::signmask(bitblock128_t arg1)
    20572060{
     
    20592062}
    20602063
    2061 //The total number of operations is 45
     2064//The total number of operations is 35.0
    20622065template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<2>::packl(bitblock128_t arg1, bitblock128_t arg2)
    20632066{
     
    20652068}
    20662069
    2067 //The total number of operations is 31
     2070//The total number of operations is 24.3333333333
    20682071template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<4>::packl(bitblock128_t arg1, bitblock128_t arg2)
    20692072{
     
    20712074}
    20722075
    2073 //The total number of operations is 17
     2076//The total number of operations is 13.6666666667
    20742077template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<8>::packl(bitblock128_t arg1, bitblock128_t arg2)
    20752078{
     
    20772080}
    20782081
    2079 //The total number of operations is 3
     2082//The total number of operations is 3.0
    20802083template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<16>::packl(bitblock128_t arg1, bitblock128_t arg2)
    20812084{
     
    20832086}
    20842087
    2085 //The total number of operations is 3
     2088//The total number of operations is 3.0
    20862089template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<32>::packl(bitblock128_t arg1, bitblock128_t arg2)
    20872090{
     
    20892092}
    20902093
    2091 //The total number of operations is 3
     2094//The total number of operations is 3.0
    20922095template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<64>::packl(bitblock128_t arg1, bitblock128_t arg2)
    20932096{
     
    20952098}
    20962099
    2097 //The total number of operations is 7
     2100//The total number of operations is 5.33333333333
    20982101template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<128>::packl(bitblock128_t arg1, bitblock128_t arg2)
    20992102{
     
    21012104}
    21022105
    2103 //The total number of operations is 47
     2106//The total number of operations is 37.0
    21042107template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<2>::packh(bitblock128_t arg1, bitblock128_t arg2)
    21052108{
     
    21072110}
    21082111
    2109 //The total number of operations is 33
     2112//The total number of operations is 26.3333333333
    21102113template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<4>::packh(bitblock128_t arg1, bitblock128_t arg2)
    21112114{
     
    21132116}
    21142117
    2115 //The total number of operations is 19
     2118//The total number of operations is 15.6666666667
    21162119template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<8>::packh(bitblock128_t arg1, bitblock128_t arg2)
    21172120{
     
    21192122}
    21202123
    2121 //The total number of operations is 3
     2124//The total number of operations is 3.0
    21222125template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<16>::packh(bitblock128_t arg1, bitblock128_t arg2)
    21232126{
     
    21252128}
    21262129
    2127 //The total number of operations is 3
     2130//The total number of operations is 3.0
    21282131template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<32>::packh(bitblock128_t arg1, bitblock128_t arg2)
    21292132{
     
    21312134}
    21322135
    2133 //The total number of operations is 3
     2136//The total number of operations is 3.0
    21342137template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<64>::packh(bitblock128_t arg1, bitblock128_t arg2)
    21352138{
     
    21372140}
    21382141
    2139 //The total number of operations is 7
     2142//The total number of operations is 5.33333333333
    21402143template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<128>::packh(bitblock128_t arg1, bitblock128_t arg2)
    21412144{
     
    21432146}
    21442147
    2145 //The total number of operations is 93
     2148//The total number of operations is 73.0
    21462149template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<2>::min_hl(bitblock128_t arg1, bitblock128_t arg2)
    21472150{
     
    21492152}
    21502153
    2151 //The total number of operations is 82
     2154//The total number of operations is 67.3333333333
    21522155template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<4>::min_hl(bitblock128_t arg1, bitblock128_t arg2)
    21532156{
     
    21552158}
    21562159
    2157 //The total number of operations is 45
     2160//The total number of operations is 38.3333333333
    21582161template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<8>::min_hl(bitblock128_t arg1, bitblock128_t arg2)
    21592162{
     
    21612164}
    21622165
    2163 //The total number of operations is 10
     2166//The total number of operations is 10.0
    21642167template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<16>::min_hl(bitblock128_t arg1, bitblock128_t arg2)
    21652168{
     
    21672170}
    21682171
    2169 //The total number of operations is 7
     2172//The total number of operations is 7.0
    21702173template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<32>::min_hl(bitblock128_t arg1, bitblock128_t arg2)
    21712174{
     
    21732176}
    21742177
    2175 //The total number of operations is 10
     2178//The total number of operations is 10.0
    21762179template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<64>::min_hl(bitblock128_t arg1, bitblock128_t arg2)
    21772180{
     
    21792182}
    21802183
    2181 //The total number of operations is 32
     2184//The total number of operations is 28.1666666667
    21822185template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<128>::min_hl(bitblock128_t arg1, bitblock128_t arg2)
    21832186{
     
    21852188}
    21862189
    2187 //The total number of operations is 85
     2190//The total number of operations is 75.0
    21882191template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<2>::packus(bitblock128_t arg1, bitblock128_t arg2)
    21892192{
     
    21952198}
    21962199
    2197 //The total number of operations is 83
     2200//The total number of operations is 74.3333333333
    21982201template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<4>::packus(bitblock128_t arg1, bitblock128_t arg2)
    21992202{
    2200         bitblock128_t arg11 = simd128<4>::ifh(arg1, simd128<4>::constant<0>(), arg1);
    2201         bitblock128_t arg12 = simd_and(simd128<4>::lomask(), arg11);
    2202         bitblock128_t arg21 = simd128<4>::ifh(arg2, simd128<4>::constant<0>(), arg2);
    2203         bitblock128_t arg22 = simd_and(simd128<4>::lomask(), arg21);
    2204         return hsimd128<4>::packl(simd128<1>::ifh(simd128<4>::eq(arg12, arg11), arg12, simd128<4>::lomask()), simd128<1>::ifh(simd128<4>::eq(arg22, arg21), arg22, simd128<4>::lomask()));
    2205 }
    2206 
    2207 //The total number of operations is 35
     2203        bitblock128_t hiPart = hsimd128<4>::packh(arg1, arg2);
     2204        return simd128<(2)>::ifh(hiPart, simd128<(2)>::constant<0>(), simd_or(simd128<(2)>::gt(hiPart, simd128<(2)>::constant<0>()), hsimd128<4>::packl(arg1, arg2)));
     2205}
     2206
     2207//The total number of operations is 31.6666666667
    22082208template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<8>::packus(bitblock128_t arg1, bitblock128_t arg2)
    22092209{
     
    22152215}
    22162216
    2217 //The total number of operations is 1
     2217//The total number of operations is 1.0
    22182218template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<16>::packus(bitblock128_t arg1, bitblock128_t arg2)
    22192219{
     
    22212221}
    22222222
    2223 //The total number of operations is 12
     2223//The total number of operations is 12.0
    22242224template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<32>::packus(bitblock128_t arg1, bitblock128_t arg2)
    22252225{
     
    22282228}
    22292229
    2230 //The total number of operations is 12
     2230//The total number of operations is 12.0
    22312231template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<64>::packus(bitblock128_t arg1, bitblock128_t arg2)
    22322232{
     
    22352235}
    22362236
    2237 //The total number of operations is 38
     2237//The total number of operations is 34.1666666667
    22382238template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<128>::packus(bitblock128_t arg1, bitblock128_t arg2)
    22392239{
     
    22422242}
    22432243
    2244 //The total number of operations is 31
     2244//The total number of operations is 31.0
    22452245template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<1>::mergel(bitblock128_t arg1, bitblock128_t arg2)
    22462246{
     
    22482248}
    22492249
    2250 //The total number of operations is 21
     2250//The total number of operations is 21.0
    22512251template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<2>::mergel(bitblock128_t arg1, bitblock128_t arg2)
    22522252{
     
    22542254}
    22552255
    2256 //The total number of operations is 11
     2256//The total number of operations is 11.0
    22572257template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<4>::mergel(bitblock128_t arg1, bitblock128_t arg2)
    22582258{
     
    22602260}
    22612261
    2262 //The total number of operations is 1
     2262//The total number of operations is 1.0
    22632263template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<8>::mergel(bitblock128_t arg1, bitblock128_t arg2)
    22642264{
     
    22662266}
    22672267
    2268 //The total number of operations is 1
     2268//The total number of operations is 1.0
    22692269template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<16>::mergel(bitblock128_t arg1, bitblock128_t arg2)
    22702270{
     
    22722272}
    22732273
    2274 //The total number of operations is 1
     2274//The total number of operations is 1.0
    22752275template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<32>::mergel(bitblock128_t arg1, bitblock128_t arg2)
    22762276{
     
    22782278}
    22792279
    2280 //The total number of operations is 1
     2280//The total number of operations is 1.0
    22812281template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<64>::mergel(bitblock128_t arg1, bitblock128_t arg2)
    22822282{
     
    22842284}
    22852285
    2286 //The total number of operations is 31
     2286//The total number of operations is 31.0
    22872287template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<1>::mergeh(bitblock128_t arg1, bitblock128_t arg2)
    22882288{
     
    22902290}
    22912291
    2292 //The total number of operations is 21
     2292//The total number of operations is 21.0
    22932293template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<2>::mergeh(bitblock128_t arg1, bitblock128_t arg2)
    22942294{
     
    22962296}
    22972297
    2298 //The total number of operations is 11
     2298//The total number of operations is 11.0
    22992299template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<4>::mergeh(bitblock128_t arg1, bitblock128_t arg2)
    23002300{
     
    23022302}
    23032303
    2304 //The total number of operations is 1
     2304//The total number of operations is 1.0
    23052305template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<8>::mergeh(bitblock128_t arg1, bitblock128_t arg2)
    23062306{
     
    23082308}
    23092309
    2310 //The total number of operations is 1
     2310//The total number of operations is 1.0
    23112311template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<16>::mergeh(bitblock128_t arg1, bitblock128_t arg2)
    23122312{
     
    23142314}
    23152315
    2316 //The total number of operations is 1
     2316//The total number of operations is 1.0
    23172317template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<32>::mergeh(bitblock128_t arg1, bitblock128_t arg2)
    23182318{
     
    23202320}
    23212321
    2322 //The total number of operations is 1
     2322//The total number of operations is 1.0
    23232323template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<64>::mergeh(bitblock128_t arg1, bitblock128_t arg2)
    23242324{
     
    23262326}
    23272327
    2328 //The total number of operations is 24
     2328//The total number of operations is 24.0
    23292329template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<1>::zeroextendh(bitblock128_t arg1)
    23302330{
     
    23322332}
    23332333
    2334 //The total number of operations is 14
     2334//The total number of operations is 14.0
    23352335template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<2>::zeroextendh(bitblock128_t arg1)
    23362336{
     
    23382338}
    23392339
    2340 //The total number of operations is 4
     2340//The total number of operations is 4.0
    23412341template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<4>::zeroextendh(bitblock128_t arg1)
    23422342{
     
    23442344}
    23452345
    2346 //The total number of operations is 3
     2346//The total number of operations is 3.0
    23472347template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<8>::zeroextendh(bitblock128_t arg1)
    23482348{
     
    23502350}
    23512351
    2352 //The total number of operations is 3
     2352//The total number of operations is 3.0
    23532353template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<16>::zeroextendh(bitblock128_t arg1)
    23542354{
     
    23562356}
    23572357
    2358 //The total number of operations is 3
     2358//The total number of operations is 3.0
    23592359template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<32>::zeroextendh(bitblock128_t arg1)
    23602360{
     
    23622362}
    23632363
    2364 //The total number of operations is 4
     2364//The total number of operations is 2.33333333333
    23652365template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<64>::zeroextendh(bitblock128_t arg1)
    23662366{
     
    23682368}
    23692369
    2370 //The total number of operations is 24
     2370//The total number of operations is 24.0
    23712371template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<1>::zeroextendl(bitblock128_t arg1)
    23722372{
     
    23742374}
    23752375
    2376 //The total number of operations is 14
     2376//The total number of operations is 14.0
    23772377template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<2>::zeroextendl(bitblock128_t arg1)
    23782378{
     
    23802380}
    23812381
    2382 //The total number of operations is 4
     2382//The total number of operations is 4.0
    23832383template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<4>::zeroextendl(bitblock128_t arg1)
    23842384{
     
    23862386}
    23872387
    2388 //The total number of operations is 3
     2388//The total number of operations is 3.0
    23892389template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<8>::zeroextendl(bitblock128_t arg1)
    23902390{
     
    23922392}
    23932393
    2394 //The total number of operations is 3
     2394//The total number of operations is 3.0
    23952395template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<16>::zeroextendl(bitblock128_t arg1)
    23962396{
     
    23982398}
    23992399
    2400 //The total number of operations is 3
     2400//The total number of operations is 3.0
    24012401template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<32>::zeroextendl(bitblock128_t arg1)
    24022402{
     
    24042404}
    24052405
    2406 //The total number of operations is 1
     2406//The total number of operations is 1.0
    24072407template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<64>::zeroextendl(bitblock128_t arg1)
    24082408{
     
    24102410}
    24112411
    2412 //The total number of operations is 31
     2412//The total number of operations is 31.0
    24132413template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<1>::signextendh(bitblock128_t arg1)
    24142414{
     
    24162416}
    24172417
    2418 //The total number of operations is 33
     2418//The total number of operations is 33.0
    24192419template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<2>::signextendh(bitblock128_t arg1)
    24202420{
     
    24222422}
    24232423
    2424 //The total number of operations is 13
     2424//The total number of operations is 13.0
    24252425template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<4>::signextendh(bitblock128_t arg1)
    24262426{
     
    24282428}
    24292429
    2430 //The total number of operations is 4
     2430//The total number of operations is 4.0
    24312431template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<8>::signextendh(bitblock128_t arg1)
    24322432{
     
    24342434}
    24352435
    2436 //The total number of operations is 4
     2436//The total number of operations is 4.0
    24372437template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<16>::signextendh(bitblock128_t arg1)
    24382438{
     
    24402440}
    24412441
    2442 //The total number of operations is 12
     2442//The total number of operations is 11.0
    24432443template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<32>::signextendh(bitblock128_t arg1)
    24442444{
     
    24462446}
    24472447
    2448 //The total number of operations is 16
     2448//The total number of operations is 11.0833333333
    24492449template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<64>::signextendh(bitblock128_t arg1)
    24502450{
     
    24522452}
    24532453
    2454 //The total number of operations is 31
     2454//The total number of operations is 31.0
    24552455template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<1>::signextendl(bitblock128_t arg1)
    24562456{
     
    24582458}
    24592459
    2460 //The total number of operations is 33
     2460//The total number of operations is 33.0
    24612461template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<2>::signextendl(bitblock128_t arg1)
    24622462{
     
    24642464}
    24652465
    2466 //The total number of operations is 13
     2466//The total number of operations is 13.0
    24672467template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<4>::signextendl(bitblock128_t arg1)
    24682468{
     
    24702470}
    24712471
    2472 //The total number of operations is 4
     2472//The total number of operations is 4.0
    24732473template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<8>::signextendl(bitblock128_t arg1)
    24742474{
     
    24762476}
    24772477
    2478 //The total number of operations is 4
     2478//The total number of operations is 4.0
    24792479template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<16>::signextendl(bitblock128_t arg1)
    24802480{
     
    24822482}
    24832483
    2484 //The total number of operations is 12
     2484//The total number of operations is 11.0
    24852485template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<32>::signextendl(bitblock128_t arg1)
    24862486{
     
    24882488}
    24892489
    2490 //The total number of operations is 20
     2490//The total number of operations is 13.4166666667
    24912491template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<64>::signextendl(bitblock128_t arg1)
    24922492{
     
    24942494}
    24952495
    2496 //The total number of operations is 17
     2496//The total number of operations is 13.6666666667
    24972497template <> template <uint64_t msk> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<16>::shufflei(bitblock128_t arg1)
    24982498{
     
    25122512}
    25132513
    2514 //The total number of operations is 1
     2514//The total number of operations is 1.0
    25152515template <> template <uint64_t msk> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<32>::shufflei(bitblock128_t arg1)
    25162516{
     
    25182518}
    25192519
    2520 //The total number of operations is 1
     2520//The total number of operations is 1.0
    25212521template <> template <uint64_t msk> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<64>::shufflei(bitblock128_t arg1)
    25222522{
     
    25242524}
    25252525
    2526 //The total number of operations is 9
     2526//The total number of operations is 5.66666666667
    25272527template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<2>::dsrli(bitblock128_t arg1, bitblock128_t arg2)
    25282528{
     
    25302530}
    25312531
    2532 //The total number of operations is 9
     2532//The total number of operations is 5.66666666667
    25332533template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<4>::dsrli(bitblock128_t arg1, bitblock128_t arg2)
    25342534{
     
    25362536}
    25372537
    2538 //The total number of operations is 9
     2538//The total number of operations is 3.0
    25392539template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<8>::dsrli(bitblock128_t arg1, bitblock128_t arg2)
    25402540{
     
    25422542}
    25432543
    2544 //The total number of operations is 9
     2544//The total number of operations is 3.0
    25452545template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<16>::dsrli(bitblock128_t arg1, bitblock128_t arg2)
    25462546{
     
    25482548}
    25492549
    2550 //The total number of operations is 9
     2550//The total number of operations is 3.0
    25512551template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<32>::dsrli(bitblock128_t arg1, bitblock128_t arg2)
    25522552{
     
    25542554}
    25552555
    2556 //The total number of operations is 9
     2556//The total number of operations is 3.0
    25572557template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<64>::dsrli(bitblock128_t arg1, bitblock128_t arg2)
    25582558{
     
    25602560}
    25612561
    2562 //The total number of operations is 9
     2562//The total number of operations is 3.0
    25632563template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<128>::dsrli(bitblock128_t arg1, bitblock128_t arg2)
    25642564{
     
    25662566}
    25672567
    2568 //The total number of operations is 1
     2568//The total number of operations is 1.0
    25692569template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<1>::fill(uint64_t val1)
    25702570{
     
    25722572}
    25732573
    2574 //The total number of operations is 1
     2574//The total number of operations is 1.0
    25752575template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<2>::fill(uint64_t val1)
    25762576{
     
    25782578}
    25792579
    2580 //The total number of operations is 1
     2580//The total number of operations is 1.0
    25812581template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<4>::fill(uint64_t val1)
    25822582{
     
    25842584}
    25852585
    2586 //The total number of operations is 1
     2586//The total number of operations is 1.0
    25872587template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<8>::fill(uint64_t val1)
    25882588{
     
    25902590}
    25912591
    2592 //The total number of operations is 1
     2592//The total number of operations is 1.0
    25932593template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<16>::fill(uint64_t val1)
    25942594{
     
    25962596}
    25972597
    2598 //The total number of operations is 1
     2598//The total number of operations is 1.0
    25992599template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<32>::fill(uint64_t val1)
    26002600{
     
    26022602}
    26032603
    2604 //The total number of operations is 1
     2604//The total number of operations is 1.0
    26052605template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<64>::fill(uint64_t val1)
    26062606{
     
    26082608}
    26092609
    2610 //The total number of operations is 1
     2610//The total number of operations is 1.0
    26112611template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<128>::fill(uint64_t val1)
    26122612{
     
    26142614}
    26152615
    2616 //The total number of operations is 1
     2616//The total number of operations is 1.0
    26172617template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<8>::shuffle(bitblock128_t arg1, bitblock128_t arg2)
    26182618{
     
    26202620}
    26212621
    2622 //The total number of operations is 10
     2622//The total number of operations is 10.0
    26232623template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<16>::shuffle(bitblock128_t arg1, bitblock128_t arg2)
    26242624{
     
    26302630}
    26312631
    2632 //The total number of operations is 19
     2632//The total number of operations is 19.0
    26332633template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<32>::shuffle(bitblock128_t arg1, bitblock128_t arg2)
    26342634{
     
    26402640}
    26412641
    2642 //The total number of operations is 32
     2642//The total number of operations is 32.0
    26432643template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<64>::shuffle(bitblock128_t arg1, bitblock128_t arg2)
    26442644{
     
    26502650}
    26512651
    2652 //The total number of operations is 1
     2652//The total number of operations is 1.0
    26532653template <> template <uint64_t pos> IDISA_ALWAYS_INLINE uint64_t mvmd128<1>::extract(bitblock128_t arg1)
    26542654{
     
    26562656}
    26572657
    2658 //The total number of operations is 1
     2658//The total number of operations is 1.0
    26592659template <> template <uint64_t pos> IDISA_ALWAYS_INLINE uint64_t mvmd128<2>::extract(bitblock128_t arg1)
    26602660{
     
    26622662}
    26632663
    2664 //The total number of operations is 1
     2664//The total number of operations is 1.0
    26652665template <> template <uint64_t pos> IDISA_ALWAYS_INLINE uint64_t mvmd128<4>::extract(bitblock128_t arg1)
    26662666{
     
    26682668}
    26692669
    2670 //The total number of operations is 1
     2670//The total number of operations is 1.0
    26712671template <> template <uint64_t pos> IDISA_ALWAYS_INLINE uint64_t mvmd128<8>::extract(bitblock128_t arg1)
    26722672{
     
    26742674}
    26752675
    2676 //The total number of operations is 1
     2676//The total number of operations is 1.0
    26772677template <> template <uint64_t pos> IDISA_ALWAYS_INLINE uint64_t mvmd128<16>::extract(bitblock128_t arg1)
    26782678{
     
    26802680}
    26812681
    2682 //The total number of operations is 2
     2682//The total number of operations is 2.0
    26832683template <> template <uint64_t pos> IDISA_ALWAYS_INLINE uint64_t mvmd128<32>::extract(bitblock128_t arg1)
    26842684{
     
    26862686}
    26872687
    2688 //The total number of operations is 4
     2688//The total number of operations is 4.0
    26892689template <> template <uint64_t pos> IDISA_ALWAYS_INLINE uint64_t mvmd128<64>::extract(bitblock128_t arg1)
    26902690{
     
    26922692}
    26932693
    2694 //The total number of operations is 16
     2694//The total number of operations is 12.6666666667
    26952695template <> template <uint64_t pos> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<1>::splat(bitblock128_t arg1)
    26962696{
     
    26982698}
    26992699
    2700 //The total number of operations is 13
     2700//The total number of operations is 13.0
    27012701template <> template <uint64_t pos> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<2>::splat(bitblock128_t arg1)
    27022702{
     
    27062706}
    27072707
    2708 //The total number of operations is 9
     2708//The total number of operations is 9.0
    27092709template <> template <uint64_t pos> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<4>::splat(bitblock128_t arg1)
    27102710{
     
    27142714}
    27152715
    2716 //The total number of operations is 5
     2716//The total number of operations is 5.0
    27172717template <> template <uint64_t pos> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<8>::splat(bitblock128_t arg1)
    27182718{
     
    27222722}
    27232723
    2724 //The total number of operations is 2
     2724//The total number of operations is 2.0
    27252725template <> template <uint64_t pos> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<16>::splat(bitblock128_t arg1)
    27262726{
     
    27282728}
    27292729
    2730 //The total number of operations is 1
     2730//The total number of operations is 1.0
    27312731template <> template <uint64_t pos> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<32>::splat(bitblock128_t arg1)
    27322732{
     
    27342734}
    27352735
    2736 //The total number of operations is 5
     2736//The total number of operations is 5.0
    27372737template <> template <uint64_t pos> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<64>::splat(bitblock128_t arg1)
    27382738{
     
    27402740}
    27412741
    2742 //The total number of operations is 13
     2742//The total number of operations is 13.0
    27432743template <> template <uint64_t pos> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<128>::splat(bitblock128_t arg1)
    27442744{
     
    27462746}
    27472747
    2748 //The total number of operations is 15
     2748//The total number of operations is 15.0
    27492749template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<1>::fill16(uint64_t val1, uint64_t val2, uint64_t val3, uint64_t val4, uint64_t val5, uint64_t val6, uint64_t val7, uint64_t val8, uint64_t val9, uint64_t val10, uint64_t val11, uint64_t val12, uint64_t val13, uint64_t val14, uint64_t val15, uint64_t val16)
    27502750{
     
    27522752}
    27532753
    2754 //The total number of operations is 7
     2754//The total number of operations is 7.0
    27552755template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<2>::fill16(uint64_t val1, uint64_t val2, uint64_t val3, uint64_t val4, uint64_t val5, uint64_t val6, uint64_t val7, uint64_t val8, uint64_t val9, uint64_t val10, uint64_t val11, uint64_t val12, uint64_t val13, uint64_t val14, uint64_t val15, uint64_t val16)
    27562756{
     
    27582758}
    27592759
    2760 //The total number of operations is 3
     2760//The total number of operations is 3.0
    27612761template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<4>::fill16(uint64_t val1, uint64_t val2, uint64_t val3, uint64_t val4, uint64_t val5, uint64_t val6, uint64_t val7, uint64_t val8, uint64_t val9, uint64_t val10, uint64_t val11, uint64_t val12, uint64_t val13, uint64_t val14, uint64_t val15, uint64_t val16)
    27622762{
     
    27642764}
    27652765
    2766 //The total number of operations is 1
     2766//The total number of operations is 1.0
    27672767template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<8>::fill16(uint64_t val1, uint64_t val2, uint64_t val3, uint64_t val4, uint64_t val5, uint64_t val6, uint64_t val7, uint64_t val8, uint64_t val9, uint64_t val10, uint64_t val11, uint64_t val12, uint64_t val13, uint64_t val14, uint64_t val15, uint64_t val16)
    27682768{
     
    27702770}
    27712771
    2772 //The total number of operations is 5
     2772//The total number of operations is 5.0
    27732773template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<1>::fill4(uint64_t val1, uint64_t val2, uint64_t val3, uint64_t val4)
    27742774{
     
    27762776}
    27772777
    2778 //The total number of operations is 5
     2778//The total number of operations is 5.0
    27792779template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<2>::fill4(uint64_t val1, uint64_t val2, uint64_t val3, uint64_t val4)
    27802780{
     
    27822782}
    27832783
    2784 //The total number of operations is 5
     2784//The total number of operations is 5.0
    27852785template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<4>::fill4(uint64_t val1, uint64_t val2, uint64_t val3, uint64_t val4)
    27862786{
     
    27882788}
    27892789
    2790 //The total number of operations is 5
     2790//The total number of operations is 5.0
    27912791template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<8>::fill4(uint64_t val1, uint64_t val2, uint64_t val3, uint64_t val4)
    27922792{
     
    27942794}
    27952795
    2796 //The total number of operations is 3
     2796//The total number of operations is 3.0
    27972797template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<16>::fill4(uint64_t val1, uint64_t val2, uint64_t val3, uint64_t val4)
    27982798{
     
    28002800}
    28012801
    2802 //The total number of operations is 1
     2802//The total number of operations is 1.0
    28032803template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<32>::fill4(uint64_t val1, uint64_t val2, uint64_t val3, uint64_t val4)
    28042804{
     
    28062806}
    28072807
    2808 //The total number of operations is 4
     2808//The total number of operations is 2.33333333333
    28092809template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<2>::srli(bitblock128_t arg1)
    28102810{
     
    28122812}
    28132813
    2814 //The total number of operations is 4
     2814//The total number of operations is 2.33333333333
    28152815template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<4>::srli(bitblock128_t arg1)
    28162816{
     
    28182818}
    28192819
    2820 //The total number of operations is 4
     2820//The total number of operations is 1.0
    28212821template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<8>::srli(bitblock128_t arg1)
    28222822{
    2823         return simd128<128>::srli<(sh*8)>(arg1);
    2824 }
    2825 
    2826 //The total number of operations is 4
     2823        return _mm_srli_si128(arg1, (int32_t)(sh));
     2824}
     2825
     2826//The total number of operations is 1.0
    28272827template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<16>::srli(bitblock128_t arg1)
    28282828{
    2829         return simd128<128>::srli<(sh*16)>(arg1);
    2830 }
    2831 
    2832 //The total number of operations is 4
     2829        return mvmd128<(8)>::srli<(sh*2)>(arg1);
     2830}
     2831
     2832//The total number of operations is 1.0
    28332833template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<32>::srli(bitblock128_t arg1)
    28342834{
    2835         return simd128<128>::srli<(sh*32)>(arg1);
    2836 }
    2837 
    2838 //The total number of operations is 4
     2835        return mvmd128<(16)>::srli<(sh*2)>(arg1);
     2836}
     2837
     2838//The total number of operations is 1.0
    28392839template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<64>::srli(bitblock128_t arg1)
    28402840{
    2841         return simd128<128>::srli<(sh*64)>(arg1);
    2842 }
    2843 
    2844 //The total number of operations is 4
     2841        return mvmd128<(32)>::srli<(sh*2)>(arg1);
     2842}
     2843
     2844//The total number of operations is 1.0
    28452845template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<128>::srli(bitblock128_t arg1)
    28462846{
    2847         return simd128<128>::srli<(sh*128)>(arg1);
    2848 }
    2849 
    2850 //The total number of operations is 1
     2847        return mvmd128<(64)>::srli<(sh*2)>(arg1);
     2848}
     2849
     2850//The total number of operations is 1.0
    28512851template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<1>::fill2(uint64_t val1, uint64_t val2)
    28522852{
     
    28542854}
    28552855
    2856 //The total number of operations is 1
     2856//The total number of operations is 1.0
    28572857template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<2>::fill2(uint64_t val1, uint64_t val2)
    28582858{
     
    28602860}
    28612861
    2862 //The total number of operations is 1
     2862//The total number of operations is 1.0
    28632863template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<4>::fill2(uint64_t val1, uint64_t val2)
    28642864{
     
    28662866}
    28672867
    2868 //The total number of operations is 1
     2868//The total number of operations is 1.0
    28692869template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<8>::fill2(uint64_t val1, uint64_t val2)
    28702870{
     
    28722872}
    28732873
    2874 //The total number of operations is 1
     2874//The total number of operations is 1.0
    28752875template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<16>::fill2(uint64_t val1, uint64_t val2)
    28762876{
     
    28782878}
    28792879
    2880 //The total number of operations is 5
     2880//The total number of operations is 5.0
    28812881template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<32>::fill2(uint64_t val1, uint64_t val2)
    28822882{
     
    28842884}
    28852885
    2886 //The total number of operations is 5
     2886//The total number of operations is 5.0
    28872887template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<64>::fill2(uint64_t val1, uint64_t val2)
    28882888{
     
    28902890}
    28912891
    2892 //The total number of operations is 9
     2892//The total number of operations is 5.66666666667
    28932893template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<2>::dslli(bitblock128_t arg1, bitblock128_t arg2)
    28942894{
     
    28962896}
    28972897
    2898 //The total number of operations is 9
     2898//The total number of operations is 5.66666666667
    28992899template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<4>::dslli(bitblock128_t arg1, bitblock128_t arg2)
    29002900{
     
    29022902}
    29032903
    2904 //The total number of operations is 9
     2904//The total number of operations is 3.0
    29052905template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<8>::dslli(bitblock128_t arg1, bitblock128_t arg2)
    29062906{
     
    29082908}
    29092909
    2910 //The total number of operations is 9
     2910//The total number of operations is 3.0
    29112911template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<16>::dslli(bitblock128_t arg1, bitblock128_t arg2)
    29122912{
     
    29142914}
    29152915
    2916 //The total number of operations is 9
     2916//The total number of operations is 3.0
    29172917template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<32>::dslli(bitblock128_t arg1, bitblock128_t arg2)
    29182918{
     
    29202920}
    29212921
    2922 //The total number of operations is 9
     2922//The total number of operations is 3.0
    29232923template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<64>::dslli(bitblock128_t arg1, bitblock128_t arg2)
    29242924{
     
    29262926}
    29272927
    2928 //The total number of operations is 9
     2928//The total number of operations is 3.0
    29292929template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<128>::dslli(bitblock128_t arg1, bitblock128_t arg2)
    29302930{
     
    29322932}
    29332933
    2934 //The total number of operations is 4
     2934//The total number of operations is 2.33333333333
    29352935template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<2>::slli(bitblock128_t arg1)
    29362936{
     
    29382938}
    29392939
    2940 //The total number of operations is 4
     2940//The total number of operations is 2.33333333333
    29412941template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<4>::slli(bitblock128_t arg1)
    29422942{
     
    29442944}
    29452945
    2946 //The total number of operations is 4
     2946//The total number of operations is 1.0
    29472947template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<8>::slli(bitblock128_t arg1)
    29482948{
    2949         return simd128<128>::slli<(sh*8)>(arg1);
    2950 }
    2951 
    2952 //The total number of operations is 4
     2949        return _mm_slli_si128(arg1, (int32_t)(sh));
     2950}
     2951
     2952//The total number of operations is 1.0
    29532953template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<16>::slli(bitblock128_t arg1)
    29542954{
     
    29562956}
    29572957
    2958 //The total number of operations is 4
     2958//The total number of operations is 1.0
    29592959template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<32>::slli(bitblock128_t arg1)
    29602960{
    2961         return simd128<128>::slli<(sh*32)>(arg1);
    2962 }
    2963 
    2964 //The total number of operations is 4
     2961        return mvmd128<(16)>::slli<(sh*2)>(arg1);
     2962}
     2963
     2964//The total number of operations is 1.0
    29652965template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<64>::slli(bitblock128_t arg1)
    29662966{
     
    29682968}
    29692969
    2970 //The total number of operations is 4
     2970//The total number of operations is 1.0
    29712971template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<128>::slli(bitblock128_t arg1)
    29722972{
    2973         return simd128<128>::slli<(sh*128)>(arg1);
    2974 }
    2975 
    2976 //The total number of operations is 13
     2973        return mvmd128<(64)>::slli<(sh*2)>(arg1);
     2974}
     2975
     2976//The total number of operations is 13.0
    29772977template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<1>::fill8(uint64_t val1, uint64_t val2, uint64_t val3, uint64_t val4, uint64_t val5, uint64_t val6, uint64_t val7, uint64_t val8)
    29782978{
     
    29802980}
    29812981
    2982 //The total number of operations is 13
     2982//The total number of operations is 13.0
    29832983template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<2>::fill8(uint64_t val1, uint64_t val2, uint64_t val3, uint64_t val4, uint64_t val5, uint64_t val6, uint64_t val7, uint64_t val8)
    29842984{
     
    29862986}
    29872987
    2988 //The total number of operations is 7
     2988//The total number of operations is 7.0
    29892989template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<4>::fill8(uint64_t val1, uint64_t val2, uint64_t val3, uint64_t val4, uint64_t val5, uint64_t val6, uint64_t val7, uint64_t val8)
    29902990{
     
    29922992}
    29932993
    2994 //The total number of operations is 3
     2994//The total number of operations is 3.0
    29952995template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<8>::fill8(uint64_t val1, uint64_t val2, uint64_t val3, uint64_t val4, uint64_t val5, uint64_t val6, uint64_t val7, uint64_t val8)
    29962996{
     
    29982998}
    29992999
    3000 //The total number of operations is 1
     3000//The total number of operations is 1.0
    30013001template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<16>::fill8(uint64_t val1, uint64_t val2, uint64_t val3, uint64_t val4, uint64_t val5, uint64_t val6, uint64_t val7, uint64_t val8)
    30023002{
     
    30043004}
    30053005
    3006 //The total number of operations is 11
     3006//The total number of operations is 11.0
    30073007IDISA_ALWAYS_INLINE bitblock128_t bitblock128::sll(bitblock128_t arg1, bitblock128_t arg2)
    30083008{
     
    30103010}
    30113011
    3012 //The total number of operations is 1
     3012//The total number of operations is 1.0
    30133013IDISA_ALWAYS_INLINE bitblock128_t bitblock128::load_unaligned(bitblock128_t* arg1)
    30143014{
     
    30163016}
    30173017
    3018 //The total number of operations is 4
     3018//The total number of operations is 2.33333333333
    30193019template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t bitblock128::srli(bitblock128_t arg1)
    30203020{
     
    30223022}
    30233023
    3024 //The total number of operations is 1
     3024//The total number of operations is 1.0
    30253025IDISA_ALWAYS_INLINE void bitblock128::store_aligned(bitblock128_t* arg1, bitblock128_t arg2)
    30263026{
     
    30283028}
    30293029
    3030 //The total number of operations is 22
     3030//The total number of operations is 20.3333333333
    30313031IDISA_ALWAYS_INLINE uint64_t bitblock128::popcount(bitblock128_t arg1)
    30323032{
     
    30343034}
    30353035
    3036 //The total number of operations is 2
     3036//The total number of operations is 2.0
    30373037IDISA_ALWAYS_INLINE bool bitblock128::all(bitblock128_t arg1)
    30383038{
     
    30403040}
    30413041
    3042 //The total number of operations is 11
     3042//The total number of operations is 11.0
    30433043IDISA_ALWAYS_INLINE bitblock128_t bitblock128::srl(bitblock128_t arg1, bitblock128_t arg2)
    30443044{
     
    30463046}
    30473047
    3048 //The total number of operations is 4
     3048//The total number of operations is 2.33333333333
    30493049template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t bitblock128::slli(bitblock128_t arg1)
    30503050{
     
    30523052}
    30533053
    3054 //The total number of operations is 2
     3054//The total number of operations is 2.0
    30553055IDISA_ALWAYS_INLINE bool bitblock128::any(bitblock128_t arg1)
    30563056{
     
    30583058}
    30593059
    3060 //The total number of operations is 1
     3060//The total number of operations is 1.0
    30613061IDISA_ALWAYS_INLINE bitblock128_t bitblock128::load_aligned(bitblock128_t* arg1)
    30623062{
     
    30643064}
    30653065
    3066 //The total number of operations is 1
     3066//The total number of operations is 1.0
    30673067IDISA_ALWAYS_INLINE void bitblock128::store_unaligned(bitblock128_t* arg1, bitblock128_t arg2)
    30683068{
Note: See TracChangeset for help on using the changeset viewer.