Home | History | Annotate | Download | only in common
      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