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