1 ;/** 2 ; * Function: omxVCCOMM_Copy8x8 3 ; * 4 ; * Description: 5 ; * Copies the reference 8x8 block to the current block. 6 ; * Parameters: 7 ; * [in] pSrc - pointer to the reference block in the source frame; must be aligned on an 8-byte boundary. 8 ; * [in] step - distance between the starts of consecutive lines in the reference frame, in bytes; 9 ; * must be a multiple of 8 and must be larger than or equal to 8. 10 ; * [out] pDst - pointer to the destination block; must be aligned on an 8-byte boundary. 11 ; * Return Value: 12 ; * OMX_Sts_NoErr - no error 13 ; * OMX_Sts_BadArgErr - bad arguments; returned under any of the following conditions: 14 ; * - one or more of the following pointers is NULL: pSrc, pDst 15 ; * - one or more of the following pointers is not aligned on an 8-byte boundary: pSrc, pDst 16 ; * - step <8 or step is not a multiple of 8. 17 ; */ 18 19 INCLUDE omxtypes_s.h 20 21 22 M_VARIANTS ARM1136JS 23 24 25 26 27 IF ARM1136JS 28 29 ;//Input Arguments 30 pSrc RN 0 31 pDst RN 1 32 step RN 2 33 34 ;//Local Variables 35 Count RN 14 36 X0 RN 2 37 X1 RN 4 38 Return RN 0 39 M_START omxVCCOMM_Copy8x8,r5 40 41 42 43 MOV Count,step ;//Count=step 44 45 LDRD X0,[pSrc],Count ;//pSrc after loading : pSrc=pSrc+step 46 LDRD X1,[pSrc],Count 47 48 STRD X0,[pDst],#8 49 LDRD X0,[pSrc],Count 50 STRD X1,[pDst],#8 51 LDRD X1,[pSrc],Count 52 53 STRD X0,[pDst],#8 54 LDRD X0,[pSrc],Count 55 STRD X1,[pDst],#8 56 LDRD X1,[pSrc],Count 57 58 STRD X0,[pDst],#8 59 LDRD X0,[pSrc],Count 60 STRD X1,[pDst],#8 61 LDRD X1,[pSrc],Count 62 63 STRD X0,[pDst],#8 64 MOV Return,#OMX_Sts_NoErr 65 STRD X1,[pDst],#8 66 67 68 M_END 69 ENDIF 70 71 END 72