 Timestamp:
 Jun 17, 2013, 2:39:58 PM (6 years ago)
 File:

 1 edited
Legend:
 Unmodified
 Added
 Removed

trunk/lib/carrySet.hpp
r3317 r3318 68 68 } 69 69 ~CarrySet() {} 70 71 // Deprecated (use pabloSupport.hpp)72 IDISA_ALWAYS_INLINE BitBlock BitBlock_advance_ci_co(BitBlock strm, BitBlock carryin, uint16_t carryno)73 {74 BitBlock rslt;75 advance_with_carry(strm, carryin, cq[carryno], rslt);76 return rslt;77 }78 79 // Deprecated (use pabloSupport.hpp)80 IDISA_ALWAYS_INLINE BitBlock BitBlock_add_ci_co(BitBlock strm1, BitBlock strm2, BitBlock carryin, const uint16_t carryno)81 {82 BitBlock sum;83 adc(strm1, strm2, carryin, cq[carryno], sum);84 return sum;85 }86 87 // Deprecated (use pabloSupport.hpp)88 IDISA_ALWAYS_INLINE BitBlock BitBlock_sub_ci_co(BitBlock strm1, BitBlock strm2, BitBlock carryin, uint16_t carryno)89 {90 BitBlock diff;91 sbb(strm1, strm2, carryin, cq[carryno], diff);92 return diff;93 }94 95 // Deprecated (use pabloSupport.hpp)96 IDISA_ALWAYS_INLINE BitBlock BitBlock_scantofirst(BitBlock charclass, BitBlock carryin, uint16_t carryno)97 {98 BitBlock marker;99 // BitBlock c = carry_flip(carryin);100 adc(simd<BLOCK_SIZE>::constant<0>(), simd_not(charclass), carryin, cq[carryno], marker);101 // cq[carryno] = carry_flip(cq[carryno]);102 return simd_and(marker, charclass);103 }104 105 // Deprecated (use pabloSupport.hpp)106 IDISA_ALWAYS_INLINE BitBlock BitBlock_scanthru_ci_co(BitBlock markers0, BitBlock charclass, BitBlock carryin, uint16_t carryno)107 {108 BitBlock markers1;109 adc(markers0, charclass, carryin, cq[carryno], markers1);110 return simd_andc(markers1, charclass);111 }112 113 // Deprecated (use pabloSupport.hpp)114 IDISA_ALWAYS_INLINE BitBlock BitBlock_advance_then_scanthru(BitBlock markers0, BitBlock charclass, BitBlock carryin, uint16_t carryno)115 {116 BitBlock markers1;117 //assert(!bitblock::any(simd_and(markers0, charclass)));118 adc(markers0, simd_or(charclass, markers0), carryin, cq[carryno], markers1);119 return simd_andc(markers1, charclass);120 }121 122 // Deprecated (use pabloSupport.hpp)123 IDISA_ALWAYS_INLINE BitBlock BitBlock_span_upto(BitBlock starts, BitBlock follows, BitBlock carryin, uint16_t carryno)124 {125 BitBlock span;126 sbb(follows, starts, carryin, cq[carryno], span);127 return span;128 }129 130 // Deprecated (use pabloSupport.hpp)131 IDISA_ALWAYS_INLINE BitBlock BitBlock_inclusive_span(BitBlock starts, BitBlock ends, BitBlock carryin, uint16_t carryno)132 {133 BitBlock span;134 sbb(ends, starts, carryin, cq[carryno], span);135 return simd_or(span, ends);136 }137 138 // Deprecated (use pabloSupport.hpp)139 IDISA_ALWAYS_INLINE BitBlock BitBlock_exclusive_span(BitBlock starts, BitBlock ends, BitBlock carryin, uint16_t carryno)140 {141 BitBlock span;142 sbb(ends, starts, carryin, cq[carryno], span);143 return simd_andc(span, starts);144 }145 146 // Deprecated (use pabloSupport.hpp) ?147 IDISA_ALWAYS_INLINE BitBlock BitBlock_advance32_ci_co(BitBlock strm, uint32_t pending_in, uint32_t & pending_out)148 {149 pending_out = (uint32_t) mvmd<32>::extract< (sizeof(BitBlock)/sizeof(pending_out))1 >(strm);150 return simd_or(simd<BLOCK_SIZE>::slli<32>(strm), mvmd<BLOCK_SIZE>::fill((uint64_t)pending_in));151 }152 153 // Deprecated (use pabloSupport.hpp) ?154 template <int n> IDISA_ALWAYS_INLINE BitBlock BitBlock_advance_n_(BitBlock strm, BitBlock pending_in, uint16_t pendingno)155 {156 BitBlock half_block_shifted = esimd<BLOCK_SIZE/2>::mergel(strm, pending_in);157 cq[CarryCount + pendingno] = bitblock::srli<BLOCK_SIZE/2>(strm);158 //pending64[pendingno] = bitblock::srli<BLOCK_SIZE/2>(strm);159 BitBlock result = simd_or(simd<BLOCK_SIZE/2>::srli<(BLOCK_SIZE/2)n>(half_block_shifted),160 simd<BLOCK_SIZE/2>::slli<n>(strm));161 return result;162 }163 70 164 71 IDISA_ALWAYS_INLINE bool carryTest(uint16_t carryno, uint16_t carry_count)
Note: See TracChangeset
for help on using the changeset viewer.