Lines 774-785
static void RENAME(yuv2rgb32_2)(SwsContext *c, const int16_t *buf[2],
Link Here
|
774 |
const int16_t *abuf0 = abuf[0], *abuf1 = abuf[1]; |
774 |
const int16_t *abuf0 = abuf[0], *abuf1 = abuf[1]; |
775 |
#if ARCH_X86_64 |
775 |
#if ARCH_X86_64 |
776 |
__asm__ volatile( |
776 |
__asm__ volatile( |
777 |
YSCALEYUV2RGB(%%r8, %5) |
777 |
YSCALEYUV2RGB(%%REG8, %5) |
778 |
YSCALEYUV2RGB_YA(%%r8, %5, %6, %7) |
778 |
YSCALEYUV2RGB_YA(%%REG8, %5, %6, %7) |
779 |
"psraw $3, %%mm1 \n\t" /* abuf0[eax] - abuf1[eax] >>7*/ |
779 |
"psraw $3, %%mm1 \n\t" /* abuf0[eax] - abuf1[eax] >>7*/ |
780 |
"psraw $3, %%mm7 \n\t" /* abuf0[eax] - abuf1[eax] >>7*/ |
780 |
"psraw $3, %%mm7 \n\t" /* abuf0[eax] - abuf1[eax] >>7*/ |
781 |
"packuswb %%mm7, %%mm1 \n\t" |
781 |
"packuswb %%mm7, %%mm1 \n\t" |
782 |
WRITEBGR32(%4, 8280(%5), %%r8, %%mm2, %%mm4, %%mm5, %%mm1, %%mm0, %%mm7, %%mm3, %%mm6) |
782 |
WRITEBGR32(%4, 8280(%5), %%REG8, %%mm2, %%mm4, %%mm5, %%mm1, %%mm0, %%mm7, %%mm3, %%mm6) |
783 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "r" (dest), |
783 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "r" (dest), |
784 |
"a" (&c->redDither), |
784 |
"a" (&c->redDither), |
785 |
"r" (abuf0), "r" (abuf1) |
785 |
"r" (abuf0), "r" (abuf1) |
Lines 791-797
static void RENAME(yuv2rgb32_2)(SwsContext *c, const int16_t *buf[2],
Link Here
|
791 |
__asm__ volatile( |
791 |
__asm__ volatile( |
792 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
792 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
793 |
"mov %4, %%"REG_b" \n\t" |
793 |
"mov %4, %%"REG_b" \n\t" |
794 |
"push %%"REG_BP" \n\t" |
794 |
"push %%"REG_rBP" \n\t" |
795 |
YSCALEYUV2RGB(%%REGBP, %5) |
795 |
YSCALEYUV2RGB(%%REGBP, %5) |
796 |
"push %0 \n\t" |
796 |
"push %0 \n\t" |
797 |
"push %1 \n\t" |
797 |
"push %1 \n\t" |
Lines 804-810
static void RENAME(yuv2rgb32_2)(SwsContext *c, const int16_t *buf[2],
Link Here
|
804 |
"pop %1 \n\t" |
804 |
"pop %1 \n\t" |
805 |
"pop %0 \n\t" |
805 |
"pop %0 \n\t" |
806 |
WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm1, %%mm0, %%mm7, %%mm3, %%mm6) |
806 |
WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm1, %%mm0, %%mm7, %%mm3, %%mm6) |
807 |
"pop %%"REG_BP" \n\t" |
807 |
"pop %%"REG_rBP" \n\t" |
808 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
808 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
809 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
809 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
810 |
"a" (&c->redDither) |
810 |
"a" (&c->redDither) |
Lines 814-824
static void RENAME(yuv2rgb32_2)(SwsContext *c, const int16_t *buf[2],
Link Here
|
814 |
__asm__ volatile( |
814 |
__asm__ volatile( |
815 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
815 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
816 |
"mov %4, %%"REG_b" \n\t" |
816 |
"mov %4, %%"REG_b" \n\t" |
817 |
"push %%"REG_BP" \n\t" |
817 |
"push %%"REG_rBP" \n\t" |
818 |
YSCALEYUV2RGB(%%REGBP, %5) |
818 |
YSCALEYUV2RGB(%%REGBP, %5) |
819 |
"pcmpeqd %%mm7, %%mm7 \n\t" |
819 |
"pcmpeqd %%mm7, %%mm7 \n\t" |
820 |
WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) |
820 |
WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) |
821 |
"pop %%"REG_BP" \n\t" |
821 |
"pop %%"REG_rBP" \n\t" |
822 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
822 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
823 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
823 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
824 |
"a" (&c->redDither) |
824 |
"a" (&c->redDither) |
Lines 838-848
static void RENAME(yuv2bgr24_2)(SwsContext *c, const int16_t *buf[2],
Link Here
|
838 |
__asm__ volatile( |
838 |
__asm__ volatile( |
839 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
839 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
840 |
"mov %4, %%"REG_b" \n\t" |
840 |
"mov %4, %%"REG_b" \n\t" |
841 |
"push %%"REG_BP" \n\t" |
841 |
"push %%"REG_rBP" \n\t" |
842 |
YSCALEYUV2RGB(%%REGBP, %5) |
842 |
YSCALEYUV2RGB(%%REGBP, %5) |
843 |
"pxor %%mm7, %%mm7 \n\t" |
843 |
"pxor %%mm7, %%mm7 \n\t" |
844 |
WRITEBGR24(%%REGb, 8280(%5), %%REGBP) |
844 |
WRITEBGR24(%%REGb, 8280(%5), %%REGBP) |
845 |
"pop %%"REG_BP" \n\t" |
845 |
"pop %%"REG_rBP" \n\t" |
846 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
846 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
847 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
847 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
848 |
"a" (&c->redDither) |
848 |
"a" (&c->redDither) |
Lines 861-867
static void RENAME(yuv2rgb555_2)(SwsContext *c, const int16_t *buf[2],
Link Here
|
861 |
__asm__ volatile( |
861 |
__asm__ volatile( |
862 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
862 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
863 |
"mov %4, %%"REG_b" \n\t" |
863 |
"mov %4, %%"REG_b" \n\t" |
864 |
"push %%"REG_BP" \n\t" |
864 |
"push %%"REG_rBP" \n\t" |
865 |
YSCALEYUV2RGB(%%REGBP, %5) |
865 |
YSCALEYUV2RGB(%%REGBP, %5) |
866 |
"pxor %%mm7, %%mm7 \n\t" |
866 |
"pxor %%mm7, %%mm7 \n\t" |
867 |
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ |
867 |
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ |
Lines 871-877
static void RENAME(yuv2rgb555_2)(SwsContext *c, const int16_t *buf[2],
Link Here
|
871 |
"paddusb "RED_DITHER"(%5), %%mm5 \n\t" |
871 |
"paddusb "RED_DITHER"(%5), %%mm5 \n\t" |
872 |
#endif |
872 |
#endif |
873 |
WRITERGB15(%%REGb, 8280(%5), %%REGBP) |
873 |
WRITERGB15(%%REGb, 8280(%5), %%REGBP) |
874 |
"pop %%"REG_BP" \n\t" |
874 |
"pop %%"REG_rBP" \n\t" |
875 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
875 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
876 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
876 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
877 |
"a" (&c->redDither) |
877 |
"a" (&c->redDither) |
Lines 890-896
static void RENAME(yuv2rgb565_2)(SwsContext *c, const int16_t *buf[2],
Link Here
|
890 |
__asm__ volatile( |
890 |
__asm__ volatile( |
891 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
891 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
892 |
"mov %4, %%"REG_b" \n\t" |
892 |
"mov %4, %%"REG_b" \n\t" |
893 |
"push %%"REG_BP" \n\t" |
893 |
"push %%"REG_rBP" \n\t" |
894 |
YSCALEYUV2RGB(%%REGBP, %5) |
894 |
YSCALEYUV2RGB(%%REGBP, %5) |
895 |
"pxor %%mm7, %%mm7 \n\t" |
895 |
"pxor %%mm7, %%mm7 \n\t" |
896 |
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ |
896 |
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ |
Lines 900-906
static void RENAME(yuv2rgb565_2)(SwsContext *c, const int16_t *buf[2],
Link Here
|
900 |
"paddusb "RED_DITHER"(%5), %%mm5 \n\t" |
900 |
"paddusb "RED_DITHER"(%5), %%mm5 \n\t" |
901 |
#endif |
901 |
#endif |
902 |
WRITERGB16(%%REGb, 8280(%5), %%REGBP) |
902 |
WRITERGB16(%%REGb, 8280(%5), %%REGBP) |
903 |
"pop %%"REG_BP" \n\t" |
903 |
"pop %%"REG_rBP" \n\t" |
904 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
904 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
905 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
905 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
906 |
"a" (&c->redDither) |
906 |
"a" (&c->redDither) |
Lines 959-968
static void RENAME(yuv2yuyv422_2)(SwsContext *c, const int16_t *buf[2],
Link Here
|
959 |
__asm__ volatile( |
959 |
__asm__ volatile( |
960 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
960 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
961 |
"mov %4, %%"REG_b" \n\t" |
961 |
"mov %4, %%"REG_b" \n\t" |
962 |
"push %%"REG_BP" \n\t" |
962 |
"push %%"REG_rBP" \n\t" |
963 |
YSCALEYUV2PACKED(%%REGBP, %5) |
963 |
YSCALEYUV2PACKED(%%REGBP, %5) |
964 |
WRITEYUY2(%%REGb, 8280(%5), %%REGBP) |
964 |
WRITEYUY2(%%REGb, 8280(%5), %%REGBP) |
965 |
"pop %%"REG_BP" \n\t" |
965 |
"pop %%"REG_rBP" \n\t" |
966 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
966 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
967 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
967 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
968 |
"a" (&c->redDither) |
968 |
"a" (&c->redDither) |
Lines 1101-1111
static void RENAME(yuv2rgb32_1)(SwsContext *c, const int16_t *buf0,
Link Here
|
1101 |
__asm__ volatile( |
1101 |
__asm__ volatile( |
1102 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1102 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1103 |
"mov %4, %%"REG_b" \n\t" |
1103 |
"mov %4, %%"REG_b" \n\t" |
1104 |
"push %%"REG_BP" \n\t" |
1104 |
"push %%"REG_rBP" \n\t" |
1105 |
YSCALEYUV2RGB1(%%REGBP, %5) |
1105 |
YSCALEYUV2RGB1(%%REGBP, %5) |
1106 |
YSCALEYUV2RGB1_ALPHA(%%REGBP) |
1106 |
YSCALEYUV2RGB1_ALPHA(%%REGBP) |
1107 |
WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) |
1107 |
WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) |
1108 |
"pop %%"REG_BP" \n\t" |
1108 |
"pop %%"REG_rBP" \n\t" |
1109 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1109 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1110 |
:: "c" (buf0), "d" (abuf0), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1110 |
:: "c" (buf0), "d" (abuf0), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1111 |
"a" (&c->redDither) |
1111 |
"a" (&c->redDither) |
Lines 1114-1124
static void RENAME(yuv2rgb32_1)(SwsContext *c, const int16_t *buf0,
Link Here
|
1114 |
__asm__ volatile( |
1114 |
__asm__ volatile( |
1115 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1115 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1116 |
"mov %4, %%"REG_b" \n\t" |
1116 |
"mov %4, %%"REG_b" \n\t" |
1117 |
"push %%"REG_BP" \n\t" |
1117 |
"push %%"REG_rBP" \n\t" |
1118 |
YSCALEYUV2RGB1(%%REGBP, %5) |
1118 |
YSCALEYUV2RGB1(%%REGBP, %5) |
1119 |
"pcmpeqd %%mm7, %%mm7 \n\t" |
1119 |
"pcmpeqd %%mm7, %%mm7 \n\t" |
1120 |
WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) |
1120 |
WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) |
1121 |
"pop %%"REG_BP" \n\t" |
1121 |
"pop %%"REG_rBP" \n\t" |
1122 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1122 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1123 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1123 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1124 |
"a" (&c->redDither) |
1124 |
"a" (&c->redDither) |
Lines 1130-1140
static void RENAME(yuv2rgb32_1)(SwsContext *c, const int16_t *buf0,
Link Here
|
1130 |
__asm__ volatile( |
1130 |
__asm__ volatile( |
1131 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1131 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1132 |
"mov %4, %%"REG_b" \n\t" |
1132 |
"mov %4, %%"REG_b" \n\t" |
1133 |
"push %%"REG_BP" \n\t" |
1133 |
"push %%"REG_rBP" \n\t" |
1134 |
YSCALEYUV2RGB1b(%%REGBP, %5) |
1134 |
YSCALEYUV2RGB1b(%%REGBP, %5) |
1135 |
YSCALEYUV2RGB1_ALPHA(%%REGBP) |
1135 |
YSCALEYUV2RGB1_ALPHA(%%REGBP) |
1136 |
WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) |
1136 |
WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) |
1137 |
"pop %%"REG_BP" \n\t" |
1137 |
"pop %%"REG_rBP" \n\t" |
1138 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1138 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1139 |
:: "c" (buf0), "d" (abuf0), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1139 |
:: "c" (buf0), "d" (abuf0), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1140 |
"a" (&c->redDither) |
1140 |
"a" (&c->redDither) |
Lines 1143-1153
static void RENAME(yuv2rgb32_1)(SwsContext *c, const int16_t *buf0,
Link Here
|
1143 |
__asm__ volatile( |
1143 |
__asm__ volatile( |
1144 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1144 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1145 |
"mov %4, %%"REG_b" \n\t" |
1145 |
"mov %4, %%"REG_b" \n\t" |
1146 |
"push %%"REG_BP" \n\t" |
1146 |
"push %%"REG_rBP" \n\t" |
1147 |
YSCALEYUV2RGB1b(%%REGBP, %5) |
1147 |
YSCALEYUV2RGB1b(%%REGBP, %5) |
1148 |
"pcmpeqd %%mm7, %%mm7 \n\t" |
1148 |
"pcmpeqd %%mm7, %%mm7 \n\t" |
1149 |
WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) |
1149 |
WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) |
1150 |
"pop %%"REG_BP" \n\t" |
1150 |
"pop %%"REG_rBP" \n\t" |
1151 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1151 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1152 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1152 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1153 |
"a" (&c->redDither) |
1153 |
"a" (&c->redDither) |
Lines 1169-1179
static void RENAME(yuv2bgr24_1)(SwsContext *c, const int16_t *buf0,
Link Here
|
1169 |
__asm__ volatile( |
1169 |
__asm__ volatile( |
1170 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1170 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1171 |
"mov %4, %%"REG_b" \n\t" |
1171 |
"mov %4, %%"REG_b" \n\t" |
1172 |
"push %%"REG_BP" \n\t" |
1172 |
"push %%"REG_rBP" \n\t" |
1173 |
YSCALEYUV2RGB1(%%REGBP, %5) |
1173 |
YSCALEYUV2RGB1(%%REGBP, %5) |
1174 |
"pxor %%mm7, %%mm7 \n\t" |
1174 |
"pxor %%mm7, %%mm7 \n\t" |
1175 |
WRITEBGR24(%%REGb, 8280(%5), %%REGBP) |
1175 |
WRITEBGR24(%%REGb, 8280(%5), %%REGBP) |
1176 |
"pop %%"REG_BP" \n\t" |
1176 |
"pop %%"REG_rBP" \n\t" |
1177 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1177 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1178 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1178 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1179 |
"a" (&c->redDither) |
1179 |
"a" (&c->redDither) |
Lines 1183-1193
static void RENAME(yuv2bgr24_1)(SwsContext *c, const int16_t *buf0,
Link Here
|
1183 |
__asm__ volatile( |
1183 |
__asm__ volatile( |
1184 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1184 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1185 |
"mov %4, %%"REG_b" \n\t" |
1185 |
"mov %4, %%"REG_b" \n\t" |
1186 |
"push %%"REG_BP" \n\t" |
1186 |
"push %%"REG_rBP" \n\t" |
1187 |
YSCALEYUV2RGB1b(%%REGBP, %5) |
1187 |
YSCALEYUV2RGB1b(%%REGBP, %5) |
1188 |
"pxor %%mm7, %%mm7 \n\t" |
1188 |
"pxor %%mm7, %%mm7 \n\t" |
1189 |
WRITEBGR24(%%REGb, 8280(%5), %%REGBP) |
1189 |
WRITEBGR24(%%REGb, 8280(%5), %%REGBP) |
1190 |
"pop %%"REG_BP" \n\t" |
1190 |
"pop %%"REG_rBP" \n\t" |
1191 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1191 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1192 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1192 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1193 |
"a" (&c->redDither) |
1193 |
"a" (&c->redDither) |
Lines 1208-1214
static void RENAME(yuv2rgb555_1)(SwsContext *c, const int16_t *buf0,
Link Here
|
1208 |
__asm__ volatile( |
1208 |
__asm__ volatile( |
1209 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1209 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1210 |
"mov %4, %%"REG_b" \n\t" |
1210 |
"mov %4, %%"REG_b" \n\t" |
1211 |
"push %%"REG_BP" \n\t" |
1211 |
"push %%"REG_rBP" \n\t" |
1212 |
YSCALEYUV2RGB1(%%REGBP, %5) |
1212 |
YSCALEYUV2RGB1(%%REGBP, %5) |
1213 |
"pxor %%mm7, %%mm7 \n\t" |
1213 |
"pxor %%mm7, %%mm7 \n\t" |
1214 |
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ |
1214 |
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ |
Lines 1218-1224
static void RENAME(yuv2rgb555_1)(SwsContext *c, const int16_t *buf0,
Link Here
|
1218 |
"paddusb "RED_DITHER"(%5), %%mm5 \n\t" |
1218 |
"paddusb "RED_DITHER"(%5), %%mm5 \n\t" |
1219 |
#endif |
1219 |
#endif |
1220 |
WRITERGB15(%%REGb, 8280(%5), %%REGBP) |
1220 |
WRITERGB15(%%REGb, 8280(%5), %%REGBP) |
1221 |
"pop %%"REG_BP" \n\t" |
1221 |
"pop %%"REG_rBP" \n\t" |
1222 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1222 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1223 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1223 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1224 |
"a" (&c->redDither) |
1224 |
"a" (&c->redDither) |
Lines 1228-1234
static void RENAME(yuv2rgb555_1)(SwsContext *c, const int16_t *buf0,
Link Here
|
1228 |
__asm__ volatile( |
1228 |
__asm__ volatile( |
1229 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1229 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1230 |
"mov %4, %%"REG_b" \n\t" |
1230 |
"mov %4, %%"REG_b" \n\t" |
1231 |
"push %%"REG_BP" \n\t" |
1231 |
"push %%"REG_rBP" \n\t" |
1232 |
YSCALEYUV2RGB1b(%%REGBP, %5) |
1232 |
YSCALEYUV2RGB1b(%%REGBP, %5) |
1233 |
"pxor %%mm7, %%mm7 \n\t" |
1233 |
"pxor %%mm7, %%mm7 \n\t" |
1234 |
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ |
1234 |
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ |
Lines 1238-1244
static void RENAME(yuv2rgb555_1)(SwsContext *c, const int16_t *buf0,
Link Here
|
1238 |
"paddusb "RED_DITHER"(%5), %%mm5 \n\t" |
1238 |
"paddusb "RED_DITHER"(%5), %%mm5 \n\t" |
1239 |
#endif |
1239 |
#endif |
1240 |
WRITERGB15(%%REGb, 8280(%5), %%REGBP) |
1240 |
WRITERGB15(%%REGb, 8280(%5), %%REGBP) |
1241 |
"pop %%"REG_BP" \n\t" |
1241 |
"pop %%"REG_rBP" \n\t" |
1242 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1242 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1243 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1243 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1244 |
"a" (&c->redDither) |
1244 |
"a" (&c->redDither) |
Lines 1259-1265
static void RENAME(yuv2rgb565_1)(SwsContext *c, const int16_t *buf0,
Link Here
|
1259 |
__asm__ volatile( |
1259 |
__asm__ volatile( |
1260 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1260 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1261 |
"mov %4, %%"REG_b" \n\t" |
1261 |
"mov %4, %%"REG_b" \n\t" |
1262 |
"push %%"REG_BP" \n\t" |
1262 |
"push %%"REG_rBP" \n\t" |
1263 |
YSCALEYUV2RGB1(%%REGBP, %5) |
1263 |
YSCALEYUV2RGB1(%%REGBP, %5) |
1264 |
"pxor %%mm7, %%mm7 \n\t" |
1264 |
"pxor %%mm7, %%mm7 \n\t" |
1265 |
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ |
1265 |
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ |
Lines 1269-1275
static void RENAME(yuv2rgb565_1)(SwsContext *c, const int16_t *buf0,
Link Here
|
1269 |
"paddusb "RED_DITHER"(%5), %%mm5 \n\t" |
1269 |
"paddusb "RED_DITHER"(%5), %%mm5 \n\t" |
1270 |
#endif |
1270 |
#endif |
1271 |
WRITERGB16(%%REGb, 8280(%5), %%REGBP) |
1271 |
WRITERGB16(%%REGb, 8280(%5), %%REGBP) |
1272 |
"pop %%"REG_BP" \n\t" |
1272 |
"pop %%"REG_rBP" \n\t" |
1273 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1273 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1274 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1274 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1275 |
"a" (&c->redDither) |
1275 |
"a" (&c->redDither) |
Lines 1279-1285
static void RENAME(yuv2rgb565_1)(SwsContext *c, const int16_t *buf0,
Link Here
|
1279 |
__asm__ volatile( |
1279 |
__asm__ volatile( |
1280 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1280 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1281 |
"mov %4, %%"REG_b" \n\t" |
1281 |
"mov %4, %%"REG_b" \n\t" |
1282 |
"push %%"REG_BP" \n\t" |
1282 |
"push %%"REG_rBP" \n\t" |
1283 |
YSCALEYUV2RGB1b(%%REGBP, %5) |
1283 |
YSCALEYUV2RGB1b(%%REGBP, %5) |
1284 |
"pxor %%mm7, %%mm7 \n\t" |
1284 |
"pxor %%mm7, %%mm7 \n\t" |
1285 |
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ |
1285 |
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ |
Lines 1289-1295
static void RENAME(yuv2rgb565_1)(SwsContext *c, const int16_t *buf0,
Link Here
|
1289 |
"paddusb "RED_DITHER"(%5), %%mm5 \n\t" |
1289 |
"paddusb "RED_DITHER"(%5), %%mm5 \n\t" |
1290 |
#endif |
1290 |
#endif |
1291 |
WRITERGB16(%%REGb, 8280(%5), %%REGBP) |
1291 |
WRITERGB16(%%REGb, 8280(%5), %%REGBP) |
1292 |
"pop %%"REG_BP" \n\t" |
1292 |
"pop %%"REG_rBP" \n\t" |
1293 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1293 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1294 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1294 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1295 |
"a" (&c->redDither) |
1295 |
"a" (&c->redDither) |
Lines 1347-1356
static void RENAME(yuv2yuyv422_1)(SwsContext *c, const int16_t *buf0,
Link Here
|
1347 |
__asm__ volatile( |
1347 |
__asm__ volatile( |
1348 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1348 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1349 |
"mov %4, %%"REG_b" \n\t" |
1349 |
"mov %4, %%"REG_b" \n\t" |
1350 |
"push %%"REG_BP" \n\t" |
1350 |
"push %%"REG_rBP" \n\t" |
1351 |
YSCALEYUV2PACKED1(%%REGBP, %5) |
1351 |
YSCALEYUV2PACKED1(%%REGBP, %5) |
1352 |
WRITEYUY2(%%REGb, 8280(%5), %%REGBP) |
1352 |
WRITEYUY2(%%REGb, 8280(%5), %%REGBP) |
1353 |
"pop %%"REG_BP" \n\t" |
1353 |
"pop %%"REG_rBP" \n\t" |
1354 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1354 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1355 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1355 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1356 |
"a" (&c->redDither) |
1356 |
"a" (&c->redDither) |
Lines 1360-1369
static void RENAME(yuv2yuyv422_1)(SwsContext *c, const int16_t *buf0,
Link Here
|
1360 |
__asm__ volatile( |
1360 |
__asm__ volatile( |
1361 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1361 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1362 |
"mov %4, %%"REG_b" \n\t" |
1362 |
"mov %4, %%"REG_b" \n\t" |
1363 |
"push %%"REG_BP" \n\t" |
1363 |
"push %%"REG_rBP" \n\t" |
1364 |
YSCALEYUV2PACKED1b(%%REGBP, %5) |
1364 |
YSCALEYUV2PACKED1b(%%REGBP, %5) |
1365 |
WRITEYUY2(%%REGb, 8280(%5), %%REGBP) |
1365 |
WRITEYUY2(%%REGb, 8280(%5), %%REGBP) |
1366 |
"pop %%"REG_BP" \n\t" |
1366 |
"pop %%"REG_rBP" \n\t" |
1367 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1367 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1368 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1368 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1369 |
"a" (&c->redDither) |
1369 |
"a" (&c->redDither) |
Lines 1378-1384
static void RENAME(hyscale_fast)(SwsContext *c, int16_t *dst,
Link Here
|
1378 |
{ |
1378 |
{ |
1379 |
int32_t *filterPos = c->hLumFilterPos; |
1379 |
int32_t *filterPos = c->hLumFilterPos; |
1380 |
int16_t *filter = c->hLumFilter; |
1380 |
int16_t *filter = c->hLumFilter; |
1381 |
void *mmxextFilterCode = c->lumMmxextFilterCode; |
1381 |
x86_native_reg mmxextFilterCode = (uintptr_t)c->lumMmxextFilterCode; |
1382 |
int i; |
1382 |
int i; |
1383 |
#if defined(PIC) |
1383 |
#if defined(PIC) |
1384 |
uint64_t ebxsave; |
1384 |
uint64_t ebxsave; |
1385 |
- |
|
|