10
typedef __m128i chunk_t;
14
#define HAVE_CHUNKMEMSET_2
15
#define HAVE_CHUNKMEMSET_4
16
#define HAVE_CHUNKMEMSET_8
18
static inline void chunkmemset_2(uint8_t *from, chunk_t *chunk) {
20
memcpy(&tmp, from, sizeof(tmp));
21
*chunk = _mm_set1_epi16(tmp);
24
static inline void chunkmemset_4(uint8_t *from, chunk_t *chunk) {
26
memcpy(&tmp, from, sizeof(tmp));
27
*chunk = _mm_set1_epi32(tmp);
30
static inline void chunkmemset_8(uint8_t *from, chunk_t *chunk) {
32
memcpy(&tmp, from, sizeof(tmp));
33
*chunk = _mm_set1_epi64x(tmp);
36
static inline void loadchunk(uint8_t const *s, chunk_t *chunk) {
37
*chunk = _mm_loadu_si128((__m128i *)s);
40
static inline void storechunk(uint8_t *out, chunk_t *chunk) {
41
_mm_storeu_si128((__m128i *)out, *chunk);
44
#define CHUNKSIZE chunksize_sse2
45
#define CHUNKCOPY chunkcopy_sse2
46
#define CHUNKUNROLL chunkunroll_sse2
47
#define CHUNKMEMSET chunkmemset_sse2
48
#define CHUNKMEMSET_SAFE chunkmemset_safe_sse2
50
#include "chunkset_tpl.h"
52
#define INFLATE_FAST inflate_fast_sse2
54
#include "inffast_tpl.h"