Go to the documentation of this file.Go to the SVN repository for this file.
1 #ifndef SEQ_VECTOR_CVT_GCC_I386__HPP
2 #define SEQ_VECTOR_CVT_GCC_I386__HPP
38 template<
class SrcCont>
40 const SrcCont& srcCont,
size_t srcPos,
43 const char* src = &srcCont[srcPos / 4];
47 switch ( srcPos % 4 ) {
49 *(dst++) =
table[(c >> 4) & 0x03];
50 if ( --
count == 0 )
return;
53 *(dst++) =
table[(c >> 2) & 0x03];
54 if ( --
count == 0 )
return;
57 *(dst++) =
table[(c ) & 0x03];
63 for ( DstIter end = dst + (
count & ~3); dst != end; dst += 4, ++src ) {
68 c0 =
table[c0 & 0x03];
69 c1 =
table[c1 & 0x03];
71 c2 =
table[c2 & 0x03];
73 c3 =
table[c3 & 0x03];
78 switch (
count % 4 ) {
80 *(dst+2) =
table[(*src >> 2) & 0x03];
83 *(dst+1) =
table[(*src >> 4) & 0x03];
86 *(dst ) =
table[(*src >> 6) & 0x03];
93 asm volatile(
"lock; xaddl %1, %0" :
"=m" (*nv_value_p),
"=r" (
result)
94 :
"1" (
delta),
"m" (*nv_value_p));
<!DOCTYPE HTML >< html > n< header > n< title > PubSeq Gateway Help Page</title > n< style > n table
Int4 delta(size_t dimension_, const Int4 *score_)
void copy_2bit_table(DstIter dst, size_t count, const SrcCont &srcCont, size_t srcPos, const char *table)