summaryrefslogtreecommitdiffstats
path: root/common/ihevc_mem_fns.h
blob: 1b37e99bf94eb2a87e0722758327a41a7692342f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
/******************************************************************************
*
* Copyright (C) 2012 Ittiam Systems Pvt Ltd, Bangalore
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
******************************************************************************/
/**
*******************************************************************************
* @file
*  ihevc_mem_fns.h
*
* @brief
*  Function declarations used for memory functions
*
* @author
*  Naveen SR
*
* @remarks
*  None
*
*******************************************************************************
*/
#ifndef _MEM_FNS_H_
#define _MEM_FNS_H_

typedef void ihevc_memcpy_ft(UWORD8 *pu1_dst, UWORD8 *pu1_src, UWORD32 num_bytes);

typedef void ihevc_memcpy_mul_8_ft(UWORD8 *pu1_dst, UWORD8 *pu1_src, UWORD32 num_bytes);
/**
 *******************************************************************************
 *
 * @brief
 *   memset of a 8,16 or 32 bytes
 *
 * @par Description:
 *   Does memset of 8bit data for 8,16 or 32 number of bytes
 *
 * @param[in] pu1_dst
 *  UWORD8 pointer to the destination
 *
 * @param[in] value
 *  UWORD8 value used for memset
 *
 * @param[in] num_bytes
 *  number of bytes to set
 * @returns
 *
 * @remarks
 *  None
 *
 *******************************************************************************
 */
typedef void ihevc_memset_ft(UWORD8 *pu1_dst, UWORD8 value, UWORD32 num_bytes);

typedef void ihevc_memset_mul_8_ft(UWORD8 *pu1_dst, UWORD8 value, UWORD32 num_bytes);

/**
 *******************************************************************************
 *
 * @brief
 *   memset of 16bit data of a 8,16 or 32 bytes
 *
 * @par Description:
 *   Does memset of 16bit data for 8,16 or 32 number of bytes
 *
 * @param[in] pu2_dst
 *  UWORD8 pointer to the destination
 *
 * @param[in] value
 *  UWORD16 value used for memset
 *
 * @param[in] num_words
 *  number of words to set
 * @returns
 *
 * @remarks
 *  None
 *
 *******************************************************************************
 */
typedef void ihevc_memset_16bit_ft(UWORD16 *pu2_dst, UWORD16 value, UWORD32 num_words);

typedef void ihevc_memset_16bit_mul_8_ft(UWORD16 *pu2_dst, UWORD16 value, UWORD32 num_words);

/* C function declarations */
ihevc_memcpy_ft ihevc_memcpy;
ihevc_memcpy_mul_8_ft ihevc_memcpy_mul_8;
ihevc_memset_ft ihevc_memset;
ihevc_memset_mul_8_ft ihevc_memset_mul_8;
ihevc_memset_16bit_ft ihevc_memset_16bit;
ihevc_memset_16bit_mul_8_ft ihevc_memset_16bit_mul_8;

/* A9 Q function declarations */
ihevc_memcpy_ft ihevc_memcpy_a9q;
ihevc_memcpy_mul_8_ft ihevc_memcpy_mul_8_a9q;
ihevc_memset_ft ihevc_memset_a9q;
ihevc_memset_mul_8_ft ihevc_memset_mul_8_a9q;
ihevc_memset_16bit_ft ihevc_memset_16bit_a9q;
ihevc_memset_16bit_mul_8_ft ihevc_memset_16bit_mul_8_a9q;

/* A9 A function declarations */
ihevc_memcpy_ft ihevc_memcpy_a9a;
ihevc_memcpy_mul_8_ft ihevc_memcpy_mul_8_a9a;
ihevc_memset_ft ihevc_memset_a9a;
ihevc_memset_mul_8_ft ihevc_memset_mul_8_a9a;
ihevc_memset_16bit_ft ihevc_memset_16bit_a9a;
ihevc_memset_16bit_mul_8_ft ihevc_memset_16bit_mul_8_a9a;

/* SSSE3 function declarations */
ihevc_memcpy_mul_8_ft ihevc_memcpy_mul_8_ssse3;
ihevc_memset_mul_8_ft ihevc_memset_mul_8_ssse3;
ihevc_memset_16bit_mul_8_ft ihevc_memset_16bit_mul_8_ssse3;

/* armv8 function declarations */
ihevc_memcpy_ft ihevc_memcpy_av8;
ihevc_memcpy_mul_8_ft ihevc_memcpy_mul_8_av8;
ihevc_memset_ft ihevc_memset_av8;
ihevc_memset_mul_8_ft ihevc_memset_mul_8_av8;
ihevc_memset_16bit_ft ihevc_memset_16bit_av8;
ihevc_memset_16bit_mul_8_ft ihevc_memset_16bit_mul_8_av8;
#endif  //_MEM_FNS_H_