• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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