Mercurial > libavcodec.hg
comparison libpostproc/postprocess_template.c @ 789:54079a650ba8 libavcodec
using fewer registers (fixes compilation bug hopefully)
| author | michael |
|---|---|
| date | Tue, 29 Oct 2002 09:16:06 +0000 |
| parents | 425d71e81c37 |
| children | 4f61ca80b6c1 |
comparison
equal
deleted
inserted
replaced
| 788:425d71e81c37 | 789:54079a650ba8 |
|---|---|
| 1894 */ | 1894 */ |
| 1895 static inline void RENAME(transpose1)(uint8_t *dst1, uint8_t *dst2, uint8_t *src, int srcStride) | 1895 static inline void RENAME(transpose1)(uint8_t *dst1, uint8_t *dst2, uint8_t *src, int srcStride) |
| 1896 { | 1896 { |
| 1897 asm( | 1897 asm( |
| 1898 "leal (%0, %1), %%eax \n\t" | 1898 "leal (%0, %1), %%eax \n\t" |
| 1899 "leal (%%eax, %1, 4), %%edx \n\t" | |
| 1900 // 0 1 2 3 4 5 6 7 8 9 | 1899 // 0 1 2 3 4 5 6 7 8 9 |
| 1901 // %0 eax eax+%1 eax+2%1 %0+4%1 edx edx+%1 edx+2%1 %0+8%1 edx+4%1 | 1900 // %0 eax eax+%1 eax+2%1 %0+4%1 edx edx+%1 edx+2%1 %0+8%1 edx+4%1 |
| 1902 "movq (%0), %%mm0 \n\t" // 12345678 | 1901 "movq (%0), %%mm0 \n\t" // 12345678 |
| 1903 "movq (%%eax), %%mm1 \n\t" // abcdefgh | 1902 "movq (%%eax), %%mm1 \n\t" // abcdefgh |
| 1904 "movq %%mm0, %%mm2 \n\t" // 12345678 | 1903 "movq %%mm0, %%mm2 \n\t" // 12345678 |
| 1931 "movd %%mm2, 80(%3) \n\t" | 1930 "movd %%mm2, 80(%3) \n\t" |
| 1932 "movd %%mm1, 96(%3) \n\t" | 1931 "movd %%mm1, 96(%3) \n\t" |
| 1933 "psrlq $32, %%mm1 \n\t" | 1932 "psrlq $32, %%mm1 \n\t" |
| 1934 "movd %%mm1, 112(%3) \n\t" | 1933 "movd %%mm1, 112(%3) \n\t" |
| 1935 | 1934 |
| 1935 "leal (%%eax, %1, 4), %%eax \n\t" | |
| 1936 | |
| 1936 "movq (%0, %1, 4), %%mm0 \n\t" // 12345678 | 1937 "movq (%0, %1, 4), %%mm0 \n\t" // 12345678 |
| 1937 "movq (%%edx), %%mm1 \n\t" // abcdefgh | 1938 "movq (%%eax), %%mm1 \n\t" // abcdefgh |
| 1938 "movq %%mm0, %%mm2 \n\t" // 12345678 | 1939 "movq %%mm0, %%mm2 \n\t" // 12345678 |
| 1939 "punpcklbw %%mm1, %%mm0 \n\t" // 1a2b3c4d | 1940 "punpcklbw %%mm1, %%mm0 \n\t" // 1a2b3c4d |
| 1940 "punpckhbw %%mm1, %%mm2 \n\t" // 5e6f7g8h | 1941 "punpckhbw %%mm1, %%mm2 \n\t" // 5e6f7g8h |
| 1941 | 1942 |
| 1942 "movq (%%edx, %1), %%mm1 \n\t" | 1943 "movq (%%eax, %1), %%mm1 \n\t" |
| 1943 "movq (%%edx, %1, 2), %%mm3 \n\t" | 1944 "movq (%%eax, %1, 2), %%mm3 \n\t" |
| 1944 "movq %%mm1, %%mm4 \n\t" | 1945 "movq %%mm1, %%mm4 \n\t" |
| 1945 "punpcklbw %%mm3, %%mm1 \n\t" | 1946 "punpcklbw %%mm3, %%mm1 \n\t" |
| 1946 "punpckhbw %%mm3, %%mm4 \n\t" | 1947 "punpckhbw %%mm3, %%mm4 \n\t" |
| 1947 | 1948 |
| 1948 "movq %%mm0, %%mm3 \n\t" | 1949 "movq %%mm0, %%mm3 \n\t" |
| 1967 "psrlq $32, %%mm1 \n\t" | 1968 "psrlq $32, %%mm1 \n\t" |
| 1968 "movd %%mm1, 116(%3) \n\t" | 1969 "movd %%mm1, 116(%3) \n\t" |
| 1969 | 1970 |
| 1970 | 1971 |
| 1971 :: "r" (src), "r" (srcStride), "r" (dst1), "r" (dst2) | 1972 :: "r" (src), "r" (srcStride), "r" (dst1), "r" (dst2) |
| 1972 : "%eax", "%edx" | 1973 : "%eax" |
| 1973 ); | 1974 ); |
| 1974 } | 1975 } |
| 1975 | 1976 |
| 1976 /** | 1977 /** |
| 1977 * transposes the given 8x8 block | 1978 * transposes the given 8x8 block |
