Loading media/libstagefright/codecs/avc/enc/src/sad_halfpel_inline.h +14 −2 Original line number Diff line number Diff line Loading @@ -77,14 +77,26 @@ extern "C" __inline int32 INTERP1_SUB_SAD(int32 sad, int32 tmp, int32 tmp2) { __asm__ volatile("rsbs %1, %1, %2, asr #1\n\trsbmi %1, %1, #0\n\tadd %0, %0, %1": "=r"(sad), "=r"(tmp): "r"(tmp2)); __asm__ volatile( "rsbs %1, %1, %2, asr #1\n\t" "rsbmi %1, %1, #0\n\t" "add %0, %0, %1" : "=r"(sad), "=r"(tmp) : "r"(tmp2) ); return sad; } __inline int32 INTERP2_SUB_SAD(int32 sad, int32 tmp, int32 tmp2) { __asm__ volatile("rsbs %1, %2, %1, asr #2\n\trsbmi %1, %1, #0\n\tadd %0, %0, %1": "=r"(sad), "=r"(tmp): "r"(tmp2)); __asm__ volatile( "rsbs %1, %2, %1, asr #2\n\t" "rsbmi %1, %1, #0\n\t" "add %0, %0, %1" : "=r"(sad), "=r"(tmp) : "r"(tmp2) ); return sad; } Loading media/libstagefright/codecs/avc/enc/src/sad_inline.h +43 −7 Original line number Diff line number Diff line Loading @@ -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; } Loading @@ -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; } Loading @@ -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 Loading media/libstagefright/codecs/avc/enc/src/sad_mb_offset.h +51 −9 Original line number Diff line number Diff line Loading @@ -247,11 +247,32 @@ __asm__ volatile("BIC %0, %0, #3": "=r"(ref)); x14 = *((int32*)(blk + 12)); #if (SHIFT==8) __asm__ volatile("MVN %0, %0, lsr #8\n\tBIC %0, %0, %1,lsl #24\n\tMVN %1, %1,lsr #8\n\tBIC %1, %1, %2,lsl #24": "=&r"(x10), "=&r"(x11): "r"(x12)); __asm__ volatile( "MVN %0, %0, lsr #8\n\t" "BIC %0, %0, %1, lsl #24\n\t" "MVN %1, %1, lsr #8\n\t" "BIC %1, %1, %2, lsl #24" : "=&r"(x10), "=&r"(x11) : "r"(x12) ); #elif (SHIFT==16) __asm__ volatile("MVN %0, %0, lsr #16\n\tBIC %0, %0, %1,lsl #16\n\tMVN %1, %1,lsr #16\n\tBIC %1, %1, %2,lsl #16": "=&r"(x10), "=&r"(x11): "r"(x12)); __asm__ volatile( "MVN %0, %0, lsr #16\n\t" "BIC %0, %0, %1, lsl #16\n\t" "MVN %1, %1, lsr #16\n\t" "BIC %1, %1, %2, lsl #16" : "=&r"(x10), "=&r"(x11) : "r"(x12) ); #elif (SHIFT==24) __asm__ volatile("MVN %0, %0, lsr #24\n\tBIC %0, %0, %1,lsl #8\n\tMVN %1, %1,lsr #24\n\tBIC %1, %1, %2,lsl #8": "=&r"(x10), "=&r"(x11): "r"(x12)); __asm__ volatile( "MVN %0, %0, lsr #24\n\t" "BIC %0, %0, %1, lsl #8\n\t" "MVN %1, %1, lsr #24\n\t" "BIC %1, %1, %2, lsl #8" : "=&r"(x10), "=&r"(x11) : "r"(x12) ); #endif x12 = *((int32*)(blk + 8)); Loading @@ -271,11 +292,32 @@ __asm__ volatile("MVN %0, %0, lsr #24\n\tBIC %0, %0, %1,lsl #8\n\tMVN %1, x14 = *((int32*)(blk + 4)); #if (SHIFT==8) __asm__ volatile("MVN %0, %0, lsr #8\n\tBIC %0, %0, %1,lsl #24\n\tMVN %1, %1,lsr #8\n\tBIC %1, %1, %2,lsl #24": "=&r"(x10), "=&r"(x11): "r"(x12)); __asm__ volatile( "MVN %0, %0, lsr #8\n\t" "BIC %0, %0, %1, lsl #24\n\t" "MVN %1, %1, lsr #8\n\t" "BIC %1, %1, %2, lsl #24" : "=&r"(x10), "=&r"(x11) : "r"(x12) ); #elif (SHIFT==16) __asm__ volatile("MVN %0, %0, lsr #16\n\tBIC %0, %0, %1,lsl #16\n\tMVN %1, %1,lsr #16\n\tBIC %1, %1, %2,lsl #16": "=&r"(x10), "=&r"(x11): "r"(x12)); __asm__ volatile( "MVN %0, %0, lsr #16\n\t" "BIC %0, %0, %1, lsl #16\n\t" "MVN %1, %1, lsr #16\n\t" "BIC %1, %1, %2, lsl #16" : "=&r"(x10), "=&r"(x11) : "r"(x12) ); #elif (SHIFT==24) __asm__ volatile("MVN %0, %0, lsr #24\n\tBIC %0, %0, %1,lsl #8\n\tMVN %1, %1,lsr #24\n\tBIC %1, %1, %2,lsl #8": "=&r"(x10), "=&r"(x11): "r"(x12)); __asm__ volatile( "MVN %0, %0, lsr #24\n\t" "BIC %0, %0, %1, lsl #8\n\t" "MVN %1, %1, lsr #24\n\t" "BIC %1, %1, %2, lsl #8" : "=&r"(x10), "=&r"(x11) : "r"(x12) ); #endif __asm__ volatile("LDR %0, [%1], #16": "=&r"(x12), "=r"(blk)); Loading Loading
media/libstagefright/codecs/avc/enc/src/sad_halfpel_inline.h +14 −2 Original line number Diff line number Diff line Loading @@ -77,14 +77,26 @@ extern "C" __inline int32 INTERP1_SUB_SAD(int32 sad, int32 tmp, int32 tmp2) { __asm__ volatile("rsbs %1, %1, %2, asr #1\n\trsbmi %1, %1, #0\n\tadd %0, %0, %1": "=r"(sad), "=r"(tmp): "r"(tmp2)); __asm__ volatile( "rsbs %1, %1, %2, asr #1\n\t" "rsbmi %1, %1, #0\n\t" "add %0, %0, %1" : "=r"(sad), "=r"(tmp) : "r"(tmp2) ); return sad; } __inline int32 INTERP2_SUB_SAD(int32 sad, int32 tmp, int32 tmp2) { __asm__ volatile("rsbs %1, %2, %1, asr #2\n\trsbmi %1, %1, #0\n\tadd %0, %0, %1": "=r"(sad), "=r"(tmp): "r"(tmp2)); __asm__ volatile( "rsbs %1, %2, %1, asr #2\n\t" "rsbmi %1, %1, #0\n\t" "add %0, %0, %1" : "=r"(sad), "=r"(tmp) : "r"(tmp2) ); return sad; } Loading
media/libstagefright/codecs/avc/enc/src/sad_inline.h +43 −7 Original line number Diff line number Diff line Loading @@ -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; } Loading @@ -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; } Loading @@ -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 Loading
media/libstagefright/codecs/avc/enc/src/sad_mb_offset.h +51 −9 Original line number Diff line number Diff line Loading @@ -247,11 +247,32 @@ __asm__ volatile("BIC %0, %0, #3": "=r"(ref)); x14 = *((int32*)(blk + 12)); #if (SHIFT==8) __asm__ volatile("MVN %0, %0, lsr #8\n\tBIC %0, %0, %1,lsl #24\n\tMVN %1, %1,lsr #8\n\tBIC %1, %1, %2,lsl #24": "=&r"(x10), "=&r"(x11): "r"(x12)); __asm__ volatile( "MVN %0, %0, lsr #8\n\t" "BIC %0, %0, %1, lsl #24\n\t" "MVN %1, %1, lsr #8\n\t" "BIC %1, %1, %2, lsl #24" : "=&r"(x10), "=&r"(x11) : "r"(x12) ); #elif (SHIFT==16) __asm__ volatile("MVN %0, %0, lsr #16\n\tBIC %0, %0, %1,lsl #16\n\tMVN %1, %1,lsr #16\n\tBIC %1, %1, %2,lsl #16": "=&r"(x10), "=&r"(x11): "r"(x12)); __asm__ volatile( "MVN %0, %0, lsr #16\n\t" "BIC %0, %0, %1, lsl #16\n\t" "MVN %1, %1, lsr #16\n\t" "BIC %1, %1, %2, lsl #16" : "=&r"(x10), "=&r"(x11) : "r"(x12) ); #elif (SHIFT==24) __asm__ volatile("MVN %0, %0, lsr #24\n\tBIC %0, %0, %1,lsl #8\n\tMVN %1, %1,lsr #24\n\tBIC %1, %1, %2,lsl #8": "=&r"(x10), "=&r"(x11): "r"(x12)); __asm__ volatile( "MVN %0, %0, lsr #24\n\t" "BIC %0, %0, %1, lsl #8\n\t" "MVN %1, %1, lsr #24\n\t" "BIC %1, %1, %2, lsl #8" : "=&r"(x10), "=&r"(x11) : "r"(x12) ); #endif x12 = *((int32*)(blk + 8)); Loading @@ -271,11 +292,32 @@ __asm__ volatile("MVN %0, %0, lsr #24\n\tBIC %0, %0, %1,lsl #8\n\tMVN %1, x14 = *((int32*)(blk + 4)); #if (SHIFT==8) __asm__ volatile("MVN %0, %0, lsr #8\n\tBIC %0, %0, %1,lsl #24\n\tMVN %1, %1,lsr #8\n\tBIC %1, %1, %2,lsl #24": "=&r"(x10), "=&r"(x11): "r"(x12)); __asm__ volatile( "MVN %0, %0, lsr #8\n\t" "BIC %0, %0, %1, lsl #24\n\t" "MVN %1, %1, lsr #8\n\t" "BIC %1, %1, %2, lsl #24" : "=&r"(x10), "=&r"(x11) : "r"(x12) ); #elif (SHIFT==16) __asm__ volatile("MVN %0, %0, lsr #16\n\tBIC %0, %0, %1,lsl #16\n\tMVN %1, %1,lsr #16\n\tBIC %1, %1, %2,lsl #16": "=&r"(x10), "=&r"(x11): "r"(x12)); __asm__ volatile( "MVN %0, %0, lsr #16\n\t" "BIC %0, %0, %1, lsl #16\n\t" "MVN %1, %1, lsr #16\n\t" "BIC %1, %1, %2, lsl #16" : "=&r"(x10), "=&r"(x11) : "r"(x12) ); #elif (SHIFT==24) __asm__ volatile("MVN %0, %0, lsr #24\n\tBIC %0, %0, %1,lsl #8\n\tMVN %1, %1,lsr #24\n\tBIC %1, %1, %2,lsl #8": "=&r"(x10), "=&r"(x11): "r"(x12)); __asm__ volatile( "MVN %0, %0, lsr #24\n\t" "BIC %0, %0, %1, lsl #8\n\t" "MVN %1, %1, lsr #24\n\t" "BIC %1, %1, %2, lsl #8" : "=&r"(x10), "=&r"(x11) : "r"(x12) ); #endif __asm__ volatile("LDR %0, [%1], #16": "=&r"(x12), "=r"(blk)); Loading