mirror of https://github.com/google/snappy.git
Move pshufb_fill_patterns from snappy-internal.h to snappy.cc.
The array of constants is only used in the SSSE3 fast-path in IncrementalCopy.
This commit is contained in:
parent
73c31e824c
commit
ad82620f6f
|
@ -218,19 +218,6 @@ static const uint16 char_table[256] = {
|
||||||
0x1801, 0x0f0a, 0x103f, 0x203f, 0x2001, 0x0f0b, 0x1040, 0x2040
|
0x1801, 0x0f0a, 0x103f, 0x203f, 0x2001, 0x0f0b, 0x1040, 0x2040
|
||||||
};
|
};
|
||||||
|
|
||||||
// This is a table of shuffle control masks that can be used as the source
|
|
||||||
// operand for PSHUFB to permute the contents of the destination XMM register
|
|
||||||
// into a repeating byte pattern.
|
|
||||||
alignas(16) static const char pshufb_fill_patterns[7][16] = {
|
|
||||||
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
|
||||||
{0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1},
|
|
||||||
{0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0},
|
|
||||||
{0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3},
|
|
||||||
{0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0},
|
|
||||||
{0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3},
|
|
||||||
{0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6, 0, 1},
|
|
||||||
};
|
|
||||||
|
|
||||||
} // end namespace internal
|
} // end namespace internal
|
||||||
} // end namespace snappy
|
} // end namespace snappy
|
||||||
|
|
||||||
|
|
18
snappy.cc
18
snappy.cc
|
@ -61,7 +61,6 @@ using internal::COPY_2_BYTE_OFFSET;
|
||||||
using internal::LITERAL;
|
using internal::LITERAL;
|
||||||
using internal::char_table;
|
using internal::char_table;
|
||||||
using internal::kMaximumTagLength;
|
using internal::kMaximumTagLength;
|
||||||
using internal::pshufb_fill_patterns;
|
|
||||||
|
|
||||||
// Any hash function will produce a valid compressed bitstream, but a good
|
// Any hash function will produce a valid compressed bitstream, but a good
|
||||||
// hash function reduces the number of collisions and thus yields better
|
// hash function reduces the number of collisions and thus yields better
|
||||||
|
@ -140,6 +139,23 @@ inline char* IncrementalCopySlow(const char* src, char* op,
|
||||||
return op_limit;
|
return op_limit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if SNAPPY_HAVE_SSSE3
|
||||||
|
|
||||||
|
// This is a table of shuffle control masks that can be used as the source
|
||||||
|
// operand for PSHUFB to permute the contents of the destination XMM register
|
||||||
|
// into a repeating byte pattern.
|
||||||
|
alignas(16) const char pshufb_fill_patterns[7][16] = {
|
||||||
|
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
|
||||||
|
{0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1},
|
||||||
|
{0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0},
|
||||||
|
{0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3},
|
||||||
|
{0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0},
|
||||||
|
{0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3},
|
||||||
|
{0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6, 0, 1},
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // SNAPPY_HAVE_SSSE3
|
||||||
|
|
||||||
// Copy [src, src+(op_limit-op)) to [op, (op_limit-op)) but faster than
|
// Copy [src, src+(op_limit-op)) to [op, (op_limit-op)) but faster than
|
||||||
// IncrementalCopySlow. buf_limit is the address past the end of the writable
|
// IncrementalCopySlow. buf_limit is the address past the end of the writable
|
||||||
// region of the buffer.
|
// region of the buffer.
|
||||||
|
|
Loading…
Reference in New Issue