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