1aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@/****************************************************************************** 2aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@ * 3aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@ * Copyright (C) 2015 The Android Open Source Project 4aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@ * 5aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@ * Licensed under the Apache License, Version 2.0 (the "License"); 6aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@ * you may not use this file except in compliance with the License. 7aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@ * You may obtain a copy of the License at: 8aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@ * 9aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@ * http://www.apache.org/licenses/LICENSE-2.0 10aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@ * 11aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@ * Unless required by applicable law or agreed to in writing, software 12aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@ * distributed under the License is distributed on an "AS IS" BASIS, 13aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@ * See the License for the specific language governing permissions and 15aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@ * limitations under the License. 16aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@ * 17aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@ ***************************************************************************** 18aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@ * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore 19aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@*/ 20aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 21aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@/* 22aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@//---------------------------------------------------------------------------- 23aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// File Name : impeg2_mem_func.s 24aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// 25aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// Description : This file has motion compensation related 26aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// interpolation functions on Neon + CortexA-8 platform 27aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// 28aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// Reference Document : 29aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// 30aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// Revision History : 31aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// Date Author Detail Description 32aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// ------------ ---------------- ---------------------------------- 33aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// 18 jun 2010 S Hamsalekha Created 34aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// 35aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@//------------------------------------------------------------------------- 36aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@*/ 37aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 38aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@/* 39aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// ---------------------------------------------------------------------------- 40aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// Include Files 41aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// ---------------------------------------------------------------------------- 42aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@*/ 43aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani.text 44aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani.p2align 2 45aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 46aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 47aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@/* 48aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// ---------------------------------------------------------------------------- 49aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// Struct/Union Types and Define 50aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// ---------------------------------------------------------------------------- 51aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@*/ 52aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 53aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 54aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@/* 55aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// ---------------------------------------------------------------------------- 56aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// Static Global Data section variables 57aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// ---------------------------------------------------------------------------- 58aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@*/ 59aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// -------------------------- NONE -------------------------------------------- 60aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 61aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 62aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@/* 63aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// ---------------------------------------------------------------------------- 64aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// Static Prototype Functions 65aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// ---------------------------------------------------------------------------- 66aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@*/ 67aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// -------------------------- NONE -------------------------------------------- 68aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 69aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@/* 70aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// ---------------------------------------------------------------------------- 71aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// Exported functions 72aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// ---------------------------------------------------------------------------- 73aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@*/ 74aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 75aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@/* 76aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@//--------------------------------------------------------------------------- 77aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// Function Name : impeg2_memset_8bit_8x8_block_a9q() 78aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// 79aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// Detail Description : This routine intialises the Block matrix buffer contents to a 80aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// particular Value. This function also assumes the buffer size 81aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// to be set is 64 Bytes fixed. It also assumes that blk matrix 82aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// used is 64 bit aligned. 83aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// 84aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// Inputs : r0: pi2_blk_mat : Block Pointer 85aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// r1: u2_val : Value with which the block is initialized 86aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// r2: u4_dst_width: Destination Width 87aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// 88aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// Registers Used : q0 89aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// 90aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// Stack Usage : 4 bytes 91aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// 92aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// Outputs : Block Matrix Initialized to given value 93aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// 94aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// Return Data : None 95aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// 96aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// Programming Note : None 97aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@//----------------------------------------------------------------------------- 98aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@*/ 99aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani .global impeg2_memset_8bit_8x8_block_a9q 100aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhaniimpeg2_memset_8bit_8x8_block_a9q: 101aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani str lr, [sp, #-4]! 102aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 103aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani vdup.8 d0, r1 @//r1 is the 8-bit value to be set into 104aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 105aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani vst1.8 {d0}, [r0], r2 @//Store the row 1 106aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani vst1.8 {d0}, [r0], r2 @//Store the row 2 107aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani vst1.8 {d0}, [r0], r2 @//Store the row 3 108aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani vst1.8 {d0}, [r0], r2 @//Store the row 4 109aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani vst1.8 {d0}, [r0], r2 @//Store the row 5 110aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani vst1.8 {d0}, [r0], r2 @//Store the row 6 111aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani vst1.8 {d0}, [r0], r2 @//Store the row 7 112aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani vst1.8 {d0}, [r0], r2 @//Store the row 8 113aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 114aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ldr pc, [sp], #4 115aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 116aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 117aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 118aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 119aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 120aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 121aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 122aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@/* 123aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@//--------------------------------------------------------------------------- 124aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// Function Name : impeg2_memset0_16bit_8x8_linear_block_a9q() 125aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// 126aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// Detail Description : memsets 128 byte long linear buf to 0 127aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// 128aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// Inputs : r0 - Buffer 129aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// Registers Used : q0 130aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 131aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// 132aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// Stack Usage : 4 bytes 133aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// 134aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// Outputs : None 135aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// 136aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// Return Data : None 137aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// 138aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@// Programming Note : <program limitation> 139aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@//----------------------------------------------------------------------------- 140aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@*/ 141aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 142aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 143aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 144aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani .global impeg2_memset0_16bit_8x8_linear_block_a9q 145aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 146aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 147aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhaniimpeg2_memset0_16bit_8x8_linear_block_a9q: 148aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 149aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani stmfd r13!, {r14} 150aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 151aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani vmov.i16 q0, #0 152aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 153aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani@Y data 154aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 155aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani vst1.16 {d0, d1} , [r0]! @row1 156aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 157aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani vst1.16 {d0, d1} , [r0]! @row2 158aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 159aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani vst1.16 {d0, d1} , [r0]! @row3 160aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 161aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani vst1.16 {d0, d1} , [r0]! @row4 162aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 163aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani vst1.16 {d0, d1} , [r0]! @row5 164aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 165aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani vst1.16 {d0, d1} , [r0]! @row6 166aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 167aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani vst1.16 {d0, d1} , [r0]! @row7 168aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 169aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani vst1.16 {d0, d1} , [r0]! @row8 170aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 171aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 172aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 173aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani ldmfd r13!, {pc} 174aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 175aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 176aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 177aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani 178