Mercurial > libavcodec.hg
comparison ppc/mpegvideo_altivec.c @ 3983:fec25fd9febf libavcodec
Move TRANSPOSE8 macro to dsputil_altivec.h.
(was duplicated in libavcodec/ppc/vc1dsp_altivec.c
nd libavcodec/ppc/mpegvideo_altivec.c, and will be
used in upcoming routines for h264_altivec.c)
author | gpoirier |
---|---|
date | Tue, 10 Oct 2006 08:01:19 +0000 |
parents | b28edd190fc0 |
children | 522e52c630bd |
comparison
equal
deleted
inserted
replaced
3982:af16271634c2 | 3983:fec25fd9febf |
---|---|
50 b = vec_mergel(_trans_ach, _trans_bdh); \ | 50 b = vec_mergel(_trans_ach, _trans_bdh); \ |
51 c = vec_mergeh(_trans_acl, _trans_bdl); \ | 51 c = vec_mergeh(_trans_acl, _trans_bdl); \ |
52 d = vec_mergel(_trans_acl, _trans_bdl); \ | 52 d = vec_mergel(_trans_acl, _trans_bdl); \ |
53 } while (0) | 53 } while (0) |
54 | 54 |
55 #define TRANSPOSE8(a,b,c,d,e,f,g,h) \ | |
56 do { \ | |
57 __typeof__(a) _A1, _B1, _C1, _D1, _E1, _F1, _G1, _H1; \ | |
58 __typeof__(a) _A2, _B2, _C2, _D2, _E2, _F2, _G2, _H2; \ | |
59 \ | |
60 _A1 = vec_mergeh (a, e); \ | |
61 _B1 = vec_mergel (a, e); \ | |
62 _C1 = vec_mergeh (b, f); \ | |
63 _D1 = vec_mergel (b, f); \ | |
64 _E1 = vec_mergeh (c, g); \ | |
65 _F1 = vec_mergel (c, g); \ | |
66 _G1 = vec_mergeh (d, h); \ | |
67 _H1 = vec_mergel (d, h); \ | |
68 \ | |
69 _A2 = vec_mergeh (_A1, _E1); \ | |
70 _B2 = vec_mergel (_A1, _E1); \ | |
71 _C2 = vec_mergeh (_B1, _F1); \ | |
72 _D2 = vec_mergel (_B1, _F1); \ | |
73 _E2 = vec_mergeh (_C1, _G1); \ | |
74 _F2 = vec_mergel (_C1, _G1); \ | |
75 _G2 = vec_mergeh (_D1, _H1); \ | |
76 _H2 = vec_mergel (_D1, _H1); \ | |
77 \ | |
78 a = vec_mergeh (_A2, _E2); \ | |
79 b = vec_mergel (_A2, _E2); \ | |
80 c = vec_mergeh (_B2, _F2); \ | |
81 d = vec_mergel (_B2, _F2); \ | |
82 e = vec_mergeh (_C2, _G2); \ | |
83 f = vec_mergel (_C2, _G2); \ | |
84 g = vec_mergeh (_D2, _H2); \ | |
85 h = vec_mergel (_D2, _H2); \ | |
86 } while (0) | |
87 | |
88 | 55 |
89 // Loads a four-byte value (int or float) from the target address | 56 // Loads a four-byte value (int or float) from the target address |
90 // into every element in the target vector. Only works if the | 57 // into every element in the target vector. Only works if the |
91 // target address is four-byte aligned (which should be always). | 58 // target address is four-byte aligned (which should be always). |
92 #define LOAD4(vec, address) \ | 59 #define LOAD4(vec, address) \ |