10c1bc742181ded4930842b46e9507372f0b1b963James Dong;//
278e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// Copyright (C) 2007-2008 ARM Limited
378e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;//
478e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// Licensed under the Apache License, Version 2.0 (the "License");
578e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// you may not use this file except in compliance with the License.
678e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// You may obtain a copy of the License at
778e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;//
878e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;//      http://www.apache.org/licenses/LICENSE-2.0
978e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;//
1078e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// Unless required by applicable law or agreed to in writing, software
1178e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// distributed under the License is distributed on an "AS IS" BASIS,
1278e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1378e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// See the License for the specific language governing permissions and
1478e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// limitations under the License.
1578e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;//
1678e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;//
170c1bc742181ded4930842b46e9507372f0b1b963James Dong;//
180c1bc742181ded4930842b46e9507372f0b1b963James Dong;// File Name:  omxVCM4P2_IDCT8x8blk_s.s
190c1bc742181ded4930842b46e9507372f0b1b963James Dong;// OpenMAX DL: v1.0.2
200c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Revision:   12290
210c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Date:       Wednesday, April 9, 2008
220c1bc742181ded4930842b46e9507372f0b1b963James Dong;//
230c1bc742181ded4930842b46e9507372f0b1b963James Dong;//
240c1bc742181ded4930842b46e9507372f0b1b963James Dong;//
250c1bc742181ded4930842b46e9507372f0b1b963James Dong;//
260c1bc742181ded4930842b46e9507372f0b1b963James Dong
270c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Function:
280c1bc742181ded4930842b46e9507372f0b1b963James Dong;//     omxVCM4P2_IDCT8x8blk
290c1bc742181ded4930842b46e9507372f0b1b963James Dong;//
300c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// Include headers
310c1bc742181ded4930842b46e9507372f0b1b963James Dong        INCLUDE omxtypes_s.h
320c1bc742181ded4930842b46e9507372f0b1b963James Dong        INCLUDE armCOMM_s.h
330c1bc742181ded4930842b46e9507372f0b1b963James Dong
340c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// Define cpu variants
350c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_VARIANTS CortexA8
360c1bc742181ded4930842b46e9507372f0b1b963James Dong
370c1bc742181ded4930842b46e9507372f0b1b963James Dong        INCLUDE armCOMM_IDCT_s.h
380c1bc742181ded4930842b46e9507372f0b1b963James Dong
390c1bc742181ded4930842b46e9507372f0b1b963James Dong        IMPORT armCOMM_IDCTPreScale
400c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;//
410c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// Function prototype
420c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;//
430c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;//     OMXResult
440c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;//     omxVCM4P2_IDCT8x8blk(const OMX_S16* pSrc,
450c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;//                                       OMX_S16* pDst)
460c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;//
470c1bc742181ded4930842b46e9507372f0b1b963James Dong
480c1bc742181ded4930842b46e9507372f0b1b963James Dong    IF CortexA8
490c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_ALLOC4  ppDest, 4
500c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_ALLOC4  pStride, 4
510c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_ALLOC8  pBlk, 2*8*8
520c1bc742181ded4930842b46e9507372f0b1b963James Dong    ENDIF
530c1bc742181ded4930842b46e9507372f0b1b963James Dong
540c1bc742181ded4930842b46e9507372f0b1b963James Dong
550c1bc742181ded4930842b46e9507372f0b1b963James Dong    IF CortexA8
560c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_START omxVCM4P2_IDCT8x8blk, r11, d15
570c1bc742181ded4930842b46e9507372f0b1b963James Dong    ENDIF
580c1bc742181ded4930842b46e9507372f0b1b963James Dong
590c1bc742181ded4930842b46e9507372f0b1b963James Dong    IF CortexA8
600c1bc742181ded4930842b46e9507372f0b1b963James Dong
610c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Declare input registers
620c1bc742181ded4930842b46e9507372f0b1b963James DongpSrc            RN 0
630c1bc742181ded4930842b46e9507372f0b1b963James DongpDst            RN 1
640c1bc742181ded4930842b46e9507372f0b1b963James Dong
650c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Declare other intermediate registers
660c1bc742181ded4930842b46e9507372f0b1b963James DongResult          RN 0
670c1bc742181ded4930842b46e9507372f0b1b963James Dong
680c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Prototype for macro M_IDCT
690c1bc742181ded4930842b46e9507372f0b1b963James Dong;// pSrc            RN 0  ;// source data buffer
700c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Stride          RN 1  ;// destination stride in bytes
710c1bc742181ded4930842b46e9507372f0b1b963James Dong;// pDest           RN 2  ;// destination data buffer
720c1bc742181ded4930842b46e9507372f0b1b963James Dong;// pScale          RN 3  ;// pointer to scaling table
730c1bc742181ded4930842b46e9507372f0b1b963James Dong
740c1bc742181ded4930842b46e9507372f0b1b963James DongpSrc    RN 0
750c1bc742181ded4930842b46e9507372f0b1b963James DongStride  RN 1
760c1bc742181ded4930842b46e9507372f0b1b963James DongpDest   RN 2
770c1bc742181ded4930842b46e9507372f0b1b963James DongpScale  RN 3
780c1bc742181ded4930842b46e9507372f0b1b963James Dong
790c1bc742181ded4930842b46e9507372f0b1b963James Dong        MOV         pDest, pDst
800c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDR         pScale, =armCOMM_IDCTPreScale
810c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_IDCT      s9, s16, 16
820c1bc742181ded4930842b46e9507372f0b1b963James Dong        MOV         Result, #OMX_Sts_NoErr
830c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_END
840c1bc742181ded4930842b46e9507372f0b1b963James Dong    ENDIF
850c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// ARM1136JS :LOR: CortexA8
860c1bc742181ded4930842b46e9507372f0b1b963James Dong
870c1bc742181ded4930842b46e9507372f0b1b963James Dong    END
88