10c1bc742181ded4930842b46e9507372f0b1b963James Dong@
20c1bc742181ded4930842b46e9507372f0b1b963James Dong@ Copyright (C) 2009 The Android Open Source Project
30c1bc742181ded4930842b46e9507372f0b1b963James Dong@
40c1bc742181ded4930842b46e9507372f0b1b963James Dong@ Licensed under the Apache License, Version 2.0 (the "License");
50c1bc742181ded4930842b46e9507372f0b1b963James Dong@ you may not use this file except in compliance with the License.
60c1bc742181ded4930842b46e9507372f0b1b963James Dong@ You may obtain a copy of the License at
70c1bc742181ded4930842b46e9507372f0b1b963James Dong@
80c1bc742181ded4930842b46e9507372f0b1b963James Dong@      http://www.apache.org/licenses/LICENSE-2.0
90c1bc742181ded4930842b46e9507372f0b1b963James Dong@
100c1bc742181ded4930842b46e9507372f0b1b963James Dong@ Unless required by applicable law or agreed to in writing, software
110c1bc742181ded4930842b46e9507372f0b1b963James Dong@ distributed under the License is distributed on an "AS IS" BASIS,
120c1bc742181ded4930842b46e9507372f0b1b963James Dong@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130c1bc742181ded4930842b46e9507372f0b1b963James Dong@ See the License for the specific language governing permissions and
140c1bc742181ded4930842b46e9507372f0b1b963James Dong@ limitations under the License.
150c1bc742181ded4930842b46e9507372f0b1b963James Dong@
160c1bc742181ded4930842b46e9507372f0b1b963James Dong
170c1bc742181ded4930842b46e9507372f0b1b963James Dong#include "asm_common.S"
180c1bc742181ded4930842b46e9507372f0b1b963James Dong
197ea582e1dbdd9a88b2105fbe29ed0ec92cbf70c6Chih-Hung Hsieh    PRESERVE8
200c1bc742181ded4930842b46e9507372f0b1b963James Dong
210c1bc742181ded4930842b46e9507372f0b1b963James Dong    .fpu neon
220c1bc742181ded4930842b46e9507372f0b1b963James Dong    .text
230c1bc742181ded4930842b46e9507372f0b1b963James Dong
240c1bc742181ded4930842b46e9507372f0b1b963James Dong/* Input / output registers */
250c1bc742181ded4930842b46e9507372f0b1b963James Dong#define pMbLayer    r0
260c1bc742181ded4930842b46e9507372f0b1b963James Dong#define size        r1
270c1bc742181ded4930842b46e9507372f0b1b963James Dong#define pTmp        r2
280c1bc742181ded4930842b46e9507372f0b1b963James Dong#define step        r3
290c1bc742181ded4930842b46e9507372f0b1b963James Dong
300c1bc742181ded4930842b46e9507372f0b1b963James Dong/* -- NEON registers -- */
310c1bc742181ded4930842b46e9507372f0b1b963James Dong
327ea582e1dbdd9a88b2105fbe29ed0ec92cbf70c6Chih-Hung Hsieh#define qZero   Q0
330c1bc742181ded4930842b46e9507372f0b1b963James Dong
340c1bc742181ded4930842b46e9507372f0b1b963James Dong/*------------------------------------------------------------------------------
350c1bc742181ded4930842b46e9507372f0b1b963James Dong
360c1bc742181ded4930842b46e9507372f0b1b963James Dong    Function: h264bsdClearMbLayer
370c1bc742181ded4930842b46e9507372f0b1b963James Dong
380c1bc742181ded4930842b46e9507372f0b1b963James Dong        Functional description:
390c1bc742181ded4930842b46e9507372f0b1b963James Dong
400c1bc742181ded4930842b46e9507372f0b1b963James Dong        Inputs:
410c1bc742181ded4930842b46e9507372f0b1b963James Dong
420c1bc742181ded4930842b46e9507372f0b1b963James Dong        Outputs:
430c1bc742181ded4930842b46e9507372f0b1b963James Dong
440c1bc742181ded4930842b46e9507372f0b1b963James Dong        Returns:
450c1bc742181ded4930842b46e9507372f0b1b963James Dong
460c1bc742181ded4930842b46e9507372f0b1b963James Dong------------------------------------------------------------------------------*/
470c1bc742181ded4930842b46e9507372f0b1b963James Dong
480c1bc742181ded4930842b46e9507372f0b1b963James Dongfunction h264bsdClearMbLayer, export=1
490c1bc742181ded4930842b46e9507372f0b1b963James Dong
507ea582e1dbdd9a88b2105fbe29ed0ec92cbf70c6Chih-Hung Hsieh    VMOV.I8 qZero, #0
510c1bc742181ded4930842b46e9507372f0b1b963James Dong    ADD     pTmp, pMbLayer, #16
520c1bc742181ded4930842b46e9507372f0b1b963James Dong    MOV     step, #32
530c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUBS    size, size, #64
540c1bc742181ded4930842b46e9507372f0b1b963James Dong
550c1bc742181ded4930842b46e9507372f0b1b963James Dongloop:
567ea582e1dbdd9a88b2105fbe29ed0ec92cbf70c6Chih-Hung Hsieh    VST1.8  {qZero}, [pMbLayer], step
570c1bc742181ded4930842b46e9507372f0b1b963James Dong    SUBS    size, size, #64
587ea582e1dbdd9a88b2105fbe29ed0ec92cbf70c6Chih-Hung Hsieh    VST1.8  {qZero}, [pTmp], step
597ea582e1dbdd9a88b2105fbe29ed0ec92cbf70c6Chih-Hung Hsieh    VST1.8  {qZero}, [pMbLayer], step
607ea582e1dbdd9a88b2105fbe29ed0ec92cbf70c6Chih-Hung Hsieh    VST1.8  {qZero}, [pTmp], step
610c1bc742181ded4930842b46e9507372f0b1b963James Dong    BCS     loop
620c1bc742181ded4930842b46e9507372f0b1b963James Dong
630c1bc742181ded4930842b46e9507372f0b1b963James Dong    BX      lr
640c1bc742181ded4930842b46e9507372f0b1b963James Dong
650c1bc742181ded4930842b46e9507372f0b1b963James Dongendfunction
660c1bc742181ded4930842b46e9507372f0b1b963James Dong
670c1bc742181ded4930842b46e9507372f0b1b963James Dong
680c1bc742181ded4930842b46e9507372f0b1b963James Dong
69