Home | History | Annotate | Download | only in arm
      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 @//----------------------------------------------------------------------------
     23 @// File Name            : impeg2_mem_func.s
     24 @//
     25 @// Description          : This file has motion compensation related
     26 @//                        interpolation functions on Neon + CortexA-8 platform
     27 @//
     28 @// Reference Document   :
     29 @//
     30 @// Revision History     :
     31 @//      Date            Author                  Detail Description
     32 @//   ------------    ----------------    ----------------------------------
     33 @//   18 jun 2010     S Hamsalekha              Created
     34 @//
     35 @//-------------------------------------------------------------------------
     36 @*/
     37 
     38 @/*
     39 @// ----------------------------------------------------------------------------
     40 @// Include Files
     41 @// ----------------------------------------------------------------------------
     42 @*/
     43 .text
     44 .p2align 2
     45 
     46 
     47 @/*
     48 @// ----------------------------------------------------------------------------
     49 @// Struct/Union Types and Define
     50 @// ----------------------------------------------------------------------------
     51 @*/
     52 
     53 
     54 @/*
     55 @// ----------------------------------------------------------------------------
     56 @// Static Global Data section variables
     57 @// ----------------------------------------------------------------------------
     58 @*/
     59 @// -------------------------- NONE --------------------------------------------
     60 
     61 
     62 @/*
     63 @// ----------------------------------------------------------------------------
     64 @// Static Prototype Functions
     65 @// ----------------------------------------------------------------------------
     66 @*/
     67 @// -------------------------- NONE --------------------------------------------
     68 
     69 @/*
     70 @// ----------------------------------------------------------------------------
     71 @// Exported functions
     72 @// ----------------------------------------------------------------------------
     73 @*/
     74 
     75 @/*
     76 @//---------------------------------------------------------------------------
     77 @// Function Name      : impeg2_memset_8bit_8x8_block_a9q()
     78 @//
     79 @// Detail Description : This routine intialises the Block matrix buffer contents to a
     80 @//                      particular Value. This function also assumes the buffer size
     81 @//                      to be set is 64 Bytes fixed. It also assumes that blk matrix
     82 @//                      used is 64 bit aligned.
     83 @//
     84 @// Inputs             : r0: pi2_blk_mat : Block Pointer
     85 @//                      r1: u2_val      : Value with which the block is initialized
     86 @//                      r2: u4_dst_width: Destination Width
     87 @//
     88 @// Registers Used     : q0
     89 @//
     90 @// Stack Usage        : 4 bytes
     91 @//
     92 @// Outputs            : Block Matrix Initialized to given value
     93 @//
     94 @// Return Data        : None
     95 @//
     96 @// Programming Note   : None
     97 @//-----------------------------------------------------------------------------
     98 @*/
     99         .global impeg2_memset_8bit_8x8_block_a9q
    100 impeg2_memset_8bit_8x8_block_a9q:
    101     str             lr, [sp, #-4]!
    102 
    103     vdup.8          d0, r1              @//r1 is the 8-bit value to be set into
    104 
    105     vst1.8          {d0}, [r0], r2      @//Store the row 1
    106     vst1.8          {d0}, [r0], r2      @//Store the row 2
    107     vst1.8          {d0}, [r0], r2      @//Store the row 3
    108     vst1.8          {d0}, [r0], r2      @//Store the row 4
    109     vst1.8          {d0}, [r0], r2      @//Store the row 5
    110     vst1.8          {d0}, [r0], r2      @//Store the row 6
    111     vst1.8          {d0}, [r0], r2      @//Store the row 7
    112     vst1.8          {d0}, [r0], r2      @//Store the row 8
    113 
    114     ldr             pc, [sp], #4
    115 
    116 
    117 
    118 
    119 
    120 
    121 
    122 @/*
    123 @//---------------------------------------------------------------------------
    124 @// Function Name      :   impeg2_memset0_16bit_8x8_linear_block_a9q()
    125 @//
    126 @// Detail Description : memsets 128 byte long linear buf to 0
    127 @//
    128 @// Inputs             : r0 - Buffer
    129 @// Registers Used     : q0
    130 
    131 @//
    132 @// Stack Usage        : 4 bytes
    133 @//
    134 @// Outputs            : None
    135 @//
    136 @// Return Data        : None
    137 @//
    138 @// Programming Note   : <program limitation>
    139 @//-----------------------------------------------------------------------------
    140 @*/
    141 
    142 
    143 
    144         .global impeg2_memset0_16bit_8x8_linear_block_a9q
    145 
    146 
    147 impeg2_memset0_16bit_8x8_linear_block_a9q:
    148 
    149     stmfd           r13!, {r14}
    150 
    151     vmov.i16        q0, #0
    152 
    153 @Y data
    154 
    155     vst1.16         {d0, d1} , [r0]!    @row1
    156 
    157     vst1.16         {d0, d1} , [r0]!    @row2
    158 
    159     vst1.16         {d0, d1} , [r0]!    @row3
    160 
    161     vst1.16         {d0, d1} , [r0]!    @row4
    162 
    163     vst1.16         {d0, d1} , [r0]!    @row5
    164 
    165     vst1.16         {d0, d1} , [r0]!    @row6
    166 
    167     vst1.16         {d0, d1} , [r0]!    @row7
    168 
    169     vst1.16         {d0, d1} , [r0]!    @row8
    170 
    171 
    172 
    173     ldmfd           r13!, {pc}
    174 
    175 
    176 
    177 
    178