diff options
author | diego <diego@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2008-04-12 22:42:00 +0000 |
---|---|---|
committer | diego <diego@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2008-04-12 22:42:00 +0000 |
commit | fabb1b271a3f55cb5d0a3b2dbefc0da910ecd70c (patch) | |
tree | f09fe1bcbc177c762ca6a614599cd377e2b26457 /libmpeg2/mmx.h | |
parent | 751c9867194aac6a59630c66bd56e43a13296de2 (diff) |
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.h | 24 |
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) |