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.
178 lines
5.3 KiB
178 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 sp!, {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 sp!, {pc}
|
|
|
|
|
|
|
|
|