summaryrefslogtreecommitdiffstats
path: root/postproc
diff options
context:
space:
mode:
authormichael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-10-26 09:34:41 +0000
committermichael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-10-26 09:34:41 +0000
commitf7618d27fe49302314d8ed3652696417ee9083c1 (patch)
tree7008d747eaa0d89fc62bea1a6dae60190eb6396c /postproc
parentae85163a58df1bfb2e5694e606e73513cf6aeb86 (diff)
downloadmpv-f7618d27fe49302314d8ed3652696417ee9083c1.tar.bz2
mpv-f7618d27fe49302314d8ed3652696417ee9083c1.tar.xz
faster dering
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@2479 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'postproc')
-rw-r--r--postproc/postprocess.c22
-rw-r--r--postproc/postprocess_template.c22
2 files changed, 26 insertions, 18 deletions
diff --git a/postproc/postprocess.c b/postproc/postprocess.c
index e13c591978..2447f1e900 100644
--- a/postproc/postprocess.c
+++ b/postproc/postprocess.c
@@ -1978,16 +1978,19 @@ FIND_MIN_MAX((%0, %1, 8))
"movq " #lx ", " #t1 " \n\t" /* src[-1] */\
PAVGB(t0, lx) /* (src[-1] + src[+1])/2 */\
PAVGB(sx, lx) /* (src[-1] + 2src[0] + src[+1])/4 */\
- "psubusb temp0, " #t1 " \n\t"\
- "psubusb temp0, " #t0 " \n\t"\
- "psubusb temp0, " #sx " \n\t"\
- "pcmpeqb b00, " #t1 " \n\t" /* src[-1] > a ? 0 : -1*/\
- "pcmpeqb b00, " #t0 " \n\t" /* src[+1] > a ? 0 : -1*/\
- "pcmpeqb b00, " #sx " \n\t" /* src[0] > a ? 0 : -1*/\
+ PAVGB(lx, pplx) \
+ "movq " #lx ", temp1 \n\t"\
+ "movq temp0, " #lx " \n\t"\
+ "psubusb " #lx ", " #t1 " \n\t"\
+ "psubusb " #lx ", " #t0 " \n\t"\
+ "psubusb " #lx ", " #sx " \n\t"\
+ "movq b00, " #lx " \n\t"\
+ "pcmpeqb " #lx ", " #t1 " \n\t" /* src[-1] > a ? 0 : -1*/\
+ "pcmpeqb " #lx ", " #t0 " \n\t" /* src[+1] > a ? 0 : -1*/\
+ "pcmpeqb " #lx ", " #sx " \n\t" /* src[0] > a ? 0 : -1*/\
"paddb " #t1 ", " #t0 " \n\t"\
"paddb " #t0 ", " #sx " \n\t"\
\
- PAVGB(lx, pplx) \
PAVGB(plx, pplx) /* filtered */\
"movq " #dst ", " #t0 " \n\t" /* dst */\
"movq " #t0 ", " #t1 " \n\t" /* dst */\
@@ -1999,11 +2002,12 @@ FIND_MIN_MAX((%0, %1, 8))
"paddb " #psx ", " #ppsx " \n\t"\
"#paddb b02, " #ppsx " \n\t"\
"pand b08, " #ppsx " \n\t"\
- "pcmpeqb b00, " #ppsx " \n\t"\
+ "pcmpeqb " #lx ", " #ppsx " \n\t"\
"pand " #ppsx ", " #pplx " \n\t"\
"pandn " #dst ", " #ppsx " \n\t"\
"por " #pplx ", " #ppsx " \n\t"\
- "movq " #ppsx ", " #dst " \n\t"
+ "movq " #ppsx ", " #dst " \n\t"\
+ "movq temp1, " #lx " \n\t"
/*
0000000
diff --git a/postproc/postprocess_template.c b/postproc/postprocess_template.c
index e13c591978..2447f1e900 100644
--- a/postproc/postprocess_template.c
+++ b/postproc/postprocess_template.c
@@ -1978,16 +1978,19 @@ FIND_MIN_MAX((%0, %1, 8))
"movq " #lx ", " #t1 " \n\t" /* src[-1] */\
PAVGB(t0, lx) /* (src[-1] + src[+1])/2 */\
PAVGB(sx, lx) /* (src[-1] + 2src[0] + src[+1])/4 */\
- "psubusb temp0, " #t1 " \n\t"\
- "psubusb temp0, " #t0 " \n\t"\
- "psubusb temp0, " #sx " \n\t"\
- "pcmpeqb b00, " #t1 " \n\t" /* src[-1] > a ? 0 : -1*/\
- "pcmpeqb b00, " #t0 " \n\t" /* src[+1] > a ? 0 : -1*/\
- "pcmpeqb b00, " #sx " \n\t" /* src[0] > a ? 0 : -1*/\
+ PAVGB(lx, pplx) \
+ "movq " #lx ", temp1 \n\t"\
+ "movq temp0, " #lx " \n\t"\
+ "psubusb " #lx ", " #t1 " \n\t"\
+ "psubusb " #lx ", " #t0 " \n\t"\
+ "psubusb " #lx ", " #sx " \n\t"\
+ "movq b00, " #lx " \n\t"\
+ "pcmpeqb " #lx ", " #t1 " \n\t" /* src[-1] > a ? 0 : -1*/\
+ "pcmpeqb " #lx ", " #t0 " \n\t" /* src[+1] > a ? 0 : -1*/\
+ "pcmpeqb " #lx ", " #sx " \n\t" /* src[0] > a ? 0 : -1*/\
"paddb " #t1 ", " #t0 " \n\t"\
"paddb " #t0 ", " #sx " \n\t"\
\
- PAVGB(lx, pplx) \
PAVGB(plx, pplx) /* filtered */\
"movq " #dst ", " #t0 " \n\t" /* dst */\
"movq " #t0 ", " #t1 " \n\t" /* dst */\
@@ -1999,11 +2002,12 @@ FIND_MIN_MAX((%0, %1, 8))
"paddb " #psx ", " #ppsx " \n\t"\
"#paddb b02, " #ppsx " \n\t"\
"pand b08, " #ppsx " \n\t"\
- "pcmpeqb b00, " #ppsx " \n\t"\
+ "pcmpeqb " #lx ", " #ppsx " \n\t"\
"pand " #ppsx ", " #pplx " \n\t"\
"pandn " #dst ", " #ppsx " \n\t"\
"por " #pplx ", " #ppsx " \n\t"\
- "movq " #ppsx ", " #dst " \n\t"
+ "movq " #ppsx ", " #dst " \n\t"\
+ "movq temp1, " #lx " \n\t"
/*
0000000