1/******************************************************************************
2 *
3 * Copyright (C) 2015 The Android Open Source Project
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 * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
19*/
20/**
21*******************************************************************************
22* @file
23*  ih264_mem_fns.h
24*
25* @brief
26*  Function declarations used for memory functions
27*
28* @author
29*  Ittiam
30*
31* @remarks
32*  None
33*
34*******************************************************************************
35*/
36#ifndef _IH264_MEM_FNS_H_
37#define _IH264_MEM_FNS_H_
38
39typedef void ih264_memcpy_ft(UWORD8 *pu1_dst, UWORD8 *pu1_src, UWORD32 num_bytes);
40
41typedef void ih264_memcpy_mul_8_ft(UWORD8 *pu1_dst, UWORD8 *pu1_src, UWORD32 num_bytes);
42/**
43 *******************************************************************************
44 *
45 * @brief
46 *   memset of a 8,16 or 32 bytes
47 *
48 * @par Description:
49 *   Does memset of 8bit data for 8,16 or 32 number of bytes
50 *
51 * @param[in] pu1_dst
52 *  UWORD8 pointer to the destination
53 *
54 * @param[in] value
55 *  UWORD8 value used for memset
56 *
57 * @param[in] num_bytes
58 *  number of bytes to set
59 * @returns
60 *
61 * @remarks
62 *  None
63 *
64 *******************************************************************************
65 */
66typedef void ih264_memset_ft(UWORD8 *pu1_dst, UWORD8 value, UWORD32 num_bytes);
67
68typedef void ih264_memset_mul_8_ft(UWORD8 *pu1_dst, UWORD8 value, UWORD32 num_bytes);
69
70/**
71 *******************************************************************************
72 *
73 * @brief
74 *   memset of 16bit data of a 8,16 or 32 bytes
75 *
76 * @par Description:
77 *   Does memset of 16bit data for 8,16 or 32 number of bytes
78 *
79 * @param[in] pu2_dst
80 *  UWORD8 pointer to the destination
81 *
82 * @param[in] value
83 *  UWORD16 value used for memset
84 *
85 * @param[in] num_words
86 *  number of words to set
87 * @returns
88 *
89 * @remarks
90 *  None
91 *
92 *******************************************************************************
93 */
94typedef void ih264_memset_16bit_ft(UWORD16 *pu2_dst, UWORD16 value, UWORD32 num_words);
95
96typedef void ih264_memset_16bit_mul_8_ft(UWORD16 *pu2_dst, UWORD16 value, UWORD32 num_words);
97
98/* C function declarations */
99ih264_memcpy_ft ih264_memcpy;
100ih264_memcpy_mul_8_ft ih264_memcpy_mul_8;
101ih264_memset_ft ih264_memset;
102ih264_memset_mul_8_ft ih264_memset_mul_8;
103ih264_memset_16bit_ft ih264_memset_16bit;
104ih264_memset_16bit_mul_8_ft ih264_memset_16bit_mul_8;
105
106/* A9 Q function declarations */
107ih264_memcpy_ft ih264_memcpy_a9q;
108ih264_memcpy_mul_8_ft ih264_memcpy_mul_8_a9q;
109ih264_memset_ft ih264_memset_a9q;
110ih264_memset_mul_8_ft ih264_memset_mul_8_a9q;
111ih264_memset_16bit_ft ih264_memset_16bit_a9q;
112ih264_memset_16bit_mul_8_ft ih264_memset_16bit_mul_8_a9q;
113
114/* AV8 function declarations */
115ih264_memcpy_ft ih264_memcpy_av8;
116ih264_memcpy_mul_8_ft ih264_memcpy_mul_8_av8;
117ih264_memset_ft ih264_memset_av8;
118ih264_memset_mul_8_ft ih264_memset_mul_8_av8;
119ih264_memset_16bit_ft ih264_memset_16bit_av8;
120ih264_memset_16bit_mul_8_ft ih264_memset_16bit_mul_8_av8;
121
122
123ih264_memcpy_mul_8_ft ih264_memcpy_mul_8_ssse3;
124ih264_memset_mul_8_ft ih264_memset_mul_8_ssse3;
125ih264_memset_16bit_mul_8_ft ih264_memset_16bit_mul_8_ssse3;
126#endif  //_MEM_FNS_H_
127