diff options
Diffstat (limited to 'media/libstagefright/codecs/avc/enc/src/sad_inline.h')
-rw-r--r-- | media/libstagefright/codecs/avc/enc/src/sad_inline.h | 50 |
1 files changed, 43 insertions, 7 deletions
diff --git a/media/libstagefright/codecs/avc/enc/src/sad_inline.h b/media/libstagefright/codecs/avc/enc/src/sad_inline.h index f6c3554..6695d63 100644 --- a/media/libstagefright/codecs/avc/enc/src/sad_inline.h +++ b/media/libstagefright/codecs/avc/enc/src/sad_inline.h @@ -343,7 +343,13 @@ SadMBOffset1: __inline int32 SUB_SAD(int32 sad, int32 tmp, int32 tmp2) { -__asm__ volatile("rsbs %1, %1, %2\n\trsbmi %1, %1, #0\n\tadd %0, %0, %1": "=r"(sad): "r"(tmp), "r"(tmp2)); + __asm__ volatile( + "rsbs %1, %1, %2\n\t" + "rsbmi %1, %1, #0\n\t" + "add %0, %0, %1" + : "=r"(sad) + : "r"(tmp), "r"(tmp2) + ); return sad; } @@ -351,7 +357,18 @@ __asm__ volatile("rsbs %1, %1, %2\n\trsbmi %1, %1, #0\n\tadd %0, %0, %1": "=r"(s { int32 x7; -__asm__ volatile("EOR %1, %2, %0\n\tSUBS %0, %2, %0\n\tEOR %1, %1, %0\n\tAND %1, %3, %1, lsr #1\n\tORRCC %1, %1, #0x80000000\n\tRSB %1, %1, %1, lsl #8\n\tADD %0, %0, %1, asr #7\n\tEOR %0, %0, %1, asr #7": "=r"(src1), "=&r"(x7): "r"(src2), "r"(mask)); + __asm__ volatile( + "EOR %1, %2, %0\n\t" + "SUBS %0, %2, %0\n\t" + "EOR %1, %1, %0\n\t" + "AND %1, %3, %1, lsr #1\n\t" + "ORRCC %1, %1, #0x80000000\n\t" + "RSB %1, %1, %1, lsl #8\n\t" + "ADD %0, %0, %1, asr #7\n\t" + "EOR %0, %0, %1, asr #7" + : "=r"(src1), "=&r"(x7) + : "r"(src2), "r"(mask) + ); return src1; } @@ -360,12 +377,31 @@ __asm__ volatile("EOR %1, %2, %0\n\tSUBS %0, %2, %0\n\tEOR %1, %1, %0\n\tAND % { int32 x7; -__asm__ volatile("EOR %1, %2, %0\n\tADDS %0, %2, %0\n\tEOR %1, %1, %0\n\tANDS %1, %3, %1, rrx\n\tRSB %1, %1, %1, lsl #8\n\tSUB %0, %0, %1, asr #7\n\tEOR %0, %0, %1, asr #7": "=r"(src1), "=&r"(x7): "r"(src2), "r"(mask)); + __asm__ volatile( + "EOR %1, %2, %0\n\t" + "ADDS %0, %2, %0\n\t" + "EOR %1, %1, %0\n\t" + "ANDS %1, %3, %1, rrx\n\t" + "RSB %1, %1, %1, lsl #8\n\t" + "SUB %0, %0, %1, asr #7\n\t" + "EOR %0, %0, %1, asr #7" + : "=r"(src1), "=&r"(x7) + : "r"(src2), "r"(mask) + ); return src1; } -#define sum_accumulate __asm__ volatile("SBC %0, %0, %1\n\tBIC %1, %4, %1\n\tADD %2, %2, %1, lsr #8\n\tSBC %0, %0, %3\n\tBIC %3, %4, %3\n\tADD %2, %2, %3, lsr #8": "=&r" (x5), "=&r" (x10), "=&r" (x4), "=&r" (x11): "r" (x6)); +#define sum_accumulate __asm__ volatile( \ + "SBC %0, %0, %1\n\t" \ + "BIC %1, %4, %1\n\t" \ + "ADD %2, %2, %1, lsr #8\n\t" \ + "SBC %0, %0, %3\n\t" \ + "BIC %3, %4, %3\n\t" \ + "ADD %2, %2, %3, lsr #8" \ + : "=&r" (x5), "=&r" (x10), "=&r" (x4), "=&r" (x11) \ + : "r" (x6) \ + ); #define NUMBER 3 #define SHIFT 24 @@ -407,7 +443,7 @@ __asm__ volatile("EOR %1, %2, %0\n\tADDS %0, %2, %0\n\tEOR %1, %1, %0\n\tANDS x8 = 16; /// -__asm__ volatile("MVN %0, #0xFF00": "=r"(x6)); + __asm__ volatile("MVN %0, #0xFF00": "=r"(x6)); LOOP_SAD0: /****** process 8 pixels ******/ @@ -431,10 +467,10 @@ LOOP_SAD0: /****** process 8 pixels ******/ x11 = *((int32*)(ref + 4)); -__asm__ volatile("LDR %0, [%1], %2": "=&r"(x10), "=r"(ref): "r"(lx)); + __asm__ volatile("LDR %0, [%1], %2": "=&r"(x10), "=r"(ref): "r"(lx)); //x10 = *((int32*)ref); ref+=lx; x14 = *((int32*)(blk + 4)); -__asm__ volatile("LDR %0, [%1], #16": "=&r"(x12), "=r"(blk)); + __asm__ volatile("LDR %0, [%1], #16": "=&r"(x12), "=r"(blk)); /* process x11 & x14 */ x11 = sad_4pixel(x11, x14, x9); |