| @/****************************************************************************** |
| @ * |
| @ * Copyright (C) 2015 The Android Open Source Project |
| @ * |
| @ * Licensed under the Apache License, Version 2.0 (the "License"); |
| @ * you may not use this file except in compliance with the License. |
| @ * You may obtain a copy of the License at: |
| @ * |
| @ * http://www.apache.org/licenses/LICENSE-2.0 |
| @ * |
| @ * Unless required by applicable law or agreed to in writing, software |
| @ * distributed under the License is distributed on an "AS IS" BASIS, |
| @ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| @ * See the License for the specific language governing permissions and |
| @ * limitations under the License. |
| @ * |
| @ ***************************************************************************** |
| @ * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore |
| @*/ |
| |
| @/* |
| @//---------------------------------------------------------------------------- |
| @// File Name : impeg2_mem_func.s |
| @// |
| @// Description : This file has motion compensation related |
| @// interpolation functions on Neon + CortexA-8 platform |
| @// |
| @// Reference Document : |
| @// |
| @// Revision History : |
| @// Date Author Detail Description |
| @// ------------ ---------------- ---------------------------------- |
| @// 18 jun 2010 S Hamsalekha Created |
| @// |
| @//------------------------------------------------------------------------- |
| @*/ |
| |
| @/* |
| @// ---------------------------------------------------------------------------- |
| @// Include Files |
| @// ---------------------------------------------------------------------------- |
| @*/ |
| .text |
| .p2align 2 |
| |
| |
| @/* |
| @// ---------------------------------------------------------------------------- |
| @// Struct/Union Types and Define |
| @// ---------------------------------------------------------------------------- |
| @*/ |
| |
| |
| @/* |
| @// ---------------------------------------------------------------------------- |
| @// Static Global Data section variables |
| @// ---------------------------------------------------------------------------- |
| @*/ |
| @// -------------------------- NONE -------------------------------------------- |
| |
| |
| @/* |
| @// ---------------------------------------------------------------------------- |
| @// Static Prototype Functions |
| @// ---------------------------------------------------------------------------- |
| @*/ |
| @// -------------------------- NONE -------------------------------------------- |
| |
| @/* |
| @// ---------------------------------------------------------------------------- |
| @// Exported functions |
| @// ---------------------------------------------------------------------------- |
| @*/ |
| |
| @/* |
| @//--------------------------------------------------------------------------- |
| @// Function Name : impeg2_memset_8bit_8x8_block_a9q() |
| @// |
| @// Detail Description : This routine intialises the Block matrix buffer contents to a |
| @// particular Value. This function also assumes the buffer size |
| @// to be set is 64 Bytes fixed. It also assumes that blk matrix |
| @// used is 64 bit aligned. |
| @// |
| @// Inputs : r0: pi2_blk_mat : Block Pointer |
| @// r1: u2_val : Value with which the block is initialized |
| @// r2: u4_dst_width: Destination Width |
| @// |
| @// Registers Used : q0 |
| @// |
| @// Stack Usage : 4 bytes |
| @// |
| @// Outputs : Block Matrix Initialized to given value |
| @// |
| @// Return Data : None |
| @// |
| @// Programming Note : None |
| @//----------------------------------------------------------------------------- |
| @*/ |
| .global impeg2_memset_8bit_8x8_block_a9q |
| impeg2_memset_8bit_8x8_block_a9q: |
| str lr, [sp, #-4]! |
| |
| vdup.8 d0, r1 @//r1 is the 8-bit value to be set into |
| |
| vst1.8 {d0}, [r0], r2 @//Store the row 1 |
| vst1.8 {d0}, [r0], r2 @//Store the row 2 |
| vst1.8 {d0}, [r0], r2 @//Store the row 3 |
| vst1.8 {d0}, [r0], r2 @//Store the row 4 |
| vst1.8 {d0}, [r0], r2 @//Store the row 5 |
| vst1.8 {d0}, [r0], r2 @//Store the row 6 |
| vst1.8 {d0}, [r0], r2 @//Store the row 7 |
| vst1.8 {d0}, [r0], r2 @//Store the row 8 |
| |
| ldr pc, [sp], #4 |
| |
| |
| |
| |
| |
| |
| |
| @/* |
| @//--------------------------------------------------------------------------- |
| @// Function Name : impeg2_memset0_16bit_8x8_linear_block_a9q() |
| @// |
| @// Detail Description : memsets 128 byte long linear buf to 0 |
| @// |
| @// Inputs : r0 - Buffer |
| @// Registers Used : q0 |
| |
| @// |
| @// Stack Usage : 4 bytes |
| @// |
| @// Outputs : None |
| @// |
| @// Return Data : None |
| @// |
| @// Programming Note : <program limitation> |
| @//----------------------------------------------------------------------------- |
| @*/ |
| |
| |
| |
| .global impeg2_memset0_16bit_8x8_linear_block_a9q |
| |
| |
| impeg2_memset0_16bit_8x8_linear_block_a9q: |
| |
| stmfd r13!, {r14} |
| |
| vmov.i16 q0, #0 |
| |
| @Y data |
| |
| vst1.16 {d0, d1} , [r0]! @row1 |
| |
| vst1.16 {d0, d1} , [r0]! @row2 |
| |
| vst1.16 {d0, d1} , [r0]! @row3 |
| |
| vst1.16 {d0, d1} , [r0]! @row4 |
| |
| vst1.16 {d0, d1} , [r0]! @row5 |
| |
| vst1.16 {d0, d1} , [r0]! @row6 |
| |
| vst1.16 {d0, d1} , [r0]! @row7 |
| |
| vst1.16 {d0, d1} , [r0]! @row8 |
| |
| |
| |
| ldmfd r13!, {pc} |
| |
| |
| |
| |