| 3118 | } |
| 3119 | |
| 3120 | void McCopyWidthEq8_mmi(const uint8_t *pSrc, int iSrcStride, |
| 3121 | uint8_t *pDst, int iDstStride, int iHeight) { |
| 3122 | __asm__ volatile ( |
| 3123 | ".set arch=loongson3a \n\t" |
| 3124 | "1: \n\t" |
| 3125 | "ldl $8, 0x7(%[pSrc]) \n\t" |
| 3126 | "ldr $8, 0x0(%[pSrc]) \n\t" |
| 3127 | "sdl $8, 0x7(%[pDst]) \n\t" |
| 3128 | "sdr $8, 0x0(%[pDst]) \n\t" |
| 3129 | PTR_ADDU "%[pSrc], %[pSrc], %[iSrcStride] \n\t" |
| 3130 | PTR_ADDU "%[pDst], %[pDst], %[iDstStride] \n\t" |
| 3131 | PTR_ADDIU "%[iHeight], %[iHeight], -1 \n\t" |
| 3132 | "bnez %[iHeight], 1b \n\t" |
| 3133 | : [pSrc]"+&r"(pSrc), [pDst]"+&r"(pDst), [iHeight]"+&r"(iHeight) |
| 3134 | : [iSrcStride]"r"(iSrcStride), [iDstStride]"r"(iDstStride) |
| 3135 | : "memory", "$8" |
| 3136 | ); |
| 3137 | } |
| 3138 | |
| 3139 | void McCopyWidthEq16_mmi(const uint8_t *pSrc, int iSrcStride, |
| 3140 | uint8_t *pDst, int iDstStride, int iHeight) { |