You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
177 lines
5.3 KiB
177 lines
5.3 KiB
@/****************************************************************************** |
|
@ * |
|
@ * 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} |
|
|
|
|
|
|
|
|
|
|