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 100impeg2_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 147impeg2_memset0_16bit_8x8_linear_block_a9q: 148 149 stmfd sp!, {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 sp!, {pc} 174 175 176 177 178