Replace some "m" constraints by MANGLE to avoid issues with some compilers not

being able to compile it and deduplicate the code at the same time.

Originally committed as revision 30978 to svn://svn.mplayerhq.hu/mplayer/trunk/libswscale
release/0.6
Reimar Döffinger 15 years ago
parent c7512f6bb3
commit 5b03661fa7
  1. 149
      libswscale/rgb2rgb_template.c

@ -122,6 +122,43 @@ static inline void RENAME(rgb24tobgr32)(const uint8_t *src, uint8_t *dst, long s
}
}
#define STORE_BGR24_MMX \
"psrlq $8, %%mm2 \n\t" \
"psrlq $8, %%mm3 \n\t" \
"psrlq $8, %%mm6 \n\t" \
"psrlq $8, %%mm7 \n\t" \
"pand "MANGLE(mask24l)", %%mm0\n\t" \
"pand "MANGLE(mask24l)", %%mm1\n\t" \
"pand "MANGLE(mask24l)", %%mm4\n\t" \
"pand "MANGLE(mask24l)", %%mm5\n\t" \
"pand "MANGLE(mask24h)", %%mm2\n\t" \
"pand "MANGLE(mask24h)", %%mm3\n\t" \
"pand "MANGLE(mask24h)", %%mm6\n\t" \
"pand "MANGLE(mask24h)", %%mm7\n\t" \
"por %%mm2, %%mm0 \n\t" \
"por %%mm3, %%mm1 \n\t" \
"por %%mm6, %%mm4 \n\t" \
"por %%mm7, %%mm5 \n\t" \
\
"movq %%mm1, %%mm2 \n\t" \
"movq %%mm4, %%mm3 \n\t" \
"psllq $48, %%mm2 \n\t" \
"psllq $32, %%mm3 \n\t" \
"pand "MANGLE(mask24hh)", %%mm2\n\t" \
"pand "MANGLE(mask24hhh)", %%mm3\n\t" \
"por %%mm2, %%mm0 \n\t" \
"psrlq $16, %%mm1 \n\t" \
"psrlq $32, %%mm4 \n\t" \
"psllq $16, %%mm5 \n\t" \
"por %%mm3, %%mm1 \n\t" \
"pand "MANGLE(mask24hhhh)", %%mm5\n\t" \
"por %%mm5, %%mm4 \n\t" \
\
MOVNTQ" %%mm0, %0 \n\t" \
MOVNTQ" %%mm1, 8%0 \n\t" \
MOVNTQ" %%mm4, 16%0"
static inline void RENAME(rgb32tobgr24)(const uint8_t *src, uint8_t *dst, long src_size)
{
uint8_t *dest = dst;
@ -145,43 +182,9 @@ static inline void RENAME(rgb32tobgr24)(const uint8_t *src, uint8_t *dst, long s
"movq %%mm1, %%mm3 \n\t"
"movq %%mm4, %%mm6 \n\t"
"movq %%mm5, %%mm7 \n\t"
"psrlq $8, %%mm2 \n\t"
"psrlq $8, %%mm3 \n\t"
"psrlq $8, %%mm6 \n\t"
"psrlq $8, %%mm7 \n\t"
"pand %2, %%mm0 \n\t"
"pand %2, %%mm1 \n\t"
"pand %2, %%mm4 \n\t"
"pand %2, %%mm5 \n\t"
"pand %3, %%mm2 \n\t"
"pand %3, %%mm3 \n\t"
"pand %3, %%mm6 \n\t"
"pand %3, %%mm7 \n\t"
"por %%mm2, %%mm0 \n\t"
"por %%mm3, %%mm1 \n\t"
"por %%mm6, %%mm4 \n\t"
"por %%mm7, %%mm5 \n\t"
"movq %%mm1, %%mm2 \n\t"
"movq %%mm4, %%mm3 \n\t"
"psllq $48, %%mm2 \n\t"
"psllq $32, %%mm3 \n\t"
"pand %4, %%mm2 \n\t"
"pand %5, %%mm3 \n\t"
"por %%mm2, %%mm0 \n\t"
"psrlq $16, %%mm1 \n\t"
"psrlq $32, %%mm4 \n\t"
"psllq $16, %%mm5 \n\t"
"por %%mm3, %%mm1 \n\t"
"pand %6, %%mm5 \n\t"
"por %%mm5, %%mm4 \n\t"
MOVNTQ" %%mm0, %0 \n\t"
MOVNTQ" %%mm1, 8%0 \n\t"
MOVNTQ" %%mm4, 16%0"
STORE_BGR24_MMX
:"=m"(*dest)
:"m"(*s),"m"(mask24l),
"m"(mask24h),"m"(mask24hh),"m"(mask24hhh),"m"(mask24hhhh)
:"m"(*s)
:"memory");
dest += 24;
s += 32;
@ -971,43 +974,10 @@ static inline void RENAME(rgb15tobgr24)(const uint8_t *src, uint8_t *dst, long s
"movq %%mm0, %%mm2 \n\t"
"movq %%mm1, %%mm3 \n\t"
"psrlq $8, %%mm2 \n\t"
"psrlq $8, %%mm3 \n\t"
"psrlq $8, %%mm6 \n\t"
"psrlq $8, %%mm7 \n\t"
"pand %2, %%mm0 \n\t"
"pand %2, %%mm1 \n\t"
"pand %2, %%mm4 \n\t"
"pand %2, %%mm5 \n\t"
"pand %3, %%mm2 \n\t"
"pand %3, %%mm3 \n\t"
"pand %3, %%mm6 \n\t"
"pand %3, %%mm7 \n\t"
"por %%mm2, %%mm0 \n\t"
"por %%mm3, %%mm1 \n\t"
"por %%mm6, %%mm4 \n\t"
"por %%mm7, %%mm5 \n\t"
"movq %%mm1, %%mm2 \n\t"
"movq %%mm4, %%mm3 \n\t"
"psllq $48, %%mm2 \n\t"
"psllq $32, %%mm3 \n\t"
"pand %4, %%mm2 \n\t"
"pand %5, %%mm3 \n\t"
"por %%mm2, %%mm0 \n\t"
"psrlq $16, %%mm1 \n\t"
"psrlq $32, %%mm4 \n\t"
"psllq $16, %%mm5 \n\t"
"por %%mm3, %%mm1 \n\t"
"pand %6, %%mm5 \n\t"
"por %%mm5, %%mm4 \n\t"
MOVNTQ" %%mm0, %0 \n\t"
MOVNTQ" %%mm1, 8%0 \n\t"
MOVNTQ" %%mm4, 16%0"
STORE_BGR24_MMX
:"=m"(*d)
:"m"(*s),"m"(mask24l),"m"(mask24h),"m"(mask24hh),"m"(mask24hhh),"m"(mask24hhhh)
:"m"(*s)
:"memory");
d += 24;
s += 8;
@ -1110,43 +1080,10 @@ static inline void RENAME(rgb16tobgr24)(const uint8_t *src, uint8_t *dst, long s
"movq %%mm0, %%mm2 \n\t"
"movq %%mm1, %%mm3 \n\t"
"psrlq $8, %%mm2 \n\t"
"psrlq $8, %%mm3 \n\t"
"psrlq $8, %%mm6 \n\t"
"psrlq $8, %%mm7 \n\t"
"pand %2, %%mm0 \n\t"
"pand %2, %%mm1 \n\t"
"pand %2, %%mm4 \n\t"
"pand %2, %%mm5 \n\t"
"pand %3, %%mm2 \n\t"
"pand %3, %%mm3 \n\t"
"pand %3, %%mm6 \n\t"
"pand %3, %%mm7 \n\t"
"por %%mm2, %%mm0 \n\t"
"por %%mm3, %%mm1 \n\t"
"por %%mm6, %%mm4 \n\t"
"por %%mm7, %%mm5 \n\t"
"movq %%mm1, %%mm2 \n\t"
"movq %%mm4, %%mm3 \n\t"
"psllq $48, %%mm2 \n\t"
"psllq $32, %%mm3 \n\t"
"pand %4, %%mm2 \n\t"
"pand %5, %%mm3 \n\t"
"por %%mm2, %%mm0 \n\t"
"psrlq $16, %%mm1 \n\t"
"psrlq $32, %%mm4 \n\t"
"psllq $16, %%mm5 \n\t"
"por %%mm3, %%mm1 \n\t"
"pand %6, %%mm5 \n\t"
"por %%mm5, %%mm4 \n\t"
MOVNTQ" %%mm0, %0 \n\t"
MOVNTQ" %%mm1, 8%0 \n\t"
MOVNTQ" %%mm4, 16%0"
STORE_BGR24_MMX
:"=m"(*d)
:"m"(*s),"m"(mask24l),"m"(mask24h),"m"(mask24hh),"m"(mask24hhh),"m"(mask24hhhh)
:"m"(*s)
:"memory");
d += 24;
s += 8;

Loading…
Cancel
Save