uint8x16_t z_vec128i_t;
53 #elif defined(INFLATE_CHUNK_SIMD_SSE2) 54 #include <emmintrin.h> 57 #error chunkcopy.h inflate chunk SIMD is not defined for your build target 64 #define CHUNKCOPY_CHUNK_SIZE sizeof(z_vec128i_t) 74 const unsigned char FAR* s) {
85 unsigned char FAR* d,
86 constz_vec128i_t v) {
106 const unsigned char FAR* from,
113 while(
len-- > 0) {
131 const unsigned char FAR* from,
133 unsigned char FAR* limit) {
134 Assert(
out+
len<= limit,
"chunk copy exceeds safety limit");
174 const unsigned char FAR* from =
out- *dist;
184 #if defined(INFLATE_CHUNK_SIMD_NEON) 189 static inlinez_vec128i_t v_load64_dup(
const void* src) {
190 returnvcombine_u8(vld1_u8(src), vld1_u8(src));
197 static inlinez_vec128i_t v_load32_dup(
const void* src) {
200 returnvreinterpretq_u8_s32(vdupq_n_s32(i32));
207 static inlinez_vec128i_t v_load16_dup(
const void* src) {
210 returnvreinterpretq_u8_s16(vdupq_n_s16(i16));
217 static inlinez_vec128i_t v_load8_dup(
const void* src) {
218 returnvld1q_dup_u8((
const uint8_t*)src);
225 static inline voidv_store_128(
void*
out,
constz_vec128i_t vec) {
226vst1q_u8(
out, vec);
228 #elif defined (INFLATE_CHUNK_SIMD_SSE2) 233 static inlinez_vec128i_t v_load64_dup(
const void* src) {
243 static inlinez_vec128i_t v_load32_dup(
const void* src) {
253 static inlinez_vec128i_t v_load16_dup(
const void* src) {
263 static inlinez_vec128i_t v_load8_dup(
const void* src) {
271 static inline voidv_store_128(
void*
out,
constz_vec128i_t vec) {
287 const intbump = ((
len- 1) %
sizeof(v)) + 1;
291v = v_load8_dup(
out- 1);
292v_store_128(
out, v);
296v_store_128(
out, v);
302v = v_load16_dup(
out- 2);
303v_store_128(
out, v);
307v = v_load16_dup(
out- 2);
309v_store_128(
out, v);
316v = v_load32_dup(
out- 4);
317v_store_128(
out, v);
321v = v_load32_dup(
out- 4);
323v_store_128(
out, v);
330v = v_load64_dup(
out- 8);
331v_store_128(
out, v);
335v = v_load64_dup(
out- 8);
337v_store_128(
out, v);
382 unsigned char FAR* limit) {
383 Assert(
out+
len<= limit,
"chunk copy exceeds safety limit");
417 unsigned char FAR* limit) {
418 Assert(
out+
len<= limit,
"chunk copy exceeds safety limit");
421 while(
len-- > 0) {
434 unsigned char FAR* limit) {
435 #if defined(__GNUC__) && !defined(__clang__) 441 #elif defined(__clang__) && !defined(__aarch64__) 458 #ifdef INFLATE_CHUNK_READ_64LE 481 #undef Z_STATIC_ASSERT 483 #undef Z_BUILTIN_MEMCPY#define CHUNKCOPY_CHUNK_SIZE
static z_vec128i_t loadchunk(const unsigned char FAR *s)
char vector_128_bits_wide[(sizeof(z_vec128i_t)==sizeof(int8_t) *16) ? 1 :-1]
static unsigned char FAR * chunkcopy_lapped_relaxed(unsigned char FAR *out, unsigned dist, unsigned len)
static unsigned char FAR * chunkcopy_relaxed(unsigned char FAR *out, const unsigned char FAR *from, unsigned len)
static unsigned char FAR * chunkunroll_relaxed(unsigned char FAR *out, unsigned FAR *dist, unsigned FAR *len)
static unsigned char FAR * chunkcopy_safe_ugly(unsigned char FAR *out, unsigned dist, unsigned len, unsigned char FAR *limit)
static unsigned char FAR * chunkcopy_core_safe(unsigned char FAR *out, const unsigned char FAR *from, unsigned len, unsigned char FAR *limit)
static unsigned char FAR * chunkcopy_safe(unsigned char FAR *out, const unsigned char FAR *from, unsigned len, unsigned char FAR *limit)
unsigned long inflate_holder_t
static unsigned char FAR * chunkcopy_lapped_safe(unsigned char FAR *out, unsigned dist, unsigned len, unsigned char FAR *limit)
#define Z_STATIC_ASSERT(name, assert)
static void storechunk(unsigned char FAR *d, const z_vec128i_t v)
static unsigned char FAR * chunkset_core(unsigned char FAR *out, unsigned period, unsigned len)
static unsigned char FAR * chunkcopy_core(unsigned char FAR *out, const unsigned char FAR *from, unsigned len)
std::ofstream out("events_result.xml")
main entry point for tests
std::istream & in(std::istream &in_, double &x_)
static __m128i _mm_set1_epi8(signed char w)
static __m128i _mm_set1_epi16(short w)
static __m128i _mm_set1_epi32(int)
static void _mm_storeu_si128(__m128i *p, __m128i a)
static __m128i _mm_set1_epi64x(int64_t _i)
#define Assert(cond, msg)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4