Mercurial > libavcodec.hg
comparison libpostproc/postprocess_template.c @ 2967:ef2149182f1c libavcodec
COSMETICS: Remove all trailing whitespace.
| author | diego |
|---|---|
| date | Sat, 17 Dec 2005 18:14:38 +0000 |
| parents | 49da251f2608 |
| children | 403183bbb505 |
comparison
equal
deleted
inserted
replaced
| 2966:564788471dd4 | 2967:ef2149182f1c |
|---|---|
| 78 */ | 78 */ |
| 79 static inline int RENAME(vertClassify)(uint8_t src[], int stride, PPContext *c){ | 79 static inline int RENAME(vertClassify)(uint8_t src[], int stride, PPContext *c){ |
| 80 int numEq= 0, dcOk; | 80 int numEq= 0, dcOk; |
| 81 src+= stride*4; // src points to begin of the 8x8 Block | 81 src+= stride*4; // src points to begin of the 8x8 Block |
| 82 asm volatile( | 82 asm volatile( |
| 83 "movq %0, %%mm7 \n\t" | 83 "movq %0, %%mm7 \n\t" |
| 84 "movq %1, %%mm6 \n\t" | 84 "movq %1, %%mm6 \n\t" |
| 85 : : "m" (c->mmxDcOffset[c->nonBQP]), "m" (c->mmxDcThreshold[c->nonBQP]) | 85 : : "m" (c->mmxDcOffset[c->nonBQP]), "m" (c->mmxDcThreshold[c->nonBQP]) |
| 86 ); | 86 ); |
| 87 | 87 |
| 88 asm volatile( | 88 asm volatile( |
| 89 "lea (%2, %3), %%"REG_a" \n\t" | 89 "lea (%2, %3), %%"REG_a" \n\t" |
| 90 // 0 1 2 3 4 5 6 7 8 9 | 90 // 0 1 2 3 4 5 6 7 8 9 |
| 91 // %1 eax eax+%2 eax+2%2 %1+4%2 ecx ecx+%2 ecx+2%2 %1+8%2 ecx+4%2 | 91 // %1 eax eax+%2 eax+2%2 %1+4%2 ecx ecx+%2 ecx+2%2 %1+8%2 ecx+4%2 |
| 92 | 92 |
| 113 PMINUB(%%mm1, %%mm3, %%mm5) | 113 PMINUB(%%mm1, %%mm3, %%mm5) |
| 114 "psubb %%mm1, %%mm2 \n\t" | 114 "psubb %%mm1, %%mm2 \n\t" |
| 115 "paddb %%mm7, %%mm2 \n\t" | 115 "paddb %%mm7, %%mm2 \n\t" |
| 116 "pcmpgtb %%mm6, %%mm2 \n\t" | 116 "pcmpgtb %%mm6, %%mm2 \n\t" |
| 117 "paddb %%mm2, %%mm0 \n\t" | 117 "paddb %%mm2, %%mm0 \n\t" |
| 118 | 118 |
| 119 "lea (%%"REG_a", %3, 4), %%"REG_a" \n\t" | 119 "lea (%%"REG_a", %3, 4), %%"REG_a" \n\t" |
| 120 | 120 |
| 121 "movq (%2, %3, 4), %%mm2 \n\t" | 121 "movq (%2, %3, 4), %%mm2 \n\t" |
| 122 PMAXUB(%%mm2, %%mm4) | 122 PMAXUB(%%mm2, %%mm4) |
| 123 PMINUB(%%mm2, %%mm3, %%mm5) | 123 PMINUB(%%mm2, %%mm3, %%mm5) |
| 1193 "packuswb %%mm0, %%mm0 \n\t" | 1193 "packuswb %%mm0, %%mm0 \n\t" |
| 1194 "movq %%mm0, %3 \n\t" | 1194 "movq %%mm0, %3 \n\t" |
| 1195 | 1195 |
| 1196 "lea (%0, %1), %%"REG_a" \n\t" | 1196 "lea (%0, %1), %%"REG_a" \n\t" |
| 1197 "lea (%%"REG_a", %1, 4), %%"REG_d" \n\t" | 1197 "lea (%%"REG_a", %1, 4), %%"REG_d" \n\t" |
| 1198 | 1198 |
| 1199 // 0 1 2 3 4 5 6 7 8 9 | 1199 // 0 1 2 3 4 5 6 7 8 9 |
| 1200 // %0 eax eax+%1 eax+2%1 %0+4%1 edx edx+%1 edx+2%1 %0+8%1 edx+4%1 | 1200 // %0 eax eax+%1 eax+2%1 %0+4%1 edx edx+%1 edx+2%1 %0+8%1 edx+4%1 |
| 1201 | 1201 |
| 1202 #undef FIND_MIN_MAX | 1202 #undef FIND_MIN_MAX |
| 1203 #ifdef HAVE_MMX2 | 1203 #ifdef HAVE_MMX2 |
| 1274 "psubb %%mm7, %%mm6 \n\t" // max - min | 1274 "psubb %%mm7, %%mm6 \n\t" // max - min |
| 1275 "movd %%mm6, %%ecx \n\t" | 1275 "movd %%mm6, %%ecx \n\t" |
| 1276 "cmpb "MANGLE(deringThreshold)", %%cl \n\t" | 1276 "cmpb "MANGLE(deringThreshold)", %%cl \n\t" |
| 1277 " jb 1f \n\t" | 1277 " jb 1f \n\t" |
| 1278 "lea -24(%%"REG_SP"), %%"REG_c" \n\t" | 1278 "lea -24(%%"REG_SP"), %%"REG_c" \n\t" |
| 1279 "and "ALIGN_MASK", %%"REG_c" \n\t" | 1279 "and "ALIGN_MASK", %%"REG_c" \n\t" |
| 1280 PAVGB(%%mm0, %%mm7) // a=(max + min)/2 | 1280 PAVGB(%%mm0, %%mm7) // a=(max + min)/2 |
| 1281 "punpcklbw %%mm7, %%mm7 \n\t" | 1281 "punpcklbw %%mm7, %%mm7 \n\t" |
| 1282 "punpcklbw %%mm7, %%mm7 \n\t" | 1282 "punpcklbw %%mm7, %%mm7 \n\t" |
| 1283 "punpcklbw %%mm7, %%mm7 \n\t" | 1283 "punpcklbw %%mm7, %%mm7 \n\t" |
| 1284 "movq %%mm7, (%%"REG_c") \n\t" | 1284 "movq %%mm7, (%%"REG_c") \n\t" |
| 1442 if(src[stride*y + 5] > avg) t+= 32; | 1442 if(src[stride*y + 5] > avg) t+= 32; |
| 1443 if(src[stride*y + 6] > avg) t+= 64; | 1443 if(src[stride*y + 6] > avg) t+= 64; |
| 1444 if(src[stride*y + 7] > avg) t+= 128; | 1444 if(src[stride*y + 7] > avg) t+= 128; |
| 1445 if(src[stride*y + 8] > avg) t+= 256; | 1445 if(src[stride*y + 8] > avg) t+= 256; |
| 1446 if(src[stride*y + 9] > avg) t+= 512; | 1446 if(src[stride*y + 9] > avg) t+= 512; |
| 1447 | 1447 |
| 1448 t |= (~t)<<16; | 1448 t |= (~t)<<16; |
| 1449 t &= (t<<1) & (t>>1); | 1449 t &= (t<<1) & (t>>1); |
| 1450 s[y] = t; | 1450 s[y] = t; |
| 1451 } | 1451 } |
| 1452 | 1452 |
| 1453 for(y=1; y<9; y++) | 1453 for(y=1; y<9; y++) |
| 1454 { | 1454 { |
| 1455 int t = s[y-1] & s[y] & s[y+1]; | 1455 int t = s[y-1] & s[y] & s[y+1]; |
| 1456 t|= t>>16; | 1456 t|= t>>16; |
| 1457 s[y-1]= t; | 1457 s[y-1]= t; |
| 1794 | 1794 |
| 1795 DEINT_L5(%%mm0, %%mm1, (%0) , (%%REGa) , (%%REGa, %1) ) | 1795 DEINT_L5(%%mm0, %%mm1, (%0) , (%%REGa) , (%%REGa, %1) ) |
| 1796 DEINT_L5(%%mm1, %%mm0, (%%REGa) , (%%REGa, %1) , (%%REGa, %1, 2)) | 1796 DEINT_L5(%%mm1, %%mm0, (%%REGa) , (%%REGa, %1) , (%%REGa, %1, 2)) |
| 1797 DEINT_L5(%%mm0, %%mm1, (%%REGa, %1) , (%%REGa, %1, 2), (%0, %1, 4) ) | 1797 DEINT_L5(%%mm0, %%mm1, (%%REGa, %1) , (%%REGa, %1, 2), (%0, %1, 4) ) |
| 1798 DEINT_L5(%%mm1, %%mm0, (%%REGa, %1, 2), (%0, %1, 4) , (%%REGd) ) | 1798 DEINT_L5(%%mm1, %%mm0, (%%REGa, %1, 2), (%0, %1, 4) , (%%REGd) ) |
| 1799 DEINT_L5(%%mm0, %%mm1, (%0, %1, 4) , (%%REGd) , (%%REGd, %1) ) | 1799 DEINT_L5(%%mm0, %%mm1, (%0, %1, 4) , (%%REGd) , (%%REGd, %1) ) |
| 1800 DEINT_L5(%%mm1, %%mm0, (%%REGd) , (%%REGd, %1) , (%%REGd, %1, 2)) | 1800 DEINT_L5(%%mm1, %%mm0, (%%REGd) , (%%REGd, %1) , (%%REGd, %1, 2)) |
| 1801 DEINT_L5(%%mm0, %%mm1, (%%REGd, %1) , (%%REGd, %1, 2), (%0, %1, 8) ) | 1801 DEINT_L5(%%mm0, %%mm1, (%%REGd, %1) , (%%REGd, %1, 2), (%0, %1, 8) ) |
| 1802 DEINT_L5(%%mm1, %%mm0, (%%REGd, %1, 2), (%0, %1, 8) , (%%REGd, %1, 4)) | 1802 DEINT_L5(%%mm1, %%mm0, (%%REGd, %1, 2), (%0, %1, 8) , (%%REGd, %1, 4)) |
| 1803 | 1803 |
| 1804 "movq %%mm0, (%2) \n\t" | 1804 "movq %%mm0, (%2) \n\t" |
| 2109 "movd %%mm1, 96(%3) \n\t" | 2109 "movd %%mm1, 96(%3) \n\t" |
| 2110 "psrlq $32, %%mm1 \n\t" | 2110 "psrlq $32, %%mm1 \n\t" |
| 2111 "movd %%mm1, 112(%3) \n\t" | 2111 "movd %%mm1, 112(%3) \n\t" |
| 2112 | 2112 |
| 2113 "lea (%%"REG_a", %1, 4), %%"REG_a" \n\t" | 2113 "lea (%%"REG_a", %1, 4), %%"REG_a" \n\t" |
| 2114 | 2114 |
| 2115 "movq (%0, %1, 4), %%mm0 \n\t" // 12345678 | 2115 "movq (%0, %1, 4), %%mm0 \n\t" // 12345678 |
| 2116 "movq (%%"REG_a"), %%mm1 \n\t" // abcdefgh | 2116 "movq (%%"REG_a"), %%mm1 \n\t" // abcdefgh |
| 2117 "movq %%mm0, %%mm2 \n\t" // 12345678 | 2117 "movq %%mm0, %%mm2 \n\t" // 12345678 |
| 2118 "punpcklbw %%mm1, %%mm0 \n\t" // 1a2b3c4d | 2118 "punpcklbw %%mm1, %%mm0 \n\t" // 1a2b3c4d |
| 2119 "punpckhbw %%mm1, %%mm2 \n\t" // 5e6f7g8h | 2119 "punpckhbw %%mm1, %%mm2 \n\t" // 5e6f7g8h |
| 2240 { | 2240 { |
| 2241 // to save a register (FIXME do this outside of the loops) | 2241 // to save a register (FIXME do this outside of the loops) |
| 2242 tempBluredPast[127]= maxNoise[0]; | 2242 tempBluredPast[127]= maxNoise[0]; |
| 2243 tempBluredPast[128]= maxNoise[1]; | 2243 tempBluredPast[128]= maxNoise[1]; |
| 2244 tempBluredPast[129]= maxNoise[2]; | 2244 tempBluredPast[129]= maxNoise[2]; |
| 2245 | 2245 |
| 2246 #define FAST_L2_DIFF | 2246 #define FAST_L2_DIFF |
| 2247 //#define L1_DIFF //u should change the thresholds too if u try that one | 2247 //#define L1_DIFF //u should change the thresholds too if u try that one |
| 2248 #if defined (HAVE_MMX2) || defined (HAVE_3DNOW) | 2248 #if defined (HAVE_MMX2) || defined (HAVE_3DNOW) |
| 2249 asm volatile( | 2249 asm volatile( |
| 2250 "lea (%2, %2, 2), %%"REG_a" \n\t" // 3*stride | 2250 "lea (%2, %2, 2), %%"REG_a" \n\t" // 3*stride |
| 2649 int64_t dc_mask, eq_mask, both_masks; | 2649 int64_t dc_mask, eq_mask, both_masks; |
| 2650 int64_t sums[10*8*2]; | 2650 int64_t sums[10*8*2]; |
| 2651 src+= step*3; // src points to begin of the 8x8 Block | 2651 src+= step*3; // src points to begin of the 8x8 Block |
| 2652 //START_TIMER | 2652 //START_TIMER |
| 2653 asm volatile( | 2653 asm volatile( |
| 2654 "movq %0, %%mm7 \n\t" | 2654 "movq %0, %%mm7 \n\t" |
| 2655 "movq %1, %%mm6 \n\t" | 2655 "movq %1, %%mm6 \n\t" |
| 2656 : : "m" (c->mmxDcOffset[c->nonBQP]), "m" (c->mmxDcThreshold[c->nonBQP]) | 2656 : : "m" (c->mmxDcOffset[c->nonBQP]), "m" (c->mmxDcThreshold[c->nonBQP]) |
| 2657 ); | 2657 ); |
| 2658 | 2658 |
| 2659 asm volatile( | 2659 asm volatile( |
| 2660 "lea (%2, %3), %%"REG_a" \n\t" | 2660 "lea (%2, %3), %%"REG_a" \n\t" |
| 2661 // 0 1 2 3 4 5 6 7 8 9 | 2661 // 0 1 2 3 4 5 6 7 8 9 |
| 2662 // %1 eax eax+%2 eax+2%2 %1+4%2 ecx ecx+%2 ecx+2%2 %1+8%2 ecx+4%2 | 2662 // %1 eax eax+%2 eax+2%2 %1+4%2 ecx ecx+%2 ecx+2%2 %1+8%2 ecx+4%2 |
| 2663 | 2663 |
| 2682 PMINUB(%%mm1, %%mm3, %%mm5) | 2682 PMINUB(%%mm1, %%mm3, %%mm5) |
| 2683 "psubb %%mm1, %%mm2 \n\t" | 2683 "psubb %%mm1, %%mm2 \n\t" |
| 2684 "paddb %%mm7, %%mm2 \n\t" | 2684 "paddb %%mm7, %%mm2 \n\t" |
| 2685 "pcmpgtb %%mm6, %%mm2 \n\t" | 2685 "pcmpgtb %%mm6, %%mm2 \n\t" |
| 2686 "paddb %%mm2, %%mm0 \n\t" | 2686 "paddb %%mm2, %%mm0 \n\t" |
| 2687 | 2687 |
| 2688 "lea (%%"REG_a", %3, 4), %%"REG_a" \n\t" | 2688 "lea (%%"REG_a", %3, 4), %%"REG_a" \n\t" |
| 2689 | 2689 |
| 2690 "movq (%2, %3, 4), %%mm2 \n\t" | 2690 "movq (%2, %3, 4), %%mm2 \n\t" |
| 2691 PMAXUB(%%mm2, %%mm4) | 2691 PMAXUB(%%mm2, %%mm4) |
| 2692 PMINUB(%%mm2, %%mm3, %%mm5) | 2692 PMINUB(%%mm2, %%mm3, %%mm5) |
| 2793 "pcmpeqb %%mm4, %%mm0 \n\t" // diff >= QP -> FF | 2793 "pcmpeqb %%mm4, %%mm0 \n\t" // diff >= QP -> FF |
| 2794 | 2794 |
| 2795 "pxor %%mm7, %%mm1 \n\t" | 2795 "pxor %%mm7, %%mm1 \n\t" |
| 2796 "pand %%mm0, %%mm1 \n\t" | 2796 "pand %%mm0, %%mm1 \n\t" |
| 2797 "pxor %%mm1, %%mm7 \n\t" | 2797 "pxor %%mm1, %%mm7 \n\t" |
| 2798 | 2798 |
| 2799 "movq %%mm6, %%mm5 \n\t" | 2799 "movq %%mm6, %%mm5 \n\t" |
| 2800 "punpckhbw %%mm4, %%mm6 \n\t" | 2800 "punpckhbw %%mm4, %%mm6 \n\t" |
| 2801 "punpcklbw %%mm4, %%mm5 \n\t" | 2801 "punpcklbw %%mm4, %%mm5 \n\t" |
| 2802 // 4:0 5/6:First 7:Last | 2802 // 4:0 5/6:First 7:Last |
| 2803 | 2803 |
| 2824 "punpcklbw %%mm4, %%mm2 \n\t"\ | 2824 "punpcklbw %%mm4, %%mm2 \n\t"\ |
| 2825 "punpckhbw %%mm4, %%mm3 \n\t"\ | 2825 "punpckhbw %%mm4, %%mm3 \n\t"\ |
| 2826 "psubw %%mm2, %%mm0 \n\t"\ | 2826 "psubw %%mm2, %%mm0 \n\t"\ |
| 2827 "psubw %%mm3, %%mm1 \n\t" | 2827 "psubw %%mm3, %%mm1 \n\t" |
| 2828 | 2828 |
| 2829 | 2829 |
| 2830 NEXT //0 | 2830 NEXT //0 |
| 2831 NEXT //1 | 2831 NEXT //1 |
| 2832 NEXT //2 | 2832 NEXT //2 |
| 2833 "movq %%mm0, (%3) \n\t" | 2833 "movq %%mm0, (%3) \n\t" |
| 2834 "movq %%mm1, 8(%3) \n\t" | 2834 "movq %%mm1, 8(%3) \n\t" |
| 2858 "movq %%mm1, 72(%3) \n\t" | 2858 "movq %%mm1, 72(%3) \n\t" |
| 2859 | 2859 |
| 2860 "movq %%mm7, %%mm6 \n\t" | 2860 "movq %%mm7, %%mm6 \n\t" |
| 2861 "punpckhbw %%mm4, %%mm7 \n\t" | 2861 "punpckhbw %%mm4, %%mm7 \n\t" |
| 2862 "punpcklbw %%mm4, %%mm6 \n\t" | 2862 "punpcklbw %%mm4, %%mm6 \n\t" |
| 2863 | 2863 |
| 2864 NEXT //7 | 2864 NEXT //7 |
| 2865 "mov %4, %0 \n\t" | 2865 "mov %4, %0 \n\t" |
| 2866 "add %1, %0 \n\t" | 2866 "add %1, %0 \n\t" |
| 2867 PREV //0 | 2867 PREV //0 |
| 2868 "movq %%mm0, 80(%3) \n\t" | 2868 "movq %%mm0, 80(%3) \n\t" |
| 2871 PREV //1 | 2871 PREV //1 |
| 2872 "paddw %%mm6, %%mm0 \n\t" | 2872 "paddw %%mm6, %%mm0 \n\t" |
| 2873 "paddw %%mm7, %%mm1 \n\t" | 2873 "paddw %%mm7, %%mm1 \n\t" |
| 2874 "movq %%mm0, 96(%3) \n\t" | 2874 "movq %%mm0, 96(%3) \n\t" |
| 2875 "movq %%mm1, 104(%3) \n\t" | 2875 "movq %%mm1, 104(%3) \n\t" |
| 2876 | 2876 |
| 2877 PREV //2 | 2877 PREV //2 |
| 2878 "paddw %%mm6, %%mm0 \n\t" | 2878 "paddw %%mm6, %%mm0 \n\t" |
| 2879 "paddw %%mm7, %%mm1 \n\t" | 2879 "paddw %%mm7, %%mm1 \n\t" |
| 2880 "movq %%mm0, 112(%3) \n\t" | 2880 "movq %%mm0, 112(%3) \n\t" |
| 2881 "movq %%mm1, 120(%3) \n\t" | 2881 "movq %%mm1, 120(%3) \n\t" |
| 3447 c.packedYOffset|= c.packedYOffset<<32; | 3447 c.packedYOffset|= c.packedYOffset<<32; |
| 3448 c.packedYOffset|= c.packedYOffset<<16; | 3448 c.packedYOffset|= c.packedYOffset<<16; |
| 3449 | 3449 |
| 3450 c.packedYScale|= c.packedYScale<<32; | 3450 c.packedYScale|= c.packedYScale<<32; |
| 3451 c.packedYScale|= c.packedYScale<<16; | 3451 c.packedYScale|= c.packedYScale<<16; |
| 3452 | 3452 |
| 3453 if(mode & LEVEL_FIX) QPCorrecture= (int)(scale*256*256 + 0.5); | 3453 if(mode & LEVEL_FIX) QPCorrecture= (int)(scale*256*256 + 0.5); |
| 3454 else QPCorrecture= 256*256; | 3454 else QPCorrecture= 256*256; |
| 3455 } | 3455 } |
| 3456 else | 3456 else |
| 3457 { | 3457 { |
| 3610 "movd %1, %%mm7 \n\t" | 3610 "movd %1, %%mm7 \n\t" |
| 3611 "packuswb %%mm7, %%mm7 \n\t" // 0, 0, 0, QP, 0, 0, 0, QP | 3611 "packuswb %%mm7, %%mm7 \n\t" // 0, 0, 0, QP, 0, 0, 0, QP |
| 3612 "packuswb %%mm7, %%mm7 \n\t" // 0,QP, 0, QP, 0,QP, 0, QP | 3612 "packuswb %%mm7, %%mm7 \n\t" // 0,QP, 0, QP, 0,QP, 0, QP |
| 3613 "packuswb %%mm7, %%mm7 \n\t" // QP,..., QP | 3613 "packuswb %%mm7, %%mm7 \n\t" // QP,..., QP |
| 3614 "movq %%mm7, %0 \n\t" | 3614 "movq %%mm7, %0 \n\t" |
| 3615 : "=m" (c.pQPb) | 3615 : "=m" (c.pQPb) |
| 3616 : "r" (QP) | 3616 : "r" (QP) |
| 3617 ); | 3617 ); |
| 3618 #endif | 3618 #endif |
| 3619 | 3619 |
| 3620 | 3620 |
