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