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
37typedef void ihevc_memcpy_ft(UWORD8 *pu1_dst, UWORD8 *pu1_src, UWORD32 num_bytes);
38
39typedef 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 */
64typedef void ihevc_memset_ft(UWORD8 *pu1_dst, UWORD8 value, UWORD32 num_bytes);
65
66typedef 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 */
92typedef void ihevc_memset_16bit_ft(UWORD16 *pu2_dst, UWORD16 value, UWORD32 num_words);
93
94typedef void ihevc_memset_16bit_mul_8_ft(UWORD16 *pu2_dst, UWORD16 value, UWORD32 num_words);
95
96/* C function declarations */
97ihevc_memcpy_ft ihevc_memcpy;
98ihevc_memcpy_mul_8_ft ihevc_memcpy_mul_8;
99ihevc_memset_ft ihevc_memset;
100ihevc_memset_mul_8_ft ihevc_memset_mul_8;
101ihevc_memset_16bit_ft ihevc_memset_16bit;
102ihevc_memset_16bit_mul_8_ft ihevc_memset_16bit_mul_8;
103
104/* A9 Q function declarations */
105ihevc_memcpy_ft ihevc_memcpy_a9q;
106ihevc_memcpy_mul_8_ft ihevc_memcpy_mul_8_a9q;
107ihevc_memset_ft ihevc_memset_a9q;
108ihevc_memset_mul_8_ft ihevc_memset_mul_8_a9q;
109ihevc_memset_16bit_ft ihevc_memset_16bit_a9q;
110ihevc_memset_16bit_mul_8_ft ihevc_memset_16bit_mul_8_a9q;
111
112/* A9 A function declarations */
113ihevc_memcpy_ft ihevc_memcpy_a9a;
114ihevc_memcpy_mul_8_ft ihevc_memcpy_mul_8_a9a;
115ihevc_memset_ft ihevc_memset_a9a;
116ihevc_memset_mul_8_ft ihevc_memset_mul_8_a9a;
117ihevc_memset_16bit_ft ihevc_memset_16bit_a9a;
118ihevc_memset_16bit_mul_8_ft ihevc_memset_16bit_mul_8_a9a;
119
120/* SSSE3 function declarations */
121ihevc_memcpy_mul_8_ft ihevc_memcpy_mul_8_ssse3;
122ihevc_memset_mul_8_ft ihevc_memset_mul_8_ssse3;
123ihevc_memset_16bit_mul_8_ft ihevc_memset_16bit_mul_8_ssse3;
124
125/* armv8 function declarations */
126ihevc_memcpy_ft ihevc_memcpy_av8;
127ihevc_memcpy_mul_8_ft ihevc_memcpy_mul_8_av8;
128ihevc_memset_ft ihevc_memset_av8;
129ihevc_memset_mul_8_ft ihevc_memset_mul_8_av8;
130ihevc_memset_16bit_ft ihevc_memset_16bit_av8;
131ihevc_memset_16bit_mul_8_ft ihevc_memset_16bit_mul_8_av8;
132#endif  //_MEM_FNS_H_
133