opencv

Форк
0
/
chunkset_power8.c 
55 строк · 1.4 Кб
1
/* chunkset_power8.c -- VSX inline functions to copy small data chunks.
2
 * For conditions of distribution and use, see copyright notice in zlib.h
3
 */
4

5
#ifdef POWER8_VSX
6
#include <altivec.h>
7
#include "../../zbuild.h"
8

9
typedef vector unsigned char chunk_t;
10

11
#define CHUNK_SIZE 16
12

13
#define HAVE_CHUNKMEMSET_2
14
#define HAVE_CHUNKMEMSET_4
15
#define HAVE_CHUNKMEMSET_8
16

17
static inline void chunkmemset_2(uint8_t *from, chunk_t *chunk) {
18
    uint16_t tmp;
19
    memcpy(&tmp, from, sizeof(tmp));
20
    *chunk = (vector unsigned char)vec_splats(tmp);
21
}
22

23
static inline void chunkmemset_4(uint8_t *from, chunk_t *chunk) {
24
    uint32_t tmp;
25
    memcpy(&tmp, from, sizeof(tmp));
26
    *chunk = (vector unsigned char)vec_splats(tmp);
27
}
28

29
static inline void chunkmemset_8(uint8_t *from, chunk_t *chunk) {
30
    uint64_t tmp;
31
    memcpy(&tmp, from, sizeof(tmp));
32
    *chunk = (vector unsigned char)vec_splats((unsigned long long)tmp);
33
}
34

35
static inline void loadchunk(uint8_t const *s, chunk_t *chunk) {
36
    *chunk = vec_xl(0, s);
37
}
38

39
static inline void storechunk(uint8_t *out, chunk_t *chunk) {
40
    vec_xst(*chunk, 0, out);
41
}
42

43
#define CHUNKSIZE        chunksize_power8
44
#define CHUNKCOPY        chunkcopy_power8
45
#define CHUNKUNROLL      chunkunroll_power8
46
#define CHUNKMEMSET      chunkmemset_power8
47
#define CHUNKMEMSET_SAFE chunkmemset_safe_power8
48

49
#include "chunkset_tpl.h"
50

51
#define INFLATE_FAST     inflate_fast_power8
52

53
#include "inffast_tpl.h"
54

55
#endif
56

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.