summaryrefslogtreecommitdiffstats
path: root/libmpeg2/mmx.h
diff options
context:
space:
mode:
authordiego <diego@b3059339-0415-0410-9bf9-f77b7e298cf2>2008-04-12 22:42:00 +0000
committerdiego <diego@b3059339-0415-0410-9bf9-f77b7e298cf2>2008-04-12 22:42:00 +0000
commitfabb1b271a3f55cb5d0a3b2dbefc0da910ecd70c (patch)
treef09fe1bcbc177c762ca6a614599cd377e2b26457 /libmpeg2/mmx.h
parent751c9867194aac6a59630c66bd56e43a13296de2 (diff)
downloadmpv-fabb1b271a3f55cb5d0a3b2dbefc0da910ecd70c.tar.bz2
mpv-fabb1b271a3f55cb5d0a3b2dbefc0da910ecd70c.tar.xz
Backport SSE2-optimized IDCT routines from upstream libmpeg2.
Thanks to Alexander Strange for finding and fixing some bugs. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@26425 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpeg2/mmx.h')
-rw-r--r--libmpeg2/mmx.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/libmpeg2/mmx.h b/libmpeg2/mmx.h
index 08b4d47760..fcb92870d2 100644
--- a/libmpeg2/mmx.h
+++ b/libmpeg2/mmx.h
@@ -257,6 +257,30 @@ typedef union {
#define psadbw_m2r(var,reg) mmx_m2r (psadbw, var, reg)
#define psadbw_r2r(regs,regd) mmx_r2r (psadbw, regs, regd)
+
+/* SSE2 */
+
+typedef union {
+ long long q[2]; /* Quadword (64-bit) value */
+ unsigned long long uq[2]; /* Unsigned Quadword */
+ int d[4]; /* 2 Doubleword (32-bit) values */
+ unsigned int ud[4]; /* 2 Unsigned Doubleword */
+ short w[8]; /* 4 Word (16-bit) values */
+ unsigned short uw[8]; /* 4 Unsigned Word */
+ char b[16]; /* 8 Byte (8-bit) values */
+ unsigned char ub[16]; /* 8 Unsigned Byte */
+ float s[4]; /* Single-precision (32-bit) value */
+} ATTR_ALIGN(16) sse_t; /* On an 16-byte (128-bit) boundary */
+
+#define movdqu_m2r(var,reg) mmx_m2r (movdqu, var, reg)
+#define movdqu_r2m(reg,var) mmx_r2m (movdqu, reg, var)
+#define movdqu_r2r(regs,regd) mmx_r2r (movdqu, regs, regd)
+#define movdqa_m2r(var,reg) mmx_m2r (movdqa, var, reg)
+#define movdqa_r2m(reg,var) mmx_r2m (movdqa, reg, var)
+#define movdqa_r2r(regs,regd) mmx_r2r (movdqa, regs, regd)
+
+#define pshufd_r2r(regs,regd,imm) mmx_r2ri(pshufd, regs, regd, imm)
+
#define pshufw_m2r(var,reg,imm) mmx_m2ri(pshufw, var, reg, imm)
#define pshufw_r2r(regs,regd,imm) mmx_r2ri(pshufw, regs, regd, imm)