15420N/A+#if defined(__sun__) || defined(__sun)
15420N/A #define VISUAL_TABLESIZE(table) (sizeof (table) / sizeof (table[0]))
15420N/A+#if !defined(VISUAL_OS_WIN32) && !defined(__sun__) && !defined(__sun)
15420N/A+#endif /* !VISUAL_OS_WIN32 && !__sun__ && !__sun */
15420N/A * Adding colors together. (Thread #7)
15420N/A- "#1\n\t movd %[fracu], %%mm4" /* mm4 = [ 0 | 0 | 0x10 | fracU ] */
15420N/A- "#2\n\t movd %[fracv], %%mm6" /* mm6 = [ 0 | 0 | 0x10 | fracV ] */
15420N/A+ "# 1\n\t movd %[fracu], %%mm4" /* mm4 = [ 0 | 0 | 0x10 | fracU ] */
15420N/A+ "# 2\n\t movd %[fracv], %%mm6" /* mm6 = [ 0 | 0 | 0x10 | fracV ] */
15420N/A- "#1\n\t punpcklwd %%mm4, %%mm4" /* mm4 = [ 0x10 | 0x10 | fracU | fracU ] */
15420N/A+ "# 1\n\t punpcklwd %%mm4, %%mm4" /* mm4 = [ 0x10 | 0x10 | fracU | fracU ] */
15420N/A- "#2\n\t punpckldq %%mm6, %%mm6" /* mm6 = [ 0x10 | fracv | 0x10 | fracV ] */
15420N/A- "#3\n\t movq %[pixel_u], %%mm0" /* mm0 = [ col[0] | col[2] ] */
15420N/A+ "# 2\n\t punpckldq %%mm6, %%mm6" /* mm6 = [ 0x10 | fracv | 0x10 | fracV ] */
15420N/A+ "# 3\n\t movq %[pixel_u], %%mm0" /* mm0 = [ col[0] | col[2] ] */
15420N/A- "#1\n\t punpckldq %%mm4, %%mm5" /* mm5 = [ fracU | fracU | 0 | 0 ] */
15420N/A- "#2\n\t punpcklwd %%mm7, %%mm3" /* mm3 = [ 0 | 0x10 | 0 | fracV ] */
15420N/A+ "# 1\n\t punpckldq %%mm4, %%mm5" /* mm5 = [ fracU | fracU | 0 | 0 ] */
15420N/A+ "# 2\n\t punpcklwd %%mm7, %%mm3" /* mm3 = [ 0 | 0x10 | 0 | fracV ] */
15420N/A- "#1\n\t psubusw %%mm5, %%mm4" /* mm4 = [ 0x10-fracU | 0x10-fracU | fracU | fracU ] */
15420N/A- "#2\n\t punpckldq %%mm3, %%mm3" /* mm3 = [ 0 | fracV | 0 | fracV ] */
15420N/A- "#4\n\t movq %[pixel_l], %%mm1" /* mm1 = [ col[1] | col[3] ] */
15420N/A+ "# 1\n\t psubusw %%mm5, %%mm4" /* mm4 = [ 0x10-fracU | 0x10-fracU | fracU | fracU ] */
15420N/A+ "# 2\n\t punpckldq %%mm3, %%mm3" /* mm3 = [ 0 | fracV | 0 | fracV ] */
15420N/A+ "# 4\n\t movq %[pixel_l], %%mm1" /* mm1 = [ col[1] | col[3] ] */
15420N/A- "#2\n\t pslld $16, %%mm3" /* mm3 = [ fracV | 0 | fracV | 0 ] */
15420N/A- "#3\n\t punpcklbw %%mm7, %%mm0" /* mm0 = [ col[0] unpacked ] */
15420N/A+ "# 2\n\t pslld $16, %%mm3" /* mm3 = [ fracV | 0 | fracV | 0 ] */
15420N/A+ "# 3\n\t punpcklbw %%mm7, %%mm0" /* mm0 = [ col[0] unpacked ] */
15420N/A- "#2\n\t psubusw %%mm3, %%mm6" /* mm6 = [ 0x10-fracV | fracV | 0x10-fracV | fracV ] */
15420N/A+ "# 2\n\t psubusw %%mm3, %%mm6" /* mm6 = [ 0x10-fracV | fracV | 0x10-fracV | fracV ] */
15420N/A- "#C\n\t pmullw %%mm6, %%mm4" /* mm4 = [ coef[0]|coef[1]|coef[2]|coef[3] ] */
15420N/A+ "# C\n\t pmullw %%mm6, %%mm4" /* mm4 = [ coef[0]|coef[1]|coef[2]|coef[3] ] */
15420N/A- "#4\n\t punpcklbw %%mm7, %%mm1" /* mm1 = [ col[1] unpacked ] */
15420N/A- "#6\n\t punpckhwd %%mm4, %%mm4" /* mm4 = [ coef[1]|coef[1]|coef[0]|coef[0] ] */
15420N/A+ "# 4\n\t punpcklbw %%mm7, %%mm1" /* mm1 = [ col[1] unpacked ] */
15420N/A+ "# 6\n\t punpckhwd %%mm4, %%mm4" /* mm4 = [ coef[1]|coef[1]|coef[0]|coef[0] ] */
15420N/A- "#3\n\t punpckhbw %%mm7, %%mm2" /* mm2 = [ col[2] unpacked ] */
15420N/A- "#5\n\t punpcklwd %%mm5, %%mm5" /* mm5 = [ coef[2]|coef[2]|coef[3]|coef[3] ] */
15420N/A+ "# 3\n\t punpckhbw %%mm7, %%mm2" /* mm2 = [ col[2] unpacked ] */
15420N/A+ "# 5\n\t punpcklwd %%mm5, %%mm5" /* mm5 = [ coef[2]|coef[2]|coef[3]|coef[3] ] */
15420N/A- "#4\n\t punpckhbw %%mm7, %%mm3" /* mm3 = [ col[3] unpacked ] */
15420N/A+ "# 4\n\t punpckhbw %%mm7, %%mm3" /* mm3 = [ col[3] unpacked ] */
15420N/A- "#5\n\t punpcklwd %%mm6, %%mm6" /* mm6 = [ coef[3]|coef[3]|coef[3]|coef[3] ] */
15420N/A+ "# 5\n\t punpcklwd %%mm6, %%mm6" /* mm6 = [ coef[3]|coef[3]|coef[3]|coef[3] ] */
15420N/A- "#6\n\t punpcklwd %%mm7, %%mm7" /* mm6 = [ coef[1]|coef[1]|coef[1]|coef[1] ] */
15420N/A- "#5\n\t pmullw %%mm6, %%mm3" /* mm3 = [ coef[3] * col[3] unpacked ] */
15420N/A+ "# 6\n\t punpcklwd %%mm7, %%mm7" /* mm6 = [ coef[1]|coef[1]|coef[1]|coef[1] ] */
15420N/A+ "# 5\n\t pmullw %%mm6, %%mm3" /* mm3 = [ coef[3] * col[3] unpacked ] */
15420N/A- "#5\n\t punpckhwd %%mm5, %%mm5" /* mm5 = [ coef[2]|coef[2]|coef[2]|coef[2] ] */
15420N/A- "#6\n\t pmullw %%mm7, %%mm1" /* mm1 = [ coef[1] * col[1] unpacked ] */
15420N/A+ "# 5\n\t punpckhwd %%mm5, %%mm5" /* mm5 = [ coef[2]|coef[2]|coef[2]|coef[2] ] */
15420N/A+ "# 6\n\t pmullw %%mm7, %%mm1" /* mm1 = [ coef[1] * col[1] unpacked ] */
15420N/A- "#5\n\t pmullw %%mm5, %%mm2" /* mm2 = [ coef[2] * col[2] unpacked ] */
15420N/A- "#6\n\t punpckhwd %%mm4, %%mm4" /* mm4 = [ coef[0]|coef[0]|coef[0]|coef[0] ] */
15420N/A+ "# 5\n\t pmullw %%mm5, %%mm2" /* mm2 = [ coef[2] * col[2] unpacked ] */
15420N/A+ "# 6\n\t punpckhwd %%mm4, %%mm4" /* mm4 = [ coef[0]|coef[0]|coef[0]|coef[0] ] */
15420N/A- "#6\n\t pmullw %%mm4, %%mm0" /* mm0 = [ coef[0] * col[0] unpacked ] */
15420N/A+ "# 6\n\t pmullw %%mm4, %%mm0" /* mm0 = [ coef[0] * col[0] unpacked ] */
15420N/A /* Unpacking the resulting pixel */