1 ;/** 2 ; * Function: omxVCCOMM_Copy16x16 3 ; * 4 ; * Description: 5 ; * Copies the reference 16x16 block to the current block. 6 ; * Parameters: 7 ; * [in] pSrc - pointer to the reference block in the source frame; must be aligned on an 16-byte boundary. 8 ; * [in] step - distance between the starts of consecutive lines in the reference frame, in bytes; 9 ; * must be a multiple of 16 and must be larger than or equal to 16. 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 16-byte boundary: pSrc, pDst 16 ; * - step <16 or step is not a multiple of 16. 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 39 Return RN 0 40 41 M_START omxVCCOMM_Copy16x16,r5 42 43 44 45 SUB Count,step,#8 ;//Count=step-8 46 LDRD X0,[pSrc],#8 ;//pSrc after loading pSrc=pSrc+8 47 LDRD X1,[pSrc],Count ;//pSrc after loading pSrc=pSrc+step 48 49 ;// loading 16 bytes and storing 50 STRD X0,[pDst],#8 51 LDRD X0,[pSrc],#8 52 STRD X1,[pDst],#8 53 LDRD X1,[pSrc],Count 54 55 ;// loading 16 bytes and storing 56 STRD X0,[pDst],#8 57 LDRD X0,[pSrc],#8 58 STRD X1,[pDst],#8 59 LDRD X1,[pSrc],Count 60 61 ;// loading 16 bytes and storing 62 STRD X0,[pDst],#8 63 LDRD X0,[pSrc],#8 64 STRD X1,[pDst],#8 65 LDRD X1,[pSrc],Count 66 67 ;// loading 16 bytes and storing 68 STRD X0,[pDst],#8 69 LDRD X0,[pSrc],#8 70 STRD X1,[pDst],#8 71 LDRD X1,[pSrc],Count 72 73 ;// loading 16 bytes and storing 74 STRD X0,[pDst],#8 75 LDRD X0,[pSrc],#8 76 STRD X1,[pDst],#8 77 LDRD X1,[pSrc],Count 78 79 ;// loading 16 bytes and storing 80 STRD X0,[pDst],#8 81 LDRD X0,[pSrc],#8 82 STRD X1,[pDst],#8 83 LDRD X1,[pSrc],Count 84 85 ;// loading 16 bytes and storing 86 STRD X0,[pDst],#8 87 LDRD X0,[pSrc],#8 88 STRD X1,[pDst],#8 89 LDRD X1,[pSrc],Count 90 91 ;// loading 16 bytes and storing 92 STRD X0,[pDst],#8 93 LDRD X0,[pSrc],#8 94 STRD X1,[pDst],#8 95 LDRD X1,[pSrc],Count 96 97 ;// loading 16 bytes and storing 98 STRD X0,[pDst],#8 99 LDRD X0,[pSrc],#8 100 STRD X1,[pDst],#8 101 LDRD X1,[pSrc],Count 102 103 ;// loading 16 bytes and storing 104 STRD X0,[pDst],#8 105 LDRD X0,[pSrc],#8 106 STRD X1,[pDst],#8 107 LDRD X1,[pSrc],Count 108 109 ;// loading 16 bytes and storing 110 STRD X0,[pDst],#8 111 LDRD X0,[pSrc],#8 112 STRD X1,[pDst],#8 113 LDRD X1,[pSrc],Count 114 115 ;// loading 16 bytes and storing 116 STRD X0,[pDst],#8 117 LDRD X0,[pSrc],#8 118 STRD X1,[pDst],#8 119 LDRD X1,[pSrc],Count 120 121 ;// loading 16 bytes and storing 122 STRD X0,[pDst],#8 123 LDRD X0,[pSrc],#8 124 STRD X1,[pDst],#8 125 LDRD X1,[pSrc],Count 126 127 ;// loading 16 bytes and storing 128 STRD X0,[pDst],#8 129 LDRD X0,[pSrc],#8 130 STRD X1,[pDst],#8 131 LDRD X1,[pSrc],Count 132 133 ;// loading 16 bytes and storing 134 STRD X0,[pDst],#8 135 LDRD X0,[pSrc],#8 136 STRD X1,[pDst],#8 137 LDRD X1,[pSrc],Count 138 139 STRD X0,[pDst],#8 140 MOV Return,#OMX_Sts_NoErr 141 STRD X1,[pDst],#8 142 143 144 M_END 145 ENDIF 146 147 END 148