MpegPlugin build problem with GCC 3.3
Joshua 'Schwa' Gargus
schwa at cc.gatech.edu
Sun Jul 27 06:47:12 UTC 2003
Hi,
There is a problems with the asm syntax in
platforms/Cross/plugins/Mpeg3Plugin/libmpeg/video/output.c
that is fixed with the attached patch. I think it should
work with older compilers as well, but I don't have one
handy to check with. Could someone give it a try?
Joshua
-------------- next part --------------
264c264
< asm("
---
> asm(
267,281c267,281
< movd (%0), %%mm0; /* Load y 0x00000000000000yy */
< movd (%1), %%mm1; /* Load u 0x00000000000000cr */
< movq %%mm0, %%mm3; /* Copy y to temp */
< psllq $16, %%mm1; /* Shift u 0x0000000000cr0000 */
< movd (%2), %%mm2; /* Load v 0x00000000000000cb */
< psllq $16, %%mm3; /* Shift y */
< movq %%mm1, %%mm4; /* Copy u to temp */
< por %%mm3, %%mm0; /* Overlay new y byte 0x0000000000yy00yy */
< psllq $16, %%mm4; /* Shift u */
< movq %%mm2, %%mm5; /* Copy v to temp */
< psllq $16, %%mm3; /* Shift y */
< por %%mm4, %%mm1; /* Overlay new u byte 0x000000cr00cr0000 */
< psllq $16, %%mm5; /* Shift v */
< por %%mm3, %%mm0; /* Overlay new y byte 0x000000yy00yy00yy */
< por %%mm5, %%mm2; /* Overlay new v byte 0x0000000000cb00cb */
---
> "movd (%0), %%mm0;" /* Load y 0x00000000000000yy */
> "movd (%1), %%mm1;" /* Load u 0x00000000000000cr */
> "movq %%mm0, %%mm3;" /* Copy y to temp */
> "psllq $16, %%mm1;" /* Shift u 0x0000000000cr0000 */
> "movd (%2), %%mm2;" /* Load v 0x00000000000000cb */
> "psllq $16, %%mm3;" /* Shift y */
> "movq %%mm1, %%mm4;" /* Copy u to temp */
> "por %%mm3, %%mm0;" /* Overlay new y byte 0x0000000000yy00yy */
> "psllq $16, %%mm4;" /* Shift u */
> "movq %%mm2, %%mm5;" /* Copy v to temp */
> "psllq $16, %%mm3;" /* Shift y */
> "por %%mm4, %%mm1;" /* Overlay new u byte 0x000000cr00cr0000 */
> "psllq $16, %%mm5;" /* Shift v */
> "por %%mm3, %%mm0;" /* Overlay new y byte 0x000000yy00yy00yy */
> "por %%mm5, %%mm2;" /* Overlay new v byte 0x0000000000cb00cb */
284,288c284,288
< psubw _mpeg3_MMX_U_80, %%mm1; /* Subtract 128 from u 0x000000uu00uu0000 */
< pmullw _mpeg3_MMX_U_COEF, %%mm1; /* Multiply u coeffs 0x0000uuuuuuuu0000 */
< psllw $6, %%mm0; /* Shift y coeffs 0x0000yyy0yyy0yyy0 */
< psubw _mpeg3_MMX_V_80, %%mm2; /* Subtract 128 from v 0x0000000000cb00cb */
< pmullw _mpeg3_MMX_V_COEF, %%mm2; /* Multiply v coeffs 0x0000crcrcrcrcrcr */
---
> "psubw _mpeg3_MMX_U_80, %%mm1;" /* Subtract 128 from u 0x000000uu00uu0000 */
> "pmullw _mpeg3_MMX_U_COEF, %%mm1;" /* Multiply u coeffs 0x0000uuuuuuuu0000 */
> "psllw $6, %%mm0;" /* Shift y coeffs 0x0000yyy0yyy0yyy0 */
> "psubw _mpeg3_MMX_V_80, %%mm2;" /* Subtract 128 from v 0x0000000000cb00cb */
> "pmullw _mpeg3_MMX_V_COEF, %%mm2;" /* Multiply v coeffs 0x0000crcrcrcrcrcr */
291,296c291,295
< paddsw %%mm1, %%mm0; /* Add u to result */
< paddsw %%mm2, %%mm0; /* Add v to result 0x0000rrrrggggbbbb */
< psraw $6, %%mm0; /* Demote precision */
< packuswb %%mm0, %%mm0; /* Pack into ARGB 0x0000000000rrggbb */
< movd %%mm0, (%3); /* Store output */
< "
---
> "paddsw %%mm1, %%mm0;" /* Add u to result */
> "paddsw %%mm2, %%mm0;" /* Add v to result 0x0000rrrrggggbbbb */
> "psraw $6, %%mm0;" /* Demote precision */
> "packuswb %%mm0, %%mm0;" /* Pack into ARGB 0x0000000000rrggbb */
> "movd %%mm0, (%3);" /* Store output */
306c305
< asm("
---
> asm(
310,324c309,323
< psubsw _mpeg3_MMX_601_Y_DIFF, %%mm0; /* Subtract 16 from y */
< movd (%1), %%mm1; /* Load u 0x00000000000000cr */
< movq %%mm0, %%mm3; /* Copy y to temp */
< psllq $16, %%mm1; /* Shift u 0x0000000000cr0000 */
< movd (%2), %%mm2; /* Load v 0x00000000000000cb */
< psllq $16, %%mm3; /* Shift y */
< movq %%mm1, %%mm4; /* Copy u to temp */
< por %%mm3, %%mm0; /* Overlay new y byte 0x0000000000yy00yy */
< psllq $16, %%mm4; /* Shift u */
< movq %%mm2, %%mm5; /* Copy v to temp */
< psllq $16, %%mm3; /* Shift y */
< por %%mm4, %%mm1; /* Overlay new u byte 0x000000cr00cr0000 */
< psllq $16, %%mm5; /* Shift v */
< por %%mm3, %%mm0; /* Overlay new y byte 0x000000yy00yy00yy */
< por %%mm5, %%mm2; /* Overlay new v byte 0x0000000000cb00cb */
---
> "psubsw _mpeg3_MMX_601_Y_DIFF, %%mm0;" /* Subtract 16 from y */
> "movd (%1), %%mm1;" /* Load u 0x00000000000000cr */
> "movq %%mm0, %%mm3;" /* Copy y to temp */
> "psllq $16, %%mm1;" /* Shift u 0x0000000000cr0000 */
> "movd (%2), %%mm2;" /* Load v 0x00000000000000cb */
> "psllq $16, %%mm3;" /* Shift y */
> "movq %%mm1, %%mm4;" /* Copy u to temp */
> "por %%mm3, %%mm0;" /* Overlay new y byte 0x0000000000yy00yy */
> "psllq $16, %%mm4;" /* Shift u */
> "movq %%mm2, %%mm5;" /* Copy v to temp */
> "psllq $16, %%mm3;" /* Shift y */
> "por %%mm4, %%mm1;" /* Overlay new u byte 0x000000cr00cr0000 */
> "psllq $16, %%mm5;" /* Shift v */
> "por %%mm3, %%mm0;" /* Overlay new y byte 0x000000yy00yy00yy */
> "por %%mm5, %%mm2;" /* Overlay new v byte 0x0000000000cb00cb */
327,331c326,330
< pmullw _mpeg3_MMX_601_Y_COEF, %%mm0; /* Scale and shift y coeffs */
< psubw _mpeg3_MMX_U_80, %%mm1; /* Subtract 128 from u 0x000000uu00uu0000 */
< pmullw _mpeg3_MMX_U_COEF, %%mm1; /* Multiply u coeffs 0x0000uuuuuuuu0000 */
< psubw _mpeg3_MMX_V_80, %%mm2; /* Subtract 128 from v 0x0000000000cb00cb */
< pmullw _mpeg3_MMX_V_COEF, %%mm2; /* Multiply v coeffs 0x0000crcrcrcrcrcr */
---
> "pmullw _mpeg3_MMX_601_Y_COEF, %%mm0;" /* Scale and shift y coeffs */
> "psubw _mpeg3_MMX_U_80, %%mm1;" /* Subtract 128 from u 0x000000uu00uu0000 */
> "pmullw _mpeg3_MMX_U_COEF, %%mm1;" /* Multiply u coeffs 0x0000uuuuuuuu0000 */
> "psubw _mpeg3_MMX_V_80, %%mm2;" /* Subtract 128 from v 0x0000000000cb00cb */
> "pmullw _mpeg3_MMX_V_COEF, %%mm2;" /* Multiply v coeffs 0x0000crcrcrcrcrcr */
334,339c333,337
< paddsw %%mm1, %%mm0; /* Add u to result */
< paddsw %%mm2, %%mm0; /* Add v to result 0x0000rrrrggggbbbb */
< psraw $6, %%mm0; /* Demote precision */
< packuswb %%mm0, %%mm0; /* Pack into ARGB 0x0000000000rrggbb */
< movd %%mm0, (%3); /* Store output */
< "
---
> "paddsw %%mm1, %%mm0;" /* Add u to result */
> "paddsw %%mm2, %%mm0;" /* Add v to result 0x0000rrrrggggbbbb */
> "psraw $6, %%mm0;" /* Demote precision */
> "packuswb %%mm0, %%mm0;" /* Pack into ARGB 0x0000000000rrggbb */
> "movd %%mm0, (%3);" /* Store output */
354c352
< asm("
---
> asm(
357,371c355,369
< movd (%0), %%mm0; /* Load y 0x00000000000000yy */
< movd (%1), %%mm1; /* Load v 0x00000000000000vv */
< movq %%mm0, %%mm3; /* Copy y to temp */
< psllq $16, %%mm1; /* Shift v 0x0000000000vv0000 */
< movd (%2), %%mm2; /* Load u 0x00000000000000uu */
< psllq $16, %%mm3; /* Shift y */
< movq %%mm1, %%mm4; /* Copy v to temp */
< por %%mm3, %%mm0; /* Overlay new y byte 0x0000000000yy00yy */
< psllq $16, %%mm4; /* Shift v */
< movq %%mm2, %%mm5; /* Copy u to temp */
< psllq $16, %%mm3; /* Shift y */
< por %%mm4, %%mm1; /* Overlay new v byte 0x000000vv00vv0000 */
< psllq $16, %%mm5; /* Shift u */
< por %%mm3, %%mm0; /* Overlay new y byte 0x000000yy00yy00yy */
< por %%mm5, %%mm2; /* Overlay new u byte 0x0000000000uu00uu */
---
> "movd (%0), %%mm0;" /* Load y 0x00000000000000yy */
> "movd (%1), %%mm1;" /* Load v 0x00000000000000vv */
> "movq %%mm0, %%mm3;" /* Copy y to temp */
> "psllq $16, %%mm1;" /* Shift v 0x0000000000vv0000 */
> "movd (%2), %%mm2;" /* Load u 0x00000000000000uu */
> "psllq $16, %%mm3;" /* Shift y */
> "movq %%mm1, %%mm4;" /* Copy v to temp */
> "por %%mm3, %%mm0;" /* Overlay new y byte 0x0000000000yy00yy */
> "psllq $16, %%mm4;" /* Shift v */
> "movq %%mm2, %%mm5;" /* Copy u to temp */
> "psllq $16, %%mm3;" /* Shift y */
> "por %%mm4, %%mm1;" /* Overlay new v byte 0x000000vv00vv0000 */
> "psllq $16, %%mm5;" /* Shift u */
> "por %%mm3, %%mm0;" /* Overlay new y byte 0x000000yy00yy00yy */
> "por %%mm5, %%mm2;" /* Overlay new u byte 0x0000000000uu00uu */
374,378c372,376
< psubw _mpeg3_MMX_V_80_RGB, %%mm1; /* Subtract 128 from v 0x000000vv00vv0000 */
< pmullw _mpeg3_MMX_V_COEF_RGB, %%mm1; /* Multiply v coeffs 0x0000vvvvvvvv0000 */
< psllw $6, %%mm0; /* Shift y coeffs 0x0000yyy0yyy0yyy0 */
< psubw _mpeg3_MMX_U_80_RGB, %%mm2; /* Subtract 128 from u 0x0000000000uu00uu */
< pmullw _mpeg3_MMX_U_COEF_RGB, %%mm2; /* Multiply u coeffs 0x0000uuuuuuuuuuuu */
---
> "psubw _mpeg3_MMX_V_80_RGB, %%mm1;" /* Subtract 128 from v 0x000000vv00vv0000 */
> "pmullw _mpeg3_MMX_V_COEF_RGB, %%mm1;" /* Multiply v coeffs 0x0000vvvvvvvv0000 */
> "psllw $6, %%mm0;" /* Shift y coeffs 0x0000yyy0yyy0yyy0 */
> "psubw _mpeg3_MMX_U_80_RGB, %%mm2;" /* Subtract 128 from u 0x0000000000uu00uu */
> "pmullw _mpeg3_MMX_U_COEF_RGB, %%mm2;" /* Multiply u coeffs 0x0000uuuuuuuuuuuu */
381,386c379,383
< paddsw %%mm1, %%mm0; /* Add v to result */
< paddsw %%mm2, %%mm0; /* Add u to result 0x0000bbbbggggrrrr */
< psraw $6, %%mm0; /* Demote precision */
< packuswb %%mm0, %%mm0; /* Pack into RGBA 0x0000000000bbggrr */
< movd %%mm0, (%3); /* Store output */
< "
---
> "paddsw %%mm1, %%mm0;" /* Add v to result */
> "paddsw %%mm2, %%mm0;" /* Add u to result 0x0000bbbbggggrrrr */
> "psraw $6, %%mm0;" /* Demote precision */
> "packuswb %%mm0, %%mm0;" /* Pack into RGBA 0x0000000000bbggrr */
> "movd %%mm0, (%3);" /* Store output */
396c393
< asm("
---
> asm(
399,414c396,411
< movd (%0), %%mm0; /* Load y 0x00000000000000yy */
< psubsw _mpeg3_MMX_601_Y_DIFF, %%mm0; /* Subtract 16 from y */
< movd (%1), %%mm1; /* Load v 0x00000000000000vv */
< movq %%mm0, %%mm3; /* Copy y to temp */
< psllq $16, %%mm1; /* Shift v 0x0000000000vv0000 */
< movd (%2), %%mm2; /* Load u 0x00000000000000uu */
< psllq $16, %%mm3; /* Shift y */
< movq %%mm1, %%mm4; /* Copy v to temp */
< por %%mm3, %%mm0; /* Overlay new y byte 0x0000000000yy00yy */
< psllq $16, %%mm4; /* Shift v */
< movq %%mm2, %%mm5; /* Copy u to temp */
< psllq $16, %%mm3; /* Shift y */
< por %%mm4, %%mm1; /* Overlay new v byte 0x000000vv00vv0000 */
< psllq $16, %%mm5; /* Shift u */
< por %%mm3, %%mm0; /* Overlay new y byte 0x000000yy00yy00yy */
< por %%mm5, %%mm2; /* Overlay new u byte 0x0000000000uu00uu */
---
> "movd (%0), %%mm0;" /* Load y 0x00000000000000yy */
> "psubsw _mpeg3_MMX_601_Y_DIFF, %%mm0;" /* Subtract 16 from y */
> "movd (%1), %%mm1;" /* Load v 0x00000000000000vv */
> "movq %%mm0, %%mm3;" /* Copy y to temp */
> "psllq $16, %%mm1;" /* Shift v 0x0000000000vv0000 */
> "movd (%2), %%mm2;" /* Load u 0x00000000000000uu */
> "psllq $16, %%mm3;" /* Shift y */
> "movq %%mm1, %%mm4;" /* Copy v to temp */
> "por %%mm3, %%mm0;" /* Overlay new y byte 0x0000000000yy00yy */
> "psllq $16, %%mm4;" /* Shift v */
> "movq %%mm2, %%mm5;" /* Copy u to temp */
> "psllq $16, %%mm3;" /* Shift y */
> "por %%mm4, %%mm1;" /* Overlay new v byte 0x000000vv00vv0000 */
> "psllq $16, %%mm5;" /* Shift u */
> "por %%mm3, %%mm0;" /* Overlay new y byte 0x000000yy00yy00yy */
> "por %%mm5, %%mm2;" /* Overlay new u byte 0x0000000000uu00uu */
417,421c414,418
< pmullw _mpeg3_MMX_601_Y_COEF, %%mm0; /* Scale y coeffs */
< psubw _mpeg3_MMX_V_80_RGB, %%mm1; /* Subtract 128 from v 0x000000vv00vv0000 */
< pmullw _mpeg3_MMX_V_COEF_RGB, %%mm1; /* Multiply v coeffs 0x0000vvvvvvvv0000 */
< psubw _mpeg3_MMX_U_80_RGB, %%mm2; /* Subtract 128 from u 0x0000000000uu00uu */
< pmullw _mpeg3_MMX_U_COEF_RGB, %%mm2; /* Multiply u coeffs 0x0000uuuuuuuuuuuu */
---
> "pmullw _mpeg3_MMX_601_Y_COEF, %%mm0;" /* Scale y coeffs */
> "psubw _mpeg3_MMX_V_80_RGB, %%mm1;" /* Subtract 128 from v 0x000000vv00vv0000 */
> "pmullw _mpeg3_MMX_V_COEF_RGB, %%mm1;" /* Multiply v coeffs 0x0000vvvvvvvv0000 */
> "psubw _mpeg3_MMX_U_80_RGB, %%mm2;" /* Subtract 128 from u 0x0000000000uu00uu */
> "pmullw _mpeg3_MMX_U_COEF_RGB, %%mm2;" /* Multiply u coeffs 0x0000uuuuuuuuuuuu */
424,429c421,425
< paddsw %%mm1, %%mm0; /* Add v to result */
< paddsw %%mm2, %%mm0; /* Add u to result 0x0000bbbbggggrrrr */
< psraw $6, %%mm0; /* Demote precision */
< packuswb %%mm0, %%mm0; /* Pack into RGBA 0x0000000000bbggrr */
< movd %%mm0, (%3); /* Store output */
< "
---
> "paddsw %%mm1, %%mm0;" /* Add v to result */
> "paddsw %%mm2, %%mm0;" /* Add u to result 0x0000bbbbggggrrrr */
> "psraw $6, %%mm0;" /* Demote precision */
> "packuswb %%mm0, %%mm0;" /* Pack into RGBA 0x0000000000bbggrr */
> "movd %%mm0, (%3);" /* Store output */
More information about the Squeak-dev
mailing list
|