10c1bc742181ded4930842b46e9507372f0b1b963James Dong ;/**
20c1bc742181ded4930842b46e9507372f0b1b963James Dong ; * Function: omxVCCOMM_Copy8x8
30c1bc742181ded4930842b46e9507372f0b1b963James Dong ; *
40c1bc742181ded4930842b46e9507372f0b1b963James Dong ; * Description:
50c1bc742181ded4930842b46e9507372f0b1b963James Dong ; * Copies the reference 8x8 block to the current block.
60c1bc742181ded4930842b46e9507372f0b1b963James Dong ; * Parameters:
70c1bc742181ded4930842b46e9507372f0b1b963James Dong ; * [in] pSrc         - pointer to the reference block in the source frame; must be aligned on an 8-byte boundary.
80c1bc742181ded4930842b46e9507372f0b1b963James Dong ; * [in] step         - distance between the starts of consecutive lines in the reference frame, in bytes;
90c1bc742181ded4930842b46e9507372f0b1b963James Dong ; *                     must be a multiple of 8 and must be larger than or equal to 8.
100c1bc742181ded4930842b46e9507372f0b1b963James Dong ; * [out] pDst        - pointer to the destination block; must be aligned on an 8-byte boundary.
110c1bc742181ded4930842b46e9507372f0b1b963James Dong ; * Return Value:
120c1bc742181ded4930842b46e9507372f0b1b963James Dong ; * OMX_Sts_NoErr     - no error
130c1bc742181ded4930842b46e9507372f0b1b963James Dong ; * OMX_Sts_BadArgErr - bad arguments; returned under any of the following conditions:
140c1bc742181ded4930842b46e9507372f0b1b963James Dong ; *                   - one or more of the following pointers is NULL:  pSrc, pDst
150c1bc742181ded4930842b46e9507372f0b1b963James Dong ; *                   - one or more of the following pointers is not aligned on an 8-byte boundary:  pSrc, pDst
160c1bc742181ded4930842b46e9507372f0b1b963James Dong ; *                   - step <8 or step is not a multiple of 8.
170c1bc742181ded4930842b46e9507372f0b1b963James Dong ; */
180c1bc742181ded4930842b46e9507372f0b1b963James Dong
190c1bc742181ded4930842b46e9507372f0b1b963James Dong   INCLUDE omxtypes_s.h
200c1bc742181ded4930842b46e9507372f0b1b963James Dong
210c1bc742181ded4930842b46e9507372f0b1b963James Dong
220c1bc742181ded4930842b46e9507372f0b1b963James Dong     M_VARIANTS ARM1136JS
230c1bc742181ded4930842b46e9507372f0b1b963James Dong
240c1bc742181ded4930842b46e9507372f0b1b963James Dong
250c1bc742181ded4930842b46e9507372f0b1b963James Dong
260c1bc742181ded4930842b46e9507372f0b1b963James Dong
270c1bc742181ded4930842b46e9507372f0b1b963James Dong     IF ARM1136JS
280c1bc742181ded4930842b46e9507372f0b1b963James Dong
290c1bc742181ded4930842b46e9507372f0b1b963James Dong;//Input Arguments
300c1bc742181ded4930842b46e9507372f0b1b963James DongpSrc    RN 0
310c1bc742181ded4930842b46e9507372f0b1b963James DongpDst    RN 1
320c1bc742181ded4930842b46e9507372f0b1b963James Dongstep    RN 2
330c1bc742181ded4930842b46e9507372f0b1b963James Dong
340c1bc742181ded4930842b46e9507372f0b1b963James Dong;//Local Variables
350c1bc742181ded4930842b46e9507372f0b1b963James DongCount   RN 14
360c1bc742181ded4930842b46e9507372f0b1b963James DongX0      RN 2
370c1bc742181ded4930842b46e9507372f0b1b963James DongX1      RN 4
380c1bc742181ded4930842b46e9507372f0b1b963James DongReturn  RN 0
390c1bc742181ded4930842b46e9507372f0b1b963James Dong     M_START omxVCCOMM_Copy8x8,r5
400c1bc742181ded4930842b46e9507372f0b1b963James Dong
410c1bc742181ded4930842b46e9507372f0b1b963James Dong
420c1bc742181ded4930842b46e9507372f0b1b963James Dong
430c1bc742181ded4930842b46e9507372f0b1b963James Dong        MOV   Count,step                 ;//Count=step
440c1bc742181ded4930842b46e9507372f0b1b963James Dong
450c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X0,[pSrc],Count            ;//pSrc after loading : pSrc=pSrc+step
460c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X1,[pSrc],Count
470c1bc742181ded4930842b46e9507372f0b1b963James Dong
480c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X0,[pDst],#8
490c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X0,[pSrc],Count
500c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X1,[pDst],#8
510c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X1,[pSrc],Count
520c1bc742181ded4930842b46e9507372f0b1b963James Dong
530c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X0,[pDst],#8
540c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X0,[pSrc],Count
550c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X1,[pDst],#8
560c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X1,[pSrc],Count
570c1bc742181ded4930842b46e9507372f0b1b963James Dong
580c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X0,[pDst],#8
590c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X0,[pSrc],Count
600c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X1,[pDst],#8
610c1bc742181ded4930842b46e9507372f0b1b963James Dong        LDRD  X1,[pSrc],Count
620c1bc742181ded4930842b46e9507372f0b1b963James Dong
630c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X0,[pDst],#8
640c1bc742181ded4930842b46e9507372f0b1b963James Dong        MOV   Return,#OMX_Sts_NoErr
650c1bc742181ded4930842b46e9507372f0b1b963James Dong        STRD  X1,[pDst],#8
660c1bc742181ded4930842b46e9507372f0b1b963James Dong
670c1bc742181ded4930842b46e9507372f0b1b963James Dong
680c1bc742181ded4930842b46e9507372f0b1b963James Dong        M_END
690c1bc742181ded4930842b46e9507372f0b1b963James Dong        ENDIF
700c1bc742181ded4930842b46e9507372f0b1b963James Dong
710c1bc742181ded4930842b46e9507372f0b1b963James Dong        END
720c1bc742181ded4930842b46e9507372f0b1b963James Dong