10c1bc742181ded4930842b46e9507372f0b1b963James Dong;//
20c1bc742181ded4930842b46e9507372f0b1b963James Dong;//
30c1bc742181ded4930842b46e9507372f0b1b963James Dong;// File Name:  omxVCM4P2_IDCT8x8blk_s.s
40c1bc742181ded4930842b46e9507372f0b1b963James Dong;// OpenMAX DL: v1.0.2
50c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Revision:   12290
60c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Date:       Wednesday, April 9, 2008
70c1bc742181ded4930842b46e9507372f0b1b963James Dong;//
80c1bc742181ded4930842b46e9507372f0b1b963James Dong;// (c) Copyright 2007-2008 ARM Limited. All Rights Reserved.
90c1bc742181ded4930842b46e9507372f0b1b963James Dong;//
100c1bc742181ded4930842b46e9507372f0b1b963James Dong;//
110c1bc742181ded4930842b46e9507372f0b1b963James Dong;//
120c1bc742181ded4930842b46e9507372f0b1b963James Dong
130c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Function:
140c1bc742181ded4930842b46e9507372f0b1b963James Dong;//     omxVCM4P2_IDCT8x8blk
150c1bc742181ded4930842b46e9507372f0b1b963James Dong;//
160c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// Include headers
170c1bc742181ded4930842b46e9507372f0b1b963James Dong        INCLUDE omxtypes_s.h
180c1bc742181ded4930842b46e9507372f0b1b963James Dong        INCLUDE armCOMM_s.h
190c1bc742181ded4930842b46e9507372f0b1b963James Dong
200c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// Define cpu variants
210c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_VARIANTS CortexA8
220c1bc742181ded4930842b46e9507372f0b1b963James Dong
230c1bc742181ded4930842b46e9507372f0b1b963James Dong        INCLUDE armCOMM_IDCT_s.h
240c1bc742181ded4930842b46e9507372f0b1b963James Dong
250c1bc742181ded4930842b46e9507372f0b1b963James Dong        IMPORT armCOMM_IDCTPreScale
260c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;//
270c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// Function prototype
280c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;//
290c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;//     OMXResult
300c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;//     omxVCM4P2_IDCT8x8blk(const OMX_S16* pSrc,
310c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;//                                       OMX_S16* pDst)
320c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;//
330c1bc742181ded4930842b46e9507372f0b1b963James Dong
340c1bc742181ded4930842b46e9507372f0b1b963James Dong    IF CortexA8
350c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_ALLOC4  ppDest, 4
360c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_ALLOC4  pStride, 4
370c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_ALLOC8  pBlk, 2*8*8
380c1bc742181ded4930842b46e9507372f0b1b963James Dong    ENDIF
390c1bc742181ded4930842b46e9507372f0b1b963James Dong
400c1bc742181ded4930842b46e9507372f0b1b963James Dong
410c1bc742181ded4930842b46e9507372f0b1b963James Dong    IF CortexA8
420c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_START omxVCM4P2_IDCT8x8blk, r11, d15
430c1bc742181ded4930842b46e9507372f0b1b963James Dong    ENDIF
440c1bc742181ded4930842b46e9507372f0b1b963James Dong
450c1bc742181ded4930842b46e9507372f0b1b963James Dong    IF CortexA8
460c1bc742181ded4930842b46e9507372f0b1b963James Dong
470c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Declare input registers
480c1bc742181ded4930842b46e9507372f0b1b963James DongpSrc            RN 0
490c1bc742181ded4930842b46e9507372f0b1b963James DongpDst            RN 1
500c1bc742181ded4930842b46e9507372f0b1b963James Dong
510c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Declare other intermediate registers
520c1bc742181ded4930842b46e9507372f0b1b963James DongResult          RN 0
530c1bc742181ded4930842b46e9507372f0b1b963James Dong
540c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Prototype for macro M_IDCT
550c1bc742181ded4930842b46e9507372f0b1b963James Dong;// pSrc            RN 0  ;// source data buffer
560c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Stride          RN 1  ;// destination stride in bytes
570c1bc742181ded4930842b46e9507372f0b1b963James Dong;// pDest           RN 2  ;// destination data buffer
580c1bc742181ded4930842b46e9507372f0b1b963James Dong;// pScale          RN 3  ;// pointer to scaling table
590c1bc742181ded4930842b46e9507372f0b1b963James Dong
600c1bc742181ded4930842b46e9507372f0b1b963James DongpSrc    RN 0
610c1bc742181ded4930842b46e9507372f0b1b963James DongStride  RN 1
620c1bc742181ded4930842b46e9507372f0b1b963James DongpDest   RN 2
630c1bc742181ded4930842b46e9507372f0b1b963James DongpScale  RN 3
640c1bc742181ded4930842b46e9507372f0b1b963James Dong
650c1bc742181ded4930842b46e9507372f0b1b963James Dong        MOV         pDest, pDst
660c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDR         pScale, =armCOMM_IDCTPreScale
670c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_IDCT      s9, s16, 16
680c1bc742181ded4930842b46e9507372f0b1b963James Dong        MOV         Result, #OMX_Sts_NoErr
690c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_END
700c1bc742181ded4930842b46e9507372f0b1b963James Dong    ENDIF
710c1bc742181ded4930842b46e9507372f0b1b963James Dong        ;// ARM1136JS :LOR: CortexA8
720c1bc742181ded4930842b46e9507372f0b1b963James Dong
730c1bc742181ded4930842b46e9507372f0b1b963James Dong    END
74