blob: 869b7d7e124364984e46ff524023f884cdb40c49 [file] [log] [blame]
@/******************************************************************************
@ *
@ * 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}