@/****************************************************************************** @ * @ * 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}