Changeset 3526 for trunk/lib/idisa_cpp/idisa_avx.cpp
 Timestamp:
 Sep 30, 2013, 4:29:47 PM (6 years ago)
 File:

 1 edited
Legend:
 Unmodified
 Added
 Removed

trunk/lib/idisa_cpp/idisa_avx.cpp
r3525 r3526 681 681 } 682 682 683 //The total number of operations is 18 6.666666667683 //The total number of operations is 185.666666667 684 684 template <> IDISA_ALWAYS_INLINE bitblock256_t simd256<256>::max(bitblock256_t arg1, bitblock256_t arg2) 685 685 { … … 763 763 } 764 764 765 //The total number of operations is 271 1.33333333765 //The total number of operations is 2710.33333333 766 766 template <> IDISA_ALWAYS_INLINE bitblock256_t simd256<256>::mult(bitblock256_t arg1, bitblock256_t arg2) 767 767 { … … 834 834 } 835 835 836 //The total number of operations is 23 9.166666667836 //The total number of operations is 238.166666667 837 837 template <> IDISA_ALWAYS_INLINE bitblock256_t simd256<256>::gt(bitblock256_t arg1, bitblock256_t arg2) 838 838 { … … 989 989 } 990 990 991 //The total number of operations is 18 2.166666667991 //The total number of operations is 181.166666667 992 992 template <> IDISA_ALWAYS_INLINE bitblock256_t simd256<256>::ult(bitblock256_t arg1, bitblock256_t arg2) 993 993 { … … 1089 1089 } 1090 1090 1091 //The total number of operations is 14. 51091 //The total number of operations is 14.0 1092 1092 template <> template <uint16_t sh> IDISA_ALWAYS_INLINE bitblock256_t simd256<256>::srli(bitblock256_t arg1) 1093 1093 { 1094 return ((sh < 128) ? simd_or(simd256<128>::srli<sh>(arg1), simd256<128>::slli<(128sh)>( ((bitblock256_t)(_mm256_castsi128_si256(avx_select_hi128(arg1)))))) : simd256<128>::srli<(sh128)>(avx_move_hi128_to_lo128(arg1)));1094 return ((sh < 128) ? simd_or(simd256<128>::srli<sh>(arg1), simd256<128>::slli<(128sh)>(_mm256_castsi128_si256(avx_select_hi128(arg1)))) : simd256<128>::srli<(sh128)>(avx_move_hi128_to_lo128(arg1))); 1095 1095 } 1096 1096 … … 1143 1143 } 1144 1144 1145 //The total number of operations is 19 2.1666666671145 //The total number of operations is 191.666666667 1146 1146 template <> IDISA_ALWAYS_INLINE bitblock256_t simd256<256>::ctz(bitblock256_t arg1) 1147 1147 { … … 1272 1272 } 1273 1273 1274 //The total number of operations is 17 4.1666666671274 //The total number of operations is 173.166666667 1275 1275 template <> IDISA_ALWAYS_INLINE bitblock256_t simd256<256>::ugt(bitblock256_t arg1, bitblock256_t arg2) 1276 1276 { … … 1323 1323 } 1324 1324 1325 //The total number of operations is 16. 51325 //The total number of operations is 16.0 1326 1326 template <> IDISA_ALWAYS_INLINE bitblock256_t simd256<256>::xor_hl(bitblock256_t arg1) 1327 1327 { … … 1378 1378 } 1379 1379 1380 //The total number of operations is 115. 51380 //The total number of operations is 115.0 1381 1381 template <> IDISA_ALWAYS_INLINE bitblock256_t simd256<256>::popcount(bitblock256_t arg1) 1382 1382 { … … 1579 1579 } 1580 1580 1581 //The total number of operations is 29. 83333333331581 //The total number of operations is 29.3333333333 1582 1582 template <> IDISA_ALWAYS_INLINE bitblock256_t simd256<256>::ifh(bitblock256_t arg1, bitblock256_t arg2, bitblock256_t arg3) 1583 1583 { … … 1628 1628 } 1629 1629 1630 //The total number of operations is 5 9.01630 //The total number of operations is 58.5 1631 1631 template <> template <uint16_t sh> IDISA_ALWAYS_INLINE bitblock256_t simd256<256>::srai(bitblock256_t arg1) 1632 1632 { … … 1676 1676 } 1677 1677 1678 //The total number of operations is 9 1.16666666671678 //The total number of operations is 90.6666666667 1679 1679 template <> IDISA_ALWAYS_INLINE bitblock256_t simd256<256>::add_hl(bitblock256_t arg1) 1680 1680 { … … 1739 1739 template <> template <FieldType<2>::T val> IDISA_ALWAYS_INLINE bitblock256_t simd256<2>::constant() 1740 1740 { 1741 return ((val < 0) ? simd256<(4)>::constant<((val<<2)(val^(4)))>() : simd256<(4)>::constant<((val<<2)val)>());1741 return simd256<(4)>::constant<((val<<2)(val&(3)))>(); 1742 1742 } 1743 1743 … … 1745 1745 template <> template <FieldType<4>::T val> IDISA_ALWAYS_INLINE bitblock256_t simd256<4>::constant() 1746 1746 { 1747 return ((val < 0) ? simd256<(8)>::constant<((val<<4)(val^(16)))>() : simd256<(8)>::constant<((val<<4)val)>());1747 return simd256<(8)>::constant<((val<<4)(val&(15)))>(); 1748 1748 } 1749 1749 … … 1841 1841 } 1842 1842 1843 //The total number of operations is 18 6.6666666671843 //The total number of operations is 185.666666667 1844 1844 template <> IDISA_ALWAYS_INLINE bitblock256_t simd256<256>::min(bitblock256_t arg1, bitblock256_t arg2) 1845 1845 { … … 1906 1906 } 1907 1907 1908 //The total number of operations is 13 2.01908 //The total number of operations is 131.0 1909 1909 template <> IDISA_ALWAYS_INLINE bitblock256_t simd256<256>::umin(bitblock256_t arg1, bitblock256_t arg2) 1910 1910 { … … 1970 1970 } 1971 1971 1972 //The total number of operations is 13 2.01972 //The total number of operations is 131.0 1973 1973 template <> IDISA_ALWAYS_INLINE bitblock256_t simd256<256>::umax(bitblock256_t arg1, bitblock256_t arg2) 1974 1974 { … … 2036 2036 } 2037 2037 2038 //The total number of operations is 26 3.1666666672038 //The total number of operations is 262.166666667 2039 2039 template <> IDISA_ALWAYS_INLINE bitblock256_t simd256<256>::lt(bitblock256_t arg1, bitblock256_t arg2) 2040 2040 { … … 2100 2100 } 2101 2101 2102 //The total number of operations is 5 4.16666666672102 //The total number of operations is 53.6666666667 2103 2103 template <> IDISA_ALWAYS_INLINE bitblock256_t simd256<256>::eq(bitblock256_t arg1, bitblock256_t arg2) 2104 2104 { … … 2267 2267 } 2268 2268 2269 //The total number of operations is 204. 8333333332269 //The total number of operations is 204.333333333 2270 2270 template <> IDISA_ALWAYS_INLINE bitblock256_t simd256<256>::abs(bitblock256_t arg1) 2271 2271 { … … 2274 2274 } 2275 2275 2276 //The total number of operations is 2 33.02276 //The total number of operations is 227.0 2277 2277 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<2>::umin_hl(bitblock256_t arg1, bitblock256_t arg2) 2278 2278 { … … 2280 2280 } 2281 2281 2282 //The total number of operations is 18 6.02282 //The total number of operations is 182.0 2283 2283 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<4>::umin_hl(bitblock256_t arg1, bitblock256_t arg2) 2284 2284 { … … 2286 2286 } 2287 2287 2288 //The total number of operations is 10 6.02288 //The total number of operations is 104.0 2289 2289 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<8>::umin_hl(bitblock256_t arg1, bitblock256_t arg2) 2290 2290 { … … 2304 2304 } 2305 2305 2306 //The total number of operations is 17 9.02306 //The total number of operations is 175.0 2307 2307 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<64>::umin_hl(bitblock256_t arg1, bitblock256_t arg2) 2308 2308 { … … 2310 2310 } 2311 2311 2312 //The total number of operations is 20 3.6666666672312 //The total number of operations is 201.666666667 2313 2313 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<128>::umin_hl(bitblock256_t arg1, bitblock256_t arg2) 2314 2314 { … … 2316 2316 } 2317 2317 2318 //The total number of operations is 8 1.16666666672318 //The total number of operations is 80.6666666667 2319 2319 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<256>::umin_hl(bitblock256_t arg1, bitblock256_t arg2) 2320 2320 { … … 2322 2322 } 2323 2323 2324 //The total number of operations is 2 33.02324 //The total number of operations is 227.0 2325 2325 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<2>::add_hl(bitblock256_t arg1, bitblock256_t arg2) 2326 2326 { … … 2328 2328 } 2329 2329 2330 //The total number of operations is 17 8.02330 //The total number of operations is 174.0 2331 2331 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<4>::add_hl(bitblock256_t arg1, bitblock256_t arg2) 2332 2332 { … … 2334 2334 } 2335 2335 2336 //The total number of operations is 10 6.02336 //The total number of operations is 104.0 2337 2337 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<8>::add_hl(bitblock256_t arg1, bitblock256_t arg2) 2338 2338 { … … 2358 2358 } 2359 2359 2360 //The total number of operations is 19 7.6666666672360 //The total number of operations is 195.666666667 2361 2361 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<128>::add_hl(bitblock256_t arg1, bitblock256_t arg2) 2362 2362 { … … 2364 2364 } 2365 2365 2366 //The total number of operations is 60. 83333333332366 //The total number of operations is 60.3333333333 2367 2367 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<256>::add_hl(bitblock256_t arg1, bitblock256_t arg2) 2368 2368 { … … 2370 2370 } 2371 2371 2372 //The total number of operations is 22 6.02372 //The total number of operations is 223.0 2373 2373 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<2>::packss(bitblock256_t arg1, bitblock256_t arg2) 2374 2374 { … … 2378 2378 } 2379 2379 2380 //The total number of operations is 18 3.02380 //The total number of operations is 181.0 2381 2381 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<4>::packss(bitblock256_t arg1, bitblock256_t arg2) 2382 2382 { … … 2386 2386 } 2387 2387 2388 //The total number of operations is 80.02388 //The total number of operations is 79.0 2389 2389 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<8>::packss(bitblock256_t arg1, bitblock256_t arg2) 2390 2390 { … … 2406 2406 } 2407 2407 2408 //The total number of operations is 1 20.02408 //The total number of operations is 118.0 2409 2409 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<64>::packss(bitblock256_t arg1, bitblock256_t arg2) 2410 2410 { … … 2414 2414 } 2415 2415 2416 //The total number of operations is 32 9.3333333332416 //The total number of operations is 328.333333333 2417 2417 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<128>::packss(bitblock256_t arg1, bitblock256_t arg2) 2418 2418 { … … 2422 2422 } 2423 2423 2424 //The total number of operations is 1001.166666672424 //The total number of operations is 996.666666667 2425 2425 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<256>::packss(bitblock256_t arg1, bitblock256_t arg2) 2426 2426 { … … 2448 2448 } 2449 2449 2450 //The total number of operations is 10 4.02450 //The total number of operations is 102.0 2451 2451 template <> IDISA_ALWAYS_INLINE FieldType<256/64>::T hsimd256<64>::signmask(bitblock256_t arg1) 2452 2452 { … … 2454 2454 } 2455 2455 2456 //The total number of operations is 24 8.6666666672456 //The total number of operations is 245.666666667 2457 2457 template <> IDISA_ALWAYS_INLINE FieldType<256/128>::T hsimd256<128>::signmask(bitblock256_t arg1) 2458 2458 { … … 2460 2460 } 2461 2461 2462 //The total number of operations is 26 6.1666666672462 //The total number of operations is 262.666666667 2463 2463 template <> IDISA_ALWAYS_INLINE FieldType<256/256>::T hsimd256<256>::signmask(bitblock256_t arg1) 2464 2464 { … … 2466 2466 } 2467 2467 2468 //The total number of operations is 1 12.02468 //The total number of operations is 109.0 2469 2469 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<2>::packl(bitblock256_t arg1, bitblock256_t arg2) 2470 2470 { … … 2472 2472 } 2473 2473 2474 //The total number of operations is 7 7.02474 //The total number of operations is 75.0 2475 2475 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<4>::packl(bitblock256_t arg1, bitblock256_t arg2) 2476 2476 { … … 2478 2478 } 2479 2479 2480 //The total number of operations is 4 2.02480 //The total number of operations is 41.0 2481 2481 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<8>::packl(bitblock256_t arg1, bitblock256_t arg2) 2482 2482 { … … 2496 2496 } 2497 2497 2498 //The total number of operations is 8 3.02498 //The total number of operations is 81.0 2499 2499 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<64>::packl(bitblock256_t arg1, bitblock256_t arg2) 2500 2500 { … … 2502 2502 } 2503 2503 2504 //The total number of operations is 4 8.02504 //The total number of operations is 47.0 2505 2505 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<128>::packl(bitblock256_t arg1, bitblock256_t arg2) 2506 2506 { … … 2514 2514 } 2515 2515 2516 //The total number of operations is 1 20.02516 //The total number of operations is 117.0 2517 2517 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<2>::packh(bitblock256_t arg1, bitblock256_t arg2) 2518 2518 { … … 2520 2520 } 2521 2521 2522 //The total number of operations is 8 5.02522 //The total number of operations is 83.0 2523 2523 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<4>::packh(bitblock256_t arg1, bitblock256_t arg2) 2524 2524 { … … 2526 2526 } 2527 2527 2528 //The total number of operations is 50.02528 //The total number of operations is 49.0 2529 2529 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<8>::packh(bitblock256_t arg1, bitblock256_t arg2) 2530 2530 { … … 2544 2544 } 2545 2545 2546 //The total number of operations is 91.02546 //The total number of operations is 89.0 2547 2547 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<64>::packh(bitblock256_t arg1, bitblock256_t arg2) 2548 2548 { … … 2550 2550 } 2551 2551 2552 //The total number of operations is 14 4.6666666672552 //The total number of operations is 143.666666667 2553 2553 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<128>::packh(bitblock256_t arg1, bitblock256_t arg2) 2554 2554 { … … 2556 2556 } 2557 2557 2558 //The total number of operations is 17. 52558 //The total number of operations is 17.0 2559 2559 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<256>::packh(bitblock256_t arg1, bitblock256_t arg2) 2560 2560 { … … 2562 2562 } 2563 2563 2564 //The total number of operations is 2 33.02564 //The total number of operations is 227.0 2565 2565 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<2>::min_hl(bitblock256_t arg1, bitblock256_t arg2) 2566 2566 { … … 2568 2568 } 2569 2569 2570 //The total number of operations is 18 7.02570 //The total number of operations is 183.0 2571 2571 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<4>::min_hl(bitblock256_t arg1, bitblock256_t arg2) 2572 2572 { … … 2574 2574 } 2575 2575 2576 //The total number of operations is 10 9.02576 //The total number of operations is 107.0 2577 2577 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<8>::min_hl(bitblock256_t arg1, bitblock256_t arg2) 2578 2578 { … … 2592 2592 } 2593 2593 2594 //The total number of operations is 17 9.02594 //The total number of operations is 175.0 2595 2595 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<64>::min_hl(bitblock256_t arg1, bitblock256_t arg2) 2596 2596 { … … 2598 2598 } 2599 2599 2600 //The total number of operations is 200.6666666672600 //The total number of operations is 198.666666667 2601 2601 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<128>::min_hl(bitblock256_t arg1, bitblock256_t arg2) 2602 2602 { … … 2604 2604 } 2605 2605 2606 //The total number of operations is 8 9.16666666672606 //The total number of operations is 88.6666666667 2607 2607 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<256>::min_hl(bitblock256_t arg1, bitblock256_t arg2) 2608 2608 { … … 2610 2610 } 2611 2611 2612 //The total number of operations is 1 70.02612 //The total number of operations is 167.0 2613 2613 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<2>::packus(bitblock256_t arg1, bitblock256_t arg2) 2614 2614 { … … 2620 2620 } 2621 2621 2622 //The total number of operations is 15 7.02622 //The total number of operations is 155.0 2623 2623 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<4>::packus(bitblock256_t arg1, bitblock256_t arg2) 2624 2624 { … … 2630 2630 } 2631 2631 2632 //The total number of operations is 7 6.02632 //The total number of operations is 75.0 2633 2633 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<8>::packus(bitblock256_t arg1, bitblock256_t arg2) 2634 2634 { … … 2652 2652 } 2653 2653 2654 //The total number of operations is 10 3.02654 //The total number of operations is 101.0 2655 2655 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<64>::packus(bitblock256_t arg1, bitblock256_t arg2) 2656 2656 { … … 2662 2662 } 2663 2663 2664 //The total number of operations is 12 8.02664 //The total number of operations is 127.0 2665 2665 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<128>::packus(bitblock256_t arg1, bitblock256_t arg2) 2666 2666 { … … 2672 2672 } 2673 2673 2674 //The total number of operations is 112. 8333333332674 //The total number of operations is 112.333333333 2675 2675 template <> IDISA_ALWAYS_INLINE bitblock256_t hsimd256<256>::packus(bitblock256_t arg1, bitblock256_t arg2) 2676 2676 { … … 2833 2833 } 2834 2834 2835 //The total number of operations is 14. 52835 //The total number of operations is 14.0 2836 2836 template <> IDISA_ALWAYS_INLINE bitblock256_t esimd256<128>::zeroextendh(bitblock256_t arg1) 2837 2837 { … … 2929 2929 } 2930 2930 2931 //The total number of operations is 5 9.02931 //The total number of operations is 58.5 2932 2932 template <> IDISA_ALWAYS_INLINE bitblock256_t esimd256<128>::signextendh(bitblock256_t arg1) 2933 2933 { … … 2977 2977 } 2978 2978 2979 //The total number of operations is 7 3.02979 //The total number of operations is 72.5 2980 2980 template <> IDISA_ALWAYS_INLINE bitblock256_t esimd256<128>::signextendl(bitblock256_t arg1) 2981 2981 { … … 2983 2983 } 2984 2984 2985 //The total number of operations is 29. 52985 //The total number of operations is 29.0 2986 2986 template <> template <uint16_t sh> IDISA_ALWAYS_INLINE bitblock256_t mvmd256<2>::dsrli(bitblock256_t arg1, bitblock256_t arg2) 2987 2987 { … … 2989 2989 } 2990 2990 2991 //The total number of operations is 29. 52991 //The total number of operations is 29.0 2992 2992 template <> template <uint16_t sh> IDISA_ALWAYS_INLINE bitblock256_t mvmd256<4>::dsrli(bitblock256_t arg1, bitblock256_t arg2) 2993 2993 { … … 2995 2995 } 2996 2996 2997 //The total number of operations is 29. 52997 //The total number of operations is 29.0 2998 2998 template <> template <uint16_t sh> IDISA_ALWAYS_INLINE bitblock256_t mvmd256<8>::dsrli(bitblock256_t arg1, bitblock256_t arg2) 2999 2999 { … … 3001 3001 } 3002 3002 3003 //The total number of operations is 29. 53003 //The total number of operations is 29.0 3004 3004 template <> template <uint16_t sh> IDISA_ALWAYS_INLINE bitblock256_t mvmd256<16>::dsrli(bitblock256_t arg1, bitblock256_t arg2) 3005 3005 { … … 3007 3007 } 3008 3008 3009 //The total number of operations is 29. 53009 //The total number of operations is 29.0 3010 3010 template <> template <uint16_t sh> IDISA_ALWAYS_INLINE bitblock256_t mvmd256<32>::dsrli(bitblock256_t arg1, bitblock256_t arg2) 3011 3011 { … … 3013 3013 } 3014 3014 3015 //The total number of operations is 29. 53015 //The total number of operations is 29.0 3016 3016 template <> template <uint16_t sh> IDISA_ALWAYS_INLINE bitblock256_t mvmd256<64>::dsrli(bitblock256_t arg1, bitblock256_t arg2) 3017 3017 { … … 3019 3019 } 3020 3020 3021 //The total number of operations is 29. 53021 //The total number of operations is 29.0 3022 3022 template <> template <uint16_t sh> IDISA_ALWAYS_INLINE bitblock256_t mvmd256<128>::dsrli(bitblock256_t arg1, bitblock256_t arg2) 3023 3023 { … … 3025 3025 } 3026 3026 3027 //The total number of operations is 29. 53027 //The total number of operations is 29.0 3028 3028 template <> template <uint16_t sh> IDISA_ALWAYS_INLINE bitblock256_t mvmd256<256>::dsrli(bitblock256_t arg1, bitblock256_t arg2) 3029 3029 { … … 3253 3253 } 3254 3254 3255 //The total number of operations is 14. 53255 //The total number of operations is 14.0 3256 3256 template <> template <uint16_t sh> IDISA_ALWAYS_INLINE bitblock256_t mvmd256<2>::srli(bitblock256_t arg1) 3257 3257 { … … 3259 3259 } 3260 3260 3261 //The total number of operations is 14. 53261 //The total number of operations is 14.0 3262 3262 template <> template <uint16_t sh> IDISA_ALWAYS_INLINE bitblock256_t mvmd256<4>::srli(bitblock256_t arg1) 3263 3263 { … … 3265 3265 } 3266 3266 3267 //The total number of operations is 14. 53267 //The total number of operations is 14.0 3268 3268 template <> template <uint16_t sh> IDISA_ALWAYS_INLINE bitblock256_t mvmd256<8>::srli(bitblock256_t arg1) 3269 3269 { … … 3271 3271 } 3272 3272 3273 //The total number of operations is 14. 53273 //The total number of operations is 14.0 3274 3274 template <> template <uint16_t sh> IDISA_ALWAYS_INLINE bitblock256_t mvmd256<16>::srli(bitblock256_t arg1) 3275 3275 { … … 3277 3277 } 3278 3278 3279 //The total number of operations is 14. 53279 //The total number of operations is 14.0 3280 3280 template <> template <uint16_t sh> IDISA_ALWAYS_INLINE bitblock256_t mvmd256<32>::srli(bitblock256_t arg1) 3281 3281 { … … 3283 3283 } 3284 3284 3285 //The total number of operations is 14. 53285 //The total number of operations is 14.0 3286 3286 template <> template <uint16_t sh> IDISA_ALWAYS_INLINE bitblock256_t mvmd256<64>::srli(bitblock256_t arg1) 3287 3287 { … … 3289 3289 } 3290 3290 3291 //The total number of operations is 14. 53291 //The total number of operations is 14.0 3292 3292 template <> template <uint16_t sh> IDISA_ALWAYS_INLINE bitblock256_t mvmd256<128>::srli(bitblock256_t arg1) 3293 3293 { … … 3295 3295 } 3296 3296 3297 //The total number of operations is 14. 53297 //The total number of operations is 14.0 3298 3298 template <> template <uint16_t sh> IDISA_ALWAYS_INLINE bitblock256_t mvmd256<256>::srli(bitblock256_t arg1) 3299 3299 { … … 3349 3349 } 3350 3350 3351 //The total number of operations is 29. 53351 //The total number of operations is 29.0 3352 3352 template <> template <uint16_t sh> IDISA_ALWAYS_INLINE bitblock256_t mvmd256<2>::dslli(bitblock256_t arg1, bitblock256_t arg2) 3353 3353 { … … 3355 3355 } 3356 3356 3357 //The total number of operations is 29. 53357 //The total number of operations is 29.0 3358 3358 template <> template <uint16_t sh> IDISA_ALWAYS_INLINE bitblock256_t mvmd256<4>::dslli(bitblock256_t arg1, bitblock256_t arg2) 3359 3359 { … … 3361 3361 } 3362 3362 3363 //The total number of operations is 29. 53363 //The total number of operations is 29.0 3364 3364 template <> template <uint16_t sh> IDISA_ALWAYS_INLINE bitblock256_t mvmd256<8>::dslli(bitblock256_t arg1, bitblock256_t arg2) 3365 3365 { … … 3367 3367 } 3368 3368 3369 //The total number of operations is 29. 53369 //The total number of operations is 29.0 3370 3370 template <> template <uint16_t sh> IDISA_ALWAYS_INLINE bitblock256_t mvmd256<16>::dslli(bitblock256_t arg1, bitblock256_t arg2) 3371 3371 { … … 3373 3373 } 3374 3374 3375 //The total number of operations is 29. 53375 //The total number of operations is 29.0 3376 3376 template <> template <uint16_t sh> IDISA_ALWAYS_INLINE bitblock256_t mvmd256<32>::dslli(bitblock256_t arg1, bitblock256_t arg2) 3377 3377 { … … 3379 3379 } 3380 3380 3381 //The total number of operations is 29. 53381 //The total number of operations is 29.0 3382 3382 template <> template <uint16_t sh> IDISA_ALWAYS_INLINE bitblock256_t mvmd256<64>::dslli(bitblock256_t arg1, bitblock256_t arg2) 3383 3383 { … … 3385 3385 } 3386 3386 3387 //The total number of operations is 29. 53387 //The total number of operations is 29.0 3388 3388 template <> template <uint16_t sh> IDISA_ALWAYS_INLINE bitblock256_t mvmd256<128>::dslli(bitblock256_t arg1, bitblock256_t arg2) 3389 3389 { … … 3391 3391 } 3392 3392 3393 //The total number of operations is 29. 53393 //The total number of operations is 29.0 3394 3394 template <> template <uint16_t sh> IDISA_ALWAYS_INLINE bitblock256_t mvmd256<256>::dslli(bitblock256_t arg1, bitblock256_t arg2) 3395 3395 { … … 3487 3487 } 3488 3488 3489 //The total number of operations is 14. 53489 //The total number of operations is 14.0 3490 3490 template <uint16_t sh> IDISA_ALWAYS_INLINE bitblock256_t bitblock256::srli(bitblock256_t arg1) 3491 3491 { … … 3493 3493 } 3494 3494 3495 //The total number of operations is 118. 53495 //The total number of operations is 118.0 3496 3496 IDISA_ALWAYS_INLINE uint16_t bitblock256::popcount(bitblock256_t arg1) 3497 3497 {
Note: See TracChangeset
for help on using the changeset viewer.