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 1100-1110
static void RENAME(yuv2rgb32_1)(SwsContext *c, const int16_t *buf0,
Link Here
|
1100 |
__asm__ volatile( |
1100 |
__asm__ volatile( |
1101 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1101 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1102 |
"mov %4, %%"REG_b" \n\t" |
1102 |
"mov %4, %%"REG_b" \n\t" |
1103 |
"push %%"REG_BP" \n\t" |
1103 |
"push %%"REG_rBP" \n\t" |
1104 |
YSCALEYUV2RGB1(%%REGBP, %5) |
1104 |
YSCALEYUV2RGB1(%%REGBP, %5) |
1105 |
YSCALEYUV2RGB1_ALPHA(%%REGBP) |
1105 |
YSCALEYUV2RGB1_ALPHA(%%REGBP) |
1106 |
WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) |
1106 |
WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) |
1107 |
"pop %%"REG_BP" \n\t" |
1107 |
"pop %%"REG_rBP" \n\t" |
1108 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1108 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1109 |
:: "c" (buf0), "d" (abuf0), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1109 |
:: "c" (buf0), "d" (abuf0), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1110 |
"a" (&c->redDither) |
1110 |
"a" (&c->redDither) |
Lines 1113-1123
static void RENAME(yuv2rgb32_1)(SwsContext *c, const int16_t *buf0,
Link Here
|
1113 |
__asm__ volatile( |
1113 |
__asm__ volatile( |
1114 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1114 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1115 |
"mov %4, %%"REG_b" \n\t" |
1115 |
"mov %4, %%"REG_b" \n\t" |
1116 |
"push %%"REG_BP" \n\t" |
1116 |
"push %%"REG_rBP" \n\t" |
1117 |
YSCALEYUV2RGB1(%%REGBP, %5) |
1117 |
YSCALEYUV2RGB1(%%REGBP, %5) |
1118 |
"pcmpeqd %%mm7, %%mm7 \n\t" |
1118 |
"pcmpeqd %%mm7, %%mm7 \n\t" |
1119 |
WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) |
1119 |
WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) |
1120 |
"pop %%"REG_BP" \n\t" |
1120 |
"pop %%"REG_rBP" \n\t" |
1121 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1121 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1122 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1122 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1123 |
"a" (&c->redDither) |
1123 |
"a" (&c->redDither) |
Lines 1128-1138
static void RENAME(yuv2rgb32_1)(SwsContext *c, const int16_t *buf0,
Link Here
|
1128 |
__asm__ volatile( |
1128 |
__asm__ volatile( |
1129 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1129 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1130 |
"mov %4, %%"REG_b" \n\t" |
1130 |
"mov %4, %%"REG_b" \n\t" |
1131 |
"push %%"REG_BP" \n\t" |
1131 |
"push %%"REG_rBP" \n\t" |
1132 |
YSCALEYUV2RGB1b(%%REGBP, %5) |
1132 |
YSCALEYUV2RGB1b(%%REGBP, %5) |
1133 |
YSCALEYUV2RGB1_ALPHA(%%REGBP) |
1133 |
YSCALEYUV2RGB1_ALPHA(%%REGBP) |
1134 |
WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) |
1134 |
WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) |
1135 |
"pop %%"REG_BP" \n\t" |
1135 |
"pop %%"REG_rBP" \n\t" |
1136 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1136 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1137 |
:: "c" (buf0), "d" (abuf0), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1137 |
:: "c" (buf0), "d" (abuf0), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1138 |
"a" (&c->redDither) |
1138 |
"a" (&c->redDither) |
Lines 1141-1151
static void RENAME(yuv2rgb32_1)(SwsContext *c, const int16_t *buf0,
Link Here
|
1141 |
__asm__ volatile( |
1141 |
__asm__ volatile( |
1142 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1142 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1143 |
"mov %4, %%"REG_b" \n\t" |
1143 |
"mov %4, %%"REG_b" \n\t" |
1144 |
"push %%"REG_BP" \n\t" |
1144 |
"push %%"REG_rBP" \n\t" |
1145 |
YSCALEYUV2RGB1b(%%REGBP, %5) |
1145 |
YSCALEYUV2RGB1b(%%REGBP, %5) |
1146 |
"pcmpeqd %%mm7, %%mm7 \n\t" |
1146 |
"pcmpeqd %%mm7, %%mm7 \n\t" |
1147 |
WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) |
1147 |
WRITEBGR32(%%REGb, 8280(%5), %%REGBP, %%mm2, %%mm4, %%mm5, %%mm7, %%mm0, %%mm1, %%mm3, %%mm6) |
1148 |
"pop %%"REG_BP" \n\t" |
1148 |
"pop %%"REG_rBP" \n\t" |
1149 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1149 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1150 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1150 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1151 |
"a" (&c->redDither) |
1151 |
"a" (&c->redDither) |
Lines 1166-1176
static void RENAME(yuv2bgr24_1)(SwsContext *c, const int16_t *buf0,
Link Here
|
1166 |
__asm__ volatile( |
1166 |
__asm__ volatile( |
1167 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1167 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1168 |
"mov %4, %%"REG_b" \n\t" |
1168 |
"mov %4, %%"REG_b" \n\t" |
1169 |
"push %%"REG_BP" \n\t" |
1169 |
"push %%"REG_rBP" \n\t" |
1170 |
YSCALEYUV2RGB1(%%REGBP, %5) |
1170 |
YSCALEYUV2RGB1(%%REGBP, %5) |
1171 |
"pxor %%mm7, %%mm7 \n\t" |
1171 |
"pxor %%mm7, %%mm7 \n\t" |
1172 |
WRITEBGR24(%%REGb, 8280(%5), %%REGBP) |
1172 |
WRITEBGR24(%%REGb, 8280(%5), %%REGBP) |
1173 |
"pop %%"REG_BP" \n\t" |
1173 |
"pop %%"REG_rBP" \n\t" |
1174 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1174 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1175 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1175 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1176 |
"a" (&c->redDither) |
1176 |
"a" (&c->redDither) |
Lines 1179-1189
static void RENAME(yuv2bgr24_1)(SwsContext *c, const int16_t *buf0,
Link Here
|
1179 |
__asm__ volatile( |
1179 |
__asm__ volatile( |
1180 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1180 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1181 |
"mov %4, %%"REG_b" \n\t" |
1181 |
"mov %4, %%"REG_b" \n\t" |
1182 |
"push %%"REG_BP" \n\t" |
1182 |
"push %%"REG_rBP" \n\t" |
1183 |
YSCALEYUV2RGB1b(%%REGBP, %5) |
1183 |
YSCALEYUV2RGB1b(%%REGBP, %5) |
1184 |
"pxor %%mm7, %%mm7 \n\t" |
1184 |
"pxor %%mm7, %%mm7 \n\t" |
1185 |
WRITEBGR24(%%REGb, 8280(%5), %%REGBP) |
1185 |
WRITEBGR24(%%REGb, 8280(%5), %%REGBP) |
1186 |
"pop %%"REG_BP" \n\t" |
1186 |
"pop %%"REG_rBP" \n\t" |
1187 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1187 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1188 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1188 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1189 |
"a" (&c->redDither) |
1189 |
"a" (&c->redDither) |
Lines 1203-1209
static void RENAME(yuv2rgb555_1)(SwsContext *c, const int16_t *buf0,
Link Here
|
1203 |
__asm__ volatile( |
1203 |
__asm__ volatile( |
1204 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1204 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1205 |
"mov %4, %%"REG_b" \n\t" |
1205 |
"mov %4, %%"REG_b" \n\t" |
1206 |
"push %%"REG_BP" \n\t" |
1206 |
"push %%"REG_rBP" \n\t" |
1207 |
YSCALEYUV2RGB1(%%REGBP, %5) |
1207 |
YSCALEYUV2RGB1(%%REGBP, %5) |
1208 |
"pxor %%mm7, %%mm7 \n\t" |
1208 |
"pxor %%mm7, %%mm7 \n\t" |
1209 |
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ |
1209 |
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ |
Lines 1213-1219
static void RENAME(yuv2rgb555_1)(SwsContext *c, const int16_t *buf0,
Link Here
|
1213 |
"paddusb "RED_DITHER"(%5), %%mm5 \n\t" |
1213 |
"paddusb "RED_DITHER"(%5), %%mm5 \n\t" |
1214 |
#endif |
1214 |
#endif |
1215 |
WRITERGB15(%%REGb, 8280(%5), %%REGBP) |
1215 |
WRITERGB15(%%REGb, 8280(%5), %%REGBP) |
1216 |
"pop %%"REG_BP" \n\t" |
1216 |
"pop %%"REG_rBP" \n\t" |
1217 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1217 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1218 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1218 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1219 |
"a" (&c->redDither) |
1219 |
"a" (&c->redDither) |
Lines 1222-1228
static void RENAME(yuv2rgb555_1)(SwsContext *c, const int16_t *buf0,
Link Here
|
1222 |
__asm__ volatile( |
1222 |
__asm__ volatile( |
1223 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1223 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1224 |
"mov %4, %%"REG_b" \n\t" |
1224 |
"mov %4, %%"REG_b" \n\t" |
1225 |
"push %%"REG_BP" \n\t" |
1225 |
"push %%"REG_rBP" \n\t" |
1226 |
YSCALEYUV2RGB1b(%%REGBP, %5) |
1226 |
YSCALEYUV2RGB1b(%%REGBP, %5) |
1227 |
"pxor %%mm7, %%mm7 \n\t" |
1227 |
"pxor %%mm7, %%mm7 \n\t" |
1228 |
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ |
1228 |
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ |
Lines 1232-1238
static void RENAME(yuv2rgb555_1)(SwsContext *c, const int16_t *buf0,
Link Here
|
1232 |
"paddusb "RED_DITHER"(%5), %%mm5 \n\t" |
1232 |
"paddusb "RED_DITHER"(%5), %%mm5 \n\t" |
1233 |
#endif |
1233 |
#endif |
1234 |
WRITERGB15(%%REGb, 8280(%5), %%REGBP) |
1234 |
WRITERGB15(%%REGb, 8280(%5), %%REGBP) |
1235 |
"pop %%"REG_BP" \n\t" |
1235 |
"pop %%"REG_rBP" \n\t" |
1236 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1236 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1237 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1237 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1238 |
"a" (&c->redDither) |
1238 |
"a" (&c->redDither) |
Lines 1252-1258
static void RENAME(yuv2rgb565_1)(SwsContext *c, const int16_t *buf0,
Link Here
|
1252 |
__asm__ volatile( |
1252 |
__asm__ volatile( |
1253 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1253 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1254 |
"mov %4, %%"REG_b" \n\t" |
1254 |
"mov %4, %%"REG_b" \n\t" |
1255 |
"push %%"REG_BP" \n\t" |
1255 |
"push %%"REG_rBP" \n\t" |
1256 |
YSCALEYUV2RGB1(%%REGBP, %5) |
1256 |
YSCALEYUV2RGB1(%%REGBP, %5) |
1257 |
"pxor %%mm7, %%mm7 \n\t" |
1257 |
"pxor %%mm7, %%mm7 \n\t" |
1258 |
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ |
1258 |
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ |
Lines 1262-1268
static void RENAME(yuv2rgb565_1)(SwsContext *c, const int16_t *buf0,
Link Here
|
1262 |
"paddusb "RED_DITHER"(%5), %%mm5 \n\t" |
1262 |
"paddusb "RED_DITHER"(%5), %%mm5 \n\t" |
1263 |
#endif |
1263 |
#endif |
1264 |
WRITERGB16(%%REGb, 8280(%5), %%REGBP) |
1264 |
WRITERGB16(%%REGb, 8280(%5), %%REGBP) |
1265 |
"pop %%"REG_BP" \n\t" |
1265 |
"pop %%"REG_rBP" \n\t" |
1266 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1266 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1267 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1267 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1268 |
"a" (&c->redDither) |
1268 |
"a" (&c->redDither) |
Lines 1271-1277
static void RENAME(yuv2rgb565_1)(SwsContext *c, const int16_t *buf0,
Link Here
|
1271 |
__asm__ volatile( |
1271 |
__asm__ volatile( |
1272 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1272 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1273 |
"mov %4, %%"REG_b" \n\t" |
1273 |
"mov %4, %%"REG_b" \n\t" |
1274 |
"push %%"REG_BP" \n\t" |
1274 |
"push %%"REG_rBP" \n\t" |
1275 |
YSCALEYUV2RGB1b(%%REGBP, %5) |
1275 |
YSCALEYUV2RGB1b(%%REGBP, %5) |
1276 |
"pxor %%mm7, %%mm7 \n\t" |
1276 |
"pxor %%mm7, %%mm7 \n\t" |
1277 |
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ |
1277 |
/* mm2=B, %%mm4=G, %%mm5=R, %%mm7=0 */ |
Lines 1281-1287
static void RENAME(yuv2rgb565_1)(SwsContext *c, const int16_t *buf0,
Link Here
|
1281 |
"paddusb "RED_DITHER"(%5), %%mm5 \n\t" |
1281 |
"paddusb "RED_DITHER"(%5), %%mm5 \n\t" |
1282 |
#endif |
1282 |
#endif |
1283 |
WRITERGB16(%%REGb, 8280(%5), %%REGBP) |
1283 |
WRITERGB16(%%REGb, 8280(%5), %%REGBP) |
1284 |
"pop %%"REG_BP" \n\t" |
1284 |
"pop %%"REG_rBP" \n\t" |
1285 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1285 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1286 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1286 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1287 |
"a" (&c->redDither) |
1287 |
"a" (&c->redDither) |
Lines 1338-1347
static void RENAME(yuv2yuyv422_1)(SwsContext *c, const int16_t *buf0,
Link Here
|
1338 |
__asm__ volatile( |
1338 |
__asm__ volatile( |
1339 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1339 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1340 |
"mov %4, %%"REG_b" \n\t" |
1340 |
"mov %4, %%"REG_b" \n\t" |
1341 |
"push %%"REG_BP" \n\t" |
1341 |
"push %%"REG_rBP" \n\t" |
1342 |
YSCALEYUV2PACKED1(%%REGBP, %5) |
1342 |
YSCALEYUV2PACKED1(%%REGBP, %5) |
1343 |
WRITEYUY2(%%REGb, 8280(%5), %%REGBP) |
1343 |
WRITEYUY2(%%REGb, 8280(%5), %%REGBP) |
1344 |
"pop %%"REG_BP" \n\t" |
1344 |
"pop %%"REG_rBP" \n\t" |
1345 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1345 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1346 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1346 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1347 |
"a" (&c->redDither) |
1347 |
"a" (&c->redDither) |
Lines 1350-1359
static void RENAME(yuv2yuyv422_1)(SwsContext *c, const int16_t *buf0,
Link Here
|
1350 |
__asm__ volatile( |
1350 |
__asm__ volatile( |
1351 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1351 |
"mov %%"REG_b", "ESP_OFFSET"(%5) \n\t" |
1352 |
"mov %4, %%"REG_b" \n\t" |
1352 |
"mov %4, %%"REG_b" \n\t" |
1353 |
"push %%"REG_BP" \n\t" |
1353 |
"push %%"REG_rBP" \n\t" |
1354 |
YSCALEYUV2PACKED1b(%%REGBP, %5) |
1354 |
YSCALEYUV2PACKED1b(%%REGBP, %5) |
1355 |
WRITEYUY2(%%REGb, 8280(%5), %%REGBP) |
1355 |
WRITEYUY2(%%REGb, 8280(%5), %%REGBP) |
1356 |
"pop %%"REG_BP" \n\t" |
1356 |
"pop %%"REG_rBP" \n\t" |
1357 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1357 |
"mov "ESP_OFFSET"(%5), %%"REG_b" \n\t" |
1358 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1358 |
:: "c" (buf0), "d" (buf1), "S" (ubuf0), "D" (ubuf1), "m" (dest), |
1359 |
"a" (&c->redDither) |
1359 |
"a" (&c->redDither) |
Lines 1510-1516
static void RENAME(hyscale_fast)(SwsContext *c, int16_t *dst,
Link Here
|
1510 |
{ |
1510 |
{ |
1511 |
int32_t *filterPos = c->hLumFilterPos; |
1511 |
int32_t *filterPos = c->hLumFilterPos; |
1512 |
int16_t *filter = c->hLumFilter; |
1512 |
int16_t *filter = c->hLumFilter; |
1513 |
void *mmx2FilterCode= c->lumMmx2FilterCode; |
1513 |
x86_native_reg mmx2FilterCode = (uintptr_t)c->lumMmx2FilterCode; |
1514 |
int i; |
1514 |
int i; |
1515 |
#if defined(PIC) |
1515 |
#if defined(PIC) |
1516 |
uint64_t ebxsave; |
1516 |
uint64_t ebxsave; |
1517 |
- |
|
|