1 /******************************************************************************
2 *
3 * Copyright (C) 2012 Ittiam Systems Pvt Ltd, Bangalore
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at:
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 ******************************************************************************/
18 /**
19 *******************************************************************************
20 * @file
21 *  ihevc_mem_fns.h
22 *
23 * @brief
24 *  Function declarations used for memory functions
25 *
26 * @author
27 *  Naveen SR
28 *
29 * @remarks
30 *  None
31 *
32 *******************************************************************************
33 */
34 #ifndef _MEM_FNS_H_
35 #define _MEM_FNS_H_
36 
37 typedef void ihevc_memcpy_ft(UWORD8 *pu1_dst, UWORD8 *pu1_src, UWORD32 num_bytes);
38 
39 typedef void ihevc_memcpy_mul_8_ft(UWORD8 *pu1_dst, UWORD8 *pu1_src, UWORD32 num_bytes);
40 /**
41  *******************************************************************************
42  *
43  * @brief
44  *   memset of a 8,16 or 32 bytes
45  *
46  * @par Description:
47  *   Does memset of 8bit data for 8,16 or 32 number of bytes
48  *
49  * @param[in] pu1_dst
50  *  UWORD8 pointer to the destination
51  *
52  * @param[in] value
53  *  UWORD8 value used for memset
54  *
55  * @param[in] num_bytes
56  *  number of bytes to set
57  * @returns
58  *
59  * @remarks
60  *  None
61  *
62  *******************************************************************************
63  */
64 typedef void ihevc_memset_ft(UWORD8 *pu1_dst, UWORD8 value, UWORD32 num_bytes);
65 
66 typedef void ihevc_memset_mul_8_ft(UWORD8 *pu1_dst, UWORD8 value, UWORD32 num_bytes);
67 
68 /**
69  *******************************************************************************
70  *
71  * @brief
72  *   memset of 16bit data of a 8,16 or 32 bytes
73  *
74  * @par Description:
75  *   Does memset of 16bit data for 8,16 or 32 number of bytes
76  *
77  * @param[in] pu2_dst
78  *  UWORD8 pointer to the destination
79  *
80  * @param[in] value
81  *  UWORD16 value used for memset
82  *
83  * @param[in] num_words
84  *  number of words to set
85  * @returns
86  *
87  * @remarks
88  *  None
89  *
90  *******************************************************************************
91  */
92 typedef void ihevc_memset_16bit_ft(UWORD16 *pu2_dst, UWORD16 value, UWORD32 num_words);
93 
94 typedef void ihevc_memset_16bit_mul_8_ft(UWORD16 *pu2_dst, UWORD16 value, UWORD32 num_words);
95 
96 /* C function declarations */
97 ihevc_memcpy_ft ihevc_memcpy;
98 ihevc_memcpy_mul_8_ft ihevc_memcpy_mul_8;
99 ihevc_memset_ft ihevc_memset;
100 ihevc_memset_mul_8_ft ihevc_memset_mul_8;
101 ihevc_memset_16bit_ft ihevc_memset_16bit;
102 ihevc_memset_16bit_mul_8_ft ihevc_memset_16bit_mul_8;
103 
104 /* A9 Q function declarations */
105 ihevc_memcpy_ft ihevc_memcpy_a9q;
106 ihevc_memcpy_mul_8_ft ihevc_memcpy_mul_8_a9q;
107 ihevc_memset_ft ihevc_memset_a9q;
108 ihevc_memset_mul_8_ft ihevc_memset_mul_8_a9q;
109 ihevc_memset_16bit_ft ihevc_memset_16bit_a9q;
110 ihevc_memset_16bit_mul_8_ft ihevc_memset_16bit_mul_8_a9q;
111 
112 /* A9 A function declarations */
113 ihevc_memcpy_ft ihevc_memcpy_a9a;
114 ihevc_memcpy_mul_8_ft ihevc_memcpy_mul_8_a9a;
115 ihevc_memset_ft ihevc_memset_a9a;
116 ihevc_memset_mul_8_ft ihevc_memset_mul_8_a9a;
117 ihevc_memset_16bit_ft ihevc_memset_16bit_a9a;
118 ihevc_memset_16bit_mul_8_ft ihevc_memset_16bit_mul_8_a9a;
119 
120 /* SSSE3 function declarations */
121 ihevc_memcpy_mul_8_ft ihevc_memcpy_mul_8_ssse3;
122 ihevc_memset_mul_8_ft ihevc_memset_mul_8_ssse3;
123 ihevc_memset_16bit_mul_8_ft ihevc_memset_16bit_mul_8_ssse3;
124 
125 /* armv8 function declarations */
126 ihevc_memcpy_ft ihevc_memcpy_av8;
127 ihevc_memcpy_mul_8_ft ihevc_memcpy_mul_8_av8;
128 ihevc_memset_ft ihevc_memset_av8;
129 ihevc_memset_mul_8_ft ihevc_memset_mul_8_av8;
130 ihevc_memset_16bit_ft ihevc_memset_16bit_av8;
131 ihevc_memset_16bit_mul_8_ft ihevc_memset_16bit_mul_8_av8;
132 #endif  //_MEM_FNS_H_
133