Changeset 1870 for trunk/lib/idisa_cpp/idisa_ssse3.cpp
 Timestamp:
 Jan 21, 2012, 1:39:58 PM (7 years ago)
 File:

 1 edited
Legend:
 Unmodified
 Added
 Removed

trunk/lib/idisa_cpp/idisa_ssse3.cpp
r1807 r1870 2044 2044 } 2045 2045 2046 //The total number of operations is 7.02046 //The total number of operations is 4.0 2047 2047 template <> IDISA_ALWAYS_INLINE uint64_t hsimd128<32>::signmask(bitblock128_t arg1) 2048 2048 { 2049 return hsimd128<(16)>::signmask(hsimd128<32>::packh(simd128<32>::constant<0>(), arg1)); 2050 } 2051 2052 //The total number of operations is 8.0 2049 uint64_t tmpAns1 = hsimd128<(64)>::signmask(esimd128<32>::mergeh(arg1, simd128<32>::constant<0>())); 2050 uint64_t tmpAns2 = hsimd128<(64)>::signmask(esimd128<32>::mergel(arg1, simd128<32>::constant<0>())); 2051 return ((tmpAns1<<(2))+tmpAns2); 2052 } 2053 2054 //The total number of operations is 1.0 2053 2055 template <> IDISA_ALWAYS_INLINE uint64_t hsimd128<64>::signmask(bitblock128_t arg1) 2054 2056 { 2055 return (((mvmd128<64>::extract<1>(arg1)>>62)&2)(mvmd128<64>::extract<0>(arg1)>>63));2056 } 2057 2058 //The total number of operations is 13.33333333332057 return _mm_movemask_pd(((__m128d)arg1)); 2058 } 2059 2060 //The total number of operations is 6.33333333333 2059 2061 template <> IDISA_ALWAYS_INLINE uint64_t hsimd128<128>::signmask(bitblock128_t arg1) 2060 2062 {
Note: See TracChangeset
for help on using the changeset viewer.