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

The final version of IDISA+ toolkit...

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/idisa_cpp/idisa_neon.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_NEON_CPP
    29#define IDISA_NEON_CPP
     
    468475#define neon_shift_left_64_bits(x) \
    469476        vextq_u64(vdupq_n_u64(0), (bitblock128_t)(x), 1)
    470 //The total number of operations is 2
     477//The total number of operations is 2.0
    471478IDISA_ALWAYS_INLINE bitblock128_t simd_nor(bitblock128_t arg1, bitblock128_t arg2)
    472479{
     
    474481}
    475482
    476 //The total number of operations is 1
     483//The total number of operations is 1.0
    477484IDISA_ALWAYS_INLINE bitblock128_t simd_not(bitblock128_t arg1)
    478485{
     
    480487}
    481488
    482 //The total number of operations is 1
     489//The total number of operations is 1.0
    483490IDISA_ALWAYS_INLINE bitblock128_t simd_andc(bitblock128_t arg1, bitblock128_t arg2)
    484491{
     
    486493}
    487494
    488 //The total number of operations is 1
     495//The total number of operations is 1.0
    489496IDISA_ALWAYS_INLINE bitblock128_t simd_or(bitblock128_t arg1, bitblock128_t arg2)
    490497{
     
    492499}
    493500
    494 //The total number of operations is 1
     501//The total number of operations is 1.0
    495502IDISA_ALWAYS_INLINE bitblock128_t simd_and(bitblock128_t arg1, bitblock128_t arg2)
    496503{
     
    498505}
    499506
    500 //The total number of operations is 1
     507//The total number of operations is 1.0
    501508IDISA_ALWAYS_INLINE bitblock128_t simd_xor(bitblock128_t arg1, bitblock128_t arg2)
    502509{
     
    504511}
    505512
    506 //The total number of operations is 1
     513//The total number of operations is 1.0
    507514template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<1>::max(bitblock128_t arg1, bitblock128_t arg2)
    508515{
     
    510517}
    511518
    512 //The total number of operations is 13
     519//The total number of operations is 13.0
    513520template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::max(bitblock128_t arg1, bitblock128_t arg2)
    514521{
     
    520527}
    521528
    522 //The total number of operations is 7
     529//The total number of operations is 6.0
    523530template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::max(bitblock128_t arg1, bitblock128_t arg2)
    524531{
     
    526533}
    527534
    528 //The total number of operations is 1
     535//The total number of operations is 1.0
    529536template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::max(bitblock128_t arg1, bitblock128_t arg2)
    530537{
     
    532539}
    533540
    534 //The total number of operations is 1
     541//The total number of operations is 1.0
    535542template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::max(bitblock128_t arg1, bitblock128_t arg2)
    536543{
     
    538545}
    539546
    540 //The total number of operations is 1
     547//The total number of operations is 1.0
    541548template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::max(bitblock128_t arg1, bitblock128_t arg2)
    542549{
     
    544551}
    545552
    546 //The total number of operations is 12
     553//The total number of operations is 11.5
    547554template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::max(bitblock128_t arg1, bitblock128_t arg2)
    548555{
    549         bitblock128_t hiAns = simd128<(32)>::max(arg1, arg2);
    550         bitblock128_t loAns = simd128<(32)>::umax(arg1, arg2);
    551         bitblock128_t eqMask1 = simd128<64>::srli<(32)>(simd128<(32)>::eq(hiAns, arg1));
    552         bitblock128_t eqMask2 = simd128<64>::srli<(32)>(simd128<(32)>::eq(hiAns, arg2));
    553         return simd128<1>::ifh(simd128<64>::himask(), hiAns, simd128<1>::ifh(eqMask1, simd128<1>::ifh(eqMask2, loAns, arg1), arg2));
    554 }
    555 
    556 //The total number of operations is 46
     556        return simd128<1>::ifh(simd128<64>::gt(arg1, arg2), arg1, arg2);
     557}
     558
     559//The total number of operations is 40.6666666667
    557560template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::max(bitblock128_t arg1, bitblock128_t arg2)
    558561{
    559         bitblock128_t hiAns = simd128<(64)>::max(arg1, arg2);
    560         bitblock128_t loAns = simd128<(64)>::umax(arg1, arg2);
    561         bitblock128_t eqMask1 = simd128<128>::srli<(64)>(simd128<(64)>::eq(hiAns, arg1));
    562         bitblock128_t eqMask2 = simd128<128>::srli<(64)>(simd128<(64)>::eq(hiAns, arg2));
    563         return simd128<1>::ifh(simd128<128>::himask(), hiAns, simd128<1>::ifh(eqMask1, simd128<1>::ifh(eqMask2, loAns, arg1), arg2));
    564 }
    565 
    566 //The total number of operations is 1
     562        return simd128<1>::ifh(simd128<128>::gt(arg1, arg2), arg1, arg2);
     563}
     564
     565//The total number of operations is 1.0
    567566template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<1>::mult(bitblock128_t arg1, bitblock128_t arg2)
    568567{
     
    570569}
    571570
    572 //The total number of operations is 23
     571//The total number of operations is 17.6666666667
    573572template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::mult(bitblock128_t arg1, bitblock128_t arg2)
    574573{
     
    578577}
    579578
    580 //The total number of operations is 8
     579//The total number of operations is 7.5
    581580template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::mult(bitblock128_t arg1, bitblock128_t arg2)
    582581{
     
    587586}
    588587
    589 //The total number of operations is 1
     588//The total number of operations is 1.0
    590589template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::mult(bitblock128_t arg1, bitblock128_t arg2)
    591590{
     
    593592}
    594593
    595 //The total number of operations is 1
     594//The total number of operations is 1.0
    596595template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::mult(bitblock128_t arg1, bitblock128_t arg2)
    597596{
     
    599598}
    600599
    601 //The total number of operations is 1
     600//The total number of operations is 1.0
    602601template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::mult(bitblock128_t arg1, bitblock128_t arg2)
    603602{
     
    605604}
    606605
    607 //The total number of operations is 1
     606//The total number of operations is 1.0
    608607template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<1>::gt(bitblock128_t arg1, bitblock128_t arg2)
    609608{
     
    611610}
    612611
    613 //The total number of operations is 15
     612//The total number of operations is 13.5
    614613template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::gt(bitblock128_t arg1, bitblock128_t arg2)
    615614{
    616         bitblock128_t hiAns = simd128<(1)>::gt(arg1, arg2);
    617         bitblock128_t loAns = simd128<(1)>::ugt(arg1, arg2);
    618         bitblock128_t mask = simd_and(loAns, simd128<2>::srli<(1)>(simd128<(1)>::eq(arg1, arg2)));
    619         mask = simd_or(mask, simd128<2>::slli<(1)>(mask));
    620         return simd_or(simd128<2>::srai<(1)>(hiAns), mask);
    621 }
    622 
    623 //The total number of operations is 6
     615        bitblock128_t tmp = simd_not(arg1);
     616        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)));
     617        return simd128<1>::ifh(simd128<2>::himask(), tmpAns, simd128<128>::srli<1>(tmpAns));
     618}
     619
     620//The total number of operations is 5.0
    624621template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::gt(bitblock128_t arg1, bitblock128_t arg2)
    625622{
     
    627624}
    628625
    629 //The total number of operations is 1
     626//The total number of operations is 1.0
    630627template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::gt(bitblock128_t arg1, bitblock128_t arg2)
    631628{
     
    633630}
    634631
    635 //The total number of operations is 1
     632//The total number of operations is 1.0
    636633template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::gt(bitblock128_t arg1, bitblock128_t arg2)
    637634{
     
    639636}
    640637
    641 //The total number of operations is 1
     638//The total number of operations is 1.0
    642639template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::gt(bitblock128_t arg1, bitblock128_t arg2)
    643640{
     
    645642}
    646643
    647 //The total number of operations is 11
     644//The total number of operations is 10.5
    648645template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::gt(bitblock128_t arg1, bitblock128_t arg2)
    649646{
     
    655652}
    656653
    657 //The total number of operations is 48
     654//The total number of operations is 39.6666666667
    658655template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::gt(bitblock128_t arg1, bitblock128_t arg2)
    659656{
     
    665662}
    666663
    667 //The total number of operations is 1
     664//The total number of operations is 1.0
    668665template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<1>::ult(bitblock128_t arg1, bitblock128_t arg2)
    669666{
     
    671668}
    672669
    673 //The total number of operations is 14
     670//The total number of operations is 12.5
    674671template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::ult(bitblock128_t arg1, bitblock128_t arg2)
    675672{
    676         bitblock128_t tmpAns = simd128<(1)>::ult(arg1, arg2);
    677         bitblock128_t mask = simd_and(tmpAns, simd128<2>::srli<(1)>(simd128<(1)>::eq(arg1, arg2)));
    678         mask = simd_or(mask, simd128<2>::slli<(1)>(mask));
    679         return simd_or(simd128<2>::srai<(1)>(tmpAns), mask);
    680 }
    681 
    682 //The total number of operations is 8
     673        bitblock128_t tmp = simd_not(arg1);
     674        bitblock128_t tmpAns = simd_or(simd_and(tmp, arg2), simd_and(simd128<128>::slli<1>(simd_and(tmp, arg2)), simd_or(tmp, arg2)));
     675        return simd128<1>::ifh(simd128<2>::himask(), tmpAns, simd128<128>::srli<1>(tmpAns));
     676}
     677
     678//The total number of operations is 7.0
    683679template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::ult(bitblock128_t arg1, bitblock128_t arg2)
    684680{
     
    687683}
    688684
    689 //The total number of operations is 3
     685//The total number of operations is 3.0
    690686template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::ult(bitblock128_t arg1, bitblock128_t arg2)
    691687{
     
    694690}
    695691
    696 //The total number of operations is 3
     692//The total number of operations is 3.0
    697693template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::ult(bitblock128_t arg1, bitblock128_t arg2)
    698694{
     
    701697}
    702698
    703 //The total number of operations is 3
     699//The total number of operations is 3.0
    704700template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::ult(bitblock128_t arg1, bitblock128_t arg2)
    705701{
     
    708704}
    709705
    710 //The total number of operations is 10
     706//The total number of operations is 9.5
    711707template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::ult(bitblock128_t arg1, bitblock128_t arg2)
    712708{
     
    717713}
    718714
    719 //The total number of operations is 37
     715//The total number of operations is 29.1666666667
    720716template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::ult(bitblock128_t arg1, bitblock128_t arg2)
    721717{
     
    726722}
    727723
    728 //The total number of operations is 1
     724//The total number of operations is 1.0
    729725template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<1>::lt(bitblock128_t arg1, bitblock128_t arg2)
    730726{
     
    732728}
    733729
    734 //The total number of operations is 15
     730//The total number of operations is 13.5
    735731template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::lt(bitblock128_t arg1, bitblock128_t arg2)
    736732{
    737         bitblock128_t hiAns = simd128<(1)>::lt(arg1, arg2);
    738         bitblock128_t loAns = simd128<(1)>::ult(arg1, arg2);
    739         bitblock128_t mask = simd_and(loAns, simd128<2>::srli<(1)>(simd128<(1)>::eq(arg1, arg2)));
    740         mask = simd_or(mask, simd128<2>::slli<(1)>(mask));
    741         return simd_or(simd128<2>::srai<(1)>(hiAns), mask);
    742 }
    743 
    744 //The total number of operations is 6
     733        bitblock128_t tmp = simd_not(arg2);
     734        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)));
     735        return simd128<1>::ifh(simd128<2>::himask(), tmpAns, simd128<128>::srli<1>(tmpAns));
     736}
     737
     738//The total number of operations is 5.0
    745739template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::lt(bitblock128_t arg1, bitblock128_t arg2)
    746740{
     
    748742}
    749743
    750 //The total number of operations is 1
     744//The total number of operations is 1.0
    751745template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::lt(bitblock128_t arg1, bitblock128_t arg2)
    752746{
     
    754748}
    755749
    756 //The total number of operations is 1
     750//The total number of operations is 1.0
    757751template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::lt(bitblock128_t arg1, bitblock128_t arg2)
    758752{
     
    760754}
    761755
    762 //The total number of operations is 1
     756//The total number of operations is 1.0
    763757template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::lt(bitblock128_t arg1, bitblock128_t arg2)
    764758{
     
    766760}
    767761
    768 //The total number of operations is 11
     762//The total number of operations is 10.5
    769763template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::lt(bitblock128_t arg1, bitblock128_t arg2)
    770764{
     
    776770}
    777771
    778 //The total number of operations is 48
     772//The total number of operations is 39.6666666667
    779773template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::lt(bitblock128_t arg1, bitblock128_t arg2)
    780774{
     
    786780}
    787781
    788 //The total number of operations is 2
     782//The total number of operations is 2.0
    789783template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::srli(bitblock128_t arg1)
    790784{
     
    792786}
    793787
    794 //The total number of operations is 2
     788//The total number of operations is 2.0
    795789template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::srli(bitblock128_t arg1)
    796790{
     
    798792}
    799793
    800 //The total number of operations is 1
     794//The total number of operations is 1.0
    801795template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::srli(bitblock128_t arg1)
    802796{
     
    804798}
    805799
    806 //The total number of operations is 1
     800//The total number of operations is 1.0
    807801template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::srli(bitblock128_t arg1)
    808802{
     
    810804}
    811805
    812 //The total number of operations is 1
     806//The total number of operations is 1.0
    813807template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::srli(bitblock128_t arg1)
    814808{
     
    816810}
    817811
    818 //The total number of operations is 1
     812//The total number of operations is 1.0
    819813template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::srli(bitblock128_t arg1)
    820814{
     
    822816}
    823817
    824 //The total number of operations is 5
     818//The total number of operations is 3.16666666667
    825819template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::srli(bitblock128_t arg1)
    826820{
     
    828822}
    829823
    830 //The total number of operations is 1
     824//The total number of operations is 1.0
    831825template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<1>::ctz(bitblock128_t arg1)
    832826{
     
    834828}
    835829
    836 //The total number of operations is 14
     830//The total number of operations is 9.5
    837831template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::ctz(bitblock128_t arg1)
    838832{
     
    841835}
    842836
    843 //The total number of operations is 12
     837//The total number of operations is 12.0
    844838template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::ctz(bitblock128_t arg1)
    845839{
     
    847841}
    848842
    849 //The total number of operations is 3
     843//The total number of operations is 3.0
    850844template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::ctz(bitblock128_t arg1)
    851845{
     
    853847}
    854848
    855 //The total number of operations is 6
     849//The total number of operations is 6.0
    856850template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::ctz(bitblock128_t arg1)
    857851{
     
    859853}
    860854
    861 //The total number of operations is 9
     855//The total number of operations is 9.0
    862856template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::ctz(bitblock128_t arg1)
    863857{
     
    865859}
    866860
    867 //The total number of operations is 12
     861//The total number of operations is 12.0
    868862template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::ctz(bitblock128_t arg1)
    869863{
     
    871865}
    872866
    873 //The total number of operations is 30
     867//The total number of operations is 25.5
    874868template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::ctz(bitblock128_t arg1)
    875869{
     
    877871}
    878872
    879 //The total number of operations is 1
     873//The total number of operations is 1.0
    880874template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<1>::ugt(bitblock128_t arg1, bitblock128_t arg2)
    881875{
     
    883877}
    884878
    885 //The total number of operations is 14
     879//The total number of operations is 12.5
    886880template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::ugt(bitblock128_t arg1, bitblock128_t arg2)
    887881{
    888         bitblock128_t tmpAns = simd128<(1)>::ugt(arg1, arg2);
    889         bitblock128_t mask = simd_and(tmpAns, simd128<2>::srli<(1)>(simd128<(1)>::eq(arg1, arg2)));
    890         mask = simd_or(mask, simd128<2>::slli<(1)>(mask));
    891         return simd_or(simd128<2>::srai<(1)>(tmpAns), mask);
    892 }
    893 
    894 //The total number of operations is 8
     882        bitblock128_t tmp = simd_not(arg2);
     883        bitblock128_t tmpAns = simd_or(simd_and(arg1, tmp), simd_and(simd128<128>::slli<1>(simd_and(arg1, tmp)), simd_or(arg1, tmp)));
     884        return simd128<1>::ifh(simd128<2>::himask(), tmpAns, simd128<128>::srli<1>(tmpAns));
     885}
     886
     887//The total number of operations is 7.0
    895888template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::ugt(bitblock128_t arg1, bitblock128_t arg2)
    896889{
     
    899892}
    900893
    901 //The total number of operations is 3
     894//The total number of operations is 3.0
    902895template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::ugt(bitblock128_t arg1, bitblock128_t arg2)
    903896{
     
    906899}
    907900
    908 //The total number of operations is 3
     901//The total number of operations is 3.0
    909902template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::ugt(bitblock128_t arg1, bitblock128_t arg2)
    910903{
     
    913906}
    914907
    915 //The total number of operations is 3
     908//The total number of operations is 3.0
    916909template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::ugt(bitblock128_t arg1, bitblock128_t arg2)
    917910{
     
    920913}
    921914
    922 //The total number of operations is 10
     915//The total number of operations is 9.5
    923916template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::ugt(bitblock128_t arg1, bitblock128_t arg2)
    924917{
     
    929922}
    930923
    931 //The total number of operations is 37
     924//The total number of operations is 29.1666666667
    932925template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::ugt(bitblock128_t arg1, bitblock128_t arg2)
    933926{
     
    938931}
    939932
    940 //The total number of operations is 4
     933//The total number of operations is 4.0
    941934template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::xor_hl(bitblock128_t arg1)
    942935{
     
    944937}
    945938
    946 //The total number of operations is 4
     939//The total number of operations is 4.0
    947940template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::xor_hl(bitblock128_t arg1)
    948941{
     
    950943}
    951944
    952 //The total number of operations is 3
     945//The total number of operations is 3.0
    953946template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::xor_hl(bitblock128_t arg1)
    954947{
     
    956949}
    957950
    958 //The total number of operations is 3
     951//The total number of operations is 3.0
    959952template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::xor_hl(bitblock128_t arg1)
    960953{
     
    962955}
    963956
    964 //The total number of operations is 3
     957//The total number of operations is 3.0
    965958template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::xor_hl(bitblock128_t arg1)
    966959{
     
    968961}
    969962
    970 //The total number of operations is 3
     963//The total number of operations is 3.0
    971964template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::xor_hl(bitblock128_t arg1)
    972965{
     
    974967}
    975968
    976 //The total number of operations is 7
     969//The total number of operations is 5.16666666667
    977970template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::xor_hl(bitblock128_t arg1)
    978971{
     
    986979}
    987980
    988 //The total number of operations is 3
     981//The total number of operations is 3.0
    989982template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::popcount(bitblock128_t arg1)
    990983{
     
    992985}
    993986
    994 //The total number of operations is 7
     987//The total number of operations is 7.0
    995988template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::popcount(bitblock128_t arg1)
    996989{
     
    998991}
    999992
    1000 //The total number of operations is 1
     993//The total number of operations is 1.0
    1001994template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::popcount(bitblock128_t arg1)
    1002995{
     
    1004997}
    1005998
    1006 //The total number of operations is 4
     999//The total number of operations is 4.0
    10071000template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::popcount(bitblock128_t arg1)
    10081001{
     
    10101003}
    10111004
    1012 //The total number of operations is 7
     1005//The total number of operations is 7.0
    10131006template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::popcount(bitblock128_t arg1)
    10141007{
     
    10161009}
    10171010
    1018 //The total number of operations is 10
     1011//The total number of operations is 10.0
    10191012template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::popcount(bitblock128_t arg1)
    10201013{
     
    10221015}
    10231016
    1024 //The total number of operations is 17
     1017//The total number of operations is 15.1666666667
    10251018template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::popcount(bitblock128_t arg1)
    10261019{
     
    10291022}
    10301023
    1031 //The total number of operations is 7
     1024//The total number of operations is 4.33333333333
    10321025template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::neg(bitblock128_t arg1)
    10331026{
     
    10351028}
    10361029
    1037 //The total number of operations is 4
     1030//The total number of operations is 4.0
    10381031template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::neg(bitblock128_t arg1)
    10391032{
     
    10411034}
    10421035
    1043 //The total number of operations is 1
     1036//The total number of operations is 1.0
    10441037template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::neg(bitblock128_t arg1)
    10451038{
     
    10471040}
    10481041
    1049 //The total number of operations is 1
     1042//The total number of operations is 1.0
    10501043template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::neg(bitblock128_t arg1)
    10511044{
     
    10531046}
    10541047
    1055 //The total number of operations is 1
     1048//The total number of operations is 1.0
    10561049template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::neg(bitblock128_t arg1)
    10571050{
     
    10591052}
    10601053
    1061 //The total number of operations is 1
     1054//The total number of operations is 1.0
    10621055template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::neg(bitblock128_t arg1)
    10631056{
     
    10651058}
    10661059
    1067 //The total number of operations is 12
     1060//The total number of operations is 9.33333333333
    10681061template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::neg(bitblock128_t arg1)
    10691062{
     
    10711064}
    10721065
    1073 //The total number of operations is 2
     1066//The total number of operations is 1.5
    10741067template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::slli(bitblock128_t arg1)
    10751068{
     
    10771070}
    10781071
    1079 //The total number of operations is 2
     1072//The total number of operations is 1.5
    10801073template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::slli(bitblock128_t arg1)
    10811074{
     
    10831076}
    10841077
    1085 //The total number of operations is 1
     1078//The total number of operations is 0.5
    10861079template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::slli(bitblock128_t arg1)
    10871080{
     
    10891082}
    10901083
    1091 //The total number of operations is 1
     1084//The total number of operations is 0.5
    10921085template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::slli(bitblock128_t arg1)
    10931086{
     
    10951088}
    10961089
    1097 //The total number of operations is 1
     1090//The total number of operations is 0.5
    10981091template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::slli(bitblock128_t arg1)
    10991092{
     
    11011094}
    11021095
    1103 //The total number of operations is 1
     1096//The total number of operations is 0.5
    11041097template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::slli(bitblock128_t arg1)
    11051098{
     
    11071100}
    11081101
    1109 //The total number of operations is 5
     1102//The total number of operations is 2.33333333333
    11101103template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::slli(bitblock128_t arg1)
    11111104{
     
    11131106}
    11141107
    1115 //The total number of operations is 1
     1108//The total number of operations is 1.0
    11161109template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<1>::ifh(bitblock128_t arg1, bitblock128_t arg2, bitblock128_t arg3)
    11171110{
     
    11191112}
    11201113
    1121 //The total number of operations is 4
     1114//The total number of operations is 4.0
    11221115template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::ifh(bitblock128_t arg1, bitblock128_t arg2, bitblock128_t arg3)
    11231116{
     
    11251118}
    11261119
    1127 //The total number of operations is 7
     1120//The total number of operations is 6.0
    11281121template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::ifh(bitblock128_t arg1, bitblock128_t arg2, bitblock128_t arg3)
    11291122{
     
    11311124}
    11321125
    1133 //The total number of operations is 2
     1126//The total number of operations is 2.0
    11341127template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::ifh(bitblock128_t arg1, bitblock128_t arg2, bitblock128_t arg3)
    11351128{
     
    11371130}
    11381131
    1139 //The total number of operations is 2
     1132//The total number of operations is 2.0
    11401133template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::ifh(bitblock128_t arg1, bitblock128_t arg2, bitblock128_t arg3)
    11411134{
     
    11431136}
    11441137
    1145 //The total number of operations is 2
     1138//The total number of operations is 2.0
    11461139template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::ifh(bitblock128_t arg1, bitblock128_t arg2, bitblock128_t arg3)
    11471140{
     
    11491142}
    11501143
    1151 //The total number of operations is 4
     1144//The total number of operations is 4.0
    11521145template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::ifh(bitblock128_t arg1, bitblock128_t arg2, bitblock128_t arg3)
    11531146{
     
    11551148}
    11561149
    1157 //The total number of operations is 10
     1150//The total number of operations is 8.16666666667
    11581151template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::ifh(bitblock128_t arg1, bitblock128_t arg2, bitblock128_t arg3)
    11591152{
     
    11611154}
    11621155
    1163 //The total number of operations is 1
     1156//The total number of operations is 1.0
    11641157template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<1>::sub(bitblock128_t arg1, bitblock128_t arg2)
    11651158{
     
    11671160}
    11681161
    1169 //The total number of operations is 10
     1162//The total number of operations is 7.33333333333
    11701163template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::sub(bitblock128_t arg1, bitblock128_t arg2)
    11711164{
    1172         return simd128<1>::ifh(simd128<(4)>::himask(), simd128<(4)>::sub(arg1, simd_and(simd128<(4)>::himask(), arg2)), simd128<(4)>::sub(arg1, arg2));
    1173 }
    1174 
    1175 //The total number of operations is 4
     1165        bitblock128_t tmp = simd_xor(arg1, arg2);
     1166        return simd128<1>::ifh(simd128<2>::himask(), simd_xor(tmp, simd128<128>::slli<1>(simd_and(simd_not(arg1), arg2))), tmp);
     1167}
     1168
     1169//The total number of operations is 4.0
    11761170template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::sub(bitblock128_t arg1, bitblock128_t arg2)
    11771171{
     
    11791173}
    11801174
    1181 //The total number of operations is 1
     1175//The total number of operations is 1.0
    11821176template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::sub(bitblock128_t arg1, bitblock128_t arg2)
    11831177{
     
    11851179}
    11861180
    1187 //The total number of operations is 1
     1181//The total number of operations is 1.0
    11881182template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::sub(bitblock128_t arg1, bitblock128_t arg2)
    11891183{
     
    11911185}
    11921186
    1193 //The total number of operations is 1
     1187//The total number of operations is 1.0
    11941188template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::sub(bitblock128_t arg1, bitblock128_t arg2)
    11951189{
     
    11971191}
    11981192
    1199 //The total number of operations is 1
     1193//The total number of operations is 1.0
    12001194template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::sub(bitblock128_t arg1, bitblock128_t arg2)
    12011195{
     
    12031197}
    12041198
    1205 //The total number of operations is 12
     1199//The total number of operations is 9.33333333333
    12061200template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::sub(bitblock128_t arg1, bitblock128_t arg2)
    12071201{
     
    12121206}
    12131207
    1214 //The total number of operations is 3
     1208//The total number of operations is 3.0
    12151209template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::add_hl(bitblock128_t arg1)
    12161210{
     
    12181212}
    12191213
    1220 //The total number of operations is 4
     1214//The total number of operations is 4.0
    12211215template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::add_hl(bitblock128_t arg1)
    12221216{
     
    12241218}
    12251219
    1226 //The total number of operations is 3
     1220//The total number of operations is 3.0
    12271221template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::add_hl(bitblock128_t arg1)
    12281222{
     
    12301224}
    12311225
    1232 //The total number of operations is 3
     1226//The total number of operations is 3.0
    12331227template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::add_hl(bitblock128_t arg1)
    12341228{
     
    12361230}
    12371231
    1238 //The total number of operations is 3
     1232//The total number of operations is 3.0
    12391233template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::add_hl(bitblock128_t arg1)
    12401234{
     
    12421236}
    12431237
    1244 //The total number of operations is 3
     1238//The total number of operations is 3.0
    12451239template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::add_hl(bitblock128_t arg1)
    12461240{
     
    12481242}
    12491243
    1250 //The total number of operations is 18
     1244//The total number of operations is 13.5
    12511245template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::add_hl(bitblock128_t arg1)
    12521246{
     
    13021296}
    13031297
    1304 //The total number of operations is 1
     1298//The total number of operations is 1.0
    13051299template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<1>::min(bitblock128_t arg1, bitblock128_t arg2)
    13061300{
     
    13081302}
    13091303
    1310 //The total number of operations is 13
     1304//The total number of operations is 13.0
    13111305template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::min(bitblock128_t arg1, bitblock128_t arg2)
    13121306{
     
    13181312}
    13191313
    1320 //The total number of operations is 7
     1314//The total number of operations is 6.0
    13211315template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::min(bitblock128_t arg1, bitblock128_t arg2)
    13221316{
     
    13241318}
    13251319
    1326 //The total number of operations is 1
     1320//The total number of operations is 1.0
    13271321template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::min(bitblock128_t arg1, bitblock128_t arg2)
    13281322{
     
    13301324}
    13311325
    1332 //The total number of operations is 1
     1326//The total number of operations is 1.0
    13331327template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::min(bitblock128_t arg1, bitblock128_t arg2)
    13341328{
     
    13361330}
    13371331
    1338 //The total number of operations is 1
     1332//The total number of operations is 1.0
    13391333template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::min(bitblock128_t arg1, bitblock128_t arg2)
    13401334{
     
    13421336}
    13431337
    1344 //The total number of operations is 12
     1338//The total number of operations is 11.5
    13451339template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::min(bitblock128_t arg1, bitblock128_t arg2)
    13461340{
    1347         bitblock128_t hiAns = simd128<(32)>::min(arg1, arg2);
    1348         bitblock128_t loAns = simd128<(32)>::umin(arg1, arg2);
    1349         bitblock128_t eqMask1 = simd128<64>::srli<(32)>(simd128<(32)>::eq(hiAns, arg1));
    1350         bitblock128_t eqMask2 = simd128<64>::srli<(32)>(simd128<(32)>::eq(hiAns, arg2));
    1351         return simd128<1>::ifh(simd128<64>::himask(), hiAns, simd128<1>::ifh(eqMask1, simd128<1>::ifh(eqMask2, loAns, arg1), arg2));
    1352 }
    1353 
    1354 //The total number of operations is 46
     1341        return simd128<1>::ifh(simd128<64>::gt(arg1, arg2), arg2, arg1);
     1342}
     1343
     1344//The total number of operations is 40.6666666667
    13551345template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::min(bitblock128_t arg1, bitblock128_t arg2)
    13561346{
    1357         bitblock128_t hiAns = simd128<(64)>::min(arg1, arg2);
    1358         bitblock128_t loAns = simd128<(64)>::umin(arg1, arg2);
    1359         bitblock128_t eqMask1 = simd128<128>::srli<(64)>(simd128<(64)>::eq(hiAns, arg1));
    1360         bitblock128_t eqMask2 = simd128<128>::srli<(64)>(simd128<(64)>::eq(hiAns, arg2));
    1361         return simd128<1>::ifh(simd128<128>::himask(), hiAns, simd128<1>::ifh(eqMask1, simd128<1>::ifh(eqMask2, loAns, arg1), arg2));
     1347        return simd128<1>::ifh(simd128<128>::gt(arg1, arg2), arg2, arg1);
    13621348}
    13631349
     
    14041390}
    14051391
    1406 //The total number of operations is 1
     1392//The total number of operations is 1.0
    14071393template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<1>::umin(bitblock128_t arg1, bitblock128_t arg2)
    14081394{
     
    14101396}
    14111397
    1412 //The total number of operations is 12
     1398//The total number of operations is 12.0
    14131399template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::umin(bitblock128_t arg1, bitblock128_t arg2)
    14141400{
     
    14191405}
    14201406
    1421 //The total number of operations is 10
     1407//The total number of operations is 9.0
    14221408template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::umin(bitblock128_t arg1, bitblock128_t arg2)
    14231409{
     
    14261412}
    14271413
    1428 //The total number of operations is 4
     1414//The total number of operations is 4.0
    14291415template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::umin(bitblock128_t arg1, bitblock128_t arg2)
    14301416{
     
    14331419}
    14341420
    1435 //The total number of operations is 4
     1421//The total number of operations is 4.0
    14361422template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::umin(bitblock128_t arg1, bitblock128_t arg2)
    14371423{
     
    14401426}
    14411427
    1442 //The total number of operations is 4
     1428//The total number of operations is 4.0
    14431429template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::umin(bitblock128_t arg1, bitblock128_t arg2)
    14441430{
     
    14471433}
    14481434
    1449 //The total number of operations is 11
     1435//The total number of operations is 11.0
    14501436template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::umin(bitblock128_t arg1, bitblock128_t arg2)
    14511437{
     
    14561442}
    14571443
    1458 //The total number of operations is 34
     1444//The total number of operations is 29.3333333333
    14591445template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::umin(bitblock128_t arg1, bitblock128_t arg2)
    14601446{
     
    14651451}
    14661452
    1467 //The total number of operations is 8
     1453//The total number of operations is 5.33333333333
    14681454template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::abs(bitblock128_t arg1)
    14691455{
     
    14711457}
    14721458
    1473 //The total number of operations is 11
     1459//The total number of operations is 10.0
    14741460template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::abs(bitblock128_t arg1)
    14751461{
     
    14781464}
    14791465
    1480 //The total number of operations is 1
     1466//The total number of operations is 1.0
    14811467template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::abs(bitblock128_t arg1)
    14821468{
     
    14841470}
    14851471
    1486 //The total number of operations is 1
     1472//The total number of operations is 1.0
    14871473template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::abs(bitblock128_t arg1)
    14881474{
     
    14901476}
    14911477
    1492 //The total number of operations is 1
     1478//The total number of operations is 1.0
    14931479template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::abs(bitblock128_t arg1)
    14941480{
     
    14961482}
    14971483
    1498 //The total number of operations is 9
     1484//The total number of operations is 8.5
    14991485template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::abs(bitblock128_t arg1)
    15001486{
     
    15031489}
    15041490
    1505 //The total number of operations is 40
     1491//The total number of operations is 31.8333333333
    15061492template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::abs(bitblock128_t arg1)
    15071493{
     
    15101496}
    15111497
    1512 //The total number of operations is 2
     1498//The total number of operations is 2.0
    15131499template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<1>::eq(bitblock128_t arg1, bitblock128_t arg2)
    15141500{
     
    15161502}
    15171503
    1518 //The total number of operations is 8
     1504//The total number of operations is 7.5
    15191505template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::eq(bitblock128_t arg1, bitblock128_t arg2)
    15201506{
     
    15251511}
    15261512
    1527 //The total number of operations is 9
     1513//The total number of operations is 9.0
    15281514template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::eq(bitblock128_t arg1, bitblock128_t arg2)
    15291515{
     
    15311517}
    15321518
    1533 //The total number of operations is 1
     1519//The total number of operations is 1.0
    15341520template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::eq(bitblock128_t arg1, bitblock128_t arg2)
    15351521{
     
    15371523}
    15381524
    1539 //The total number of operations is 1
     1525//The total number of operations is 1.0
    15401526template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::eq(bitblock128_t arg1, bitblock128_t arg2)
    15411527{
     
    15431529}
    15441530
    1545 //The total number of operations is 1
     1531//The total number of operations is 1.0
    15461532template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::eq(bitblock128_t arg1, bitblock128_t arg2)
    15471533{
     
    15491535}
    15501536
    1551 //The total number of operations is 5
     1537//The total number of operations is 4.5
    15521538template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::eq(bitblock128_t arg1, bitblock128_t arg2)
    15531539{
     
    15581544}
    15591545
    1560 //The total number of operations is 17
     1546//The total number of operations is 12.0
    15611547template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::eq(bitblock128_t arg1, bitblock128_t arg2)
    15621548{
     
    15671553}
    15681554
    1569 //The total number of operations is 4
     1555//The total number of operations is 4.0
    15701556template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::srai(bitblock128_t arg1)
    15711557{
     
    15731559}
    15741560
    1575 //The total number of operations is 8
     1561//The total number of operations is 8.0
    15761562template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::srai(bitblock128_t arg1)
    15771563{
     
    15801566}
    15811567
    1582 //The total number of operations is 1
     1568//The total number of operations is 1.0
    15831569template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::srai(bitblock128_t arg1)
    15841570{
     
    15861572}
    15871573
    1588 //The total number of operations is 1
     1574//The total number of operations is 1.0
    15891575template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::srai(bitblock128_t arg1)
    15901576{
     
    15921578}
    15931579
    1594 //The total number of operations is 1
     1580//The total number of operations is 1.0
    15951581template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::srai(bitblock128_t arg1)
    15961582{
     
    15981584}
    15991585
    1600 //The total number of operations is 1
     1586//The total number of operations is 1.0
    16011587template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::srai(bitblock128_t arg1)
    16021588{
     
    16041590}
    16051591
    1606 //The total number of operations is 9
     1592//The total number of operations is 6.66666666667
    16071593template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::srai(bitblock128_t arg1)
    16081594{
     
    16521638}
    16531639
    1654 //The total number of operations is 1
     1640//The total number of operations is 1.0
    16551641template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<1>::add(bitblock128_t arg1, bitblock128_t arg2)
    16561642{
     
    16581644}
    16591645
    1660 //The total number of operations is 9
     1646//The total number of operations is 6.33333333333
    16611647template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::add(bitblock128_t arg1, bitblock128_t arg2)
    16621648{
     
    16651651}
    16661652
    1667 //The total number of operations is 4
     1653//The total number of operations is 4.0
    16681654template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::add(bitblock128_t arg1, bitblock128_t arg2)
    16691655{
     
    16711657}
    16721658
    1673 //The total number of operations is 1
     1659//The total number of operations is 1.0
    16741660template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::add(bitblock128_t arg1, bitblock128_t arg2)
    16751661{
     
    16771663}
    16781664
    1679 //The total number of operations is 1
     1665//The total number of operations is 1.0
    16801666template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::add(bitblock128_t arg1, bitblock128_t arg2)
    16811667{
     
    16831669}
    16841670
    1685 //The total number of operations is 1
     1671//The total number of operations is 1.0
    16861672template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::add(bitblock128_t arg1, bitblock128_t arg2)
    16871673{
     
    16891675}
    16901676
    1691 //The total number of operations is 1
     1677//The total number of operations is 1.0
    16921678template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::add(bitblock128_t arg1, bitblock128_t arg2)
    16931679{
     
    16951681}
    16961682
    1697 //The total number of operations is 12
     1683//The total number of operations is 9.33333333333
    16981684template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::add(bitblock128_t arg1, bitblock128_t arg2)
    16991685{
     
    17041690}
    17051691
    1706 //The total number of operations is 1
     1692//The total number of operations is 1.0
    17071693template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<1>::umax(bitblock128_t arg1, bitblock128_t arg2)
    17081694{
     
    17101696}
    17111697
    1712 //The total number of operations is 12
     1698//The total number of operations is 12.0
    17131699template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<2>::umax(bitblock128_t arg1, bitblock128_t arg2)
    17141700{
     
    17191705}
    17201706
    1721 //The total number of operations is 10
     1707//The total number of operations is 9.0
    17221708template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<4>::umax(bitblock128_t arg1, bitblock128_t arg2)
    17231709{
     
    17261712}
    17271713
    1728 //The total number of operations is 4
     1714//The total number of operations is 4.0
    17291715template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<8>::umax(bitblock128_t arg1, bitblock128_t arg2)
    17301716{
     
    17331719}
    17341720
    1735 //The total number of operations is 4
     1721//The total number of operations is 4.0
    17361722template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<16>::umax(bitblock128_t arg1, bitblock128_t arg2)
    17371723{
     
    17401726}
    17411727
    1742 //The total number of operations is 4
     1728//The total number of operations is 4.0
    17431729template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<32>::umax(bitblock128_t arg1, bitblock128_t arg2)
    17441730{
     
    17471733}
    17481734
    1749 //The total number of operations is 11
     1735//The total number of operations is 11.0
    17501736template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<64>::umax(bitblock128_t arg1, bitblock128_t arg2)
    17511737{
     
    17561742}
    17571743
    1758 //The total number of operations is 34
     1744//The total number of operations is 29.3333333333
    17591745template <> IDISA_ALWAYS_INLINE bitblock128_t simd128<128>::umax(bitblock128_t arg1, bitblock128_t arg2)
    17601746{
     
    17651751}
    17661752
    1767 //The total number of operations is 77
     1753//The total number of operations is 55.0
    17681754template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<2>::umin_hl(bitblock128_t arg1, bitblock128_t arg2)
    17691755{
     
    17711757}
    17721758
    1773 //The total number of operations is 64
     1759//The total number of operations is 49.3333333333
    17741760template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<4>::umin_hl(bitblock128_t arg1, bitblock128_t arg2)
    17751761{
     
    17771763}
    17781764
    1779 //The total number of operations is 38
     1765//The total number of operations is 29.6666666667
    17801766template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<8>::umin_hl(bitblock128_t arg1, bitblock128_t arg2)
    17811767{
     
    17831769}
    17841770
    1785 //The total number of operations is 6
     1771//The total number of operations is 6.0
    17861772template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<16>::umin_hl(bitblock128_t arg1, bitblock128_t arg2)
    17871773{
     
    17891775}
    17901776
    1791 //The total number of operations is 6
     1777//The total number of operations is 6.0
    17921778template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<32>::umin_hl(bitblock128_t arg1, bitblock128_t arg2)
    17931779{
     
    17951781}
    17961782
    1797 //The total number of operations is 6
     1783//The total number of operations is 6.0
    17981784template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<64>::umin_hl(bitblock128_t arg1, bitblock128_t arg2)
    17991785{
     
    18011787}
    18021788
    1803 //The total number of operations is 23
     1789//The total number of operations is 18.5
    18041790template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<128>::umin_hl(bitblock128_t arg1, bitblock128_t arg2)
    18051791{
     
    18071793}
    18081794
    1809 //The total number of operations is 77
     1795//The total number of operations is 55.0
    18101796template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<2>::add_hl(bitblock128_t arg1, bitblock128_t arg2)
    18111797{
     
    18131799}
    18141800
    1815 //The total number of operations is 61
     1801//The total number of operations is 43.6666666667
    18161802template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<4>::add_hl(bitblock128_t arg1, bitblock128_t arg2)
    18171803{
     
    18191805}
    18201806
    1821 //The total number of operations is 32
     1807//The total number of operations is 24.6666666667
    18221808template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<8>::add_hl(bitblock128_t arg1, bitblock128_t arg2)
    18231809{
     
    18251811}
    18261812
    1827 //The total number of operations is 3
     1813//The total number of operations is 3.0
    18281814template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<16>::add_hl(bitblock128_t arg1, bitblock128_t arg2)
    18291815{
     
    18311817}
    18321818
    1833 //The total number of operations is 3
     1819//The total number of operations is 3.0
    18341820template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<32>::add_hl(bitblock128_t arg1, bitblock128_t arg2)
    18351821{
     
    18371823}
    18381824
    1839 //The total number of operations is 3
     1825//The total number of operations is 3.0
    18401826template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<64>::add_hl(bitblock128_t arg1, bitblock128_t arg2)
    18411827{
     
    18431829}
    18441830
    1845 //The total number of operations is 13
     1831//The total number of operations is 8.5
    18461832template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<128>::add_hl(bitblock128_t arg1, bitblock128_t arg2)
    18471833{
     
    18491835}
    18501836
    1851 //The total number of operations is 104
     1837//The total number of operations is 87.0
    18521838template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<2>::packss(bitblock128_t arg1, bitblock128_t arg2)
    18531839{
     
    18571843}
    18581844
    1859 //The total number of operations is 56
     1845//The total number of operations is 44.6666666667
    18601846template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<4>::packss(bitblock128_t arg1, bitblock128_t arg2)
    18611847{
     
    18651851}
    18661852
    1867 //The total number of operations is 23
     1853//The total number of operations is 19.3333333333
    18681854template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<8>::packss(bitblock128_t arg1, bitblock128_t arg2)
    18691855{
     
    18731859}
    18741860
    1875 //The total number of operations is 11
     1861//The total number of operations is 11.0
    18761862template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<16>::packss(bitblock128_t arg1, bitblock128_t arg2)
    18771863{
     
    18811867}
    18821868
    1883 //The total number of operations is 11
     1869//The total number of operations is 11.0
    18841870template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<32>::packss(bitblock128_t arg1, bitblock128_t arg2)
    18851871{
     
    18891875}
    18901876
    1891 //The total number of operations is 51
     1877//The total number of operations is 49.0
    18921878template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<64>::packss(bitblock128_t arg1, bitblock128_t arg2)
    18931879{
     
    18971883}
    18981884
    1899 //The total number of operations is 208
     1885//The total number of operations is 170.166666667
    19001886template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<128>::packss(bitblock128_t arg1, bitblock128_t arg2)
    19011887{
     
    19051891}
    19061892
    1907 //The total number of operations is 46
     1893//The total number of operations is 45.0
    19081894template <> IDISA_ALWAYS_INLINE uint64_t hsimd128<4>::signmask(bitblock128_t arg1)
    19091895{
     
    19131899}
    19141900
    1915 //The total number of operations is 18
     1901//The total number of operations is 18.0
    19161902template <> IDISA_ALWAYS_INLINE uint64_t hsimd128<8>::signmask(bitblock128_t arg1)
    19171903{
     
    19211907}
    19221908
    1923 //The total number of operations is 8
     1909//The total number of operations is 8.0
    19241910template <> IDISA_ALWAYS_INLINE uint64_t hsimd128<16>::signmask(bitblock128_t arg1)
    19251911{
     
    19271913}
    19281914
    1929 //The total number of operations is 4
     1915//The total number of operations is 4.0
    19301916template <> IDISA_ALWAYS_INLINE uint64_t hsimd128<32>::signmask(bitblock128_t arg1)
    19311917{
     
    19331919}
    19341920
    1935 //The total number of operations is 2
     1921//The total number of operations is 2.0
    19361922template <> IDISA_ALWAYS_INLINE uint64_t hsimd128<64>::signmask(bitblock128_t arg1)
    19371923{
     
    19391925}
    19401926
    1941 //The total number of operations is 8
     1927//The total number of operations is 6.16666666667
    19421928template <> IDISA_ALWAYS_INLINE uint64_t hsimd128<128>::signmask(bitblock128_t arg1)
    19431929{
     
    19451931}
    19461932
    1947 //The total number of operations is 37
     1933//The total number of operations is 26.0
    19481934template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<2>::packl(bitblock128_t arg1, bitblock128_t arg2)
    19491935{
     
    19511937}
    19521938
    1953 //The total number of operations is 25
     1939//The total number of operations is 17.6666666667
    19541940template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<4>::packl(bitblock128_t arg1, bitblock128_t arg2)
    19551941{
     
    19571943}
    19581944
    1959 //The total number of operations is 13
     1945//The total number of operations is 9.33333333333
    19601946template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<8>::packl(bitblock128_t arg1, bitblock128_t arg2)
    19611947{
     
    19631949}
    19641950
    1965 //The total number of operations is 1
     1951//The total number of operations is 1.0
    19661952template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<16>::packl(bitblock128_t arg1, bitblock128_t arg2)
    19671953{
     
    19691955}
    19701956
    1971 //The total number of operations is 1
     1957//The total number of operations is 1.0
    19721958template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<32>::packl(bitblock128_t arg1, bitblock128_t arg2)
    19731959{
     
    19751961}
    19761962
    1977 //The total number of operations is 1
     1963//The total number of operations is 1.0
    19781964template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<64>::packl(bitblock128_t arg1, bitblock128_t arg2)
    19791965{
     
    19811967}
    19821968
    1983 //The total number of operations is 6
     1969//The total number of operations is 3.33333333333
    19841970template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<128>::packl(bitblock128_t arg1, bitblock128_t arg2)
    19851971{
     
    19871973}
    19881974
    1989 //The total number of operations is 39
     1975//The total number of operations is 28.0
    19901976template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<2>::packh(bitblock128_t arg1, bitblock128_t arg2)
    19911977{
     
    19931979}
    19941980
    1995 //The total number of operations is 27
     1981//The total number of operations is 19.6666666667
    19961982template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<4>::packh(bitblock128_t arg1, bitblock128_t arg2)
    19971983{
     
    19991985}
    20001986
    2001 //The total number of operations is 15
     1987//The total number of operations is 11.3333333333
    20021988template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<8>::packh(bitblock128_t arg1, bitblock128_t arg2)
    20031989{
     
    20051991}
    20061992
    2007 //The total number of operations is 1
     1993//The total number of operations is 1.0
    20081994template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<16>::packh(bitblock128_t arg1, bitblock128_t arg2)
    20091995{
     
    20111997}
    20121998
    2013 //The total number of operations is 1
     1999//The total number of operations is 1.0
    20142000template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<32>::packh(bitblock128_t arg1, bitblock128_t arg2)
    20152001{
     
    20172003}
    20182004
    2019 //The total number of operations is 1
     2005//The total number of operations is 1.0
    20202006template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<64>::packh(bitblock128_t arg1, bitblock128_t arg2)
    20212007{
     
    20232009}
    20242010
    2025 //The total number of operations is 6
     2011//The total number of operations is 4.16666666667
    20262012template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<128>::packh(bitblock128_t arg1, bitblock128_t arg2)
    20272013{
     
    20292015}
    20302016
    2031 //The total number of operations is 77
     2017//The total number of operations is 55.0
    20322018template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<2>::min_hl(bitblock128_t arg1, bitblock128_t arg2)
    20332019{
     
    20352021}
    20362022
    2037 //The total number of operations is 65
     2023//The total number of operations is 50.3333333333
    20382024template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<4>::min_hl(bitblock128_t arg1, bitblock128_t arg2)
    20392025{
     
    20412027}
    20422028
    2043 //The total number of operations is 35
     2029//The total number of operations is 26.6666666667
    20442030template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<8>::min_hl(bitblock128_t arg1, bitblock128_t arg2)
    20452031{
     
    20472033}
    20482034
    2049 //The total number of operations is 3
     2035//The total number of operations is 3.0
    20502036template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<16>::min_hl(bitblock128_t arg1, bitblock128_t arg2)
    20512037{
     
    20532039}
    20542040
    2055 //The total number of operations is 3
     2041//The total number of operations is 3.0
    20562042template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<32>::min_hl(bitblock128_t arg1, bitblock128_t arg2)
    20572043{
     
    20592045}
    20602046
    2061 //The total number of operations is 3
     2047//The total number of operations is 3.0
    20622048template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<64>::min_hl(bitblock128_t arg1, bitblock128_t arg2)
    20632049{
     
    20652051}
    20662052
    2067 //The total number of operations is 24
     2053//The total number of operations is 19.0
    20682054template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<128>::min_hl(bitblock128_t arg1, bitblock128_t arg2)
    20692055{
     
    20712057}
    20722058
    2073 //The total number of operations is 65
     2059//The total number of operations is 53.0
    20742060template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<2>::packus(bitblock128_t arg1, bitblock128_t arg2)
    20752061{
     
    20812067}
    20822068
    2083 //The total number of operations is 61
     2069//The total number of operations is 51.6666666667
    20842070template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<4>::packus(bitblock128_t arg1, bitblock128_t arg2)
    20852071{
     
    20912077}
    20922078
    2093 //The total number of operations is 23
     2079//The total number of operations is 19.3333333333
    20942080template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<8>::packus(bitblock128_t arg1, bitblock128_t arg2)
    20952081{
     
    21012087}
    21022088
    2103 //The total number of operations is 6
     2089//The total number of operations is 6.0
    21042090template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<16>::packus(bitblock128_t arg1, bitblock128_t arg2)
    21052091{
     
    21082094}
    21092095
    2110 //The total number of operations is 6
     2096//The total number of operations is 6.0
    21112097template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<32>::packus(bitblock128_t arg1, bitblock128_t arg2)
    21122098{
     
    21152101}
    21162102
    2117 //The total number of operations is 6
     2103//The total number of operations is 6.0
    21182104template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<64>::packus(bitblock128_t arg1, bitblock128_t arg2)
    21192105{
     
    21222108}
    21232109
    2124 //The total number of operations is 28
     2110//The total number of operations is 23.0
    21252111template <> IDISA_ALWAYS_INLINE bitblock128_t hsimd128<128>::packus(bitblock128_t arg1, bitblock128_t arg2)
    21262112{
     
    21292115}
    21302116
    2131 //The total number of operations is 17
     2117//The total number of operations is 15.5
    21322118template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<1>::mergel(bitblock128_t arg1, bitblock128_t arg2)
    21332119{
     
    21352121}
    21362122
    2137 //The total number of operations is 11
     2123//The total number of operations is 10.0
    21382124template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<2>::mergel(bitblock128_t arg1, bitblock128_t arg2)
    21392125{
     
    21412127}
    21422128
    2143 //The total number of operations is 5
     2129//The total number of operations is 4.5
    21442130template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<4>::mergel(bitblock128_t arg1, bitblock128_t arg2)
    21452131{
     
    21472133}
    21482134
    2149 //The total number of operations is 1
     2135//The total number of operations is 1.0
    21502136template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<8>::mergel(bitblock128_t arg1, bitblock128_t arg2)
    21512137{
     
    21532139}
    21542140
    2155 //The total number of operations is 1
     2141//The total number of operations is 1.0
    21562142template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<16>::mergel(bitblock128_t arg1, bitblock128_t arg2)
    21572143{
     
    21592145}
    21602146
    2161 //The total number of operations is 1
     2147//The total number of operations is 1.0
    21622148template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<32>::mergel(bitblock128_t arg1, bitblock128_t arg2)
    21632149{
     
    21652151}
    21662152
    2167 //The total number of operations is 3
     2153//The total number of operations is 3.0
    21682154template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<64>::mergel(bitblock128_t arg1, bitblock128_t arg2)
    21692155{
     
    21712157}
    21722158
    2173 //The total number of operations is 17
     2159//The total number of operations is 15.5
    21742160template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<1>::mergeh(bitblock128_t arg1, bitblock128_t arg2)
    21752161{
     
    21772163}
    21782164
    2179 //The total number of operations is 11
     2165//The total number of operations is 10.0
    21802166template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<2>::mergeh(bitblock128_t arg1, bitblock128_t arg2)
    21812167{
     
    21832169}
    21842170
    2185 //The total number of operations is 5
     2171//The total number of operations is 4.5
    21862172template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<4>::mergeh(bitblock128_t arg1, bitblock128_t arg2)
    21872173{
     
    21892175}
    21902176
    2191 //The total number of operations is 1
     2177//The total number of operations is 1.0
    21922178template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<8>::mergeh(bitblock128_t arg1, bitblock128_t arg2)
    21932179{
     
    21952181}
    21962182
    2197 //The total number of operations is 1
     2183//The total number of operations is 1.0
    21982184template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<16>::mergeh(bitblock128_t arg1, bitblock128_t arg2)
    21992185{
     
    22012187}
    22022188
    2203 //The total number of operations is 1
     2189//The total number of operations is 1.0
    22042190template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<32>::mergeh(bitblock128_t arg1, bitblock128_t arg2)
    22052191{
     
    22072193}
    22082194
    2209 //The total number of operations is 3
     2195//The total number of operations is 3.0
    22102196template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<64>::mergeh(bitblock128_t arg1, bitblock128_t arg2)
    22112197{
     
    22132199}
    22142200
    2215 //The total number of operations is 14
     2201//The total number of operations is 13.0
    22162202template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<1>::zeroextendh(bitblock128_t arg1)
    22172203{
     
    22192205}
    22202206
    2221 //The total number of operations is 8
     2207//The total number of operations is 7.5
    22222208template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<2>::zeroextendh(bitblock128_t arg1)
    22232209{
     
    22252211}
    22262212
    2227 //The total number of operations is 3
     2213//The total number of operations is 3.0
    22282214template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<4>::zeroextendh(bitblock128_t arg1)
    22292215{
     
    22312217}
    22322218
    2233 //The total number of operations is 3
     2219//The total number of operations is 3.0
    22342220template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<8>::zeroextendh(bitblock128_t arg1)
    22352221{
     
    22372223}
    22382224
    2239 //The total number of operations is 3
     2225//The total number of operations is 3.0
    22402226template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<16>::zeroextendh(bitblock128_t arg1)
    22412227{
     
    22432229}
    22442230
    2245 //The total number of operations is 5
     2231//The total number of operations is 5.0
    22462232template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<32>::zeroextendh(bitblock128_t arg1)
    22472233{
     
    22492235}
    22502236
    2251 //The total number of operations is 5
     2237//The total number of operations is 3.16666666667
    22522238template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<64>::zeroextendh(bitblock128_t arg1)
    22532239{
     
    22552241}
    22562242
    2257 //The total number of operations is 14
     2243//The total number of operations is 13.0
    22582244template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<1>::zeroextendl(bitblock128_t arg1)
    22592245{
     
    22612247}
    22622248
    2263 //The total number of operations is 8
     2249//The total number of operations is 7.5
    22642250template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<2>::zeroextendl(bitblock128_t arg1)
    22652251{
     
    22672253}
    22682254
    2269 //The total number of operations is 3
     2255//The total number of operations is 3.0
    22702256template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<4>::zeroextendl(bitblock128_t arg1)
    22712257{
     
    22732259}
    22742260
    2275 //The total number of operations is 3
     2261//The total number of operations is 3.0
    22762262template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<8>::zeroextendl(bitblock128_t arg1)
    22772263{
     
    22792265}
    22802266
    2281 //The total number of operations is 3
     2267//The total number of operations is 3.0
    22822268template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<16>::zeroextendl(bitblock128_t arg1)
    22832269{
     
    22852271}
    22862272
    2287 //The total number of operations is 5
     2273//The total number of operations is 5.0
    22882274template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<32>::zeroextendl(bitblock128_t arg1)
    22892275{
     
    22912277}
    22922278
    2293 //The total number of operations is 1
     2279//The total number of operations is 1.0
    22942280template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<64>::zeroextendl(bitblock128_t arg1)
    22952281{
     
    22972283}
    22982284
    2299 //The total number of operations is 21
     2285//The total number of operations is 19.5
    23002286template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<1>::signextendh(bitblock128_t arg1)
    23012287{
     
    23032289}
    23042290
    2305 //The total number of operations is 23
     2291//The total number of operations is 22.0
    23062292template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<2>::signextendh(bitblock128_t arg1)
    23072293{
     
    23092295}
    23102296
    2311 //The total number of operations is 4
     2297//The total number of operations is 3.5
    23122298template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<4>::signextendh(bitblock128_t arg1)
    23132299{
     
    23152301}
    23162302
    2317 //The total number of operations is 4
     2303//The total number of operations is 3.5
    23182304template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<8>::signextendh(bitblock128_t arg1)
    23192305{
     
    23212307}
    23222308
    2323 //The total number of operations is 4
     2309//The total number of operations is 3.5
    23242310template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<16>::signextendh(bitblock128_t arg1)
    23252311{
     
    23272313}
    23282314
    2329 //The total number of operations is 6
     2315//The total number of operations is 5.5
    23302316template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<32>::signextendh(bitblock128_t arg1)
    23312317{
     
    23332319}
    23342320
    2335 //The total number of operations is 9
     2321//The total number of operations is 6.66666666667
    23362322template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<64>::signextendh(bitblock128_t arg1)
    23372323{
     
    23392325}
    23402326
    2341 //The total number of operations is 21
     2327//The total number of operations is 19.5
    23422328template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<1>::signextendl(bitblock128_t arg1)
    23432329{
     
    23452331}
    23462332
    2347 //The total number of operations is 23
     2333//The total number of operations is 22.0
    23482334template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<2>::signextendl(bitblock128_t arg1)
    23492335{
     
    23512337}
    23522338
    2353 //The total number of operations is 4
     2339//The total number of operations is 3.5
    23542340template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<4>::signextendl(bitblock128_t arg1)
    23552341{
     
    23572343}
    23582344
    2359 //The total number of operations is 4
     2345//The total number of operations is 3.5
    23602346template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<8>::signextendl(bitblock128_t arg1)
    23612347{
     
    23632349}
    23642350
    2365 //The total number of operations is 4
     2351//The total number of operations is 3.5
    23662352template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<16>::signextendl(bitblock128_t arg1)
    23672353{
     
    23692355}
    23702356
    2371 //The total number of operations is 6
     2357//The total number of operations is 5.5
    23722358template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<32>::signextendl(bitblock128_t arg1)
    23732359{
     
    23752361}
    23762362
    2377 //The total number of operations is 14
     2363//The total number of operations is 9.0
    23782364template <> IDISA_ALWAYS_INLINE bitblock128_t esimd128<64>::signextendl(bitblock128_t arg1)
    23792365{
     
    23812367}
    23822368
    2383 //The total number of operations is 11
     2369//The total number of operations is 6.5
    23842370template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<2>::dsrli(bitblock128_t arg1, bitblock128_t arg2)
    23852371{
     
    23872373}
    23882374
    2389 //The total number of operations is 11
     2375//The total number of operations is 6.5
    23902376template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<4>::dsrli(bitblock128_t arg1, bitblock128_t arg2)
    23912377{
     
    23932379}
    23942380
    2395 //The total number of operations is 11
     2381//The total number of operations is 6.5
    23962382template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<8>::dsrli(bitblock128_t arg1, bitblock128_t arg2)
    23972383{
     
    23992385}
    24002386
    2401 //The total number of operations is 11
     2387//The total number of operations is 6.5
    24022388template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<16>::dsrli(bitblock128_t arg1, bitblock128_t arg2)
    24032389{
     
    24052391}
    24062392
    2407 //The total number of operations is 11
     2393//The total number of operations is 6.5
    24082394template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<32>::dsrli(bitblock128_t arg1, bitblock128_t arg2)
    24092395{
     
    24112397}
    24122398
    2413 //The total number of operations is 11
     2399//The total number of operations is 6.5
    24142400template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<64>::dsrli(bitblock128_t arg1, bitblock128_t arg2)
    24152401{
     
    24172403}
    24182404
    2419 //The total number of operations is 11
     2405//The total number of operations is 6.5
    24202406template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<128>::dsrli(bitblock128_t arg1, bitblock128_t arg2)
    24212407{
     
    24232409}
    24242410
    2425 //The total number of operations is 1
     2411//The total number of operations is 1.0
    24262412template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<1>::fill(uint64_t val1)
    24272413{
     
    24292415}
    24302416
    2431 //The total number of operations is 1
     2417//The total number of operations is 1.0
    24322418template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<2>::fill(uint64_t val1)
    24332419{
     
    24352421}
    24362422
    2437 //The total number of operations is 1
     2423//The total number of operations is 1.0
    24382424template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<4>::fill(uint64_t val1)
    24392425{
     
    24412427}
    24422428
    2443 //The total number of operations is 1
     2429//The total number of operations is 1.0
    24442430template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<8>::fill(uint64_t val1)
    24452431{
     
    24472433}
    24482434
    2449 //The total number of operations is 1
     2435//The total number of operations is 1.0
    24502436template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<16>::fill(uint64_t val1)
    24512437{
     
    24532439}
    24542440
    2455 //The total number of operations is 1
     2441//The total number of operations is 1.0
    24562442template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<32>::fill(uint64_t val1)
    24572443{
     
    24592445}
    24602446
    2461 //The total number of operations is 1
     2447//The total number of operations is 1.0
    24622448template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<64>::fill(uint64_t val1)
    24632449{
     
    24652451}
    24662452
    2467 //The total number of operations is 1
     2453//The total number of operations is 1.0
    24682454template <> template <uint64_t pos> IDISA_ALWAYS_INLINE uint64_t mvmd128<1>::extract(bitblock128_t arg1)
    24692455{
     
    24712457}
    24722458
    2473 //The total number of operations is 1
     2459//The total number of operations is 1.0
    24742460template <> template <uint64_t pos> IDISA_ALWAYS_INLINE uint64_t mvmd128<2>::extract(bitblock128_t arg1)
    24752461{
     
    24772463}
    24782464
    2479 //The total number of operations is 1
     2465//The total number of operations is 1.0
    24802466template <> template <uint64_t pos> IDISA_ALWAYS_INLINE uint64_t mvmd128<4>::extract(bitblock128_t arg1)
    24812467{
     
    24832469}
    24842470
    2485 //The total number of operations is 1
     2471//The total number of operations is 1.0
    24862472template <> template <uint64_t pos> IDISA_ALWAYS_INLINE uint64_t mvmd128<8>::extract(bitblock128_t arg1)
    24872473{
     
    24892475}
    24902476
    2491 //The total number of operations is 1
     2477//The total number of operations is 1.0
    24922478template <> template <uint64_t pos> IDISA_ALWAYS_INLINE uint64_t mvmd128<16>::extract(bitblock128_t arg1)
    24932479{
     
    24952481}
    24962482
    2497 //The total number of operations is 1
     2483//The total number of operations is 1.0
    24982484template <> template <uint64_t pos> IDISA_ALWAYS_INLINE uint64_t mvmd128<32>::extract(bitblock128_t arg1)
    24992485{
     
    25012487}
    25022488
    2503 //The total number of operations is 1
     2489//The total number of operations is 1.0
    25042490template <> template <uint64_t pos> IDISA_ALWAYS_INLINE uint64_t mvmd128<64>::extract(bitblock128_t arg1)
    25052491{
     
    25072493}
    25082494
    2509 //The total number of operations is 2
     2495//The total number of operations is 2.0
    25102496template <> template <uint64_t pos> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<1>::splat(bitblock128_t arg1)
    25112497{
     
    25132499}
    25142500
    2515 //The total number of operations is 2
     2501//The total number of operations is 2.0
    25162502template <> template <uint64_t pos> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<2>::splat(bitblock128_t arg1)
    25172503{
     
    25192505}
    25202506
    2521 //The total number of operations is 2
     2507//The total number of operations is 2.0
    25222508template <> template <uint64_t pos> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<4>::splat(bitblock128_t arg1)
    25232509{
     
    25252511}
    25262512
    2527 //The total number of operations is 2
     2513//The total number of operations is 2.0
    25282514template <> template <uint64_t pos> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<8>::splat(bitblock128_t arg1)
    25292515{
     
    25312517}
    25322518
    2533 //The total number of operations is 2
     2519//The total number of operations is 2.0
    25342520template <> template <uint64_t pos> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<16>::splat(bitblock128_t arg1)
    25352521{
     
    25372523}
    25382524
    2539 //The total number of operations is 2
     2525//The total number of operations is 2.0
    25402526template <> template <uint64_t pos> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<32>::splat(bitblock128_t arg1)
    25412527{
     
    25432529}
    25442530
    2545 //The total number of operations is 2
     2531//The total number of operations is 2.0
    25462532template <> template <uint64_t pos> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<64>::splat(bitblock128_t arg1)
    25472533{
     
    25492535}
    25502536
    2551 //The total number of operations is 5
     2537//The total number of operations is 5.0
    25522538template <> template <uint64_t pos> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<128>::splat(bitblock128_t arg1)
    25532539{
     
    25552541}
    25562542
    2557 //The total number of operations is 15
     2543//The total number of operations is 15.0
    25582544template <> 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)
    25592545{
     
    25612547}
    25622548
    2563 //The total number of operations is 15
     2549//The total number of operations is 15.0
    25642550template <> 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)
    25652551{
     
    25672553}
    25682554
    2569 //The total number of operations is 15
     2555//The total number of operations is 15.0
    25702556template <> 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)
    25712557{
     
    25732559}
    25742560
    2575 //The total number of operations is 15
     2561//The total number of operations is 15.0
    25762562template <> 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)
    25772563{
     
    25792565}
    25802566
    2581 //The total number of operations is 3
     2567//The total number of operations is 3.0
    25822568template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<1>::fill4(uint64_t val1, uint64_t val2, uint64_t val3, uint64_t val4)
    25832569{
     
    25852571}
    25862572
    2587 //The total number of operations is 3
     2573//The total number of operations is 3.0
    25882574template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<2>::fill4(uint64_t val1, uint64_t val2, uint64_t val3, uint64_t val4)
    25892575{
     
    25912577}
    25922578
    2593 //The total number of operations is 3
     2579//The total number of operations is 3.0
    25942580template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<4>::fill4(uint64_t val1, uint64_t val2, uint64_t val3, uint64_t val4)
    25952581{
     
    25972583}
    25982584
    2599 //The total number of operations is 3
     2585//The total number of operations is 3.0
    26002586template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<8>::fill4(uint64_t val1, uint64_t val2, uint64_t val3, uint64_t val4)
    26012587{
     
    26032589}
    26042590
    2605 //The total number of operations is 3
     2591//The total number of operations is 3.0
    26062592template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<16>::fill4(uint64_t val1, uint64_t val2, uint64_t val3, uint64_t val4)
    26072593{
     
    26092595}
    26102596
    2611 //The total number of operations is 7
     2597//The total number of operations is 7.0
    26122598template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<32>::fill4(uint64_t val1, uint64_t val2, uint64_t val3, uint64_t val4)
    26132599{
     
    26152601}
    26162602
    2617 //The total number of operations is 5
     2603//The total number of operations is 3.16666666667
    26182604template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<2>::srli(bitblock128_t arg1)
    26192605{
     
    26212607}
    26222608
    2623 //The total number of operations is 5
     2609//The total number of operations is 3.16666666667
    26242610template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<4>::srli(bitblock128_t arg1)
    26252611{
     
    26272613}
    26282614
    2629 //The total number of operations is 5
     2615//The total number of operations is 3.16666666667
    26302616template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<8>::srli(bitblock128_t arg1)
    26312617{
     
    26332619}
    26342620
    2635 //The total number of operations is 5
     2621//The total number of operations is 3.16666666667
    26362622template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<16>::srli(bitblock128_t arg1)
    26372623{
     
    26392625}
    26402626
    2641 //The total number of operations is 5
     2627//The total number of operations is 3.16666666667
    26422628template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<32>::srli(bitblock128_t arg1)
    26432629{
     
    26452631}
    26462632
    2647 //The total number of operations is 5
     2633//The total number of operations is 3.16666666667
    26482634template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<64>::srli(bitblock128_t arg1)
    26492635{
     
    26512637}
    26522638
    2653 //The total number of operations is 5
     2639//The total number of operations is 3.16666666667
    26542640template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<128>::srli(bitblock128_t arg1)
    26552641{
     
    26572643}
    26582644
    2659 //The total number of operations is 1
     2645//The total number of operations is 1.0
    26602646template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<1>::fill2(uint64_t val1, uint64_t val2)
    26612647{
     
    26632649}
    26642650
    2665 //The total number of operations is 1
     2651//The total number of operations is 1.0
    26662652template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<2>::fill2(uint64_t val1, uint64_t val2)
    26672653{
     
    26692655}
    26702656
    2671 //The total number of operations is 1
     2657//The total number of operations is 1.0
    26722658template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<4>::fill2(uint64_t val1, uint64_t val2)
    26732659{
     
    26752661}
    26762662
    2677 //The total number of operations is 1
     2663//The total number of operations is 1.0
    26782664template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<8>::fill2(uint64_t val1, uint64_t val2)
    26792665{
     
    26812667}
    26822668
    2683 //The total number of operations is 1
     2669//The total number of operations is 1.0
    26842670template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<16>::fill2(uint64_t val1, uint64_t val2)
    26852671{
     
    26872673}
    26882674
    2689 //The total number of operations is 3
     2675//The total number of operations is 3.0
    26902676template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<32>::fill2(uint64_t val1, uint64_t val2)
    26912677{
     
    26932679}
    26942680
    2695 //The total number of operations is 3
     2681//The total number of operations is 3.0
    26962682template <> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<64>::fill2(uint64_t val1, uint64_t val2)
    26972683{
     
    26992685}
    27002686
    2701 //The total number of operations is 11
     2687//The total number of operations is 6.5
    27022688template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<2>::dslli(bitblock128_t arg1, bitblock128_t arg2)
    27032689{
     
    27052691}
    27062692
    2707 //The total number of operations is 11
     2693//The total number of operations is 6.5
    27082694template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<4>::dslli(bitblock128_t arg1, bitblock128_t arg2)
    27092695{
     
    27112697}
    27122698
    2713 //The total number of operations is 11
     2699//The total number of operations is 6.5
    27142700template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<8>::dslli(bitblock128_t arg1, bitblock128_t arg2)
    27152701{
     
    27172703}
    27182704
    2719 //The total number of operations is 11
     2705//The total number of operations is 6.5
    27202706template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<16>::dslli(bitblock128_t arg1, bitblock128_t arg2)
    27212707{
     
    27232709}
    27242710
    2725 //The total number of operations is 11
     2711//The total number of operations is 6.5
    27262712template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<32>::dslli(bitblock128_t arg1, bitblock128_t arg2)
    27272713{
     
    27292715}
    27302716
    2731 //The total number of operations is 11
     2717//The total number of operations is 6.5
    27322718template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<64>::dslli(bitblock128_t arg1, bitblock128_t arg2)
    27332719{
     
    27352721}
    27362722
    2737 //The total number of operations is 11
     2723//The total number of operations is 6.5
    27382724template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<128>::dslli(bitblock128_t arg1, bitblock128_t arg2)
    27392725{
     
    27412727}
    27422728
    2743 //The total number of operations is 5
     2729//The total number of operations is 2.33333333333
    27442730template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<2>::slli(bitblock128_t arg1)
    27452731{
     
    27472733}
    27482734
    2749 //The total number of operations is 5
     2735//The total number of operations is 2.33333333333
    27502736template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<4>::slli(bitblock128_t arg1)
    27512737{
     
    27532739}
    27542740
    2755 //The total number of operations is 5
     2741//The total number of operations is 2.33333333333
    27562742template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<8>::slli(bitblock128_t arg1)
    27572743{
     
    27592745}
    27602746
    2761 //The total number of operations is 5
     2747//The total number of operations is 2.33333333333
    27622748template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<16>::slli(bitblock128_t arg1)
    27632749{
     
    27652751}
    27662752
    2767 //The total number of operations is 5
     2753//The total number of operations is 2.33333333333
    27682754template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<32>::slli(bitblock128_t arg1)
    27692755{
     
    27712757}
    27722758
    2773 //The total number of operations is 5
     2759//The total number of operations is 2.33333333333
    27742760template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<64>::slli(bitblock128_t arg1)
    27752761{
     
    27772763}
    27782764
    2779 //The total number of operations is 5
     2765//The total number of operations is 2.33333333333
    27802766template <> template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t mvmd128<128>::slli(bitblock128_t arg1)
    27812767{
     
    27832769}
    27842770
    2785 //The total number of operations is 7
     2771//The total number of operations is 7.0
    27862772template <> 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)
    27872773{
     
    27892775}
    27902776
    2791 //The total number of operations is 7
     2777//The total number of operations is 7.0
    27922778template <> 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)
    27932779{
     
    27952781}
    27962782
    2797 //The total number of operations is 7
     2783//The total number of operations is 7.0
    27982784template <> 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)
    27992785{
     
    28012787}
    28022788
    2803 //The total number of operations is 7
     2789//The total number of operations is 7.0
    28042790template <> 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)
    28052791{
     
    28072793}
    28082794
    2809 //The total number of operations is 7
     2795//The total number of operations is 7.0
    28102796template <> 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)
    28112797{
     
    28132799}
    28142800
    2815 //The total number of operations is 1
     2801//The total number of operations is 1.0
    28162802IDISA_ALWAYS_INLINE bitblock128_t bitblock128::load_unaligned(uint64_t const* arg1)
    28172803{
     
    28192805}
    28202806
    2821 //The total number of operations is 5
     2807//The total number of operations is 3.16666666667
    28222808template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t bitblock128::srli(bitblock128_t arg1)
    28232809{
     
    28252811}
    28262812
    2827 //The total number of operations is 1
     2813//The total number of operations is 1.0
    28282814IDISA_ALWAYS_INLINE void bitblock128::store_aligned(uint64_t* arg1, bitblock128_t arg2)
    28292815{
     
    28312817}
    28322818
    2833 //The total number of operations is 18
     2819//The total number of operations is 16.1666666667
    28342820IDISA_ALWAYS_INLINE uint64_t bitblock128::popcount(bitblock128_t arg1)
    28352821{
     
    28372823}
    28382824
    2839 //The total number of operations is 5
     2825//The total number of operations is 5.0
    28402826IDISA_ALWAYS_INLINE bool bitblock128::all(bitblock128_t arg1)
    28412827{
     
    28432829}
    28442830
    2845 //The total number of operations is 5
     2831//The total number of operations is 2.33333333333
    28462832template <uint64_t sh> IDISA_ALWAYS_INLINE bitblock128_t bitblock128::slli(bitblock128_t arg1)
    28472833{
     
    28492835}
    28502836
    2851 //The total number of operations is 5
     2837//The total number of operations is 5.0
    28522838IDISA_ALWAYS_INLINE bool bitblock128::any(bitblock128_t arg1)
    28532839{
     
    28552841}
    28562842
    2857 //The total number of operations is 1
     2843//The total number of operations is 1.0
    28582844IDISA_ALWAYS_INLINE bitblock128_t bitblock128::load_aligned(uint64_t const* arg1)
    28592845{
     
    28612847}
    28622848
    2863 //The total number of operations is 1
     2849//The total number of operations is 1.0
    28642850IDISA_ALWAYS_INLINE void bitblock128::store_unaligned(uint64_t* arg1, bitblock128_t arg2)
    28652851{
Note: See TracChangeset for help on using the changeset viewer.