From 07274513e984f0b5544586c74508ccd16e7dcafa Mon Sep 17 00:00:00 2001 From: David Walter Seikel Date: Sun, 13 Jan 2013 17:29:19 +1000 Subject: Remove EFL, since it's been released now. --- .../lib/engines/common/evas_op_blend/Makefile.am | 46 -- .../lib/engines/common/evas_op_blend/Makefile.in | 721 --------------------- .../engines/common/evas_op_blend/op_blend_color_.c | 109 ---- .../common/evas_op_blend/op_blend_color_i386.c | 138 ---- .../common/evas_op_blend/op_blend_color_neon.c | 223 ------- .../common/evas_op_blend/op_blend_color_sse3.c | 167 ----- .../common/evas_op_blend/op_blend_mask_color_.c | 185 ------ .../evas_op_blend/op_blend_mask_color_i386.c | 251 ------- .../evas_op_blend/op_blend_mask_color_neon.c | 562 ---------------- .../evas_op_blend/op_blend_mask_color_sse3.c | 321 --------- .../common/evas_op_blend/op_blend_master_sse3.c | 77 --- .../engines/common/evas_op_blend/op_blend_pixel_.c | 162 ----- .../common/evas_op_blend/op_blend_pixel_color_.c | 284 -------- .../evas_op_blend/op_blend_pixel_color_i386.c | 221 ------- .../evas_op_blend/op_blend_pixel_color_neon.c | 570 ---------------- .../evas_op_blend/op_blend_pixel_color_sse3.c | 543 ---------------- .../common/evas_op_blend/op_blend_pixel_i386.c | 217 ------- .../common/evas_op_blend/op_blend_pixel_mask_.c | 189 ------ .../evas_op_blend/op_blend_pixel_mask_i386.c | 157 ----- .../evas_op_blend/op_blend_pixel_mask_neon.c | 129 ---- .../evas_op_blend/op_blend_pixel_mask_sse3.c | 300 --------- .../common/evas_op_blend/op_blend_pixel_neon.c | 530 --------------- .../common/evas_op_blend/op_blend_pixel_sse3.c | 315 --------- 23 files changed, 6417 deletions(-) delete mode 100644 libraries/evas/src/lib/engines/common/evas_op_blend/Makefile.am delete mode 100644 libraries/evas/src/lib/engines/common/evas_op_blend/Makefile.in delete mode 100644 libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_color_.c delete mode 100644 libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_color_i386.c delete mode 100644 libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_color_neon.c delete mode 100644 libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_color_sse3.c delete mode 100644 libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_mask_color_.c delete mode 100644 libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_mask_color_i386.c delete mode 100644 libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_mask_color_neon.c delete mode 100644 libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_mask_color_sse3.c delete mode 100644 libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_master_sse3.c delete mode 100644 libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_.c delete mode 100644 libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_color_.c delete mode 100644 libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_color_i386.c delete mode 100644 libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_color_neon.c delete mode 100644 libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_color_sse3.c delete mode 100644 libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_i386.c delete mode 100644 libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_mask_.c delete mode 100644 libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_mask_i386.c delete mode 100644 libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_mask_neon.c delete mode 100644 libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_mask_sse3.c delete mode 100644 libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_neon.c delete mode 100644 libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_sse3.c (limited to 'libraries/evas/src/lib/engines/common/evas_op_blend') diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/Makefile.am b/libraries/evas/src/lib/engines/common/evas_op_blend/Makefile.am deleted file mode 100644 index 77435c4..0000000 --- a/libraries/evas/src/lib/engines/common/evas_op_blend/Makefile.am +++ /dev/null @@ -1,46 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in - -EXTRA_DIST = \ -op_blend_color_.c \ -op_blend_color_i386.c \ -op_blend_color_neon.c \ -op_blend_color_sse3.c \ -op_blend_mask_color_.c \ -op_blend_mask_color_i386.c \ -op_blend_mask_color_neon.c \ -op_blend_mask_color_sse3.c \ -op_blend_pixel_.c \ -op_blend_pixel_color_.c \ -op_blend_pixel_color_i386.c \ -op_blend_pixel_color_neon.c \ -op_blend_pixel_color_sse3.c \ -op_blend_pixel_i386.c \ -op_blend_pixel_mask_.c \ -op_blend_pixel_mask_i386.c \ -op_blend_pixel_mask_neon.c \ -op_blend_pixel_mask_sse3.c \ -op_blend_pixel_neon.c \ -op_blend_pixel_sse3.c - -noinst_LTLIBRARIES = libevas_engine_common_op_blend_master_sse3.la - -libevas_engine_common_op_blend_master_sse3_la_SOURCES = \ -op_blend_master_sse3.c - -libevas_engine_common_op_blend_master_sse3_la_CFLAGS = \ --I. \ --I$(top_srcdir)/src/lib \ --I$(top_srcdir)/src/lib/engines/common \ --I$(top_srcdir)/src/lib/engines/common/evas_op_blend \ --I$(top_srcdir)/src/lib/cserve \ --I$(top_srcdir)/src/lib/include \ --DPACKAGE_BIN_DIR=\"$(bindir)\" \ --DPACKAGE_LIB_DIR=\"$(libdir)\" \ --DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \ -@FREETYPE_CFLAGS@ @VALGRIND_CFLAGS@ \ -@PIXMAN_CFLAGS@ \ -@EET_CFLAGS@ @pthread_cflags@ \ -@EINA_CFLAGS@ \ -@FRIBIDI_CFLAGS@ @HARFBUZZ_CFLAGS@ \ -@PIXMAN_CFLAGS@ \ -@EVAS_SSE3_CFLAGS@ diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/Makefile.in b/libraries/evas/src/lib/engines/common/evas_op_blend/Makefile.in deleted file mode 100644 index 016b49c..0000000 --- a/libraries/evas/src/lib/engines/common/evas_op_blend/Makefile.in +++ /dev/null @@ -1,721 +0,0 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = src/lib/engines/common/evas_op_blend -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/efl_attribute.m4 \ - $(top_srcdir)/m4/efl_coverage.m4 \ - $(top_srcdir)/m4/efl_doxygen.m4 \ - $(top_srcdir)/m4/efl_fnmatch.m4 \ - $(top_srcdir)/m4/efl_path_max.m4 $(top_srcdir)/m4/efl_tests.m4 \ - $(top_srcdir)/m4/evas_check_engine.m4 \ - $(top_srcdir)/m4/evas_check_loader.m4 \ - $(top_srcdir)/m4/evas_converter.m4 \ - $(top_srcdir)/m4/evas_dither.m4 \ - $(top_srcdir)/m4/evas_scaler.m4 $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -libevas_engine_common_op_blend_master_sse3_la_LIBADD = -am_libevas_engine_common_op_blend_master_sse3_la_OBJECTS = libevas_engine_common_op_blend_master_sse3_la-op_blend_master_sse3.lo -libevas_engine_common_op_blend_master_sse3_la_OBJECTS = \ - $(am_libevas_engine_common_op_blend_master_sse3_la_OBJECTS) -AM_V_lt = $(am__v_lt_$(V)) -am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) -am__v_lt_0 = --silent -libevas_engine_common_op_blend_master_sse3_la_LINK = $(LIBTOOL) \ - $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) \ - $(libevas_engine_common_op_blend_master_sse3_la_CFLAGS) \ - $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_$(V)) -am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) -am__v_CC_0 = @echo " CC " $@; -AM_V_at = $(am__v_at_$(V)) -am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) -am__v_at_0 = @ -CCLD = $(CC) -LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_$(V)) -am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) -am__v_CCLD_0 = @echo " CCLD " $@; -AM_V_GEN = $(am__v_GEN_$(V)) -am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) -am__v_GEN_0 = @echo " GEN " $@; -SOURCES = $(libevas_engine_common_op_blend_master_sse3_la_SOURCES) -DIST_SOURCES = \ - $(libevas_engine_common_op_blend_master_sse3_la_SOURCES) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CHECK_CFLAGS = @CHECK_CFLAGS@ -CHECK_LIBS = @CHECK_LIBS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DIRECTFB_CFLAGS = @DIRECTFB_CFLAGS@ -DIRECTFB_LIBS = @DIRECTFB_LIBS@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -ECORE_EVAS_CFLAGS = @ECORE_EVAS_CFLAGS@ -ECORE_EVAS_LIBS = @ECORE_EVAS_LIBS@ -EDB_CFLAGS = @EDB_CFLAGS@ -EDB_LIBS = @EDB_LIBS@ -EDJE_CFLAGS = @EDJE_CFLAGS@ -EDJE_LIBS = @EDJE_LIBS@ -EET_CFLAGS = @EET_CFLAGS@ -EET_LIBS = @EET_LIBS@ -EFL_COVERAGE_CFLAGS = @EFL_COVERAGE_CFLAGS@ -EFL_COVERAGE_LIBS = @EFL_COVERAGE_LIBS@ -EFL_FNMATCH_LIBS = @EFL_FNMATCH_LIBS@ -EGREP = @EGREP@ -EINA_CFLAGS = @EINA_CFLAGS@ -EINA_LIBS = @EINA_LIBS@ -EVAS_CFLAGS = @EVAS_CFLAGS@ -EVAS_LIBS = @EVAS_LIBS@ -EVAS_SSE3_CFLAGS = @EVAS_SSE3_CFLAGS@ -EVIL_CFLAGS = @EVIL_CFLAGS@ -EVIL_LIBS = @EVIL_LIBS@ -EXEEXT = @EXEEXT@ -EXOTIC_CFLAGS = @EXOTIC_CFLAGS@ -EXOTIC_LIBS = @EXOTIC_LIBS@ -FGREP = @FGREP@ -FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ -FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ -FREETYPE_CFLAGS = @FREETYPE_CFLAGS@ -FREETYPE_LIBS = @FREETYPE_LIBS@ -FRIBIDI_CFLAGS = @FRIBIDI_CFLAGS@ -FRIBIDI_LIBS = @FRIBIDI_LIBS@ -GL_EET_CFLAGS = @GL_EET_CFLAGS@ -GL_EET_LIBS = @GL_EET_LIBS@ -GREP = @GREP@ -HARFBUZZ_CFLAGS = @HARFBUZZ_CFLAGS@ -HARFBUZZ_LIBS = @HARFBUZZ_LIBS@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LINEBREAK_CFLAGS = @LINEBREAK_CFLAGS@ -LINEBREAK_LIBS = @LINEBREAK_LIBS@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -MODULE_ARCH = @MODULE_ARCH@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJC = @OBJC@ -OBJCDEPMODE = @OBJCDEPMODE@ -OBJCFLAGS = @OBJCFLAGS@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ -PIXMAN_LIBS = @PIXMAN_LIBS@ -PKG_CONFIG = @PKG_CONFIG@ -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ -PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ -PNG_CFLAGS = @PNG_CFLAGS@ -PNG_LIBS = @PNG_LIBS@ -RANLIB = @RANLIB@ -SDL_CFLAGS = @SDL_CFLAGS@ -SDL_LIBS = @SDL_LIBS@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -SHM_OPEN_LINK = @SHM_OPEN_LINK@ -STRIP = @STRIP@ -SVG_CFLAGS = @SVG_CFLAGS@ -SVG_LIBS = @SVG_LIBS@ -VALGRIND_CFLAGS = @VALGRIND_CFLAGS@ -VALGRIND_LIBS = @VALGRIND_LIBS@ -VERSION = @VERSION@ -VMAJ = @VMAJ@ -WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ -WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ -XCB_CFLAGS = @XCB_CFLAGS@ -XCB_GL_CFLAGS = @XCB_GL_CFLAGS@ -XCB_GL_LIBS = @XCB_GL_LIBS@ -XCB_LIBS = @XCB_LIBS@ -XEXT_CFLAGS = @XEXT_CFLAGS@ -XEXT_LIBS = @XEXT_LIBS@ -XMKMF = @XMKMF@ -X_CFLAGS = @X_CFLAGS@ -X_EXTRA_LIBS = @X_EXTRA_LIBS@ -X_LIBS = @X_LIBS@ -X_PRE_LIBS = @X_PRE_LIBS@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -ac_ct_OBJC = @ac_ct_OBJC@ -altivec_cflags = @altivec_cflags@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -dlopen_libs = @dlopen_libs@ -docdir = @docdir@ -dvidir = @dvidir@ -edje_cc = @edje_cc@ -efl_doxygen = @efl_doxygen@ -efl_have_doxygen = @efl_have_doxygen@ -evas_engine_buffer_cflags = @evas_engine_buffer_cflags@ -evas_engine_buffer_libs = @evas_engine_buffer_libs@ -evas_engine_direct3d_cflags = @evas_engine_direct3d_cflags@ -evas_engine_direct3d_libs = @evas_engine_direct3d_libs@ -evas_engine_directfb_cflags = @evas_engine_directfb_cflags@ -evas_engine_directfb_libs = @evas_engine_directfb_libs@ -evas_engine_fb_cflags = @evas_engine_fb_cflags@ -evas_engine_fb_libs = @evas_engine_fb_libs@ -evas_engine_gl_cocoa_cflags = @evas_engine_gl_cocoa_cflags@ -evas_engine_gl_cocoa_libs = @evas_engine_gl_cocoa_libs@ -evas_engine_gl_common_libs = @evas_engine_gl_common_libs@ -evas_engine_gl_sdl_cflags = @evas_engine_gl_sdl_cflags@ -evas_engine_gl_sdl_libs = @evas_engine_gl_sdl_libs@ -evas_engine_gl_xcb_cflags = @evas_engine_gl_xcb_cflags@ -evas_engine_gl_xcb_libs = @evas_engine_gl_xcb_libs@ -evas_engine_gl_xlib_cflags = @evas_engine_gl_xlib_cflags@ -evas_engine_gl_xlib_libs = @evas_engine_gl_xlib_libs@ -evas_engine_psl1ght_cflags = @evas_engine_psl1ght_cflags@ -evas_engine_psl1ght_libs = @evas_engine_psl1ght_libs@ -evas_engine_software_16_ddraw_cflags = @evas_engine_software_16_ddraw_cflags@ -evas_engine_software_16_ddraw_libs = @evas_engine_software_16_ddraw_libs@ -evas_engine_software_16_sdl_cflags = @evas_engine_software_16_sdl_cflags@ -evas_engine_software_16_sdl_libs = @evas_engine_software_16_sdl_libs@ -evas_engine_software_16_wince_cflags = @evas_engine_software_16_wince_cflags@ -evas_engine_software_16_wince_libs = @evas_engine_software_16_wince_libs@ -evas_engine_software_16_x11_cflags = @evas_engine_software_16_x11_cflags@ -evas_engine_software_16_x11_libs = @evas_engine_software_16_x11_libs@ -evas_engine_software_8_x11_cflags = @evas_engine_software_8_x11_cflags@ -evas_engine_software_8_x11_libs = @evas_engine_software_8_x11_libs@ -evas_engine_software_ddraw_cflags = @evas_engine_software_ddraw_cflags@ -evas_engine_software_ddraw_libs = @evas_engine_software_ddraw_libs@ -evas_engine_software_gdi_cflags = @evas_engine_software_gdi_cflags@ -evas_engine_software_gdi_libs = @evas_engine_software_gdi_libs@ -evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ -evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ -evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ -evas_engine_software_xlib_libs = @evas_engine_software_xlib_libs@ -evas_engine_wayland_egl_cflags = @evas_engine_wayland_egl_cflags@ -evas_engine_wayland_egl_libs = @evas_engine_wayland_egl_libs@ -evas_engine_wayland_shm_cflags = @evas_engine_wayland_shm_cflags@ -evas_engine_wayland_shm_libs = @evas_engine_wayland_shm_libs@ -evas_image_loader_bmp_cflags = @evas_image_loader_bmp_cflags@ -evas_image_loader_bmp_libs = @evas_image_loader_bmp_libs@ -evas_image_loader_edb_cflags = @evas_image_loader_edb_cflags@ -evas_image_loader_edb_libs = @evas_image_loader_edb_libs@ -evas_image_loader_eet_cflags = @evas_image_loader_eet_cflags@ -evas_image_loader_eet_libs = @evas_image_loader_eet_libs@ -evas_image_loader_generic_cflags = @evas_image_loader_generic_cflags@ -evas_image_loader_generic_libs = @evas_image_loader_generic_libs@ -evas_image_loader_gif_cflags = @evas_image_loader_gif_cflags@ -evas_image_loader_gif_libs = @evas_image_loader_gif_libs@ -evas_image_loader_ico_cflags = @evas_image_loader_ico_cflags@ -evas_image_loader_ico_libs = @evas_image_loader_ico_libs@ -evas_image_loader_jpeg_cflags = @evas_image_loader_jpeg_cflags@ -evas_image_loader_jpeg_libs = @evas_image_loader_jpeg_libs@ -evas_image_loader_pmaps_cflags = @evas_image_loader_pmaps_cflags@ -evas_image_loader_pmaps_libs = @evas_image_loader_pmaps_libs@ -evas_image_loader_png_cflags = @evas_image_loader_png_cflags@ -evas_image_loader_png_libs = @evas_image_loader_png_libs@ -evas_image_loader_psd_cflags = @evas_image_loader_psd_cflags@ -evas_image_loader_psd_libs = @evas_image_loader_psd_libs@ -evas_image_loader_svg_cflags = @evas_image_loader_svg_cflags@ -evas_image_loader_svg_libs = @evas_image_loader_svg_libs@ -evas_image_loader_tga_cflags = @evas_image_loader_tga_cflags@ -evas_image_loader_tga_libs = @evas_image_loader_tga_libs@ -evas_image_loader_tiff_cflags = @evas_image_loader_tiff_cflags@ -evas_image_loader_tiff_libs = @evas_image_loader_tiff_libs@ -evas_image_loader_wbmp_cflags = @evas_image_loader_wbmp_cflags@ -evas_image_loader_wbmp_libs = @evas_image_loader_wbmp_libs@ -evas_image_loader_xpm_cflags = @evas_image_loader_xpm_cflags@ -evas_image_loader_xpm_libs = @evas_image_loader_xpm_libs@ -exec_prefix = @exec_prefix@ -have_evas_engine_gl_x11 = @have_evas_engine_gl_x11@ -have_evas_engine_gl_xcb = @have_evas_engine_gl_xcb@ -have_evas_engine_gl_xlib = @have_evas_engine_gl_xlib@ -have_evas_engine_software_x11 = @have_evas_engine_software_x11@ -have_evas_engine_software_xcb = @have_evas_engine_software_xcb@ -have_evas_engine_software_xlib = @have_evas_engine_software_xlib@ -have_lcov = @have_lcov@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -lt_ECHO = @lt_ECHO@ -lt_enable_auto_import = @lt_enable_auto_import@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -pkgconfig_requires_private = @pkgconfig_requires_private@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -pthread_cflags = @pthread_cflags@ -pthread_libs = @pthread_libs@ -release_info = @release_info@ -requirement_evas = @requirement_evas@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -version_info = @version_info@ -MAINTAINERCLEANFILES = Makefile.in -EXTRA_DIST = \ -op_blend_color_.c \ -op_blend_color_i386.c \ -op_blend_color_neon.c \ -op_blend_color_sse3.c \ -op_blend_mask_color_.c \ -op_blend_mask_color_i386.c \ -op_blend_mask_color_neon.c \ -op_blend_mask_color_sse3.c \ -op_blend_pixel_.c \ -op_blend_pixel_color_.c \ -op_blend_pixel_color_i386.c \ -op_blend_pixel_color_neon.c \ -op_blend_pixel_color_sse3.c \ -op_blend_pixel_i386.c \ -op_blend_pixel_mask_.c \ -op_blend_pixel_mask_i386.c \ -op_blend_pixel_mask_neon.c \ -op_blend_pixel_mask_sse3.c \ -op_blend_pixel_neon.c \ -op_blend_pixel_sse3.c - -noinst_LTLIBRARIES = libevas_engine_common_op_blend_master_sse3.la -libevas_engine_common_op_blend_master_sse3_la_SOURCES = \ -op_blend_master_sse3.c - -libevas_engine_common_op_blend_master_sse3_la_CFLAGS = \ --I. \ --I$(top_srcdir)/src/lib \ --I$(top_srcdir)/src/lib/engines/common \ --I$(top_srcdir)/src/lib/engines/common/evas_op_blend \ --I$(top_srcdir)/src/lib/cserve \ --I$(top_srcdir)/src/lib/include \ --DPACKAGE_BIN_DIR=\"$(bindir)\" \ --DPACKAGE_LIB_DIR=\"$(libdir)\" \ --DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \ -@FREETYPE_CFLAGS@ @VALGRIND_CFLAGS@ \ -@PIXMAN_CFLAGS@ \ -@EET_CFLAGS@ @pthread_cflags@ \ -@EINA_CFLAGS@ \ -@FRIBIDI_CFLAGS@ @HARFBUZZ_CFLAGS@ \ -@PIXMAN_CFLAGS@ \ -@EVAS_SSE3_CFLAGS@ - -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/lib/engines/common/evas_op_blend/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --gnu src/lib/engines/common/evas_op_blend/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done -libevas_engine_common_op_blend_master_sse3.la: $(libevas_engine_common_op_blend_master_sse3_la_OBJECTS) $(libevas_engine_common_op_blend_master_sse3_la_DEPENDENCIES) - $(AM_V_CCLD)$(libevas_engine_common_op_blend_master_sse3_la_LINK) $(libevas_engine_common_op_blend_master_sse3_la_OBJECTS) $(libevas_engine_common_op_blend_master_sse3_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libevas_engine_common_op_blend_master_sse3_la-op_blend_master_sse3.Plo@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< - -libevas_engine_common_op_blend_master_sse3_la-op_blend_master_sse3.lo: op_blend_master_sse3.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libevas_engine_common_op_blend_master_sse3_la_CFLAGS) $(CFLAGS) -MT libevas_engine_common_op_blend_master_sse3_la-op_blend_master_sse3.lo -MD -MP -MF $(DEPDIR)/libevas_engine_common_op_blend_master_sse3_la-op_blend_master_sse3.Tpo -c -o libevas_engine_common_op_blend_master_sse3_la-op_blend_master_sse3.lo `test -f 'op_blend_master_sse3.c' || echo '$(srcdir)/'`op_blend_master_sse3.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libevas_engine_common_op_blend_master_sse3_la-op_blend_master_sse3.Tpo $(DEPDIR)/libevas_engine_common_op_blend_master_sse3_la-op_blend_master_sse3.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='op_blend_master_sse3.c' object='libevas_engine_common_op_blend_master_sse3_la-op_blend_master_sse3.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libevas_engine_common_op_blend_master_sse3_la_CFLAGS) $(CFLAGS) -c -o libevas_engine_common_op_blend_master_sse3_la-op_blend_master_sse3.lo `test -f 'op_blend_master_sse3.c' || echo '$(srcdir)/'`op_blend_master_sse3.c - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." - -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_color_.c b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_color_.c deleted file mode 100644 index be70065..0000000 --- a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_color_.c +++ /dev/null @@ -1,109 +0,0 @@ -/* blend color -> dst */ - -#ifdef BUILD_C -static void -_op_blend_c_dp(DATA32 *s __UNUSED__, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) { - DATA32 *e, a = 256 - (c >> 24); - UNROLL8_PLD_WHILE(d, l, e, - { - *d = c + MUL_256(a, *d); - d++; - }); -} - -#define _op_blend_caa_dp _op_blend_c_dp - -#define _op_blend_c_dpan _op_blend_c_dp -#define _op_blend_caa_dpan _op_blend_c_dpan - -static void -init_blend_color_span_funcs_c(void) -{ - op_blend_span_funcs[SP_N][SM_N][SC][DP][CPU_C] = _op_blend_c_dp; - op_blend_span_funcs[SP_N][SM_N][SC_AA][DP][CPU_C] = _op_blend_caa_dp; - - op_blend_span_funcs[SP_N][SM_N][SC][DP_AN][CPU_C] = _op_blend_c_dpan; - op_blend_span_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_C] = _op_blend_caa_dpan; -} -#endif - -#ifdef BUILD_C -static void -_op_blend_pt_c_dp(DATA32 s, DATA8 m __UNUSED__, DATA32 c, DATA32 *d) { - s = 256 - (c >> 24); - *d = c + MUL_256(s, *d); -} - -#define _op_blend_pt_caa_dp _op_blend_pt_c_dp - -#define _op_blend_pt_c_dpan _op_blend_pt_c_dp -#define _op_blend_pt_caa_dpan _op_blend_pt_c_dpan - -#define _op_blend_pt_c_dpas _op_blend_pt_c_dp -#define _op_blend_pt_caa_dpas _op_blend_pt_c_dp - -static void -init_blend_color_pt_funcs_c(void) -{ - op_blend_pt_funcs[SP_N][SM_N][SC][DP][CPU_C] = _op_blend_pt_c_dp; - op_blend_pt_funcs[SP_N][SM_N][SC_AA][DP][CPU_C] = _op_blend_pt_caa_dp; - - op_blend_pt_funcs[SP_N][SM_N][SC][DP_AN][CPU_C] = _op_blend_pt_c_dpan; - op_blend_pt_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_C] = _op_blend_pt_caa_dpan; -} -#endif - -/*-----*/ - -/* blend_rel color -> dst */ - -#ifdef BUILD_C -static void -_op_blend_rel_c_dp(DATA32 *s __UNUSED__, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) { - DATA32 *e; - int alpha = 256 - (c >> 24); - UNROLL8_PLD_WHILE(d, l, e, - { - *d = MUL_SYM(*d >> 24, c) + MUL_256(alpha, *d); - d++; - }); -} - -#define _op_blend_rel_caa_dp _op_blend_rel_c_dp - -#define _op_blend_rel_c_dpan _op_blend_c_dpan -#define _op_blend_rel_caa_dpan _op_blend_caa_dpan - -static void -init_blend_rel_color_span_funcs_c(void) -{ - op_blend_rel_span_funcs[SP_N][SM_N][SC][DP][CPU_C] = _op_blend_rel_c_dp; - op_blend_rel_span_funcs[SP_N][SM_N][SC_AA][DP][CPU_C] = _op_blend_rel_caa_dp; - - op_blend_rel_span_funcs[SP_N][SM_N][SC][DP_AN][CPU_C] = _op_blend_rel_c_dpan; - op_blend_rel_span_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_C] = _op_blend_rel_caa_dpan; -} -#endif - -#ifdef BUILD_C -static void -_op_blend_rel_pt_c_dp(DATA32 s, DATA8 m __UNUSED__, DATA32 c, DATA32 *d) { - s = *d >> 24; - *d = MUL_SYM(s, c) + MUL_256(256 - (c >> 24), *d); -} - -#define _op_blend_rel_pt_caa_dp _op_blend_rel_pt_c_dp - -#define _op_blend_rel_pt_c_dpan _op_blend_pt_c_dpan -#define _op_blend_rel_pt_caa_dpan _op_blend_pt_caa_dpan - -static void -init_blend_rel_color_pt_funcs_c(void) -{ - op_blend_rel_pt_funcs[SP_N][SM_N][SC][DP][CPU_C] = _op_blend_rel_pt_c_dp; - op_blend_rel_pt_funcs[SP_N][SM_N][SC_AA][DP][CPU_C] = _op_blend_rel_pt_caa_dp; - - op_blend_rel_pt_funcs[SP_N][SM_N][SC][DP_AN][CPU_C] = _op_blend_rel_pt_c_dpan; - op_blend_rel_pt_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_C] = _op_blend_rel_pt_caa_dpan; -} -#endif diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_color_i386.c b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_color_i386.c deleted file mode 100644 index a05af7d..0000000 --- a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_color_i386.c +++ /dev/null @@ -1,138 +0,0 @@ -/* blend color --> dst */ - -#ifdef BUILD_MMX -static void -_op_blend_c_dp_mmx(DATA32 *s __UNUSED__, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) { - DATA32 *e = d + l; - pxor_r2r(mm0, mm0); - MOV_P2R(c, mm2, mm0) - c = 256 - (c >> 24); - MOV_A2R(c, mm3) - while (d < e) { - MOV_P2R(*d, mm1, mm0) - MUL4_256_R2R(mm3, mm1) - paddw_r2r(mm2, mm1); - MOV_R2P(mm1, *d, mm0) - d++; - } -} - -#define _op_blend_caa_dp_mmx _op_blend_c_dp_mmx - -#define _op_blend_c_dpan_mmx _op_blend_c_dp_mmx -#define _op_blend_caa_dpan_mmx _op_blend_c_dpan_mmx - -static void -init_blend_color_span_funcs_mmx(void) -{ - op_blend_span_funcs[SP_N][SM_N][SC][DP][CPU_MMX] = _op_blend_c_dp_mmx; - op_blend_span_funcs[SP_N][SM_N][SC_AA][DP][CPU_MMX] = _op_blend_caa_dp_mmx; - - op_blend_span_funcs[SP_N][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_c_dpan_mmx; - op_blend_span_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_caa_dpan_mmx; -} -#endif - -#ifdef BUILD_MMX -static void -_op_blend_pt_c_dp_mmx(DATA32 s __UNUSED__, DATA8 m __UNUSED__, DATA32 c, DATA32 *d) { - pxor_r2r(mm0, mm0); - MOV_P2R(c, mm2, mm0) - c = 256 - (c >> 24); - MOV_A2R(c, mm3) - MOV_P2R(*d, mm1, mm0) - MUL4_256_R2R(mm3, mm1) - paddw_r2r(mm2, mm1); - MOV_R2P(mm1, *d, mm0) -} - -#define _op_blend_pt_caa_dp_mmx _op_blend_pt_c_dp_mmx - -#define _op_blend_pt_c_dpan_mmx _op_blend_pt_c_dp_mmx -#define _op_blend_pt_caa_dpan_mmx _op_blend_pt_c_dpan_mmx - -static void -init_blend_color_pt_funcs_mmx(void) -{ - op_blend_pt_funcs[SP_N][SM_N][SC][DP][CPU_MMX] = _op_blend_pt_c_dp_mmx; - op_blend_pt_funcs[SP_N][SM_N][SC_AA][DP][CPU_MMX] = _op_blend_pt_caa_dp_mmx; - - op_blend_pt_funcs[SP_N][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_pt_c_dpan_mmx; - op_blend_pt_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_pt_caa_dpan_mmx; -} -#endif -/*-----*/ - -/* blend_rel color -> dst */ - -#ifdef BUILD_MMX -static void -_op_blend_rel_c_dp_mmx(DATA32 *s __UNUSED__, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) { - DATA32 *e = d + l; - pxor_r2r(mm0, mm0); - MOV_P2R(c, mm2, mm0) - c = 256 - (c >> 24); - MOV_A2R(c, mm3) - MOV_A2R(ALPHA_255, mm5) - while (d < e) { - MOV_P2R(*d, mm1, mm0) - MOV_RA2R(mm1, mm4) - MUL4_256_R2R(mm3, mm1) - MUL4_SYM_R2R(mm2, mm4, mm5) - paddw_r2r(mm4, mm1); - MOV_R2P(mm1, *d, mm0) - d++; - } -} - -#define _op_blend_rel_caa_dp_mmx _op_blend_rel_c_dp_mmx - -#define _op_blend_rel_c_dpan_mmx _op_blend_c_dpan_mmx -#define _op_blend_rel_caa_dpan_mmx _op_blend_caa_dpan_mmx - -static void -init_blend_rel_color_span_funcs_mmx(void) -{ - op_blend_rel_span_funcs[SP_N][SM_N][SC][DP][CPU_MMX] = _op_blend_rel_c_dp_mmx; - op_blend_rel_span_funcs[SP_N][SM_N][SC_AA][DP][CPU_MMX] = _op_blend_rel_caa_dp_mmx; - - op_blend_rel_span_funcs[SP_N][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_rel_c_dpan_mmx; - op_blend_rel_span_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_rel_caa_dpan_mmx; -} -#endif - -#ifdef BUILD_MMX -static void -_op_blend_rel_pt_c_dp_mmx(DATA32 s __UNUSED__, DATA8 m __UNUSED__, DATA32 c, DATA32 *d) { - pxor_r2r(mm0, mm0); - MOV_A2R(ALPHA_256, mm6) - MOV_A2R(ALPHA_255, mm5) - - MOV_P2R(c, mm2, mm0) - MOV_RA2R(mm2, mm1) - psubw_r2r(mm1, mm6); - - MOV_P2R(*d, mm1, mm0) - MOV_RA2R(mm1, mm4) - MUL4_256_R2R(mm6, mm1) - - MUL4_SYM_R2R(mm4, mm2, mm5) - paddw_r2r(mm2, mm1); - MOV_R2P(mm1, *d, mm0) -} - -#define _op_blend_rel_pt_caa_dp_mmx _op_blend_rel_pt_c_dp_mmx - -#define _op_blend_rel_pt_c_dpan_mmx _op_blend_pt_c_dpan_mmx -#define _op_blend_rel_pt_caa_dpan_mmx _op_blend_pt_caa_dpan_mmx - -static void -init_blend_rel_color_pt_funcs_mmx(void) -{ - op_blend_rel_pt_funcs[SP_N][SM_N][SC][DP][CPU_MMX] = _op_blend_rel_pt_c_dp_mmx; - op_blend_rel_pt_funcs[SP_N][SM_N][SC_AA][DP][CPU_MMX] = _op_blend_rel_pt_caa_dp_mmx; - - op_blend_rel_pt_funcs[SP_N][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_rel_pt_c_dpan_mmx; - op_blend_rel_pt_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_rel_pt_caa_dpan_mmx; -} -#endif diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_color_neon.c b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_color_neon.c deleted file mode 100644 index 53b9991..0000000 --- a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_color_neon.c +++ /dev/null @@ -1,223 +0,0 @@ -/* blend color --> dst */ - -#ifdef BUILD_NEON -static void -_op_blend_c_dp_neon(DATA32 *s __UNUSED__, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) { - DATA32 *e, *tmp = 0; -#define AP "B_C_DP" - asm volatile ( - ".fpu neon \n\t" - "vdup.u32 q6, %[c] \n\t" - "vmov.i8 q5, #1 \n\t" - "vmvn.u8 q7,q6 \n\t" - "vshr.u32 q7, q7, $0x18 \n\t" - "vmul.u32 q7,q5, q7 \n\t" - "bic %[e], #3 \n\t" - "bic %[d], #3 \n\t" - - AP "loopchoose: \n\t" - // If aligned already - straight to quads - "andS %[tmp], %[d],$0x1f \n\t" - "beq "AP"quadloops \n\t" - - "andS %[tmp], %[d],$0x4 \n\t" - "beq "AP"dualloop \n\t" - - // Only ever executes once, fall through to dual - AP "singleloop: \n\t" - // Use 'tmp' not 'd' - "vld1.32 d0[0], [%[d]] \n\t" - // Only touch d1 - "vmull.u8 q0, d0, d14 \n\t" - "vqrshrn.u16 d0, q0, #8 \n\t" - "vadd.u8 d0, d12, d0 \n\t" - "vst1.32 d0[0], [%[d]] \n\t" - - "add %[d], #4 \n\t" - - // Can we go the fast path? - "andS %[tmp], %[d],$0x1f \n\t" - "beq "AP"quadloops \n\t" - - AP "dualloop: \n\t" - "sub %[tmp], %[e], %[d] \n\t" - "cmp %[tmp], #32 \n\t" - "blt "AP"loopout \n\t" - - - AP "dualloopint: \n\t" - "vldr.32 d0, [%[d]] \n\t" - "vmull.u8 q1, d0, d14 \n\t" - "vqrshrn.u16 d0, q1, #8 \n\t" - "vqadd.u8 d0, d0, d12 \n\t" - - "vstm %[d]!, {d0} \n\t" - - "ands %[tmp], %[d], $0x1f \n\t" - "bne "AP"dualloopint \n\t" - - AP "quadloops: \n\t" - "sub %[tmp], %[e], %[d] \n\t" - "cmp %[tmp], #32 \n\t" - "blt "AP"loopout \n\t" - - "sub %[tmp],%[e],#31 \n\t" - - AP "quadloopint:\n\t" - "vldm %[d], {d0,d1,d2,d3} \n\t" - - "vmull.u8 q2, d0, d14 \n\t" - "vmull.u8 q3, d1, d15 \n\t" - "vmull.u8 q4, d2, d14 \n\t" - "vmull.u8 q5, d3, d15 \n\t" - - "vqrshrn.u16 d0, q2, #8 \n\t" - "vqrshrn.u16 d1, q3, #8 \n\t" - "vqrshrn.u16 d2, q4, #8 \n\t" - "vqrshrn.u16 d3, q5, #8 \n\t" - - "vqadd.u8 q0, q6, q0 \n\t" - "vqadd.u8 q1, q6, q1 \n\t" - - "vstm %[d]!, {d0,d1,d2,d3} \n\t" - - "cmp %[tmp], %[d]\n\t" - "bhi "AP"quadloopint\n\t" - - AP "loopout: \n\t" - "cmp %[d], %[e]\n\t" - "beq "AP"done\n\t" - "sub %[tmp],%[e], %[d] \n\t" - "cmp %[tmp],#8 \n\t" - "blt "AP"singleloop2 \n\t" - - AP "dualloop2: \n\t" - "sub %[tmp],%[e],$0x7 \n\t" - AP "dualloop2int: \n\t" - "vldr.64 d0, [%[d]] \n\t" - "vmull.u8 q1, d0, d14 \n\t" - "vqrshrn.u16 d0, q1, #8 \n\t" - "vqadd.u8 d0, d0, d12 \n\t" - - "vstr.64 d0, [%[d]] \n\t" - - "add %[d], #8 \n\t" - "cmp %[tmp], %[d] \n\t" - "bhi "AP"dualloop2int \n\t" - - // Single ?? - "cmp %[e], %[d] \n\t" - "beq "AP"done \n\t" - - AP "singleloop2: \n\t" - "vld1.32 d0[0], [%[d]] \n\t" - "vmull.u8 q1, d0, d14 \n\t" - "vqrshrn.u16 d0, q1, #8 \n\t" - "vqadd.u8 d0, d0, d12 \n\t" - - "vst1.32 d0[0], [%[d]] \n\t" - - AP "done:\n\t" - - : // output regs - // Input - : [e] "r" (e = d + l), [d] "r" (d), [c] "r" (c), [tmp] "r" (tmp) - : "q0", "q1", "q2","q3", "q4","q5","q6", "q7","memory" // clobbered - - ); -#undef AP - -} - -#define _op_blend_caa_dp_neon _op_blend_c_dp_neon - -#define _op_blend_c_dpan_neon _op_blend_c_dp_neon -#define _op_blend_caa_dpan_neon _op_blend_c_dpan_neon - -static void -init_blend_color_span_funcs_neon(void) -{ - op_blend_span_funcs[SP_N][SM_N][SC][DP][CPU_NEON] = _op_blend_c_dp_neon; - op_blend_span_funcs[SP_N][SM_N][SC_AA][DP][CPU_NEON] = _op_blend_caa_dp_neon; - - op_blend_span_funcs[SP_N][SM_N][SC][DP_AN][CPU_NEON] = _op_blend_c_dpan_neon; - op_blend_span_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_NEON] = _op_blend_caa_dpan_neon; -} -#endif - -#ifdef BUILD_NEON -static void -_op_blend_pt_c_dp_neon(DATA32 s __UNUSED__, DATA8 m __UNUSED__, DATA32 c, DATA32 *d) { - s = 256 - (c >> 24); - *d = c + MUL_256(s, *d); -} - -#define _op_blend_pt_caa_dp_neon _op_blend_pt_c_dp_neon - -#define _op_blend_pt_c_dpan_neon _op_blend_pt_c_dp_neon -#define _op_blend_pt_caa_dpan_neon _op_blend_pt_c_dpan_neon - -static void -init_blend_color_pt_funcs_neon(void) -{ - op_blend_pt_funcs[SP_N][SM_N][SC][DP][CPU_NEON] = _op_blend_pt_c_dp_neon; - op_blend_pt_funcs[SP_N][SM_N][SC_AA][DP][CPU_NEON] = _op_blend_pt_caa_dp_neon; - - op_blend_pt_funcs[SP_N][SM_N][SC][DP_AN][CPU_NEON] = _op_blend_pt_c_dpan_neon; - op_blend_pt_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_NEON] = _op_blend_pt_caa_dpan_neon; -} -#endif -/*-----*/ - -/* blend_rel color -> dst */ - -#ifdef BUILD_NEON -static void -_op_blend_rel_c_dp_neon(DATA32 *s __UNUSED__, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) { - DATA32 *e; - int alpha = 256 - (c >> 24); - UNROLL8_PLD_WHILE(d, l, e, - { - *d = MUL_SYM(*d >> 24, c) + MUL_256(alpha, *d); - d++; - }); -} - -#define _op_blend_rel_caa_dp_neon _op_blend_rel_c_dp_neon - -#define _op_blend_rel_c_dpan_neon _op_blend_c_dpan_neon -#define _op_blend_rel_caa_dpan_neon _op_blend_caa_dpan_neon - -static void -init_blend_rel_color_span_funcs_neon(void) -{ - op_blend_rel_span_funcs[SP_N][SM_N][SC][DP][CPU_NEON] = _op_blend_rel_c_dp_neon; - op_blend_rel_span_funcs[SP_N][SM_N][SC_AA][DP][CPU_NEON] = _op_blend_rel_caa_dp_neon; - - op_blend_rel_span_funcs[SP_N][SM_N][SC][DP_AN][CPU_NEON] = _op_blend_rel_c_dpan_neon; - op_blend_rel_span_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_NEON] = _op_blend_rel_caa_dpan_neon; -} -#endif - -#ifdef BUILD_NEON -static void -_op_blend_rel_pt_c_dp_neon(DATA32 s __UNUSED__, DATA8 m __UNUSED__, DATA32 c, DATA32 *d) { - s = *d >> 24; - *d = MUL_SYM(s, c) + MUL_256(256 - (c >> 24), *d); -} - -#define _op_blend_rel_pt_caa_dp_neon _op_blend_rel_pt_c_dp_neon - -#define _op_blend_rel_pt_c_dpan_neon _op_blend_pt_c_dpan_neon -#define _op_blend_rel_pt_caa_dpan_neon _op_blend_pt_caa_dpan_neon - -static void -init_blend_rel_color_pt_funcs_neon(void) -{ - op_blend_rel_pt_funcs[SP_N][SM_N][SC][DP][CPU_NEON] = _op_blend_rel_pt_c_dp_neon; - op_blend_rel_pt_funcs[SP_N][SM_N][SC_AA][DP][CPU_NEON] = _op_blend_rel_pt_caa_dp_neon; - - op_blend_rel_pt_funcs[SP_N][SM_N][SC][DP_AN][CPU_NEON] = _op_blend_rel_pt_c_dpan_neon; - op_blend_rel_pt_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_NEON] = _op_blend_rel_pt_caa_dpan_neon; -} -#endif diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_color_sse3.c b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_color_sse3.c deleted file mode 100644 index 1843265..0000000 --- a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_color_sse3.c +++ /dev/null @@ -1,167 +0,0 @@ -/* blend color -> dst */ - -#ifdef BUILD_SSE3 - -static void -_op_blend_c_dp_sse3(DATA32 *s __UNUSED__, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) { - - DATA32 a = 256 - (c >> 24); - - const __m128i c_packed = _mm_set_epi32(c, c, c, c); - const __m128i a_packed = _mm_set_epi32(a, a, a, a); - - LOOP_ALIGNED_U1_A48_SSE3(d, l, - { /* UOP */ - - *d = c + MUL_256(a, *d); - d++; l--; - }, - { /* A4OP */ - - __m128i d0 = _mm_load_si128((__m128i *)d); - - d0 = mul_256_sse3(a_packed, d0); - d0 = _mm_add_epi32(d0, c_packed); - - _mm_store_si128((__m128i *)d, d0); - - d += 4; l -= 4; - }, - { /* A8OP */ - - __m128i d0 = _mm_load_si128((__m128i *)d); - __m128i d1 = _mm_load_si128((__m128i *)(d+4)); - - d0 = mul_256_sse3(a_packed, d0); - d1 = mul_256_sse3(a_packed, d1); - - d0 = _mm_add_epi32(d0, c_packed); - d1 = _mm_add_epi32(d1, c_packed); - - _mm_store_si128((__m128i *)d, d0); - _mm_store_si128((__m128i *)(d+4), d1); - - d += 8; l -= 8; - }) -} - -#define _op_blend_caa_dp_sse3 _op_blend_c_dp_sse3 - -#define _op_blend_c_dpan_sse3 _op_blend_c_dp_sse3 -#define _op_blend_caa_dpan_sse3 _op_blend_c_dpan_sse3 - -static void -init_blend_color_span_funcs_sse3(void) -{ -// FIXME: BUGGY BUGGY Core i5 750 (32bit), 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4), ello (text and rectangle) -// op_blend_span_funcs[SP_N][SM_N][SC][DP][CPU_SSE3] = _op_blend_c_dp_sse3; - op_blend_span_funcs[SP_N][SM_N][SC_AA][DP][CPU_SSE3] = _op_blend_caa_dp_sse3; - -// FIXME: BUGGY BUGGY Core i5 750 (32bit), 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4), ello (text and rectangle) -// op_blend_span_funcs[SP_N][SM_N][SC][DP_AN][CPU_SSE3] = _op_blend_c_dpan_sse3; - op_blend_span_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_SSE3] = _op_blend_caa_dpan_sse3; -} - -#define _op_blend_pt_c_dp_sse3 NULL -#define _op_blend_pt_caa_dp_sse3 _op_blend_pt_c_dp_sse3 - -#define _op_blend_pt_c_dpan_sse3 _op_blend_pt_c_dp_sse3 -#define _op_blend_pt_caa_dpan_sse3 _op_blend_pt_c_dpan_sse3 - -#define _op_blend_pt_c_dpas_sse3 _op_blend_pt_c_dp_sse3 -#define _op_blend_pt_caa_dpas_sse3 _op_blend_pt_c_dp_sse3 - -static void -init_blend_color_pt_funcs_sse3(void) -{ - op_blend_pt_funcs[SP_N][SM_N][SC][DP][CPU_SSE3] = _op_blend_pt_c_dp_sse3; - op_blend_pt_funcs[SP_N][SM_N][SC_AA][DP][CPU_SSE3] = _op_blend_pt_caa_dp_sse3; - - op_blend_pt_funcs[SP_N][SM_N][SC][DP_AN][CPU_SSE3] = _op_blend_pt_c_dpan_sse3; - op_blend_pt_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_SSE3] = _op_blend_pt_caa_dpan_sse3; -} - - -/*-----*/ - -/* blend_rel color -> dst */ - -static void -_op_blend_rel_c_dp_sse3(DATA32 *s __UNUSED__, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) { - - int alpha = 256 - (c >> 24); - - const __m128i c_packed = _mm_set_epi32(c, c, c, c); - const __m128i alpha_packed = _mm_set_epi32(alpha, alpha, alpha, alpha); - - LOOP_ALIGNED_U1_A48_SSE3(d, l, - { /* UOP */ - - *d = MUL_SYM(*d >> 24, c) + MUL_256(alpha, *d); - d++; l--; - }, - { /* A4OP */ - - __m128i d0 = _mm_load_si128((__m128i *)d); - - __m128i mul0 = mul_256_sse3(alpha_packed, d0); - __m128i sym0 = mul_sym_sse3(_mm_srli_epi32(d0, 24), c_packed); - - d0 = _mm_add_epi32(mul0, sym0); - - _mm_store_si128((__m128i *)d, d0); - - d += 4; l -= 4; - }, - { /* A8OP */ - - __m128i d0 = _mm_load_si128((__m128i *)d); - __m128i d1 = _mm_load_si128((__m128i *)(d+4)); - - __m128i mul0 = mul_256_sse3(alpha_packed, d0); - __m128i mul1 = mul_256_sse3(alpha_packed, d1); - - __m128i sym0 = mul_sym_sse3(_mm_srli_epi32(d0, 24), c_packed); - __m128i sym1 = mul_sym_sse3(_mm_srli_epi32(d1, 24), c_packed); - - d0 = _mm_add_epi32(mul0, sym0); - d1 = _mm_add_epi32(mul1, sym1); - - _mm_store_si128((__m128i *)d, d0); - _mm_store_si128((__m128i *)(d+4), d1); - - d += 8; l -= 8; - }) -} - -#define _op_blend_rel_caa_dp_sse3 _op_blend_rel_c_dp_sse3 -#define _op_blend_rel_c_dpan_sse3 _op_blend_c_dpan_sse3 -#define _op_blend_rel_caa_dpan_sse3 _op_blend_caa_dpan_sse3 - -static void -init_blend_rel_color_span_funcs_sse3(void) -{ - op_blend_rel_span_funcs[SP_N][SM_N][SC][DP][CPU_SSE3] = _op_blend_rel_c_dp_sse3; - op_blend_rel_span_funcs[SP_N][SM_N][SC_AA][DP][CPU_SSE3] = _op_blend_rel_caa_dp_sse3; - - op_blend_rel_span_funcs[SP_N][SM_N][SC][DP_AN][CPU_SSE3] = _op_blend_rel_c_dpan_sse3; - op_blend_rel_span_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_SSE3] = _op_blend_rel_caa_dpan_sse3; -} - -#define _op_blend_rel_pt_c_dp_sse3 NULL -#define _op_blend_rel_pt_caa_dp_sse3 _op_blend_rel_pt_c_dp_sse3 - -#define _op_blend_rel_pt_c_dpan_sse3 _op_blend_pt_c_dpan_sse3 -#define _op_blend_rel_pt_caa_dpan_sse3 _op_blend_pt_caa_dpan_sse3 - -static void -init_blend_rel_color_pt_funcs_sse3(void) -{ - op_blend_rel_pt_funcs[SP_N][SM_N][SC][DP][CPU_SSE3] = _op_blend_rel_pt_c_dp_sse3; - op_blend_rel_pt_funcs[SP_N][SM_N][SC_AA][DP][CPU_SSE3] = _op_blend_rel_pt_caa_dp_sse3; - - op_blend_rel_pt_funcs[SP_N][SM_N][SC][DP_AN][CPU_SSE3] = _op_blend_rel_pt_c_dpan_sse3; - op_blend_rel_pt_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_SSE3] = _op_blend_rel_pt_caa_dpan_sse3; -} - -#endif diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_mask_color_.c b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_mask_color_.c deleted file mode 100644 index 12a0a75..0000000 --- a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_mask_color_.c +++ /dev/null @@ -1,185 +0,0 @@ -/* blend mask x color -> dst */ - -#ifdef BUILD_C -static void -_op_blend_mas_c_dp(DATA32 *s __UNUSED__, DATA8 *m, DATA32 c, DATA32 *d, int l) { - DATA32 *e; - int alpha = 256 - (c >> 24); - UNROLL8_PLD_WHILE(d, l, e, - { - DATA32 a = *m; - switch(a) - { - case 0: - break; - case 255: - *d = c + MUL_256(alpha, *d); - break; - default: - { - DATA32 mc = MUL_SYM(a, c); - a = 256 - (mc >> 24); - *d = mc + MUL_256(a, *d); - } - break; - } - m++; d++; - }); -} - -static void -_op_blend_mas_can_dp(DATA32 *s __UNUSED__, DATA8 *m, DATA32 c, DATA32 *d, int l) { - DATA32 *e; - int alpha; - UNROLL8_PLD_WHILE(d, l, e, - { - alpha = *m; - switch(alpha) - { - case 0: - break; - case 255: - *d = c; - break; - default: - alpha++; - *d = INTERP_256(alpha, c, *d); - break; - } - m++; d++; - }); -} - -#define _op_blend_mas_cn_dp _op_blend_mas_can_dp -#define _op_blend_mas_caa_dp _op_blend_mas_c_dp - -#define _op_blend_mas_c_dpan _op_blend_mas_c_dp -#define _op_blend_mas_cn_dpan _op_blend_mas_cn_dp -#define _op_blend_mas_can_dpan _op_blend_mas_can_dp -#define _op_blend_mas_caa_dpan _op_blend_mas_caa_dp - -static void -init_blend_mask_color_span_funcs_c(void) -{ - op_blend_span_funcs[SP_N][SM_AS][SC][DP][CPU_C] = _op_blend_mas_c_dp; - op_blend_span_funcs[SP_N][SM_AS][SC_N][DP][CPU_C] = _op_blend_mas_cn_dp; - op_blend_span_funcs[SP_N][SM_AS][SC_AN][DP][CPU_C] = _op_blend_mas_can_dp; - op_blend_span_funcs[SP_N][SM_AS][SC_AA][DP][CPU_C] = _op_blend_mas_caa_dp; - - op_blend_span_funcs[SP_N][SM_AS][SC][DP_AN][CPU_C] = _op_blend_mas_c_dpan; - op_blend_span_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_mas_cn_dpan; - op_blend_span_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_C] = _op_blend_mas_can_dpan; - op_blend_span_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_C] = _op_blend_mas_caa_dpan; -} -#endif - -#ifdef BUILD_C -static void -_op_blend_pt_mas_c_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) { - s = MUL_SYM(m, c); - m = 256 - (s >> 24); - *d = s + MUL_256(m, *d); -} - -static void -_op_blend_pt_mas_can_dp(DATA32 s __UNUSED__, DATA8 m, DATA32 c, DATA32 *d) { - *d = INTERP_256(m + 1, c, *d); -} - -#define _op_blend_pt_mas_cn_dp _op_blend_pt_mas_can_dp -#define _op_blend_pt_mas_caa_dp _op_blend_pt_mas_c_dp - -#define _op_blend_pt_mas_c_dpan _op_blend_pt_mas_c_dp -#define _op_blend_pt_mas_cn_dpan _op_blend_pt_mas_cn_dp -#define _op_blend_pt_mas_can_dpan _op_blend_pt_mas_can_dp -#define _op_blend_pt_mas_caa_dpan _op_blend_pt_mas_caa_dp - -static void -init_blend_mask_color_pt_funcs_c(void) -{ - op_blend_pt_funcs[SP_N][SM_AS][SC][DP][CPU_C] = _op_blend_pt_mas_c_dp; - op_blend_pt_funcs[SP_N][SM_AS][SC_N][DP][CPU_C] = _op_blend_pt_mas_cn_dp; - op_blend_pt_funcs[SP_N][SM_AS][SC_AN][DP][CPU_C] = _op_blend_pt_mas_can_dp; - op_blend_pt_funcs[SP_N][SM_AS][SC_AA][DP][CPU_C] = _op_blend_pt_mas_caa_dp; - - op_blend_pt_funcs[SP_N][SM_AS][SC][DP_AN][CPU_C] = _op_blend_pt_mas_c_dpan; - op_blend_pt_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_pt_mas_cn_dpan; - op_blend_pt_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_C] = _op_blend_pt_mas_can_dpan; - op_blend_pt_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_C] = _op_blend_pt_mas_caa_dpan; -} -#endif - -/*-----*/ - -/* blend_rel mask x color --> dst */ - -#ifdef BUILD_C -static void -_op_blend_rel_mas_c_dp(DATA32 *s __UNUSED__, DATA8 *m, DATA32 c, DATA32 *d, int l) { - DATA32 *e; - int alpha; - UNROLL8_PLD_WHILE(d, l, e, - { - DATA32 mc = MUL_SYM(*m, c); - alpha = 256 - (mc >> 24); - *d = MUL_SYM(*d >> 24, mc) + MUL_256(alpha, *d); - d++; - m++; - }); -} - -#define _op_blend_rel_mas_cn_dp _op_blend_rel_mas_c_dp -#define _op_blend_rel_mas_can_dp _op_blend_rel_mas_c_dp -#define _op_blend_rel_mas_caa_dp _op_blend_rel_mas_c_dp - -#define _op_blend_rel_mas_c_dpan _op_blend_mas_c_dpan -#define _op_blend_rel_mas_cn_dpan _op_blend_mas_cn_dpan -#define _op_blend_rel_mas_can_dpan _op_blend_mas_can_dpan -#define _op_blend_rel_mas_caa_dpan _op_blend_mas_caa_dpan - -static void -init_blend_rel_mask_color_span_funcs_c(void) -{ - op_blend_rel_span_funcs[SP_N][SM_AS][SC][DP][CPU_C] = _op_blend_rel_mas_c_dp; - op_blend_rel_span_funcs[SP_N][SM_AS][SC_N][DP][CPU_C] = _op_blend_rel_mas_can_dp; - op_blend_rel_span_funcs[SP_N][SM_AS][SC_AN][DP][CPU_C] = _op_blend_rel_mas_can_dp; - op_blend_rel_span_funcs[SP_N][SM_AS][SC_AA][DP][CPU_C] = _op_blend_rel_mas_caa_dp; - - op_blend_rel_span_funcs[SP_N][SM_AS][SC][DP_AN][CPU_C] = _op_blend_rel_mas_c_dpan; - op_blend_rel_span_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_rel_mas_cn_dpan; - op_blend_rel_span_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_C] = _op_blend_rel_mas_can_dpan; - op_blend_rel_span_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_C] = _op_blend_rel_mas_caa_dpan; -} -#endif - -#ifdef BUILD_C -static void -_op_blend_rel_pt_mas_c_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) { - s = MUL_SYM(m, c); - c = 256 - (s >> 24); - *d = MUL_SYM(*d >> 24, s) + MUL_256(c, *d); -} - -#define _op_blend_rel_pt_mas_cn_dp _op_blend_rel_pt_mas_c_dp -#define _op_blend_rel_pt_mas_can_dp _op_blend_rel_pt_mas_c_dp -#define _op_blend_rel_pt_mas_caa_dp _op_blend_rel_pt_mas_c_dp - -#define _op_blend_rel_pt_mas_c_dpan _op_blend_pt_mas_c_dpan -#define _op_blend_rel_pt_mas_cn_dpan _op_blend_pt_mas_cn_dpan -#define _op_blend_rel_pt_mas_can_dpan _op_blend_pt_mas_can_dpan -#define _op_blend_rel_pt_mas_caa_dpan _op_blend_pt_mas_caa_dpan - -static void -init_blend_rel_mask_color_pt_funcs_c(void) -{ - op_blend_rel_pt_funcs[SP_N][SM_AS][SC][DP][CPU_C] = _op_blend_rel_pt_mas_c_dp; - op_blend_rel_pt_funcs[SP_N][SM_AS][SC_N][DP][CPU_C] = _op_blend_rel_pt_mas_cn_dp; - op_blend_rel_pt_funcs[SP_N][SM_AS][SC_AN][DP][CPU_C] = _op_blend_rel_pt_mas_can_dp; - op_blend_rel_pt_funcs[SP_N][SM_AS][SC_AA][DP][CPU_C] = _op_blend_rel_pt_mas_caa_dp; - - op_blend_rel_pt_funcs[SP_N][SM_AS][SC][DP_AN][CPU_C] = _op_blend_rel_pt_mas_c_dpan; - op_blend_rel_pt_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_rel_pt_mas_cn_dpan; - op_blend_rel_pt_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_C] = _op_blend_rel_pt_mas_can_dpan; - op_blend_rel_pt_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_C] = _op_blend_rel_pt_mas_caa_dpan; -} -#endif diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_mask_color_i386.c b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_mask_color_i386.c deleted file mode 100644 index f8fe02e..0000000 --- a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_mask_color_i386.c +++ /dev/null @@ -1,251 +0,0 @@ -/* blend mask x color -> dst */ - -#ifdef BUILD_MMX -static void -_op_blend_mas_c_dp_mmx(DATA32 *s __UNUSED__, DATA8 *m, DATA32 c, DATA32 *d, int l) { - DATA32 *e = d + l; - pxor_r2r(mm0, mm0); - MOV_A2R(ALPHA_256, mm6) - MOV_P2R(c, mm2, mm0) - c = 256 - (c >> 24); - MOV_A2R(c, mm4) - while (d < e) { - l = *m; - switch(l) - { - case 0: - break; - case 255: - MOV_P2R(*d, mm1, mm0) - MUL4_256_R2R(mm4, mm1) - paddw_r2r(mm2, mm1); - MOV_R2P(mm1, *d, mm0) - break; - default: - l++; - MOV_A2R(l, mm3) - MUL4_256_R2R(mm2, mm3) - - MOV_RA2R(mm3, mm1) - movq_r2r(mm6, mm7); - psubw_r2r(mm1, mm7); - - MOV_P2R(*d, mm1, mm0) - MUL4_256_R2R(mm7, mm1) - - paddw_r2r(mm3, mm1); - MOV_R2P(mm1, *d, mm0) - break; - } - m++; d++; - } -} - -static void -_op_blend_mas_can_dp_mmx(DATA32 *s __UNUSED__, DATA8 *m, DATA32 c, DATA32 *d, int l) { - DATA32 *e = d + l; - pxor_r2r(mm0, mm0); - MOV_P2R(c, mm2, mm0) - MOV_A2R(ALPHA_255, mm5) - while (d < e) { - l = *m; - switch(l) - { - case 0: - break; - case 255: - *d = c; - break; - default: - l++; - MOV_A2R(l, mm3) - MOV_P2R(*d, mm1, mm0) - movq_r2r(mm2, mm4); - INTERP_256_R2R(mm3, mm4, mm1, mm5) - MOV_R2P(mm1, *d, mm0) - break; - } - m++; d++; - } -} - -#define _op_blend_mas_cn_dp_mmx _op_blend_mas_can_dp_mmx -#define _op_blend_mas_caa_dp_mmx _op_blend_mas_c_dp_mmx - -#define _op_blend_mas_c_dpan_mmx _op_blend_mas_c_dp_mmx -#define _op_blend_mas_cn_dpan_mmx _op_blend_mas_cn_dp_mmx -#define _op_blend_mas_can_dpan_mmx _op_blend_mas_can_dp_mmx -#define _op_blend_mas_caa_dpan_mmx _op_blend_mas_caa_dp_mmx - -static void -init_blend_mask_color_span_funcs_mmx(void) -{ - op_blend_span_funcs[SP_N][SM_AS][SC][DP][CPU_MMX] = _op_blend_mas_c_dp_mmx; - op_blend_span_funcs[SP_N][SM_AS][SC_N][DP][CPU_MMX] = _op_blend_mas_cn_dp_mmx; - op_blend_span_funcs[SP_N][SM_AS][SC_AN][DP][CPU_MMX] = _op_blend_mas_can_dp_mmx; - op_blend_span_funcs[SP_N][SM_AS][SC_AA][DP][CPU_MMX] = _op_blend_mas_caa_dp_mmx; - - op_blend_span_funcs[SP_N][SM_AS][SC][DP_AN][CPU_MMX] = _op_blend_mas_c_dpan_mmx; - op_blend_span_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_blend_mas_cn_dpan_mmx; - op_blend_span_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_MMX] = _op_blend_mas_can_dpan_mmx; - op_blend_span_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_MMX] = _op_blend_mas_caa_dpan_mmx; -} -#endif - -#ifdef BUILD_MMX -static void -_op_blend_pt_mas_c_dp_mmx(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) { - s = m + 1; - MOV_A2R(s, mm3) - MOV_A2R(ALPHA_256, mm6) - pxor_r2r(mm0, mm0); - MOV_P2R(c, mm2, mm0) - MUL4_256_R2R(mm2, mm3) - - MOV_RA2R(mm3, mm1) - psubw_r2r(mm1, mm6); - - MOV_P2R(*d, mm1, mm0) - MUL4_256_R2R(mm6, mm1) - - paddw_r2r(mm3, mm1); - MOV_R2P(mm1, *d, mm0) -} - - -#define _op_blend_pt_mas_cn_dp_mmx _op_blend_pt_mas_c_dp_mmx -#define _op_blend_pt_mas_can_dp_mmx _op_blend_pt_mas_c_dp_mmx -#define _op_blend_pt_mas_caa_dp_mmx _op_blend_pt_mas_c_dp_mmx - -#define _op_blend_pt_mas_c_dpan_mmx _op_blend_pt_mas_c_dp_mmx -#define _op_blend_pt_mas_cn_dpan_mmx _op_blend_pt_mas_cn_dp_mmx -#define _op_blend_pt_mas_can_dpan_mmx _op_blend_pt_mas_can_dp_mmx -#define _op_blend_pt_mas_caa_dpan_mmx _op_blend_pt_mas_caa_dp_mmx - -static void -init_blend_mask_color_pt_funcs_mmx(void) -{ - op_blend_pt_funcs[SP_N][SM_AS][SC][DP][CPU_MMX] = _op_blend_pt_mas_c_dp_mmx; - op_blend_pt_funcs[SP_N][SM_AS][SC_N][DP][CPU_MMX] = _op_blend_pt_mas_cn_dp_mmx; - op_blend_pt_funcs[SP_N][SM_AS][SC_AN][DP][CPU_MMX] = _op_blend_pt_mas_can_dp_mmx; - op_blend_pt_funcs[SP_N][SM_AS][SC_AA][DP][CPU_MMX] = _op_blend_pt_mas_caa_dp_mmx; - - op_blend_pt_funcs[SP_N][SM_AS][SC][DP_AN][CPU_MMX] = _op_blend_pt_mas_c_dpan_mmx; - op_blend_pt_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_blend_pt_mas_cn_dpan_mmx; - op_blend_pt_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_MMX] = _op_blend_pt_mas_can_dpan_mmx; - op_blend_pt_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_MMX] = _op_blend_pt_mas_caa_dpan_mmx; -} -#endif - -/*-----*/ - -/* blend_rel mask x color -> dst */ - -#ifdef BUILD_MMX -static void -_op_blend_rel_mas_c_dp_mmx(DATA32 *s __UNUSED__, DATA8 *m, DATA32 c, DATA32 *d, int l) { - DATA32 *e = d + l; - pxor_r2r(mm0, mm0); - MOV_A2R(ALPHA_256, mm6) - MOV_A2R(ALPHA_255, mm5) - MOV_P2R(c, mm2, mm0) - while (d < e) { - l = *m; - switch(l) - { - case 0: - break; - default: - l++; - MOV_A2R(l, mm3) - MUL4_256_R2R(mm2, mm3) - - MOV_RA2R(mm3, mm1) - movq_r2r(mm6, mm7); - psubw_r2r(mm1, mm7); - - MOV_P2R(*d, mm1, mm0) - MOV_RA2R(mm1, mm4) - MUL4_256_R2R(mm7, mm1) - - MUL4_SYM_R2R(mm4, mm3, mm5) - - paddw_r2r(mm3, mm1); - MOV_R2P(mm1, *d, mm0) - break; - } - m++; d++; - } -} - -#define _op_blend_rel_mas_cn_dp_mmx _op_blend_rel_mas_c_dp_mmx -#define _op_blend_rel_mas_can_dp_mmx _op_blend_rel_mas_c_dp_mmx -#define _op_blend_rel_mas_caa_dp_mmx _op_blend_rel_mas_c_dp_mmx - -#define _op_blend_rel_mas_c_dpan_mmx _op_blend_mas_c_dpan_mmx -#define _op_blend_rel_mas_cn_dpan_mmx _op_blend_mas_cn_dpan_mmx -#define _op_blend_rel_mas_can_dpan_mmx _op_blend_mas_can_dpan_mmx -#define _op_blend_rel_mas_caa_dpan_mmx _op_blend_mas_caa_dpan_mmx - -static void -init_blend_rel_mask_color_span_funcs_mmx(void) -{ - op_blend_rel_span_funcs[SP_N][SM_AS][SC][DP][CPU_MMX] = _op_blend_rel_mas_c_dp_mmx; - op_blend_rel_span_funcs[SP_N][SM_AS][SC_N][DP][CPU_MMX] = _op_blend_rel_mas_cn_dp_mmx; - op_blend_rel_span_funcs[SP_N][SM_AS][SC_AN][DP][CPU_MMX] = _op_blend_rel_mas_can_dp_mmx; - op_blend_rel_span_funcs[SP_N][SM_AS][SC_AA][DP][CPU_MMX] = _op_blend_rel_mas_caa_dp_mmx; - - op_blend_rel_span_funcs[SP_N][SM_AS][SC][DP_AN][CPU_MMX] = _op_blend_rel_mas_c_dpan_mmx; - op_blend_rel_span_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_mas_cn_dpan_mmx; - op_blend_rel_span_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_MMX] = _op_blend_rel_mas_can_dpan_mmx; - op_blend_rel_span_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_MMX] = _op_blend_rel_mas_caa_dpan_mmx; -} -#endif - -#ifdef BUILD_MMX -static void -_op_blend_rel_pt_mas_c_dp_mmx(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) { - pxor_r2r(mm0, mm0); - MOV_A2R(ALPHA_256, mm6) - MOV_A2R(ALPHA_255, mm5) - s = m + 1; - MOV_A2R(s, mm3) - MOV_P2R(c, mm2, mm0) - MUL4_256_R2R(mm2, mm3) - - MOV_RA2R(mm3, mm1) - psubw_r2r(mm1, mm6); - - MOV_P2R(*d, mm1, mm0) - MOV_RA2R(mm1, mm4) - MUL4_256_R2R(mm6, mm1) - - MUL4_SYM_R2R(mm4, mm3, mm5) - - paddw_r2r(mm3, mm1); - MOV_R2P(mm1, *d, mm0) -} - -#define _op_blend_rel_pt_mas_cn_dp_mmx _op_blend_rel_pt_mas_c_dp_mmx -#define _op_blend_rel_pt_mas_can_dp_mmx _op_blend_rel_pt_mas_c_dp_mmx -#define _op_blend_rel_pt_mas_caa_dp_mmx _op_blend_rel_pt_mas_c_dp_mmx - -#define _op_blend_rel_pt_mas_c_dpan_mmx _op_blend_pt_mas_c_dpan_mmx -#define _op_blend_rel_pt_mas_cn_dpan_mmx _op_blend_pt_mas_cn_dpan_mmx -#define _op_blend_rel_pt_mas_can_dpan_mmx _op_blend_pt_mas_can_dpan_mmx -#define _op_blend_rel_pt_mas_caa_dpan_mmx _op_blend_pt_mas_caa_dpan_mmx - -static void -init_blend_rel_mask_color_pt_funcs_mmx(void) -{ - op_blend_rel_pt_funcs[SP_N][SM_AS][SC][DP][CPU_MMX] = _op_blend_rel_pt_mas_c_dp_mmx; - op_blend_rel_pt_funcs[SP_N][SM_AS][SC_N][DP][CPU_MMX] = _op_blend_rel_pt_mas_cn_dp_mmx; - op_blend_rel_pt_funcs[SP_N][SM_AS][SC_AN][DP][CPU_MMX] = _op_blend_rel_pt_mas_can_dp_mmx; - op_blend_rel_pt_funcs[SP_N][SM_AS][SC_AA][DP][CPU_MMX] = _op_blend_rel_pt_mas_caa_dp_mmx; - - op_blend_rel_pt_funcs[SP_N][SM_AS][SC][DP_AN][CPU_MMX] = _op_blend_rel_pt_mas_c_dpan_mmx; - op_blend_rel_pt_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_pt_mas_cn_dpan_mmx; - op_blend_rel_pt_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_MMX] = _op_blend_rel_pt_mas_can_dpan_mmx; - op_blend_rel_pt_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_MMX] = _op_blend_rel_pt_mas_caa_dpan_mmx; -} -#endif diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_mask_color_neon.c b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_mask_color_neon.c deleted file mode 100644 index f5eb480..0000000 --- a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_mask_color_neon.c +++ /dev/null @@ -1,562 +0,0 @@ -#define NEONDEBUG 0 - - -#if NEONDEBUG -#define DEBUG_FNCOUNT(x) \ - do { \ - static int _foo = 0; \ - if (_foo++%10000 ==0) \ - printf("%s %+d %s: %d (%s)\n",__FILE__,__LINE__,__FUNCTION__,\ - _foo, x " optimised");\ - } while (0) -#else -#define DEBUG_FNCOUNT(x) ((void)x) -#endif - - -/* blend mask x color -> dst */ - -#ifdef BUILD_NEON -static void -_op_blend_mas_c_dp_neon(DATA32 *s __UNUSED__, DATA8 *m, DATA32 c, DATA32 *d, int l) { - DATA32 *e; - - DEBUG_FNCOUNT(""); - -#define AP "blend_mas_c_dp_" - asm volatile ( - ".fpu neon \n\t" - " vdup.i32 q15, %[c] \n\t" - " vmov.i8 q14, #1 \n\t" - - // If aligned already - straight to quads - " andS %[tmp], %[d],$0xf \n\t" - " beq "AP"quadloops \n\t" - - " andS %[tmp], %[d],$0x4 \n\t" - " beq "AP"dualloop \n\t" - - AP"singleloop: \n\t" - " vld1.8 d0[0], [%[m]]! \n\t" - " vld1.32 d4[0], [%[d]] \n\t" - " vdup.u8 d0, d0[0] \n\t" - " vmull.u8 q4, d0, d30 \n\t" - " vqrshrn.u16 d12, q4, #8 \n\t" - " vmvn.u16 d14, d12 \n\t" - " vshr.u32 d16, d14, #24 \n\t" - " vmul.u32 d16, d16, d28 \n\t" - " vmull.u8 q7, d16, d4 \n\t" - " vqrshrn.u16 d0, q7, #8 \n\t" - " vqadd.u8 d0, d0, d12 \n\t" - " vst1.32 d0[0], [%[d]]! \n\t" - - // Can we go the fast path? - " andS %[tmp], %[d],$0xf \n\t" - " beq "AP"quadloops \n\t" - - AP"dualloop: \n\t" - " sub %[tmp], %[e], %[d] \n\t" - " cmp %[tmp], #16 \n\t" - " blt "AP"loopout \n\t" - - " vld1.16 d0[0], [%[m]]! \n\t" - " vldm %[d], {d4} \n\t" - " vmovl.u8 q0, d0 \n\t" - " vmovl.u8 q0, d0 \n\t" - " vmul.u32 q0, q14 \n\t" - " vmull.u8 q4, d0, d30 \n\t" - " vqrshrn.u16 d12, q4, #8 \n\t" - " vmvn.u16 d14, d12 \n\t" - " vshr.u32 d16, d14, #24 \n\t" - " vmul.u32 d16, d16, d28 \n\t" - " vmull.u8 q7, d16, d4 \n\t" - " vqrshrn.u16 d0, q7, #8 \n\t" - " vqadd.u8 q0, q0, q6 \n\t" - " vstm %[d]!, {d0} \n\t" - - AP"quadloops: \n\t" - " sub %[tmp], %[e], %[d] \n\t" - " cmp %[tmp], #16 \n\t" - " blt "AP"loopout \n\t" - - - " sub %[tmp], %[e], #15 \n\t" - - " sub %[d], #16 \n\t" - AP"fastloop:" - " add %[d], #16 \n\t" - " cmp %[tmp], %[d] \n\t" - " ble "AP"loopout \n\t" - AP"quadloopint: \n\t" - " ldr %[x], [%[m]] \n\t" - " add %[m], #4 \n\t" - " cmp %[x], #0 \n\t" - " beq "AP"fastloop \n\t" - " vmov.32 d0[0], %[x] \n\t" - " vldm %[d], {d4,d5} \n\t" - - // Expand M: Fixme: Can we do this quicker? - " vmovl.u8 q0, d0 \n\t" - " vmovl.u8 q0, d0 \n\t" - " vmul.u32 q0, q14 \n\t" - - // Multiply a * c - " vmull.u8 q4, d0, d30 \n\t" - " vmull.u8 q5, d1, d31 \n\t" - - // Shorten - " vqrshrn.u16 d12, q4, #8 \n\t" - " vqrshrn.u16 d13, q5, #8 \n\t" - - // extract negated alpha - " vmvn.u16 q7, q6 \n\t" - " vshr.u32 q8, q7, #24 \n\t" - " vmul.u32 q8, q8, q14 \n\t" - - // Multiply - " vmull.u8 q7, d16, d4 \n\t" - " vmull.u8 q8, d17, d5 \n\t" - - " vqrshrn.u16 d0, q7, #8 \n\t" - " vqrshrn.u16 d1, q8, #8 \n\t" - - // Add - " vqadd.u8 q0, q0, q6 \n\t" - - " vstm %[d]!, {d0,d1} \n\t" - - " cmp %[tmp], %[d] \n\t" - " bhi "AP"quadloopint \n\t" - - AP"loopout: \n\t" -#if NEONDEBUG - "cmp %[d], %[e] \n\t" - "ble "AP"foo \n\t" - "cmp %[tmp], %[m] \n\t" - "sub %[x], %[x] \n\t" - "vst1.32 d0[0], [%[x]] \n\t" - AP"foo: \n\t" -#endif - - " cmp %[d], %[e] \n\t" - " beq "AP"done \n\t" - " sub %[tmp],%[e], %[d] \n\t" - " cmp %[tmp],#4 \n\t" - " beq "AP"singleout \n\t" - - AP "dualloop2: \n\t" - "sub %[tmp],%[e],$0x8 \n\t" - " vld1.16 d0[0], [%[m]]! \n\t" - " vldm %[d], {d4} \n\t" - " vmovl.u8 q0, d0 \n\t" - " vmovl.u8 q0, d0 \n\t" - " vmul.u32 q0, q14 \n\t" - " vmull.u8 q4, d0, d30 \n\t" - " vqrshrn.u16 d12, q4, #8 \n\t" - " vmvn.u16 d14, d12 \n\t" - " vshr.u32 d16, d14, #24 \n\t" - " vmul.u32 d16, d16, d28 \n\t" - " vmull.u8 q7, d16, d4 \n\t" - " vqrshrn.u16 d0, q7, #8 \n\t" - " vqadd.u8 q0, q0, q6 \n\t" - " vstm %[d]!, {d0} \n\t" - - " cmp %[e], %[d] \n\t" - " beq "AP"done \n\t" - - AP"singleout: \n\t" - " vld1.8 d0[0], [%[m]]! \n\t" - " vld1.32 d4[0], [%[d]] \n\t" - " vdup.u8 d0, d0[0] \n\t" - " vmull.u8 q4, d0, d30 \n\t" - " vqrshrn.u16 d12, q4, #8 \n\t" - " vmvn.u16 d14, d12 \n\t" - " vshr.u32 d16, d14, #24 \n\t" - " vmul.u32 d16, d16, d28 \n\t" - " vmull.u8 q7, d16, d4 \n\t" - " vqrshrn.u16 d0, q7, #8 \n\t" - " vqadd.u8 q0, q0, q6 \n\t" - " vst1.32 d0[0], [%[d]]! \n\t" - - AP"done: \n\t" -#if NEONDEBUG - "cmp %[d], %[e] \n\t" - "beq "AP"reallydone \n\t" - "sub %[tmp], %[tmp] \n\t" - "vst1.32 d0[0], [%[tmp]] \n\t" - AP"reallydone:" -#endif - : // Out - : [e] "r" (d + l), [d] "r" (d), [c] "r" (c), - [tmp] "r" (7), [m] "r" (m), [x] "r" (0) - : "q0", "q1", "q2","q3", "q4","q5","q6", "q7","q8","q14","q15", - "memory" // clobbered - ); -#undef AP -} -#endif - -#ifdef BUILD_NEON -static void -_op_blend_mas_can_dp_neon(DATA32 *s __UNUSED__, DATA8 *m, DATA32 c, DATA32 *d, int l) { - DATA32 *e,*tmp; - int alpha; - - DEBUG_FNCOUNT(""); - -#define AP "_blend_mas_can_dp_neon_" - asm volatile ( - ".fpu neon \n\t" - "vdup.u32 q9, %[c] \n\t" - "vmov.i8 q15, #1 \n\t" - "vmov.i8 q14, #0 \n\t" - - // Make C 16 bit (C in q3/q2) - "vmovl.u8 q3, d19 \n\t" - "vmovl.u8 q2, d18 \n\t" - - // Which loop to start - " andS %[tmp], %[d],$0xf \n\t" - " beq "AP"quadloop \n\t" - - " andS %[tmp], %[d], #4 \n\t" - " beq "AP"dualstart \n\t" - - - AP"singleloop: \n\t" - " vld1.8 d0[0], [%[m]]! \n\t" - " vld1.32 d8[0], [%[d]] \n\t" - " vdup.u8 d0, d0[0] \n\t" - " vshr.u8 d0, d0, #1 \n\t" - " vmovl.u8 q0, d0 \n\t" - " vmovl.u8 q4, d8 \n\t" - " vsub.s16 q6, q2, q4 \n\t" - " vmul.s16 q6, q0 \n\t" - " vshr.s16 q6, #7 \n\t" - " vadd.s16 q6, q4 \n\t" - " vqmovun.s16 d2, q6 \n\t" - " vst1.32 d2[0], [%[d]]! \n\t" - - " andS %[tmp], %[d], $0xf \n\t" - " beq "AP"quadloop \n\t" - - AP"dualstart: \n\t" - " sub %[tmp], %[e], %[d] \n\t" - " cmp %[tmp], #16 \n\t" - " blt "AP"loopout \n\t" - - AP"dualloop: \n\t" - " vld1.16 d0[0], [%[m]]! \n\t" - " vldm %[d], {d8} \n\t" - " vmovl.u8 q0, d0 \n\t" - " vmovl.u8 q0, d0 \n\t" - " vmul.u32 d0, d0, d30 \n\t" - " vshr.u8 d0, d0, #1 \n\t" - " vmovl.u8 q0, d0 \n\t" - " vmovl.u8 q4, d8 \n\t" - " vsub.s16 q6, q2, q4 \n\t" - " vmul.s16 q6, q0 \n\t" - " vshr.s16 q6, #7 \n\t" - " vadd.s16 q6, q4 \n\t" - " vqmovun.s16 d2, q6 \n\t" - " vstm %[d]!, {d2} \n\t" - - AP"quadloop: \n\t" - " sub %[tmp], %[e], %[d] \n\t" - " cmp %[tmp], #16 \n\t" - " blt "AP"loopout \n\t" - " sub %[tmp], %[e], #15 \n\t" - - " sub %[d], #16 \n\t" - AP"fastloop: \n\t" - " add %[d], #16 \n\t" - " cmp %[tmp], %[d] \n\t" - " blt "AP"loopout \n\t" - - AP"quadloopint: \n\t" - // Load the mask: 4 bytes: It has d0/d1 - " ldr %[x], [%[m]] \n\t" - " add %[m], #4 \n\t" - - // Check for shortcuts - " cmp %[x], #0 \n\t" - " beq "AP"fastloop \n\t" - - " cmp %[x], $0xffffffff \n\t" - " beq "AP"quadstore \n\t" - - " vmov.32 d0[0], %[x] \n\t" - // Load d into d8/d9 q4 - " vldm %[d], {d8,d9} \n\t" - - // Get the alpha channel ready (m) - " vmovl.u8 q0, d0 \n\t" - " vmovl.u8 q0, d0 \n\t" - " vmul.u32 q0, q0,q15 \n\t" - // Lop a bit off to prevent overflow - " vshr.u8 q0, q0, #1 \n\t" - - // Now make it 16 bit - " vmovl.u8 q1, d1 \n\t" - " vmovl.u8 q0, d0 \n\t" - - // 16 bit 'd' - " vmovl.u8 q5, d9 \n\t" - " vmovl.u8 q4, d8 \n\t" - - // Diff 'd' & 'c' - " vsub.s16 q7, q3, q5 \n\t" - " vsub.s16 q6, q2, q4 \n\t" - - " vmul.s16 q7, q1 \n\t" - " vmul.s16 q6, q0 \n\t" - - // Shift results a bit - " vshr.s16 q7, #7 \n\t" - " vshr.s16 q6, #7 \n\t" - - // Add 'd' - " vadd.s16 q7, q5 \n\t" - " vadd.s16 q6, q4 \n\t" - - // Make sure none are negative - " vqmovun.s16 d9, q7 \n\t" - " vqmovun.s16 d8, q6 \n\t" - - " vstm %[d]!, {d8,d9} \n\t" - - " cmp %[tmp], %[d] \n\t" - " bhi "AP"quadloopint \n\t" - " b "AP"loopout \n\t" - - AP"quadstore: \n\t" - " vstm %[d]!, {d18,d19} \n\t" - " cmp %[tmp], %[d] \n\t" - " bhi "AP"quadloopint \n\t" - - AP"loopout: \n\t" -#if NEONDEBUG - "cmp %[d], %[e] \n\t" - "ble "AP"foo \n\t" - "sub %[tmp], %[tmp] \n\t" - "vst1.32 d0[0], [%[tmp]] \n\t" - AP"foo: \n\t" -#endif - - " cmp %[e], %[d] \n\t" - " beq "AP"done \n\t" - - " sub %[tmp],%[e], %[d] \n\t" - " cmp %[tmp],#8 \n\t" - - " blt "AP"onebyte \n\t" - - // Load the mask: 2 bytes: It has d0 - " vld1.16 d0[0], [%[m]]! \n\t" - - // Load d into d8/d9 q4 - " vldm %[d], {d8} \n\t" - - // Get the alpha channel ready (m) - " vmovl.u8 q0, d0 \n\t" - " vmovl.u8 q0, d0 \n\t" - " vmul.u32 d0, d0, d30 \n\t" - // Lop a bit off to prevent overflow - " vshr.u8 d0, d0, #1 \n\t" - - // Now make it 16 bit - " vmovl.u8 q0, d0 \n\t" - - // 16 bit 'd' - " vmovl.u8 q4, d8 \n\t" - - // Diff 'd' & 'c' - " vsub.s16 q6, q2, q4 \n\t" - - " vmul.s16 q6, q0 \n\t" - - // Shift results a bit - " vshr.s16 q6, #7 \n\t" - - // Add 'd' - "vadd.s16 q6, q4 \n\t" - - // Make sure none are negative - "vqmovun.s16 d2, q6 \n\t" - - "vstm %[d]!, {d2} \n\t" - - "cmp %[e], %[d] \n\t" - "beq "AP"done \n\t" - - AP"onebyte: \n\t" - "vld1.8 d0[0], [%[m]]! \n\t" - "vld1.32 d8[0], [%[d]] \n\t" - "vdup.u8 d0, d0[0] \n\t" - "vshr.u8 d0, d0, #1 \n\t" - "vmovl.u8 q0, d0 \n\t" - "vmovl.u8 q4, d8 \n\t" - "vsub.s16 q6, q2, q4 \n\t" - "vmul.s16 q6, q0 \n\t" - "vshr.s16 q6, #7 \n\t" - "vadd.s16 q6, q4 \n\t" - "vqmovun.s16 d2, q6 \n\t" - "vst1.32 d2[0], [%[d]]! \n\t" - - - AP"done: \n\t" -#if NEONDEBUG - "cmp %[d], %[e] \n\t" - "beq "AP"reallydone \n\t" - "sub %[m], %[m] \n\t" - "vst1.32 d0[0], [%[m]] \n\t" - AP"reallydone:" -#endif - - - : // output regs - // Input - : [e] "r" (e = d + l), [d] "r" (d), [c] "r" (c), - [m] "r" (m), [tmp] "r" (7), [x] "r" (33) - : "q0", "q1", "q2","q3", "q4","q5","q6", "q7","q9","q14","q15", - "memory" // clobbered - - ); -#undef AP -} -#endif - -#ifdef BUILD_NEON -#define _op_blend_mas_cn_dp_neon _op_blend_mas_can_dp_neon -#define _op_blend_mas_caa_dp_neon _op_blend_mas_c_dp_neon - -#define _op_blend_mas_c_dpan_neon _op_blend_mas_c_dp_neon -#define _op_blend_mas_cn_dpan_neon _op_blend_mas_cn_dp_neon -#define _op_blend_mas_can_dpan_neon _op_blend_mas_can_dp_neon -#define _op_blend_mas_caa_dpan_neon _op_blend_mas_caa_dp_neon - -static void -init_blend_mask_color_span_funcs_neon(void) -{ - op_blend_span_funcs[SP_N][SM_AS][SC][DP][CPU_NEON] = _op_blend_mas_c_dp_neon; - op_blend_span_funcs[SP_N][SM_AS][SC_N][DP][CPU_NEON] = _op_blend_mas_cn_dp_neon; - op_blend_span_funcs[SP_N][SM_AS][SC_AN][DP][CPU_NEON] = _op_blend_mas_can_dp_neon; - op_blend_span_funcs[SP_N][SM_AS][SC_AA][DP][CPU_NEON] = _op_blend_mas_caa_dp_neon; - - op_blend_span_funcs[SP_N][SM_AS][SC][DP_AN][CPU_NEON] = _op_blend_mas_c_dpan_neon; - op_blend_span_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_NEON] = _op_blend_mas_cn_dpan_neon; - op_blend_span_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_NEON] = _op_blend_mas_can_dpan_neon; - op_blend_span_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_NEON] = _op_blend_mas_caa_dpan_neon; -} -#endif - -#ifdef BUILD_NEON -static void -_op_blend_pt_mas_c_dp_neon(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) { - s = MUL_SYM(m, c); - c = 256 - (s >> 24); - *d = MUL_SYM(*d >> 24, s) + MUL_256(c, *d); -} - - -#define _op_blend_pt_mas_cn_dp_neon _op_blend_pt_mas_c_dp_neon -#define _op_blend_pt_mas_can_dp_neon _op_blend_pt_mas_c_dp_neon -#define _op_blend_pt_mas_caa_dp_neon _op_blend_pt_mas_c_dp_neon - -#define _op_blend_pt_mas_c_dpan_neon _op_blend_pt_mas_c_dp_neon -#define _op_blend_pt_mas_cn_dpan_neon _op_blend_pt_mas_cn_dp_neon -#define _op_blend_pt_mas_can_dpan_neon _op_blend_pt_mas_can_dp_neon -#define _op_blend_pt_mas_caa_dpan_neon _op_blend_pt_mas_caa_dp_neon - -static void -init_blend_mask_color_pt_funcs_neon(void) -{ - op_blend_pt_funcs[SP_N][SM_AS][SC][DP][CPU_NEON] = _op_blend_pt_mas_c_dp_neon; - op_blend_pt_funcs[SP_N][SM_AS][SC_N][DP][CPU_NEON] = _op_blend_pt_mas_cn_dp_neon; - op_blend_pt_funcs[SP_N][SM_AS][SC_AN][DP][CPU_NEON] = _op_blend_pt_mas_can_dp_neon; - op_blend_pt_funcs[SP_N][SM_AS][SC_AA][DP][CPU_NEON] = _op_blend_pt_mas_caa_dp_neon; - - op_blend_pt_funcs[SP_N][SM_AS][SC][DP_AN][CPU_NEON] = _op_blend_pt_mas_c_dpan_neon; - op_blend_pt_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_NEON] = _op_blend_pt_mas_cn_dpan_neon; - op_blend_pt_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_NEON] = _op_blend_pt_mas_can_dpan_neon; - op_blend_pt_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_NEON] = _op_blend_pt_mas_caa_dpan_neon; -} -#endif - -/*-----*/ - -/* blend_rel mask x color -> dst */ - -#ifdef BUILD_NEON -static void -_op_blend_rel_mas_c_dp_neon(DATA32 *s __UNUSED__, DATA8 *m, DATA32 c, DATA32 *d, int l) { - DATA32 *e; - int alpha; - - DEBUG_FNCOUNT("not"); - - UNROLL8_PLD_WHILE(d, l, e, - { - DATA32 mc = MUL_SYM(*m, c); - alpha = 256 - (mc >> 24); - *d = MUL_SYM(*d >> 24, mc) + MUL_256(alpha, *d); - d++; - m++; - }); -} - -#define _op_blend_rel_mas_cn_dp_neon _op_blend_rel_mas_c_dp_neon -#define _op_blend_rel_mas_can_dp_neon _op_blend_rel_mas_c_dp_neon -#define _op_blend_rel_mas_caa_dp_neon _op_blend_rel_mas_c_dp_neon - -#define _op_blend_rel_mas_c_dpan_neon _op_blend_mas_c_dpan_neon -#define _op_blend_rel_mas_cn_dpan_neon _op_blend_mas_cn_dpan_neon -#define _op_blend_rel_mas_can_dpan_neon _op_blend_mas_can_dpan_neon -#define _op_blend_rel_mas_caa_dpan_neon _op_blend_mas_caa_dpan_neon - -static void -init_blend_rel_mask_color_span_funcs_neon(void) -{ - op_blend_rel_span_funcs[SP_N][SM_AS][SC][DP][CPU_NEON] = _op_blend_rel_mas_c_dp_neon; - op_blend_rel_span_funcs[SP_N][SM_AS][SC_N][DP][CPU_NEON] = _op_blend_rel_mas_cn_dp_neon; - op_blend_rel_span_funcs[SP_N][SM_AS][SC_AN][DP][CPU_NEON] = _op_blend_rel_mas_can_dp_neon; - op_blend_rel_span_funcs[SP_N][SM_AS][SC_AA][DP][CPU_NEON] = _op_blend_rel_mas_caa_dp_neon; - - op_blend_rel_span_funcs[SP_N][SM_AS][SC][DP_AN][CPU_NEON] = _op_blend_rel_mas_c_dpan_neon; - op_blend_rel_span_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_NEON] = _op_blend_rel_mas_cn_dpan_neon; - op_blend_rel_span_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_NEON] = _op_blend_rel_mas_can_dpan_neon; - op_blend_rel_span_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_NEON] = _op_blend_rel_mas_caa_dpan_neon; -} -#endif - -#ifdef BUILD_NEON -static void -_op_blend_rel_pt_mas_c_dp_neon(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) { - s = MUL_SYM(m, c); - c = 256 - (s >> 24); - *d = MUL_SYM(*d >> 24, s) + MUL_256(c, *d); -} - -#define _op_blend_rel_pt_mas_cn_dp_neon _op_blend_rel_pt_mas_c_dp_neon -#define _op_blend_rel_pt_mas_can_dp_neon _op_blend_rel_pt_mas_c_dp_neon -#define _op_blend_rel_pt_mas_caa_dp_neon _op_blend_rel_pt_mas_c_dp_neon - -#define _op_blend_rel_pt_mas_c_dpan_neon _op_blend_pt_mas_c_dpan_neon -#define _op_blend_rel_pt_mas_cn_dpan_neon _op_blend_pt_mas_cn_dpan_neon -#define _op_blend_rel_pt_mas_can_dpan_neon _op_blend_pt_mas_can_dpan_neon -#define _op_blend_rel_pt_mas_caa_dpan_neon _op_blend_pt_mas_caa_dpan_neon - -static void -init_blend_rel_mask_color_pt_funcs_neon(void) -{ - op_blend_rel_pt_funcs[SP_N][SM_AS][SC][DP][CPU_NEON] = _op_blend_rel_pt_mas_c_dp_neon; - op_blend_rel_pt_funcs[SP_N][SM_AS][SC_N][DP][CPU_NEON] = _op_blend_rel_pt_mas_cn_dp_neon; - op_blend_rel_pt_funcs[SP_N][SM_AS][SC_AN][DP][CPU_NEON] = _op_blend_rel_pt_mas_can_dp_neon; - op_blend_rel_pt_funcs[SP_N][SM_AS][SC_AA][DP][CPU_NEON] = _op_blend_rel_pt_mas_caa_dp_neon; - - op_blend_rel_pt_funcs[SP_N][SM_AS][SC][DP_AN][CPU_NEON] = _op_blend_rel_pt_mas_c_dpan_neon; - op_blend_rel_pt_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_NEON] = _op_blend_rel_pt_mas_cn_dpan_neon; - op_blend_rel_pt_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_NEON] = _op_blend_rel_pt_mas_can_dpan_neon; - op_blend_rel_pt_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_NEON] = _op_blend_rel_pt_mas_caa_dpan_neon; -} -#endif diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_mask_color_sse3.c b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_mask_color_sse3.c deleted file mode 100644 index 5883d15..0000000 --- a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_mask_color_sse3.c +++ /dev/null @@ -1,321 +0,0 @@ -/* blend mask x color -> dst */ - -#ifdef BUILD_SSE3 - -static void -_op_blend_mas_c_dp_sse3(DATA32 *s __UNUSED__, DATA8 *m, DATA32 c, DATA32 *d, int l) { - - const __m128i c_packed = _mm_set_epi32(c, c, c, c); - - LOOP_ALIGNED_U1_A48_SSE3(d, l, - { /* UOP */ - - DATA32 a = *m; - DATA32 mc = MUL_SYM(a, c); - a = 256 - (mc >> 24); - *d = mc + MUL_256(a, *d); - m++; d++; l--; - }, - { /* A4OP */ - - if ((m[3] | m[2] | m[1] | m[0]) == 0) { - m += 4; d += 4; l -= 4; - continue; - } - - __m128i m0 = _mm_set_epi32(m[3], m[2], m[1], m[0]); - __m128i d0 = _mm_load_si128((__m128i *)d); - - __m128i mc0 = mul_sym_sse3(m0, c_packed); - __m128i a0 = sub4_alpha_sse3(mc0); - __m128i mul0 = mul_256_sse3(a0, d0); - - mul0 = _mm_add_epi32(mul0, mc0); - - _mm_store_si128((__m128i *)d, mul0); - - m += 4; d += 4; l -= 4; - }, - { /* A8OP */ - - if((m[7] | m[6] | m[5] | m[4] | m[3] | m[2] | m[1] | m[0]) == 0) { - m += 8; d += 8; l -= 8; - continue; - } - - __m128i m0 = _mm_set_epi32(m[3], m[2], m[1], m[0]); - __m128i d0 = _mm_load_si128((__m128i *)d); - - __m128i m1 = _mm_set_epi32(m[7], m[6], m[5], m[4]); - __m128i d1 = _mm_load_si128((__m128i *)(d+4)); - - __m128i mc0 = mul_sym_sse3(m0, c_packed); - __m128i a0 = sub4_alpha_sse3(mc0); - __m128i mul0 = mul_256_sse3(a0, d0); - - mul0 = _mm_add_epi32(mc0, mul0); - - __m128i mc1 = mul_sym_sse3(m1, c_packed); - __m128i a1 = sub4_alpha_sse3(mc1); - __m128i mul1 = mul_256_sse3(a1, d1); - - mul1 = _mm_add_epi32(mc1, mul1); - - _mm_store_si128((__m128i *)d, mul0); - _mm_store_si128((__m128i *)(d+4), mul1); - - m += 8; d += 8; l -= 8; - }) -} - -static void -_op_blend_mas_can_dp_sse3(DATA32 *s __UNUSED__, DATA8 *m, DATA32 c, DATA32 *d, int l) { - - DATA32 alpha; - - const __m128i one = _mm_set_epi32(1, 1, 1, 1); - const __m128i c_packed = _mm_set_epi32(c, c, c, c); - - LOOP_ALIGNED_U1_A48_SSE3(d, l, - { /* UOP */ - - alpha = *m; - switch(alpha) - { - case 0: - break; - case 255: - *d = c; - break; - default: - alpha++; - *d = INTERP_256(alpha, c, *d); - break; - } - m++; d++; l--; - }, - { /* A4OP */ - - if ((m[3] | m[2] | m[1] | m[0]) == 0) { - m += 4; d += 4; l -= 4; - continue; - } - - __m128i m0 = _mm_set_epi32(m[3], m[2], m[1], m[0]); - __m128i d0 = _mm_load_si128((__m128i *)d); - - __m128i zm0 = _mm_cmpeq_epi32(m0, _mm_setzero_si128()); - - m0 = _mm_add_epi32(one, m0); - - __m128i r0 = interp4_256_sse3(m0, c_packed, d0); - - r0 = _mm_and_si128(~zm0, r0); - d0 = _mm_and_si128(zm0, d0); - - d0 = _mm_add_epi32(r0, d0); - - _mm_store_si128((__m128i *)d, d0); - - m += 4; d += 4; l -= 4; - }, - { /* A8OP */ - - if ((m[7] | m[6] | m[5] | m[4] | m[3] | m[2] | m[1] | m[0]) == 0) { - m += 8; d += 8; l -= 8; - continue; - } - - __m128i m0 = _mm_set_epi32(m[3], m[2], m[1], m[0]); - __m128i d0 = _mm_load_si128((__m128i *)d); - - __m128i m1 = _mm_set_epi32(m[7], m[6], m[5], m[4]); - __m128i d1 = _mm_load_si128((__m128i *)(d+4)); - - __m128i zm0 = _mm_cmpeq_epi32(m0, _mm_setzero_si128()); - __m128i zm1 = _mm_cmpeq_epi32(m1, _mm_setzero_si128()); - - m0 = _mm_add_epi32(one, m0); - m1 = _mm_add_epi32(one, m1); - - __m128i r0 = interp4_256_sse3(m0, c_packed, d0); - __m128i r1 = interp4_256_sse3(m1, c_packed, d1); - - r0 = _mm_and_si128(~zm0, r0); - d0 = _mm_and_si128(zm0, d0); - - r1 = _mm_and_si128(~zm1, r1); - d1 = _mm_and_si128(zm1, d1); - - d0 = _mm_add_epi32(d0, r0); - d1 = _mm_add_epi32(d1, r1); - - _mm_store_si128((__m128i *)d, d0); - _mm_store_si128((__m128i *)(d+4), d1); - - m += 8; d += 8; l -= 8; - }) -} - -#define _op_blend_mas_cn_dp_sse3 _op_blend_mas_can_dp_sse3 -#define _op_blend_mas_caa_dp_sse3 _op_blend_mas_c_dp_sse3 - -#define _op_blend_mas_c_dpan_sse3 _op_blend_mas_c_dp_sse3 -#define _op_blend_mas_cn_dpan_sse3 _op_blend_mas_cn_dp_sse3 -#define _op_blend_mas_can_dpan_sse3 _op_blend_mas_can_dp_sse3 -#define _op_blend_mas_caa_dpan_sse3 _op_blend_mas_caa_dp_sse3 - -static void -init_blend_mask_color_span_funcs_sse3(void) -{ -// FIXME: BUGGY BUGGY Core i5 750 (32bit), 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4), ello (text and rectangle) -// op_blend_span_funcs[SP_N][SM_AS][SC][DP][CPU_SSE3] = _op_blend_mas_c_dp_sse3; - op_blend_span_funcs[SP_N][SM_AS][SC_N][DP][CPU_SSE3] = _op_blend_mas_cn_dp_sse3; - op_blend_span_funcs[SP_N][SM_AS][SC_AN][DP][CPU_SSE3] = _op_blend_mas_can_dp_sse3; - op_blend_span_funcs[SP_N][SM_AS][SC_AA][DP][CPU_SSE3] = _op_blend_mas_caa_dp_sse3; - -// FIXME: BUGGY BUGGY Core i5 2500 (64bit), gcc version 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4), ello (text) -// op_blend_span_funcs[SP_N][SM_AS][SC][DP_AN][CPU_SSE3] = _op_blend_mas_c_dpan_sse3; - op_blend_span_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_SSE3] = _op_blend_mas_cn_dpan_sse3; - op_blend_span_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_SSE3] = _op_blend_mas_can_dpan_sse3; - op_blend_span_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_SSE3] = _op_blend_mas_caa_dpan_sse3; -} - -#define _op_blend_pt_mas_c_dp_sse3 NULL -#define _op_blend_pt_mas_can_dp_sse3 NULL - -#define _op_blend_pt_mas_cn_dp_sse3 _op_blend_pt_mas_can_dp_sse3 -#define _op_blend_pt_mas_caa_dp_sse3 _op_blend_pt_mas_c_dp_sse3 - -#define _op_blend_pt_mas_c_dpan_sse3 _op_blend_pt_mas_c_dp_sse3 -#define _op_blend_pt_mas_cn_dpan_sse3 _op_blend_pt_mas_cn_dp_sse3 -#define _op_blend_pt_mas_can_dpan_sse3 _op_blend_pt_mas_can_dp_sse3 -#define _op_blend_pt_mas_caa_dpan_sse3 _op_blend_pt_mas_caa_dp_sse3 - -static void -init_blend_mask_color_pt_funcs_sse3(void) -{ - op_blend_pt_funcs[SP_N][SM_AS][SC][DP][CPU_SSE3] = _op_blend_pt_mas_c_dp_sse3; - op_blend_pt_funcs[SP_N][SM_AS][SC_N][DP][CPU_SSE3] = _op_blend_pt_mas_cn_dp_sse3; - op_blend_pt_funcs[SP_N][SM_AS][SC_AN][DP][CPU_SSE3] = _op_blend_pt_mas_can_dp_sse3; - op_blend_pt_funcs[SP_N][SM_AS][SC_AA][DP][CPU_SSE3] = _op_blend_pt_mas_caa_dp_sse3; - - op_blend_pt_funcs[SP_N][SM_AS][SC][DP_AN][CPU_SSE3] = _op_blend_pt_mas_c_dpan_sse3; - op_blend_pt_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_SSE3] = _op_blend_pt_mas_cn_dpan_sse3; - op_blend_pt_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_SSE3] = _op_blend_pt_mas_can_dpan_sse3; - op_blend_pt_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_SSE3] = _op_blend_pt_mas_caa_dpan_sse3; -} - -/*-----*/ - -/* blend_rel mask x color --> dst */ - -static void -_op_blend_rel_mas_c_dp_sse3(DATA32 *s __UNUSED__, DATA8 *m, DATA32 c, DATA32 *d, int l) { - - const __m128i c_packed = _mm_set_epi32(c, c, c, c); - - LOOP_ALIGNED_U1_A48_SSE3(d, l, - { /* UOP */ - - DATA32 mc = MUL_SYM(*m, c); - int alpha = 256 - (mc >> 24); - *d = MUL_SYM(*d >> 24, mc) + MUL_256(alpha, *d); - d++; m++; l--; - }, - { /* A4OP */ - - __m128i m0 = _mm_set_epi32(m[3], m[2], m[1], m[0]); - __m128i d0 = _mm_load_si128((__m128i *) d); - - __m128i mc0 = mul_sym_sse3(m0, c_packed); - __m128i a0 = sub4_alpha_sse3(mc0); - - __m128i d0_sym = mul_sym_sse3(_mm_srli_epi32(d0, 24), mc0); - d0 = mul_256_sse3(a0, d0); - - d0 = _mm_add_epi32(d0, d0_sym); - - _mm_store_si128((__m128i *)d, d0); - - d += 4; m += 4; l -= 4; - }, - { /* A8OP */ - - __m128i m0 = _mm_set_epi32(m[3], m[2], m[1], m[0]); - __m128i d0 = _mm_load_si128((__m128i *)d); - - __m128i m1 = _mm_set_epi32(m[7], m[6], m[5], m[4]); - __m128i d1 = _mm_load_si128((__m128i *)(d+4)); - - __m128i mc0 = mul_sym_sse3(m0, c_packed); - __m128i mc1 = mul_sym_sse3(m1, c_packed); - - __m128i a0 = sub4_alpha_sse3(mc0); - __m128i a1 = sub4_alpha_sse3(mc1); - - __m128i d0_sym = mul_sym_sse3(_mm_srli_epi32(d0, 24), mc0); - __m128i d1_sym = mul_sym_sse3(_mm_srli_epi32(d1, 24), mc1); - - d0 = mul_256_sse3(a0, d0); - d1 = mul_256_sse3(a1, d1); - - d0 = _mm_add_epi32(d0, d0_sym); - d1 = _mm_add_epi32(d1, d1_sym); - - _mm_store_si128((__m128i *)d, d0); - _mm_store_si128((__m128i *)(d+4), d1); - - d += 8; m += 8; l -= 8; - }) -} - -#define _op_blend_rel_mas_cn_dp_sse3 _op_blend_rel_mas_c_dp_sse3 -#define _op_blend_rel_mas_can_dp_sse3 _op_blend_rel_mas_c_dp_sse3 -#define _op_blend_rel_mas_caa_dp_sse3 _op_blend_rel_mas_c_dp_sse3 - -#define _op_blend_rel_mas_c_dpan_sse3 _op_blend_mas_c_dpan_sse3 -#define _op_blend_rel_mas_cn_dpan_sse3 _op_blend_mas_cn_dpan_sse3 -#define _op_blend_rel_mas_can_dpan_sse3 _op_blend_mas_can_dpan_sse3 -#define _op_blend_rel_mas_caa_dpan_sse3 _op_blend_mas_caa_dpan_sse3 - -static void -init_blend_rel_mask_color_span_funcs_sse3(void) -{ - op_blend_rel_span_funcs[SP_N][SM_AS][SC][DP][CPU_SSE3] = _op_blend_rel_mas_c_dp_sse3; - op_blend_rel_span_funcs[SP_N][SM_AS][SC_N][DP][CPU_SSE3] = _op_blend_rel_mas_can_dp_sse3; - op_blend_rel_span_funcs[SP_N][SM_AS][SC_AN][DP][CPU_SSE3] = _op_blend_rel_mas_can_dp_sse3; - op_blend_rel_span_funcs[SP_N][SM_AS][SC_AA][DP][CPU_SSE3] = _op_blend_rel_mas_caa_dp_sse3; - - op_blend_rel_span_funcs[SP_N][SM_AS][SC][DP_AN][CPU_SSE3] = _op_blend_rel_mas_c_dpan_sse3; - op_blend_rel_span_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_SSE3] = _op_blend_rel_mas_cn_dpan_sse3; - op_blend_rel_span_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_SSE3] = _op_blend_rel_mas_can_dpan_sse3; - op_blend_rel_span_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_SSE3] = _op_blend_rel_mas_caa_dpan_sse3; -} - -#define _op_blend_rel_pt_mas_c_dp_sse3 NULL - -#define _op_blend_rel_pt_mas_cn_dp_sse3 _op_blend_rel_pt_mas_c_dp_sse3 -#define _op_blend_rel_pt_mas_can_dp_sse3 _op_blend_rel_pt_mas_c_dp_sse3 -#define _op_blend_rel_pt_mas_caa_dp_sse3 _op_blend_rel_pt_mas_c_dp_sse3 - -#define _op_blend_rel_pt_mas_c_dpan_sse3 _op_blend_pt_mas_c_dpan_sse3 -#define _op_blend_rel_pt_mas_cn_dpan_sse3 _op_blend_pt_mas_cn_dpan_sse3 -#define _op_blend_rel_pt_mas_can_dpan_sse3 _op_blend_pt_mas_can_dpan_sse3 -#define _op_blend_rel_pt_mas_caa_dpan_sse3 _op_blend_pt_mas_caa_dpan_sse3 - -static void -init_blend_rel_mask_color_pt_funcs_sse3(void) -{ - op_blend_rel_pt_funcs[SP_N][SM_AS][SC][DP][CPU_SSE3] = _op_blend_rel_pt_mas_c_dp_sse3; - op_blend_rel_pt_funcs[SP_N][SM_AS][SC_N][DP][CPU_SSE3] = _op_blend_rel_pt_mas_cn_dp_sse3; - op_blend_rel_pt_funcs[SP_N][SM_AS][SC_AN][DP][CPU_SSE3] = _op_blend_rel_pt_mas_can_dp_sse3; - op_blend_rel_pt_funcs[SP_N][SM_AS][SC_AA][DP][CPU_SSE3] = _op_blend_rel_pt_mas_caa_dp_sse3; - - op_blend_rel_pt_funcs[SP_N][SM_AS][SC][DP_AN][CPU_SSE3] = _op_blend_rel_pt_mas_c_dpan_sse3; - op_blend_rel_pt_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_SSE3] = _op_blend_rel_pt_mas_cn_dpan_sse3; - op_blend_rel_pt_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_SSE3] = _op_blend_rel_pt_mas_can_dpan_sse3; - op_blend_rel_pt_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_SSE3] = _op_blend_rel_pt_mas_caa_dpan_sse3; -} - -#endif diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_master_sse3.c b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_master_sse3.c deleted file mode 100644 index eac6755..0000000 --- a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_master_sse3.c +++ /dev/null @@ -1,77 +0,0 @@ -#define NEED_SSE3 1 - -#include "evas_common.h" - -#ifdef BUILD_SSE3 -static __m128i A_MASK_SSE3; -#endif - -extern RGBA_Gfx_Func op_blend_span_funcs[SP_LAST][SM_LAST][SC_LAST][DP_LAST][CPU_LAST]; -extern RGBA_Gfx_Pt_Func op_blend_pt_funcs[SP_LAST][SM_LAST][SC_LAST][DP_LAST][CPU_LAST]; - -extern RGBA_Gfx_Func op_blend_rel_span_funcs[SP_LAST][SM_LAST][SC_LAST][DP_LAST][CPU_LAST]; -extern RGBA_Gfx_Pt_Func op_blend_rel_pt_funcs[SP_LAST][SM_LAST][SC_LAST][DP_LAST][CPU_LAST]; - -# include "op_blend_pixel_sse3.c" -# include "op_blend_color_sse3.c" -# include "op_blend_pixel_color_sse3.c" -# include "op_blend_pixel_mask_sse3.c" -# include "op_blend_mask_color_sse3.c" - -void -evas_common_op_blend_init_sse3(void) -{ -#ifdef BUILD_SSE3 - GA_MASK_SSE3 = _mm_set_epi32(0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF); - RB_MASK_SSE3 = _mm_set_epi32(0xFF00FF00, 0xFF00FF00, 0xFF00FF00, 0xFF00FF00); - SYM4_MASK_SSE3 = _mm_set_epi32(0x00FF00FF, 0x000000FF, 0x00FF00FF, 0x000000FF); - RGB_MASK_SSE3 = _mm_set_epi32(0xFFFFFF, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF); - A_MASK_SSE3 = _mm_set_epi32(0xFF000000, 0xFF000000, 0xFF000000, 0xFF000000); - ALPHA_SSE3 = _mm_set_epi32(256, 256, 256, 256); - - init_blend_pixel_span_funcs_sse3(); - init_blend_pixel_color_span_funcs_sse3(); - init_blend_pixel_mask_span_funcs_sse3(); - init_blend_color_span_funcs_sse3(); - init_blend_mask_color_span_funcs_sse3(); - - init_blend_pixel_pt_funcs_sse3(); - init_blend_pixel_color_pt_funcs_sse3(); - init_blend_pixel_mask_pt_funcs_sse3(); - init_blend_color_pt_funcs_sse3(); - init_blend_mask_color_pt_funcs_sse3(); -#endif -} - -void -evas_common_op_blend_rel_init_sse3(void) -{ -#ifdef BUILD_SSE3 - init_blend_rel_pixel_span_funcs_sse3(); - init_blend_rel_pixel_color_span_funcs_sse3(); - init_blend_rel_pixel_mask_span_funcs_sse3(); - init_blend_rel_color_span_funcs_sse3(); - init_blend_rel_mask_color_span_funcs_sse3(); - - init_blend_rel_pixel_pt_funcs_sse3(); - init_blend_rel_pixel_color_pt_funcs_sse3(); - init_blend_rel_pixel_mask_pt_funcs_sse3(); - init_blend_rel_color_pt_funcs_sse3(); - init_blend_rel_mask_color_pt_funcs_sse3(); -#endif -} - -//#pragma GCC push_options -//#pragma GCC optimize ("O0") -void -evas_common_op_sse3_test(void) -{ -#ifdef BUILD_SSE3 - DATA32 s[64] = {0x11883399}, d[64] = {0xff88cc33}; - - s[0] = rand(); d[1] = rand(); - _op_blend_pas_dp_sse3(s, NULL, 0, d, 64); - evas_common_cpu_end_opt(); -#endif -} -//#pragma GCC pop_options diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_.c b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_.c deleted file mode 100644 index 0ce78d8..0000000 --- a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_.c +++ /dev/null @@ -1,162 +0,0 @@ -/* blend pixel --> dst */ - -#ifdef BUILD_C -static void -_op_blend_p_dp(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c __UNUSED__, DATA32 *d, int l) { - DATA32 *e; - int alpha; - UNROLL8_PLD_WHILE(d, l, e, - { - alpha = 256 - (*s >> 24); - *d = *s++ + MUL_256(alpha, *d); - d++; - }); -} - -static void -_op_blend_pas_dp(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c __UNUSED__, DATA32 *d, int l) { - DATA32 *e; - int alpha; - UNROLL8_PLD_WHILE(d, l, e, - { - switch (*s & 0xff000000) - { - case 0: - break; - case 0xff000000: - *d = *s; - break; - default: - alpha = 256 - (*s >> 24); - *d = *s + MUL_256(alpha, *d); - break; - } - s++; d++; - }); -} - -#define _op_blend_pan_dp NULL - -#define _op_blend_p_dpan _op_blend_p_dp -#define _op_blend_pas_dpan _op_blend_pas_dp -#define _op_blend_pan_dpan _op_blend_pan_dp - -static void -init_blend_pixel_span_funcs_c(void) -{ - op_blend_span_funcs[SP][SM_N][SC_N][DP][CPU_C] = _op_blend_p_dp; - op_blend_span_funcs[SP_AS][SM_N][SC_N][DP][CPU_C] = _op_blend_pas_dp; - op_blend_span_funcs[SP_AN][SM_N][SC_N][DP][CPU_C] = _op_blend_pan_dp; - - op_blend_span_funcs[SP][SM_N][SC_N][DP_AN][CPU_C] = _op_blend_p_dpan; - op_blend_span_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_C] = _op_blend_pas_dpan; - op_blend_span_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_C] = _op_blend_pan_dpan; -} -#endif - -#ifdef BUILD_C -static void -_op_blend_pt_p_dp(DATA32 s, DATA8 m __UNUSED__, DATA32 c, DATA32 *d) { - c = 256 - (s >> 24); - *d = s + MUL_256(c, *d); -} - -#define _op_blend_pt_pas_dp _op_blend_pt_p_dp -#define _op_blend_pt_pan_dp NULL - -#define _op_blend_pt_p_dpan _op_blend_pt_p_dp -#define _op_blend_pt_pan_dpan _op_blend_pt_pan_dp -#define _op_blend_pt_pas_dpan _op_blend_pt_pas_dp - -static void -init_blend_pixel_pt_funcs_c(void) -{ - op_blend_pt_funcs[SP][SM_N][SC_N][DP][CPU_C] = _op_blend_pt_p_dp; - op_blend_pt_funcs[SP_AS][SM_N][SC_N][DP][CPU_C] = _op_blend_pt_pas_dp; - op_blend_pt_funcs[SP_AN][SM_N][SC_N][DP][CPU_C] = _op_blend_pt_pan_dp; - - op_blend_pt_funcs[SP][SM_N][SC_N][DP_AN][CPU_C] = _op_blend_pt_p_dpan; - op_blend_pt_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_C] = _op_blend_pt_pas_dpan; - op_blend_pt_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_C] = _op_blend_pt_pan_dpan; -} -#endif - -/*-----*/ - -/* blend_rel pixel -> dst */ - -#ifdef BUILD_C -static void -_op_blend_rel_p_dp(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) { - DATA32 *e; - int alpha; - UNROLL8_PLD_WHILE(d, l, e, - { - alpha = 256 - (*s >> 24); - c = 1 + (*d >> 24); - *d = MUL_256(c, *s) + MUL_256(alpha, *d); - d++; - s++; - }); -} - -static void -_op_blend_rel_pan_dp(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) { - DATA32 *e; - UNROLL8_PLD_WHILE(d, l, e, - { - c = 1 + (*d >> 24); - *d++ = MUL_256(c, *s); - s++; - }); -} - -#define _op_blend_rel_pas_dp _op_blend_rel_p_dp - -#define _op_blend_rel_p_dpan _op_blend_p_dpan -#define _op_blend_rel_pan_dpan _op_blend_pan_dpan -#define _op_blend_rel_pas_dpan _op_blend_pas_dpan - -static void -init_blend_rel_pixel_span_funcs_c(void) -{ - op_blend_rel_span_funcs[SP][SM_N][SC_N][DP][CPU_C] = _op_blend_rel_p_dp; - op_blend_rel_span_funcs[SP_AS][SM_N][SC_N][DP][CPU_C] = _op_blend_rel_pas_dp; - op_blend_rel_span_funcs[SP_AN][SM_N][SC_N][DP][CPU_C] = _op_blend_rel_pan_dp; - - op_blend_rel_span_funcs[SP][SM_N][SC_N][DP_AN][CPU_C] = _op_blend_rel_p_dpan; - op_blend_rel_span_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_C] = _op_blend_rel_pas_dpan; - op_blend_rel_span_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_C] = _op_blend_rel_pan_dpan; -} -#endif - -#ifdef BUILD_C -static void -_op_blend_rel_pt_p_dp(DATA32 s, DATA8 m __UNUSED__, DATA32 c, DATA32 *d) { - c = 256 - (s >> 24); - *d = MUL_SYM(*d >> 24, s) + MUL_256(c, *d); -} - -static void -_op_blend_rel_pt_pan_dp(DATA32 s, DATA8 m __UNUSED__, DATA32 c __UNUSED__, DATA32 *d) { - *d = MUL_SYM(*d >> 24, s); -} - -#define _op_blend_rel_pt_pas_dp _op_blend_rel_pt_p_dp - -#define _op_blend_rel_pt_p_dpan _op_blend_pt_p_dpan -#define _op_blend_rel_pt_pan_dpan _op_blend_pt_pan_dpan -#define _op_blend_rel_pt_pas_dpan _op_blend_pt_pas_dpan - -static void -init_blend_rel_pixel_pt_funcs_c(void) -{ - op_blend_rel_pt_funcs[SP][SM_N][SC_N][DP][CPU_C] = _op_blend_rel_pt_p_dp; - op_blend_rel_pt_funcs[SP_AS][SM_N][SC_N][DP][CPU_C] = _op_blend_rel_pt_pas_dp; - op_blend_rel_pt_funcs[SP_AN][SM_N][SC_N][DP][CPU_C] = _op_blend_rel_pt_pan_dp; - - op_blend_rel_pt_funcs[SP][SM_N][SC_N][DP_AN][CPU_C] = _op_blend_rel_pt_p_dpan; - op_blend_rel_pt_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_C] = _op_blend_rel_pt_pas_dpan; - op_blend_rel_pt_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_C] = _op_blend_rel_pt_pan_dpan; -} -#endif diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_color_.c b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_color_.c deleted file mode 100644 index c5e40a0..0000000 --- a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_color_.c +++ /dev/null @@ -1,284 +0,0 @@ -/* blend pixel x color --> dst */ - -#ifdef BUILD_C -static void -_op_blend_p_c_dp(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) { - DATA32 *e; - int alpha; - UNROLL8_PLD_WHILE(d, l, e, - { - DATA32 sc = MUL4_SYM(c, *s); - alpha = 256 - (sc >> 24); - *d = sc + MUL_256(alpha, *d); - d++; - s++; - }); -} - -static void -_op_blend_pan_c_dp(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) { - DATA32 *e; - int alpha = 256 - (c >> 24); - UNROLL8_PLD_WHILE(d, l, e, - { - *d = ((c & 0xff000000) + MUL3_SYM(c, *s)) + MUL_256(alpha, *d); - d++; - s++; - }); -} - -static void -_op_blend_p_can_dp(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) { - DATA32 *e; - int alpha; - UNROLL8_PLD_WHILE(d, l, e, - { - alpha = 256 - (*s >> 24); - *d = ((*s & 0xff000000) + MUL3_SYM(c, *s)) + MUL_256(alpha, *d); - d++; - s++; - }); -} - -static void -_op_blend_pan_can_dp(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) { - DATA32 *e; - UNROLL8_PLD_WHILE(d, l, e, - { - *d++ = 0xff000000 + MUL3_SYM(c, *s); - s++; - }); -} - -static void -_op_blend_p_caa_dp(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) { - DATA32 *e; - int alpha; - c = 1 + (c & 0xff); - UNROLL8_PLD_WHILE(d, l, e, - { - DATA32 sc = MUL_256(c, *s); - alpha = 256 - (sc >> 24); - *d = sc + MUL_256(alpha, *d); - d++; - s++; - }); -} - -static void -_op_blend_pan_caa_dp(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) { - DATA32 *e; - c = 1 + (c & 0xff); - UNROLL8_PLD_WHILE(d, l, e, - { - *d = INTERP_256(c, *s, *d); - d++; - s++; - }); -} - -#define _op_blend_pas_c_dp _op_blend_p_c_dp -#define _op_blend_pas_can_dp _op_blend_p_can_dp -#define _op_blend_pas_caa_dp _op_blend_p_caa_dp - -#define _op_blend_p_c_dpan _op_blend_p_c_dp -#define _op_blend_pas_c_dpan _op_blend_pas_c_dp -#define _op_blend_pan_c_dpan _op_blend_pan_c_dp -#define _op_blend_p_can_dpan _op_blend_p_can_dp -#define _op_blend_pas_can_dpan _op_blend_pas_can_dp -#define _op_blend_pan_can_dpan _op_blend_pan_can_dp -#define _op_blend_p_caa_dpan _op_blend_p_caa_dp -#define _op_blend_pas_caa_dpan _op_blend_pas_caa_dp -#define _op_blend_pan_caa_dpan _op_blend_pan_caa_dp - -static void -init_blend_pixel_color_span_funcs_c(void) -{ - op_blend_span_funcs[SP][SM_N][SC][DP][CPU_C] = _op_blend_p_c_dp; - op_blend_span_funcs[SP_AS][SM_N][SC][DP][CPU_C] = _op_blend_pas_c_dp; - op_blend_span_funcs[SP_AN][SM_N][SC][DP][CPU_C] = _op_blend_pan_c_dp; - op_blend_span_funcs[SP][SM_N][SC_AN][DP][CPU_C] = _op_blend_p_can_dp; - op_blend_span_funcs[SP_AS][SM_N][SC_AN][DP][CPU_C] = _op_blend_pas_can_dp; - op_blend_span_funcs[SP_AN][SM_N][SC_AN][DP][CPU_C] = _op_blend_pan_can_dp; - op_blend_span_funcs[SP][SM_N][SC_AA][DP][CPU_C] = _op_blend_p_caa_dp; - op_blend_span_funcs[SP_AS][SM_N][SC_AA][DP][CPU_C] = _op_blend_pas_caa_dp; - op_blend_span_funcs[SP_AN][SM_N][SC_AA][DP][CPU_C] = _op_blend_pan_caa_dp; - - op_blend_span_funcs[SP][SM_N][SC][DP_AN][CPU_C] = _op_blend_p_c_dpan; - op_blend_span_funcs[SP_AS][SM_N][SC][DP_AN][CPU_C] = _op_blend_pas_c_dpan; - op_blend_span_funcs[SP_AN][SM_N][SC][DP_AN][CPU_C] = _op_blend_pan_c_dpan; - op_blend_span_funcs[SP][SM_N][SC_AN][DP_AN][CPU_C] = _op_blend_p_can_dpan; - op_blend_span_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_C] = _op_blend_pas_can_dpan; - op_blend_span_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_C] = _op_blend_pan_can_dpan; - op_blend_span_funcs[SP][SM_N][SC_AA][DP_AN][CPU_C] = _op_blend_p_caa_dpan; - op_blend_span_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_C] = _op_blend_pas_caa_dpan; - op_blend_span_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_C] = _op_blend_pan_caa_dpan; -} -#endif - -#ifdef BUILD_C -static void -_op_blend_pt_p_c_dp(DATA32 s, DATA8 m __UNUSED__, DATA32 c, DATA32 *d) { - s = MUL4_SYM(c, s); - c = 256 - (s >> 24); - *d = s + MUL_256(c, *d); -} - -#define _op_blend_pt_pas_c_dp _op_blend_pt_p_c_dp -#define _op_blend_pt_pan_c_dp _op_blend_pt_p_c_dp -#define _op_blend_pt_p_can_dp _op_blend_pt_p_c_dp -#define _op_blend_pt_pas_can_dp _op_blend_pt_p_c_dp -#define _op_blend_pt_pan_can_dp _op_blend_pt_p_c_dp -#define _op_blend_pt_p_caa_dp _op_blend_pt_p_c_dp -#define _op_blend_pt_pas_caa_dp _op_blend_pt_p_c_dp -#define _op_blend_pt_pan_caa_dp _op_blend_pt_p_c_dp - -#define _op_blend_pt_p_c_dpan _op_blend_pt_p_c_dp -#define _op_blend_pt_pas_c_dpan _op_blend_pt_pas_c_dp -#define _op_blend_pt_pan_c_dpan _op_blend_pt_pan_c_dp -#define _op_blend_pt_p_can_dpan _op_blend_pt_p_can_dp -#define _op_blend_pt_pas_can_dpan _op_blend_pt_pas_can_dp -#define _op_blend_pt_pan_can_dpan _op_blend_pt_pan_can_dp -#define _op_blend_pt_p_caa_dpan _op_blend_pt_p_caa_dp -#define _op_blend_pt_pas_caa_dpan _op_blend_pt_pas_caa_dp -#define _op_blend_pt_pan_caa_dpan _op_blend_pt_pan_caa_dp - -static void -init_blend_pixel_color_pt_funcs_c(void) -{ - op_blend_pt_funcs[SP][SM_N][SC][DP][CPU_C] = _op_blend_pt_p_c_dp; - op_blend_pt_funcs[SP_AS][SM_N][SC][DP][CPU_C] = _op_blend_pt_pas_c_dp; - op_blend_pt_funcs[SP_AN][SM_N][SC][DP][CPU_C] = _op_blend_pt_pan_c_dp; - op_blend_pt_funcs[SP][SM_N][SC_AN][DP][CPU_C] = _op_blend_pt_p_can_dp; - op_blend_pt_funcs[SP_AS][SM_N][SC_AN][DP][CPU_C] = _op_blend_pt_pas_can_dp; - op_blend_pt_funcs[SP_AN][SM_N][SC_AN][DP][CPU_C] = _op_blend_pt_pan_can_dp; - op_blend_pt_funcs[SP][SM_N][SC_AA][DP][CPU_C] = _op_blend_pt_p_caa_dp; - op_blend_pt_funcs[SP_AS][SM_N][SC_AA][DP][CPU_C] = _op_blend_pt_pas_caa_dp; - op_blend_pt_funcs[SP_AN][SM_N][SC_AA][DP][CPU_C] = _op_blend_pt_pan_caa_dp; - - op_blend_pt_funcs[SP][SM_N][SC][DP_AN][CPU_C] = _op_blend_pt_p_c_dpan; - op_blend_pt_funcs[SP_AS][SM_N][SC][DP_AN][CPU_C] = _op_blend_pt_pas_c_dpan; - op_blend_pt_funcs[SP_AN][SM_N][SC][DP_AN][CPU_C] = _op_blend_pt_pan_c_dpan; - op_blend_pt_funcs[SP][SM_N][SC_AN][DP_AN][CPU_C] = _op_blend_pt_p_can_dpan; - op_blend_pt_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_C] = _op_blend_pt_pas_can_dpan; - op_blend_pt_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_C] = _op_blend_pt_pan_can_dpan; - op_blend_pt_funcs[SP][SM_N][SC_AA][DP_AN][CPU_C] = _op_blend_pt_p_caa_dpan; - op_blend_pt_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_C] = _op_blend_pt_pas_caa_dpan; - op_blend_pt_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_C] = _op_blend_pt_pan_caa_dpan; -} -#endif - -/*-----*/ - -/* blend_rel pixel x color -> dst */ - -#ifdef BUILD_C -static void -_op_blend_rel_p_c_dp(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) { - DATA32 *e; - int alpha; - UNROLL8_PLD_WHILE(d, l, e, - { - DATA32 sc = MUL4_SYM(c, *s); - alpha = 256 - (sc >> 24); - *d = MUL_SYM(*d >> 24, sc) + MUL_256(alpha, *d); - d++; - s++; - }); -} - -#define _op_blend_rel_pas_c_dp _op_blend_rel_p_c_dp -#define _op_blend_rel_pan_c_dp _op_blend_rel_p_c_dp -#define _op_blend_rel_p_can_dp _op_blend_rel_p_c_dp -#define _op_blend_rel_pas_can_dp _op_blend_rel_p_c_dp -#define _op_blend_rel_pan_can_dp _op_blend_rel_p_c_dp -#define _op_blend_rel_p_caa_dp _op_blend_rel_p_c_dp -#define _op_blend_rel_pas_caa_dp _op_blend_rel_p_c_dp -#define _op_blend_rel_pan_caa_dp _op_blend_rel_p_c_dp - -#define _op_blend_rel_p_c_dpan _op_blend_p_c_dpan -#define _op_blend_rel_pas_c_dpan _op_blend_pas_c_dpan -#define _op_blend_rel_pan_c_dpan _op_blend_pan_c_dpan -#define _op_blend_rel_p_can_dpan _op_blend_p_can_dpan -#define _op_blend_rel_pas_can_dpan _op_blend_pas_can_dpan -#define _op_blend_rel_pan_can_dpan _op_blend_pan_can_dpan -#define _op_blend_rel_p_caa_dpan _op_blend_p_caa_dpan -#define _op_blend_rel_pas_caa_dpan _op_blend_pas_caa_dpan -#define _op_blend_rel_pan_caa_dpan _op_blend_pan_caa_dpan - -static void -init_blend_rel_pixel_color_span_funcs_c(void) -{ - op_blend_rel_span_funcs[SP][SM_N][SC][DP][CPU_C] = _op_blend_rel_p_c_dp; - op_blend_rel_span_funcs[SP_AS][SM_N][SC][DP][CPU_C] = _op_blend_rel_pas_c_dp; - op_blend_rel_span_funcs[SP_AN][SM_N][SC][DP][CPU_C] = _op_blend_rel_pan_c_dp; - op_blend_rel_span_funcs[SP][SM_N][SC_AN][DP][CPU_C] = _op_blend_rel_p_can_dp; - op_blend_rel_span_funcs[SP_AS][SM_N][SC_AN][DP][CPU_C] = _op_blend_rel_pas_can_dp; - op_blend_rel_span_funcs[SP_AN][SM_N][SC_AN][DP][CPU_C] = _op_blend_rel_pan_can_dp; - op_blend_rel_span_funcs[SP][SM_N][SC_AA][DP][CPU_C] = _op_blend_rel_p_caa_dp; - op_blend_rel_span_funcs[SP_AS][SM_N][SC_AA][DP][CPU_C] = _op_blend_rel_pas_caa_dp; - op_blend_rel_span_funcs[SP_AN][SM_N][SC_AA][DP][CPU_C] = _op_blend_rel_pan_caa_dp; - - op_blend_rel_span_funcs[SP][SM_N][SC][DP_AN][CPU_C] = _op_blend_rel_p_c_dpan; - op_blend_rel_span_funcs[SP_AS][SM_N][SC][DP_AN][CPU_C] = _op_blend_rel_pas_c_dpan; - op_blend_rel_span_funcs[SP_AN][SM_N][SC][DP_AN][CPU_C] = _op_blend_rel_pan_c_dpan; - op_blend_rel_span_funcs[SP][SM_N][SC_AN][DP_AN][CPU_C] = _op_blend_rel_p_can_dpan; - op_blend_rel_span_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_C] = _op_blend_rel_pas_can_dpan; - op_blend_rel_span_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_C] = _op_blend_rel_pan_can_dpan; - op_blend_rel_span_funcs[SP][SM_N][SC_AA][DP_AN][CPU_C] = _op_blend_rel_p_caa_dpan; - op_blend_rel_span_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_C] = _op_blend_rel_pas_caa_dpan; - op_blend_rel_span_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_C] = _op_blend_rel_pan_caa_dpan; -} -#endif - -#ifdef BUILD_C -static void -_op_blend_rel_pt_p_c_dp(DATA32 s, DATA8 m __UNUSED__, DATA32 c, DATA32 *d) { - s = MUL4_SYM(c, s); - c = 256 - (s >> 24); - *d = MUL_SYM(*d >> 24, s) + MUL_256(c, *d); -} - -#define _op_blend_rel_pt_pas_c_dp _op_blend_rel_pt_p_c_dp -#define _op_blend_rel_pt_pan_c_dp _op_blend_rel_pt_p_c_dp -#define _op_blend_rel_pt_p_can_dp _op_blend_rel_pt_p_c_dp -#define _op_blend_rel_pt_pas_can_dp _op_blend_rel_pt_p_c_dp -#define _op_blend_rel_pt_pan_can_dp _op_blend_rel_pt_p_c_dp -#define _op_blend_rel_pt_p_caa_dp _op_blend_rel_pt_p_c_dp -#define _op_blend_rel_pt_pas_caa_dp _op_blend_rel_pt_p_c_dp -#define _op_blend_rel_pt_pan_caa_dp _op_blend_rel_pt_p_c_dp - -#define _op_blend_rel_pt_p_c_dpan _op_blend_pt_p_c_dpan -#define _op_blend_rel_pt_pas_c_dpan _op_blend_pt_pas_c_dpan -#define _op_blend_rel_pt_pan_c_dpan _op_blend_pt_pan_c_dpan -#define _op_blend_rel_pt_p_can_dpan _op_blend_pt_p_can_dpan -#define _op_blend_rel_pt_pas_can_dpan _op_blend_pt_pas_can_dpan -#define _op_blend_rel_pt_pan_can_dpan _op_blend_pt_pan_can_dpan -#define _op_blend_rel_pt_p_caa_dpan _op_blend_pt_p_caa_dpan -#define _op_blend_rel_pt_pas_caa_dpan _op_blend_pt_pas_caa_dpan -#define _op_blend_rel_pt_pan_caa_dpan _op_blend_pt_pan_caa_dpan - -static void -init_blend_rel_pixel_color_pt_funcs_c(void) -{ - op_blend_rel_pt_funcs[SP][SM_N][SC][DP][CPU_C] = _op_blend_rel_pt_p_c_dp; - op_blend_rel_pt_funcs[SP_AS][SM_N][SC][DP][CPU_C] = _op_blend_rel_pt_pas_c_dp; - op_blend_rel_pt_funcs[SP_AN][SM_N][SC][DP][CPU_C] = _op_blend_rel_pt_pan_c_dp; - op_blend_rel_pt_funcs[SP][SM_N][SC_AN][DP][CPU_C] = _op_blend_rel_pt_p_can_dp; - op_blend_rel_pt_funcs[SP_AS][SM_N][SC_AN][DP][CPU_C] = _op_blend_rel_pt_pas_can_dp; - op_blend_rel_pt_funcs[SP_AN][SM_N][SC_AN][DP][CPU_C] = _op_blend_rel_pt_pan_can_dp; - op_blend_rel_pt_funcs[SP][SM_N][SC_AA][DP][CPU_C] = _op_blend_rel_pt_p_caa_dp; - op_blend_rel_pt_funcs[SP_AS][SM_N][SC_AA][DP][CPU_C] = _op_blend_rel_pt_pas_caa_dp; - op_blend_rel_pt_funcs[SP_AN][SM_N][SC_AA][DP][CPU_C] = _op_blend_rel_pt_pan_caa_dp; - - op_blend_rel_pt_funcs[SP][SM_N][SC][DP_AN][CPU_C] = _op_blend_rel_pt_p_c_dpan; - op_blend_rel_pt_funcs[SP_AS][SM_N][SC][DP_AN][CPU_C] = _op_blend_rel_pt_pas_c_dpan; - op_blend_rel_pt_funcs[SP_AN][SM_N][SC][DP_AN][CPU_C] = _op_blend_rel_pt_pan_c_dpan; - op_blend_rel_pt_funcs[SP][SM_N][SC_AN][DP_AN][CPU_C] = _op_blend_rel_pt_p_can_dpan; - op_blend_rel_pt_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_C] = _op_blend_rel_pt_pas_can_dpan; - op_blend_rel_pt_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_C] = _op_blend_rel_pt_pan_can_dpan; - op_blend_rel_pt_funcs[SP][SM_N][SC_AA][DP_AN][CPU_C] = _op_blend_rel_pt_p_caa_dpan; - op_blend_rel_pt_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_C] = _op_blend_rel_pt_pas_caa_dpan; - op_blend_rel_pt_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_C] = _op_blend_rel_pt_pan_caa_dpan; -} -#endif diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_color_i386.c b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_color_i386.c deleted file mode 100644 index 52751f4..0000000 --- a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_color_i386.c +++ /dev/null @@ -1,221 +0,0 @@ -/* blend pixel x color --> dst */ - -#ifdef BUILD_MMX -static void -_op_blend_p_c_dp_mmx(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) { - DATA32 *e = d + l; - MOV_A2R(ALPHA_256, mm6) - MOV_A2R(ALPHA_255, mm5) - pxor_r2r(mm0, mm0); - MOV_P2R(c, mm2, mm0) - while (d < e) { - MOV_P2R(*s, mm3, mm0) - MUL4_SYM_R2R(mm2, mm3, mm5) - - MOV_RA2R(mm3, mm1) - movq_r2r(mm6, mm4); - psubw_r2r(mm1, mm4); - - MOV_P2R(*d, mm1, mm0) - MUL4_256_R2R(mm4, mm1) - - paddw_r2r(mm3, mm1); - MOV_R2P(mm1, *d, mm0) - s++; d++; - } -} - -static void -_op_blend_pan_can_dp_mmx(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) { - DATA32 *e = d + l; - pxor_r2r(mm0, mm0); - MOV_P2R(c, mm2, mm0) - MOV_A2R(ALPHA_255, mm5) - while (d < e) { - MOV_P2R(*s, mm1, mm0) - MUL4_SYM_R2R(mm2, mm1, mm5) - MOV_R2P(mm1, *d, mm0) - s++; d++; - } -} - -static void -_op_blend_pan_caa_dp_mmx(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) { - DATA32 *e = d + l; - c = 1 + (c & 0xff); - MOV_A2R(c, mm2) - MOV_A2R(ALPHA_255, mm5) - pxor_r2r(mm0, mm0); - while (d < e) { - MOV_P2R(*s, mm3, mm0) - MOV_P2R(*d, mm1, mm0) - INTERP_256_R2R(mm2, mm3, mm1, mm5) - MOV_R2P(mm1, *d, mm0) - s++; d++; - } -} - -#define _op_blend_pas_c_dp_mmx _op_blend_p_c_dp_mmx -#define _op_blend_pan_c_dp_mmx _op_blend_p_c_dp_mmx -#define _op_blend_p_can_dp_mmx _op_blend_p_c_dp_mmx -#define _op_blend_pas_can_dp_mmx _op_blend_p_c_dp_mmx -#define _op_blend_p_caa_dp_mmx _op_blend_p_c_dp_mmx -#define _op_blend_pas_caa_dp_mmx _op_blend_p_c_dp_mmx - -#define _op_blend_p_c_dpan_mmx _op_blend_p_c_dp_mmx -#define _op_blend_pas_c_dpan_mmx _op_blend_pas_c_dp_mmx -#define _op_blend_pan_c_dpan_mmx _op_blend_pan_c_dp_mmx -#define _op_blend_p_can_dpan_mmx _op_blend_p_can_dp_mmx -#define _op_blend_pas_can_dpan_mmx _op_blend_pas_can_dp_mmx -#define _op_blend_pan_can_dpan_mmx _op_blend_pan_can_dp_mmx -#define _op_blend_p_caa_dpan_mmx _op_blend_p_caa_dp_mmx -#define _op_blend_pas_caa_dpan_mmx _op_blend_pas_caa_dp_mmx -#define _op_blend_pan_caa_dpan_mmx _op_blend_pan_caa_dp_mmx - - -static void -init_blend_pixel_color_span_funcs_mmx(void) -{ - op_blend_span_funcs[SP][SM_N][SC][DP][CPU_MMX] = _op_blend_p_c_dp_mmx; - op_blend_span_funcs[SP_AS][SM_N][SC][DP][CPU_MMX] = _op_blend_pas_c_dp_mmx; - op_blend_span_funcs[SP_AN][SM_N][SC][DP][CPU_MMX] = _op_blend_pan_c_dp_mmx; - op_blend_span_funcs[SP][SM_N][SC_AN][DP][CPU_MMX] = _op_blend_p_can_dp_mmx; - op_blend_span_funcs[SP_AS][SM_N][SC_AN][DP][CPU_MMX] = _op_blend_pas_can_dp_mmx; - op_blend_span_funcs[SP_AN][SM_N][SC_AN][DP][CPU_MMX] = _op_blend_pan_can_dp_mmx; - op_blend_span_funcs[SP][SM_N][SC_AA][DP][CPU_MMX] = _op_blend_p_caa_dp_mmx; - op_blend_span_funcs[SP_AS][SM_N][SC_AA][DP][CPU_MMX] = _op_blend_pas_caa_dp_mmx; - op_blend_span_funcs[SP_AN][SM_N][SC_AA][DP][CPU_MMX] = _op_blend_pan_caa_dp_mmx; - - op_blend_span_funcs[SP][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_p_c_dpan_mmx; - op_blend_span_funcs[SP_AS][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_pas_c_dpan_mmx; - op_blend_span_funcs[SP_AN][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_pan_c_dpan_mmx; - op_blend_span_funcs[SP][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_blend_p_can_dpan_mmx; - op_blend_span_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_blend_pas_can_dpan_mmx; - op_blend_span_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_blend_pan_can_dpan_mmx; - op_blend_span_funcs[SP][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_p_caa_dpan_mmx; - op_blend_span_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_pas_caa_dpan_mmx; - op_blend_span_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_pan_caa_dpan_mmx; -} -#endif - -#ifdef BUILD_MMX -static void -_op_blend_pt_p_c_dp_mmx(DATA32 s, DATA8 m __UNUSED__, DATA32 c, DATA32 *d) { - MOV_A2R(ALPHA_256, mm4) - MOV_A2R(ALPHA_255, mm5) - pxor_r2r(mm0, mm0); - MOV_P2R(c, mm2, mm0) - MOV_P2R(s, mm3, mm0) - MUL4_SYM_R2R(mm2, mm3, mm5) - - MOV_RA2R(mm3, mm1) - psubw_r2r(mm1, mm4); - - MOV_P2R(*d, mm1, mm0) - MUL4_256_R2R(mm4, mm1) - - paddw_r2r(mm3, mm1); - MOV_R2P(mm1, *d, mm0) -} - -#define _op_blend_pt_pas_c_dp_mmx _op_blend_pt_p_c_dp_mmx -#define _op_blend_pt_pan_c_dp_mmx _op_blend_pt_p_c_dp_mmx -#define _op_blend_pt_p_can_dp_mmx _op_blend_pt_p_c_dp_mmx -#define _op_blend_pt_pas_can_dp_mmx _op_blend_pt_p_c_dp_mmx -#define _op_blend_pt_pan_can_dp_mmx _op_blend_pt_p_c_dp_mmx -#define _op_blend_pt_p_caa_dp_mmx _op_blend_pt_p_c_dp_mmx -#define _op_blend_pt_pas_caa_dp_mmx _op_blend_pt_p_c_dp_mmx -#define _op_blend_pt_pan_caa_dp_mmx _op_blend_pt_p_c_dp_mmx - -#define _op_blend_pt_p_c_dpan_mmx _op_blend_pt_p_c_dp_mmx -#define _op_blend_pt_pas_c_dpan_mmx _op_blend_pt_p_c_dp_mmx -#define _op_blend_pt_pan_c_dpan_mmx _op_blend_pt_p_c_dp_mmx -#define _op_blend_pt_p_can_dpan_mmx _op_blend_pt_p_c_dp_mmx -#define _op_blend_pt_pas_can_dpan_mmx _op_blend_pt_p_c_dp_mmx -#define _op_blend_pt_pan_can_dpan_mmx _op_blend_pt_p_c_dp_mmx -#define _op_blend_pt_p_caa_dpan_mmx _op_blend_pt_p_c_dp_mmx -#define _op_blend_pt_pas_caa_dpan_mmx _op_blend_pt_p_c_dp_mmx -#define _op_blend_pt_pan_caa_dpan_mmx _op_blend_pt_p_c_dp_mmx - -static void -init_blend_pixel_color_pt_funcs_mmx(void) -{ - op_blend_pt_funcs[SP][SM_N][SC][DP][CPU_MMX] = _op_blend_pt_p_c_dp_mmx; - op_blend_pt_funcs[SP_AS][SM_N][SC][DP][CPU_MMX] = _op_blend_pt_pas_c_dp_mmx; - op_blend_pt_funcs[SP_AN][SM_N][SC][DP][CPU_MMX] = _op_blend_pt_pan_c_dp_mmx; - op_blend_pt_funcs[SP][SM_N][SC_AN][DP][CPU_MMX] = _op_blend_pt_p_can_dp_mmx; - op_blend_pt_funcs[SP_AS][SM_N][SC_AN][DP][CPU_MMX] = _op_blend_pt_pas_can_dp_mmx; - op_blend_pt_funcs[SP_AN][SM_N][SC_AN][DP][CPU_MMX] = _op_blend_pt_pan_can_dp_mmx; - op_blend_pt_funcs[SP][SM_N][SC_AA][DP][CPU_MMX] = _op_blend_pt_p_caa_dp_mmx; - op_blend_pt_funcs[SP_AS][SM_N][SC_AA][DP][CPU_MMX] = _op_blend_pt_pas_caa_dp_mmx; - op_blend_pt_funcs[SP_AN][SM_N][SC_AA][DP][CPU_MMX] = _op_blend_pt_pan_caa_dp_mmx; - - op_blend_pt_funcs[SP][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_pt_p_c_dpan_mmx; - op_blend_pt_funcs[SP_AS][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_pt_pas_c_dpan_mmx; - op_blend_pt_funcs[SP_AN][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_pt_pan_c_dpan_mmx; - op_blend_pt_funcs[SP][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_blend_pt_p_can_dpan_mmx; - op_blend_pt_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_blend_pt_pas_can_dpan_mmx; - op_blend_pt_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_blend_pt_pan_can_dpan_mmx; - op_blend_pt_funcs[SP][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_pt_p_caa_dpan_mmx; - op_blend_pt_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_pt_pas_caa_dpan_mmx; - op_blend_pt_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_pt_pan_caa_dpan_mmx; -} -#endif - -/*-----*/ - -/* blend_rel pixel x color -> dst */ - -#ifdef BUILD_MMX - -#define _op_blend_rel_p_c_dpan_mmx _op_blend_p_c_dpan_mmx -#define _op_blend_rel_pas_c_dpan_mmx _op_blend_pas_c_dpan_mmx -#define _op_blend_rel_pan_c_dpan_mmx _op_blend_pan_c_dpan_mmx -#define _op_blend_rel_p_can_dpan_mmx _op_blend_p_can_dpan_mmx -#define _op_blend_rel_pas_can_dpan_mmx _op_blend_pas_can_dpan_mmx -#define _op_blend_rel_pan_can_dpan_mmx _op_blend_pan_can_dpan_mmx -#define _op_blend_rel_p_caa_dpan_mmx _op_blend_p_caa_dpan_mmx -#define _op_blend_rel_pas_caa_dpan_mmx _op_blend_pas_caa_dpan_mmx -#define _op_blend_rel_pan_caa_dpan_mmx _op_blend_pan_caa_dpan_mmx - -static void -init_blend_rel_pixel_color_span_funcs_mmx(void) -{ - op_blend_rel_span_funcs[SP][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_rel_p_c_dpan_mmx; - op_blend_rel_span_funcs[SP_AS][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_rel_pas_c_dpan_mmx; - op_blend_rel_span_funcs[SP_AN][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_rel_pan_c_dpan_mmx; - op_blend_rel_span_funcs[SP][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_blend_rel_p_can_dpan_mmx; - op_blend_rel_span_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_blend_rel_pas_can_dpan_mmx; - op_blend_rel_span_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_blend_rel_pan_can_dpan_mmx; - op_blend_rel_span_funcs[SP][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_rel_p_caa_dpan_mmx; - op_blend_rel_span_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_rel_pas_caa_dpan_mmx; - op_blend_rel_span_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_rel_pan_caa_dpan_mmx; -} -#endif - -#ifdef BUILD_MMX - -#define _op_blend_rel_pt_p_c_dpan_mmx _op_blend_pt_p_c_dpan_mmx -#define _op_blend_rel_pt_pas_c_dpan_mmx _op_blend_pt_pas_c_dpan_mmx -#define _op_blend_rel_pt_pan_c_dpan_mmx _op_blend_pt_pan_c_dpan_mmx -#define _op_blend_rel_pt_p_can_dpan_mmx _op_blend_pt_p_can_dpan_mmx -#define _op_blend_rel_pt_pas_can_dpan_mmx _op_blend_pt_pas_can_dpan_mmx -#define _op_blend_rel_pt_pan_can_dpan_mmx _op_blend_pt_pan_can_dpan_mmx -#define _op_blend_rel_pt_p_caa_dpan_mmx _op_blend_pt_p_caa_dpan_mmx -#define _op_blend_rel_pt_pas_caa_dpan_mmx _op_blend_pt_pas_caa_dpan_mmx -#define _op_blend_rel_pt_pan_caa_dpan_mmx _op_blend_pt_pan_caa_dpan_mmx - -static void -init_blend_rel_pixel_color_pt_funcs_mmx(void) -{ - op_blend_rel_pt_funcs[SP][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_rel_pt_p_c_dpan_mmx; - op_blend_rel_pt_funcs[SP_AS][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_rel_pt_pas_c_dpan_mmx; - op_blend_rel_pt_funcs[SP_AN][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_rel_pt_pan_c_dpan_mmx; - op_blend_rel_pt_funcs[SP][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_blend_rel_pt_p_can_dpan_mmx; - op_blend_rel_pt_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_blend_rel_pt_pas_can_dpan_mmx; - op_blend_rel_pt_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_blend_rel_pt_pan_can_dpan_mmx; - op_blend_rel_pt_funcs[SP][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_rel_pt_p_caa_dpan_mmx; - op_blend_rel_pt_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_rel_pt_pas_caa_dpan_mmx; - op_blend_rel_pt_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_rel_pt_pan_caa_dpan_mmx; -} -#endif diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_color_neon.c b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_color_neon.c deleted file mode 100644 index 6e35970..0000000 --- a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_color_neon.c +++ /dev/null @@ -1,570 +0,0 @@ -/* blend pixel x color --> dst */ -#ifdef BUILD_NEON -/* Note: Optimisation is based on keeping _dest_ aligned: else it's a pair of - * reads, then two writes, a miss on read is 'just' two reads */ -static void -_op_blend_p_c_dp_neon(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) { -#define AP "blend_p_c_dp_" - asm volatile ( - ".fpu neon \n\t" - // Load 'c' - "vdup.u32 q7, %[c] \n\t" - "vmov.i8 q6, #1 \n\t" - - // Choose a loop - "andS %[tmp], %[d], $0xf \n\t" - "beq "AP"quadstart \n\t" - - "andS %[tmp],%[d], $0x4 \n\t" - "beq "AP"dualloop \n\t" - - AP"singleloop:" - "vld1.32 d0[0], [%[s]]! \n\t" - "vld1.32 d2[0], [%[d]] \n\t" - // Mulitply s * c (= sc) - "vmull.u8 q4, d0,d14 \n\t" - // sc in d8 - "vqrshrn.u16 d4, q4, #8 \n\t" - - // sca in d9 - "vmvn.u32 d6, d4 \n\t" - "vshr.u32 d6, d6, #24 \n\t" - - "vmul.u32 d6, d12, d6 \n\t" - - /* d * alpha */ - "vmull.u8 q4, d6, d2 \n\t" - "vqrshrn.u16 d0, q4, #8 \n\t" - - "vqadd.u8 d2, d0, d4 \n\t" - - // Save dsc + sc - "vst1.32 d2[0], [%[d]]! \n\t" - - // Now where? - // Can we go the fast path? - "andS %[tmp], %[d],$0xf \n\t" - "beq "AP"quadstart \n\t" - - AP"dualloop: \n\t" - // Check we have enough to bother with! - "sub %[tmp], %[e], %[d] \n\t" - "cmp %[tmp], #16 \n\t" - "blt "AP"loopout \n\t" - - // load 's' -> q0, 'd' -> q1 - "vldm %[s]!, {d0} \n\t" - "vldm %[d], {d2} \n\t" - // Mulitply s * c (= sc) - "vmull.u8 q4, d0,d14 \n\t" - // sc in d8 - "vqrshrn.u16 d4, q4, #8 \n\t" - - // sca in d9 - "vmvn.u32 d6, d4 \n\t" - "vshr.u32 d6, d6, #24 \n\t" - - "vmul.u32 d6, d12, d6 \n\t" - - /* d * alpha */ - "vmull.u8 q4, d6, d2 \n\t" - "vqrshrn.u16 d0, q4, #8 \n\t" - - "vqadd.u8 d2, d0, d4 \n\t" - - // Save dsc + sc - "vst1.32 d2, [%[d]]! \n\t" - - AP"quadstart: \n\t" - "sub %[tmp], %[e], %[d] \n\t" - "cmp %[tmp], #16 \n\t" - "blt "AP"loopout \n\t" - - "sub %[tmp], %[e], #15 \n\t" - - AP"quadloop:\n\t" - // load 's' -> q0, 'd' -> q1 - "vldm %[s]!, {d0,d1} \n\t" - "vldm %[d], {d2,d3} \n\t" - // Mulitply s * c (= sc) - "vmull.u8 q4, d0,d14 \n\t" - "vmull.u8 q5, d1,d14 \n\t" - - // Get sc & sc alpha - "vqrshrn.u16 d4, q4, #8 \n\t" - "vqrshrn.u16 d5, q5, #8 \n\t" - // sc is now in q2, 8bpp - // Shift out, then spread alpha for q2 - "vmvn.u32 q3, q2 \n\t" - "vshr.u32 q3, q3, $0x18 \n\t" - "vmul.u32 q3, q6,q3 \n\t" - - // Multiply 'd' by sc.alpha (dsca) - "vmull.u8 q4, d6,d2 \n\t" - "vmull.u8 q5, d7,d3 \n\t" - - "vqrshrn.u16 d0, q4, #8 \n\t" - "vqrshrn.u16 d1, q5, #8 \n\t" - - "vqadd.u8 q1, q0, q2 \n\t" - - // Save dsc + sc - "vstm %[d]!, {d2,d3} \n\t" - - "cmp %[tmp], %[d] \n\t" - - "bhi "AP"quadloop \n\t" - - /* Trailing stuff */ - AP"loopout: \n\t" - - "cmp %[d], %[e] \n\t" - "beq "AP"done\n\t" - "sub %[tmp],%[e], %[d] \n\t" - "cmp %[tmp],$0x04 \n\t" - "beq "AP"singleloop2 \n\t" - - "sub %[tmp], %[e], #7 \n\t" - /* Dual loop */ - AP"dualloop2: \n\t" - "vldm %[s]!, {d0} \n\t" - "vldm %[d], {d2} \n\t" - // Mulitply s * c (= sc) - "vmull.u8 q4, d0,d14 \n\t" - // sc in d8 - "vqrshrn.u16 d4, q4, #8 \n\t" - - // sca in d9 - // XXX: I can probably squash one of these 3 - "vmvn.u32 d6, d4 \n\t" - "vshr.u32 d6, d6, #24 \n\t" - "vmul.u32 d6, d6, d12 \n\t" - - /* d * alpha */ - "vmull.u8 q4, d6, d2 \n\t" - "vqrshrn.u16 d0, q4, #8 \n\t" - - "vqadd.u8 d2, d0, d4 \n\t" - - // Save dsc + sc - "vstm %[d]!, {d2} \n\t" - - "cmp %[tmp], %[d] \n\t" - "bhi "AP"dualloop2 \n\t" - - "cmp %[d], %[e] \n\t" - "beq "AP"done \n\t" - - AP"singleloop2: \n\t" - "vld1.32 d0[0], [%[s]]! \n\t" - "vld1.32 d2[0], [%[d]] \n\t" - // Mulitply s * c (= sc) - "vmull.u8 q4, d0,d14 \n\t" - // sc in d8 - "vqrshrn.u16 d4, q4, #8 \n\t" - - // sca in d6 - "vmvn.u32 d6, d4 \n\t" - "vshr.u32 d6, d6, #24 \n\t" - "vmul.u32 d6, d12,d6 \n\t" - - /* d * alpha */ - "vmull.u8 q4, d6, d2 \n\t" - "vqrshrn.u16 d0, q4, #8 \n\t" - - "vqadd.u8 d2, d0, d4 \n\t" - - // Save dsc + sc - "vst1.32 d2[0], [%[d]]! \n\t" - - - AP"done:" - : // No output - // - : [s] "r" (s), [e] "r" (d + l), [d] "r" (d), [c] "r" (c), - [tmp] "r" (12) - : "q0","q1","q2","q3","q4","q5","q6","q7","memory" - ); -#undef AP -} - -static void -_op_blend_pan_can_dp_neon(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) { - DATA32 *e; - UNROLL8_PLD_WHILE(d, l, e, - { - *d++ = 0xff000000 + MUL3_SYM(c, *s); - s++; - }); -} - -static void -_op_blend_pan_caa_dp_neon(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) { -#if 1 - DATA32 *e; - int alpha; - c = 1 + (c & 0xff); - UNROLL8_PLD_WHILE(d, l, e, - { - DATA32 sc = MUL_256(c, *s); - alpha = 256 - (sc >> 24); - *d = sc + MUL_256(alpha, *d); - d++; - s++; - }); -#else // the below neon is buggy!! misses rendering of spans, i think with alignment. quick - just disable this. -#define AP "_op_blend_pan_caa_dp_" - DATA32 *e = d + l, *tmp = (void*)73; - asm volatile ( - ".fpu neon \n\t" - /* Set up 'c' */ - "vdup.u8 d14, %[c] \n\t" - "vmov.i8 d15, #1 \n\t" - "vaddl.u8 q15, d14, d15 \n\t" - "vshr.u8 q15,#1 \n\t" - - // Pick a loop - "andS %[tmp], %[d], $0xf \n\t" - "beq "AP"quadstart \n\t" - - "andS %[tmp], %[d], $0x4 \n\t" - "beq "AP"dualstart \n\t" - - AP"singleloop: \n\t" - "vld1.32 d4[0], [%[d]] \n\t" - "vld1.32 d0[0], [%[s]]! \n\t" - - // Long version of 'd' - "vmovl.u8 q8, d4 \n\t" - - // Long version of 's' - "vmovl.u8 q6, d0 \n\t" - - // d8 = s -d - "vsub.s16 d8, d12, d16 \n\t" - - // Multiply - "vmul.s16 d8, d8, d30 \n\t" - - // Shift down - "vshr.s16 d8, #7 \n\t" - - // Add 'd' - "vqadd.s16 d8, d8, d16 \n\t" - - // Shrink to save - "vqmovun.s16 d0, q4 \n\t" - "vst1.32 d0[0], [%[d]]! \n\t" - - // Now where? - "andS %[tmp], %[d], $0xf \n\t" - "beq "AP"quadstart \n\t" - - AP"dualstart: \n\t" - // Check we have enough - "sub %[tmp], %[e], %[d] \n\t" - "cmp %[tmp], #16 \n\t" - "blt "AP"loopout \n\t" - - AP"dualloop:" - "vldm %[d], {d4} \n\t" - "vldm %[s]!, {d0} \n\t" - - // Long version of d - "vmovl.u8 q8, d4 \n\t" - - // Long version of s - "vmovl.u8 q6, d0 \n\t" - - // q4/q5 = s-d - "vsub.s16 q4, q6, q8 \n\t" - - // Multiply - "vmul.s16 q4, q4,q15 \n\t" - - // Shift down - "vshr.s16 q4, #7 \n\t" - - // Add d - "vqadd.s16 q4, q4, q8 \n\t" - - // Shrink to save - "vqmovun.s16 d0, q4 \n\t" - - "vstm %[d]!, {d0} \n\t" - AP"quadstart: \n\t" - "sub %[tmp], %[e], %[d] \n\t" - "cmp %[tmp], #16 \n\t" - "blt "AP"loopout \n\t" - - "sub %[tmp], %[e], #15 \n\t" - - AP"quadloop: \n\t" - // load 's' -> q0, 'd' -> q2 - "vldm %[d], {d4,d5} \n\t" - "vldm %[s]!, {d0,d1} \n\t" - - // Long version of d - "vmovl.u8 q8, d4 \n\t" - "vmovl.u8 q9, d5 \n\t" - - // Long version of s - "vmovl.u8 q6, d0 \n\t" - "vmovl.u8 q7, d1 \n\t" - - // q4/q5 = s-d - "vsub.s16 q4, q6, q8 \n\t" - "vsub.s16 q5, q7, q9 \n\t" - - // Multiply - "vmul.s16 q4, q4,q15 \n\t" - "vmul.s16 q5, q5,q15 \n\t" - - // Shift down - "vshr.s16 q4, #7 \n\t" - "vshr.s16 q5, #7 \n\t" - - // Add d - "vqadd.s16 q4, q4, q8 \n\t" - "vqadd.s16 q5, q5, q9 \n\t" - - // Shrink to save - "vqmovun.s16 d0, q4 \n\t" - "vqmovun.s16 d1, q5 \n\t" - "vstm %[d]!, {d0,d1} \n\t" - "cmp %[tmp], %[d] \n\t" - - "bhi "AP"quadloop\n\t" - - - "b "AP"done\n\t" - AP"loopout: \n\t" - "cmp %[d], %[e] \n\t" - "beq "AP"done\n\t" - "sub %[tmp],%[e], %[d] \n\t" - "cmp %[tmp],$0x04 \n\t" - "beq "AP"singleloop2 \n\t" - - AP"dualloop2: \n\t" - "vldm %[d], {d4} \n\t" - "vldm %[s]!, {d0} \n\t" - - // Long version of d - "vmovl.u8 q8, d4 \n\t" - - // Long version of s - "vmovl.u8 q6, d0 \n\t" - - // q4/q5 = s-d - "vsub.s16 q4, q6, q8 \n\t" - - // Multiply - "vmul.s16 q4, q4,q15 \n\t" - - // Shift down - "vshr.s16 q4, #7 \n\t" - - // Add d - "vqadd.s16 q4, q4, q8 \n\t" - - // Shrink to save - "vqmovun.s16 d0, q4 \n\t" - - "vstm %[d]!, {d0} \n\t" - - "cmp %[d], %[e] \n\t" - "beq "AP"done \n\t" - - AP"singleloop2: \n\t" - "vld1.32 d4[0], [%[d]] \n\t" - "vld1.32 d0[0], [%[s]]! \n\t" - - // Long version of 'd' - "vmovl.u8 q8, d4 \n\t" - - // Long version of 's' - "vmovl.u8 q6, d0 \n\t" - - // d8 = s -d - "vsub.s16 d8, d12, d16 \n\t" - - // Multiply - "vmul.s16 d8, d8, d30 \n\t" - - // Shift down - "vshr.s16 d8, #7 \n\t" - - // Add 'd' - "vqadd.s16 d8, d8, d16 \n\t" - - // Shrink to save - "vqmovun.s16 d0, q4 \n\t" - - "vst1.32 d0[0], [%[d]] \n\t" - - - AP"done: \n\t" - - // No output - : - // Input - : [s] "r" (s), [d] "r" (d), [e] "r" (e), [c] "r" (c), [tmp] "r" (tmp) - // Clobbered - : "q0", "q1", "q2", "q3", "q4", "q5", "q6", "q7", "q8", "q9", "memory" - ); -#undef AP -#endif -} - -#define _op_blend_pas_c_dp_neon _op_blend_p_c_dp_neon -#define _op_blend_pan_c_dp_neon _op_blend_p_c_dp_neon -#define _op_blend_p_can_dp_neon _op_blend_p_c_dp_neon -#define _op_blend_pas_can_dp_neon _op_blend_p_c_dp_neon -#define _op_blend_p_caa_dp_neon _op_blend_p_c_dp_neon -#define _op_blend_pas_caa_dp_neon _op_blend_p_c_dp_neon - -#define _op_blend_p_c_dpan_neon _op_blend_p_c_dp_neon -#define _op_blend_pas_c_dpan_neon _op_blend_pas_c_dp_neon -#define _op_blend_pan_c_dpan_neon _op_blend_pan_c_dp_neon -#define _op_blend_p_can_dpan_neon _op_blend_p_can_dp_neon -#define _op_blend_pas_can_dpan_neon _op_blend_pas_can_dp_neon -#define _op_blend_pan_can_dpan_neon _op_blend_pan_can_dp_neon -#define _op_blend_p_caa_dpan_neon _op_blend_p_caa_dp_neon -#define _op_blend_pas_caa_dpan_neon _op_blend_pas_caa_dp_neon -#define _op_blend_pan_caa_dpan_neon _op_blend_pan_caa_dp_neon - - -static void -init_blend_pixel_color_span_funcs_neon(void) -{ - op_blend_span_funcs[SP][SM_N][SC][DP][CPU_NEON] = _op_blend_p_c_dp_neon; - op_blend_span_funcs[SP_AS][SM_N][SC][DP][CPU_NEON] = _op_blend_pas_c_dp_neon; - op_blend_span_funcs[SP_AN][SM_N][SC][DP][CPU_NEON] = _op_blend_pan_c_dp_neon; - op_blend_span_funcs[SP][SM_N][SC_AN][DP][CPU_NEON] = _op_blend_p_can_dp_neon; - op_blend_span_funcs[SP_AS][SM_N][SC_AN][DP][CPU_NEON] = _op_blend_pas_can_dp_neon; - op_blend_span_funcs[SP_AN][SM_N][SC_AN][DP][CPU_NEON] = _op_blend_pan_can_dp_neon; - op_blend_span_funcs[SP][SM_N][SC_AA][DP][CPU_NEON] = _op_blend_p_caa_dp_neon; - op_blend_span_funcs[SP_AS][SM_N][SC_AA][DP][CPU_NEON] = _op_blend_pas_caa_dp_neon; - op_blend_span_funcs[SP_AN][SM_N][SC_AA][DP][CPU_NEON] = _op_blend_pan_caa_dp_neon; - - op_blend_span_funcs[SP][SM_N][SC][DP_AN][CPU_NEON] = _op_blend_p_c_dpan_neon; - op_blend_span_funcs[SP_AS][SM_N][SC][DP_AN][CPU_NEON] = _op_blend_pas_c_dpan_neon; - op_blend_span_funcs[SP_AN][SM_N][SC][DP_AN][CPU_NEON] = _op_blend_pan_c_dpan_neon; - op_blend_span_funcs[SP][SM_N][SC_AN][DP_AN][CPU_NEON] = _op_blend_p_can_dpan_neon; - op_blend_span_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_NEON] = _op_blend_pas_can_dpan_neon; - op_blend_span_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_NEON] = _op_blend_pan_can_dpan_neon; - op_blend_span_funcs[SP][SM_N][SC_AA][DP_AN][CPU_NEON] = _op_blend_p_caa_dpan_neon; - op_blend_span_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_NEON] = _op_blend_pas_caa_dpan_neon; - op_blend_span_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_NEON] = _op_blend_pan_caa_dpan_neon; -} -#endif - -#ifdef BUILD_NEON -static void -_op_blend_pt_p_c_dp_neon(DATA32 s, DATA8 m __UNUSED__, DATA32 c, DATA32 *d) { - s = MUL4_SYM(c, s); - c = 256 - (s >> 24); - *d = s + MUL_256(c, *d); -} - -#define _op_blend_pt_pas_c_dp_neon _op_blend_pt_p_c_dp_neon -#define _op_blend_pt_pan_c_dp_neon _op_blend_pt_p_c_dp_neon -#define _op_blend_pt_p_can_dp_neon _op_blend_pt_p_c_dp_neon -#define _op_blend_pt_pas_can_dp_neon _op_blend_pt_p_c_dp_neon -#define _op_blend_pt_pan_can_dp_neon _op_blend_pt_p_c_dp_neon -#define _op_blend_pt_p_caa_dp_neon _op_blend_pt_p_c_dp_neon -#define _op_blend_pt_pas_caa_dp_neon _op_blend_pt_p_c_dp_neon -#define _op_blend_pt_pan_caa_dp_neon _op_blend_pt_p_c_dp_neon - -#define _op_blend_pt_p_c_dpan_neon _op_blend_pt_p_c_dp_neon -#define _op_blend_pt_pas_c_dpan_neon _op_blend_pt_p_c_dp_neon -#define _op_blend_pt_pan_c_dpan_neon _op_blend_pt_p_c_dp_neon -#define _op_blend_pt_p_can_dpan_neon _op_blend_pt_p_c_dp_neon -#define _op_blend_pt_pas_can_dpan_neon _op_blend_pt_p_c_dp_neon -#define _op_blend_pt_pan_can_dpan_neon _op_blend_pt_p_c_dp_neon -#define _op_blend_pt_p_caa_dpan_neon _op_blend_pt_p_c_dp_neon -#define _op_blend_pt_pas_caa_dpan_neon _op_blend_pt_p_c_dp_neon -#define _op_blend_pt_pan_caa_dpan_neon _op_blend_pt_p_c_dp_neon - -static void -init_blend_pixel_color_pt_funcs_neon(void) -{ - op_blend_pt_funcs[SP][SM_N][SC][DP][CPU_NEON] = _op_blend_pt_p_c_dp_neon; - op_blend_pt_funcs[SP_AS][SM_N][SC][DP][CPU_NEON] = _op_blend_pt_pas_c_dp_neon; - op_blend_pt_funcs[SP_AN][SM_N][SC][DP][CPU_NEON] = _op_blend_pt_pan_c_dp_neon; - op_blend_pt_funcs[SP][SM_N][SC_AN][DP][CPU_NEON] = _op_blend_pt_p_can_dp_neon; - op_blend_pt_funcs[SP_AS][SM_N][SC_AN][DP][CPU_NEON] = _op_blend_pt_pas_can_dp_neon; - op_blend_pt_funcs[SP_AN][SM_N][SC_AN][DP][CPU_NEON] = _op_blend_pt_pan_can_dp_neon; - op_blend_pt_funcs[SP][SM_N][SC_AA][DP][CPU_NEON] = _op_blend_pt_p_caa_dp_neon; - op_blend_pt_funcs[SP_AS][SM_N][SC_AA][DP][CPU_NEON] = _op_blend_pt_pas_caa_dp_neon; - op_blend_pt_funcs[SP_AN][SM_N][SC_AA][DP][CPU_NEON] = _op_blend_pt_pan_caa_dp_neon; - - op_blend_pt_funcs[SP][SM_N][SC][DP_AN][CPU_NEON] = _op_blend_pt_p_c_dpan_neon; - op_blend_pt_funcs[SP_AS][SM_N][SC][DP_AN][CPU_NEON] = _op_blend_pt_pas_c_dpan_neon; - op_blend_pt_funcs[SP_AN][SM_N][SC][DP_AN][CPU_NEON] = _op_blend_pt_pan_c_dpan_neon; - op_blend_pt_funcs[SP][SM_N][SC_AN][DP_AN][CPU_NEON] = _op_blend_pt_p_can_dpan_neon; - op_blend_pt_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_NEON] = _op_blend_pt_pas_can_dpan_neon; - op_blend_pt_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_NEON] = _op_blend_pt_pan_can_dpan_neon; - op_blend_pt_funcs[SP][SM_N][SC_AA][DP_AN][CPU_NEON] = _op_blend_pt_p_caa_dpan_neon; - op_blend_pt_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_NEON] = _op_blend_pt_pas_caa_dpan_neon; - op_blend_pt_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_NEON] = _op_blend_pt_pan_caa_dpan_neon; -} -#endif - -/*-----*/ - -/* blend_rel pixel x color -> dst */ - -#ifdef BUILD_NEON - -#define _op_blend_rel_p_c_dpan_neon _op_blend_p_c_dpan_neon -#define _op_blend_rel_pas_c_dpan_neon _op_blend_pas_c_dpan_neon -#define _op_blend_rel_pan_c_dpan_neon _op_blend_pan_c_dpan_neon -#define _op_blend_rel_p_can_dpan_neon _op_blend_p_can_dpan_neon -#define _op_blend_rel_pas_can_dpan_neon _op_blend_pas_can_dpan_neon -#define _op_blend_rel_pan_can_dpan_neon _op_blend_pan_can_dpan_neon -#define _op_blend_rel_p_caa_dpan_neon _op_blend_p_caa_dpan_neon -#define _op_blend_rel_pas_caa_dpan_neon _op_blend_pas_caa_dpan_neon -#define _op_blend_rel_pan_caa_dpan_neon _op_blend_pan_caa_dpan_neon - -static void -init_blend_rel_pixel_color_span_funcs_neon(void) -{ - op_blend_rel_span_funcs[SP][SM_N][SC][DP_AN][CPU_NEON] = _op_blend_rel_p_c_dpan_neon; - op_blend_rel_span_funcs[SP_AS][SM_N][SC][DP_AN][CPU_NEON] = _op_blend_rel_pas_c_dpan_neon; - op_blend_rel_span_funcs[SP_AN][SM_N][SC][DP_AN][CPU_NEON] = _op_blend_rel_pan_c_dpan_neon; - op_blend_rel_span_funcs[SP][SM_N][SC_AN][DP_AN][CPU_NEON] = _op_blend_rel_p_can_dpan_neon; - op_blend_rel_span_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_NEON] = _op_blend_rel_pas_can_dpan_neon; - op_blend_rel_span_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_NEON] = _op_blend_rel_pan_can_dpan_neon; - op_blend_rel_span_funcs[SP][SM_N][SC_AA][DP_AN][CPU_NEON] = _op_blend_rel_p_caa_dpan_neon; - op_blend_rel_span_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_NEON] = _op_blend_rel_pas_caa_dpan_neon; - op_blend_rel_span_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_NEON] = _op_blend_rel_pan_caa_dpan_neon; -} -#endif - -#ifdef BUILD_NEON - -#define _op_blend_rel_pt_p_c_dpan_neon _op_blend_pt_p_c_dpan_neon -#define _op_blend_rel_pt_pas_c_dpan_neon _op_blend_pt_pas_c_dpan_neon -#define _op_blend_rel_pt_pan_c_dpan_neon _op_blend_pt_pan_c_dpan_neon -#define _op_blend_rel_pt_p_can_dpan_neon _op_blend_pt_p_can_dpan_neon -#define _op_blend_rel_pt_pas_can_dpan_neon _op_blend_pt_pas_can_dpan_neon -#define _op_blend_rel_pt_pan_can_dpan_neon _op_blend_pt_pan_can_dpan_neon -#define _op_blend_rel_pt_p_caa_dpan_neon _op_blend_pt_p_caa_dpan_neon -#define _op_blend_rel_pt_pas_caa_dpan_neon _op_blend_pt_pas_caa_dpan_neon -#define _op_blend_rel_pt_pan_caa_dpan_neon _op_blend_pt_pan_caa_dpan_neon - -static void -init_blend_rel_pixel_color_pt_funcs_neon(void) -{ - op_blend_rel_pt_funcs[SP][SM_N][SC][DP_AN][CPU_NEON] = _op_blend_rel_pt_p_c_dpan_neon; - op_blend_rel_pt_funcs[SP_AS][SM_N][SC][DP_AN][CPU_NEON] = _op_blend_rel_pt_pas_c_dpan_neon; - op_blend_rel_pt_funcs[SP_AN][SM_N][SC][DP_AN][CPU_NEON] = _op_blend_rel_pt_pan_c_dpan_neon; - op_blend_rel_pt_funcs[SP][SM_N][SC_AN][DP_AN][CPU_NEON] = _op_blend_rel_pt_p_can_dpan_neon; - op_blend_rel_pt_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_NEON] = _op_blend_rel_pt_pas_can_dpan_neon; - op_blend_rel_pt_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_NEON] = _op_blend_rel_pt_pan_can_dpan_neon; - op_blend_rel_pt_funcs[SP][SM_N][SC_AA][DP_AN][CPU_NEON] = _op_blend_rel_pt_p_caa_dpan_neon; - op_blend_rel_pt_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_NEON] = _op_blend_rel_pt_pas_caa_dpan_neon; - op_blend_rel_pt_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_NEON] = _op_blend_rel_pt_pan_caa_dpan_neon; -} -#endif diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_color_sse3.c b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_color_sse3.c deleted file mode 100644 index 4ee31f5..0000000 --- a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_color_sse3.c +++ /dev/null @@ -1,543 +0,0 @@ -/* blend pixel x color --> dst */ - -#ifdef BUILD_SSE3 - -static void -_op_blend_p_c_dp_sse3(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) { - - DATA32 alpha; - - const __m128i c_packed = _mm_set_epi32(c, c, c, c); - - LOOP_ALIGNED_U1_A48_SSE3(d, l, - { /* UOP */ - - DATA32 sc = MUL4_SYM(c, *s); - alpha = 256 - (sc >> 24); - *d = sc + MUL_256(alpha, *d); - d++; s++; l--; - }, - { /* A4OP */ - - __m128i s0 = _mm_lddqu_si128((__m128i *)s); - __m128i d0 = _mm_load_si128((__m128i *)d); - - __m128i sc0 = mul4_sym_sse3(c_packed, s0); - __m128i a0 = sub4_alpha_sse3(sc0); - __m128i mul0 = mul_256_sse3(a0, d0); - - d0 = _mm_add_epi32(sc0, mul0); - - _mm_store_si128((__m128i *)d, d0); - - d += 4; s += 4; l -= 4; - }, - { /* A8OP */ - - __m128i s0 = _mm_lddqu_si128((__m128i *)s); - __m128i d0 = _mm_load_si128((__m128i *)d); - - __m128i s1 = _mm_lddqu_si128((__m128i *)(s+4)); - __m128i d1 = _mm_load_si128((__m128i *)(d+4)); - - __m128i sc0 = mul4_sym_sse3(c_packed, s0); - __m128i sc1 = mul4_sym_sse3(c_packed, s1); - - __m128i a0 = sub4_alpha_sse3(sc0); - __m128i a1 = sub4_alpha_sse3(sc1); - - __m128i mul0 = mul_256_sse3(a0, d0); - __m128i mul1 = mul_256_sse3(a1, d1); - - d0 = _mm_add_epi32(sc0, mul0); - d1 = _mm_add_epi32(sc1, mul1); - - _mm_store_si128((__m128i *)d, d0); - _mm_store_si128((__m128i *)(d+4), d1); - - d += 8; s += 8; l -= 8; - }) -} - -static void -_op_blend_pan_c_dp_sse3(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) { - - DATA32 c_a = c & 0xFF000000; - DATA32 alpha = 256 - (c >> 24); - - const __m128i c_packed = _mm_set_epi32(c, c, c, c); - const __m128i c_alpha = _mm_set_epi32(c_a, c_a, c_a, c_a); - const __m128i a0 = _mm_set_epi32(alpha, alpha, alpha, alpha); - - LOOP_ALIGNED_U1_A48_SSE3(d, l, - { /* UOP */ - - *d = ((c & 0xff000000) + MUL3_SYM(c, *s)) + MUL_256(alpha, *d); - d++; s++; l--; - }, - { /* A4OP */ - - __m128i s0 = _mm_lddqu_si128((__m128i *)s); - __m128i d0 = _mm_load_si128((__m128i *)d); - - __m128i r0 = _mm_add_epi32(mul3_sym_sse3(c_packed, s0), - mul_256_sse3(a0, d0)); - - r0 = _mm_add_epi32(r0, c_alpha); - - _mm_store_si128((__m128i *)d, r0); - - d += 4; s += 4; l -= 4; - }, - { /* A8OP */ - - __m128i s0 = _mm_lddqu_si128((__m128i *)s); - __m128i d0 = _mm_load_si128((__m128i *)d); - - __m128i s1 = _mm_lddqu_si128((__m128i *)(s+4)); - __m128i d1 = _mm_load_si128((__m128i *)(d+4)); - - __m128i r0 = _mm_add_epi32(mul3_sym_sse3(c_packed, s0), - mul_256_sse3(a0, d0)); - - __m128i r1 = _mm_add_epi32(mul3_sym_sse3(c_packed, s1), - mul_256_sse3(a0, d1)); - - r0 = _mm_add_epi32(r0, c_alpha); - r1 = _mm_add_epi32(r1, c_alpha); - - _mm_store_si128((__m128i *)d, r0); - _mm_store_si128((__m128i *)(d+4), r1); - - d += 8; s += 8; l -= 8; - }) -} - -static void -_op_blend_p_can_dp_sse3(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) { - - int alpha; - const __m128i c_packed = _mm_set_epi32(c, c, c, c); - - LOOP_ALIGNED_U1_A48_SSE3(d, l, - { /* UOP */ - - alpha = 256 - (*s >> 24); - *d = ((*s & 0xff000000) + MUL3_SYM(c, *s)) + MUL_256(alpha, *d); - d++; s++; l--; - }, - { /* A4OP */ - - __m128i s0 = _mm_lddqu_si128((__m128i *)s); - __m128i d0 = _mm_load_si128((__m128i *)d); - - __m128i a0 = sub4_alpha_sse3(s0); - - __m128i r0 = _mm_add_epi32(mul3_sym_sse3(c_packed, s0), - mul_256_sse3(a0, d0)); - - r0 = _mm_add_epi32(r0, _mm_and_si128(s0, A_MASK_SSE3)); - - _mm_store_si128((__m128i *)d, r0); - - d += 4; s += 4; l -= 4; - }, - { - __m128i s0 = _mm_lddqu_si128((__m128i *)s); - __m128i d0 = _mm_load_si128((__m128i *)d); - - __m128i s1 = _mm_lddqu_si128((__m128i *)(s+4)); - __m128i d1 = _mm_load_si128((__m128i *)(d+4)); - - __m128i a0 = sub4_alpha_sse3(s0); - __m128i a1 = sub4_alpha_sse3(s1); - - __m128i r0 = _mm_add_epi32(mul3_sym_sse3(c_packed, s0), - mul_256_sse3(a0, d0)); - - __m128i r1 = _mm_add_epi32(mul3_sym_sse3(c_packed, s1), - mul_256_sse3(a1, d1)); - - r0 = _mm_add_epi32(r0, _mm_and_si128(s0, A_MASK_SSE3)); - r1 = _mm_add_epi32(r1, _mm_and_si128(s1, A_MASK_SSE3)); - - _mm_store_si128((__m128i *)d, r0); - _mm_store_si128((__m128i *)(d+4), r1); - - d += 8; s += 8; l -= 8; - }) -} - -static void -_op_blend_pan_can_dp_sse3(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) { - - const __m128i c_packed = _mm_set_epi32(c, c, c, c); - - LOOP_ALIGNED_U1_A48_SSE3(d, l, - { /* UOP */ - - *d++ = 0xff000000 + MUL3_SYM(c, *s); - s++; l--; - }, - { /* A4OP */ - - __m128i s0 = _mm_lddqu_si128((__m128i *)s); - - __m128i r0 = mul3_sym_sse3(c_packed, s0); - r0 = _mm_add_epi32(r0, A_MASK_SSE3); - - _mm_store_si128((__m128i *)d, r0); - - d += 4; s += 4; l -= 4; - }, - { /* A8OP */ - - __m128i s0 = _mm_lddqu_si128((__m128i *)s); - __m128i s1 = _mm_lddqu_si128((__m128i *)(s+4)); - - __m128i r0 = mul3_sym_sse3(c_packed, s0); - __m128i r1 = mul3_sym_sse3(c_packed, s1); - - r0 = _mm_add_epi32(r0, A_MASK_SSE3); - r1 = _mm_add_epi32(r1, A_MASK_SSE3); - - _mm_store_si128((__m128i *)d, r0); - _mm_store_si128((__m128i *)(d+4), r1); - - d += 8; s += 8; l -= 8; - }) -} - -static void -_op_blend_p_caa_dp_sse3(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) { - - int alpha; - c = 1 + (c & 0xff); - const __m128i c_packed = _mm_set_epi32(c, c, c, c); - - LOOP_ALIGNED_U1_A48_SSE3(d, l, - { /* UOP */ - - DATA32 sc = MUL_256(c, *s); - alpha = 256 - (sc >> 24); - *d = sc + MUL_256(alpha, *d); - d++; - s++; - l--; - }, - { /* A4OP */ - - __m128i s0 = _mm_lddqu_si128((__m128i *)s); - __m128i d0 = _mm_load_si128 ((__m128i *)d); - - __m128i sc0 = mul_256_sse3(c_packed, s0); - __m128i a0 = sub4_alpha_sse3(sc0); - - __m128i r0 = _mm_add_epi32(mul_256_sse3(a0, d0), sc0); - - _mm_store_si128((__m128i *)d, r0); - - d += 4; s += 4; l -= 4; - }, - { - __m128i s0 = _mm_lddqu_si128((__m128i *)s); - __m128i d0 = _mm_load_si128((__m128i *)d); - - __m128i s1 = _mm_lddqu_si128((__m128i *)(s+4)); - __m128i d1 = _mm_load_si128((__m128i *)(d+4)); - - __m128i sc0 = mul_256_sse3(c_packed, s0); - __m128i sc1 = mul_256_sse3(c_packed, s1); - - __m128i a0 = sub4_alpha_sse3(sc0); - __m128i a1 = sub4_alpha_sse3(sc1); - - __m128i r0 = _mm_add_epi32(mul_256_sse3(a0, d0), sc0); - __m128i r1 = _mm_add_epi32(mul_256_sse3(a1, d1), sc1); - - _mm_store_si128((__m128i *)d, r0); - _mm_store_si128((__m128i *)(d+4), r1); - - d += 8; s += 8; l -= 8; - }) -} - -static void -_op_blend_pan_caa_dp_sse3(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) { - - c = 1 + (c & 0xff); - const __m128i c_packed = _mm_set_epi32(c, c, c,c); - - LOOP_ALIGNED_U1_A48_SSE3(d, l, - { /* UOP */ - - *d = INTERP_256(c, *s, *d); - d++; s++; l--; - }, - { /* A4OP */ - - __m128i s0 = _mm_lddqu_si128((__m128i *)s); - __m128i d0 = _mm_load_si128((__m128i *)d); - - __m128i r0 = interp4_256_sse3(c_packed, s0, d0); - - _mm_store_si128((__m128i *)d, r0); - - d += 4; s += 4; l -= 4; - }, - { - - __m128i s0 = _mm_lddqu_si128((__m128i *)s); - __m128i d0 = _mm_load_si128((__m128i *)d); - - __m128i s1 = _mm_lddqu_si128((__m128i *)(s+4)); - __m128i d1 = _mm_load_si128((__m128i *)(d+4)); - - __m128i r0 = interp4_256_sse3(c_packed, s0, d0); - __m128i r1 = interp4_256_sse3(c_packed, s1, d1); - - _mm_store_si128((__m128i *)d, r0); - _mm_store_si128((__m128i *)(d+4), r1); - - d += 8; s += 8; l -= 8; - }) -} - -#define _op_blend_pas_c_dp_sse3 _op_blend_p_c_dp_sse3 -#define _op_blend_pas_can_dp_sse3 _op_blend_p_can_dp_sse3 -#define _op_blend_pas_caa_dp_sse3 _op_blend_p_caa_dp_sse3 - -#define _op_blend_p_c_dpan_sse3 _op_blend_p_c_dp_sse3 -#define _op_blend_pas_c_dpan_sse3 _op_blend_pas_c_dp_sse3 -#define _op_blend_pan_c_dpan_sse3 _op_blend_pan_c_dp_sse3 -#define _op_blend_p_can_dpan_sse3 _op_blend_p_can_dp_sse3 -#define _op_blend_pas_can_dpan_sse3 _op_blend_pas_can_dp_sse3 -#define _op_blend_pan_can_dpan_sse3 _op_blend_pan_can_dp_sse3 -#define _op_blend_p_caa_dpan_sse3 _op_blend_p_caa_dp_sse3 -#define _op_blend_pas_caa_dpan_sse3 _op_blend_pas_caa_dp_sse3 -#define _op_blend_pan_caa_dpan_sse3 _op_blend_pan_caa_dp_sse3 - -static void -init_blend_pixel_color_span_funcs_sse3(void) -{ - op_blend_span_funcs[SP][SM_N][SC][DP][CPU_SSE3] = _op_blend_p_c_dp_sse3; - op_blend_span_funcs[SP_AS][SM_N][SC][DP][CPU_SSE3] = _op_blend_pas_c_dp_sse3; - op_blend_span_funcs[SP_AN][SM_N][SC][DP][CPU_SSE3] = _op_blend_pan_c_dp_sse3; - op_blend_span_funcs[SP][SM_N][SC_AN][DP][CPU_SSE3] = _op_blend_p_can_dp_sse3; - op_blend_span_funcs[SP_AS][SM_N][SC_AN][DP][CPU_SSE3] = _op_blend_pas_can_dp_sse3; - op_blend_span_funcs[SP_AN][SM_N][SC_AN][DP][CPU_SSE3] = _op_blend_pan_can_dp_sse3; - op_blend_span_funcs[SP][SM_N][SC_AA][DP][CPU_SSE3] = _op_blend_p_caa_dp_sse3; - op_blend_span_funcs[SP_AS][SM_N][SC_AA][DP][CPU_SSE3] = _op_blend_pas_caa_dp_sse3; - op_blend_span_funcs[SP_AN][SM_N][SC_AA][DP][CPU_SSE3] = _op_blend_pan_caa_dp_sse3; - - op_blend_span_funcs[SP][SM_N][SC][DP_AN][CPU_SSE3] = _op_blend_p_c_dpan_sse3; - op_blend_span_funcs[SP_AS][SM_N][SC][DP_AN][CPU_SSE3] = _op_blend_pas_c_dpan_sse3; - op_blend_span_funcs[SP_AN][SM_N][SC][DP_AN][CPU_SSE3] = _op_blend_pan_c_dpan_sse3; - op_blend_span_funcs[SP][SM_N][SC_AN][DP_AN][CPU_SSE3] = _op_blend_p_can_dpan_sse3; - op_blend_span_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_SSE3] = _op_blend_pas_can_dpan_sse3; - op_blend_span_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_SSE3] = _op_blend_pan_can_dpan_sse3; - op_blend_span_funcs[SP][SM_N][SC_AA][DP_AN][CPU_SSE3] = _op_blend_p_caa_dpan_sse3; - op_blend_span_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_SSE3] = _op_blend_pas_caa_dpan_sse3; - op_blend_span_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_SSE3] = _op_blend_pan_caa_dpan_sse3; -} - -#define _op_blend_pt_p_c_dp_sse3 NULL - -#define _op_blend_pt_pas_c_dp_sse3 _op_blend_pt_p_c_dp_sse3 -#define _op_blend_pt_pan_c_dp_sse3 _op_blend_pt_p_c_dp_sse3 -#define _op_blend_pt_p_can_dp_sse3 _op_blend_pt_p_c_dp_sse3 -#define _op_blend_pt_pas_can_dp_sse3 _op_blend_pt_p_c_dp_sse3 -#define _op_blend_pt_pan_can_dp_sse3 _op_blend_pt_p_c_dp_sse3 -#define _op_blend_pt_p_caa_dp_sse3 _op_blend_pt_p_c_dp_sse3 -#define _op_blend_pt_pas_caa_dp_sse3 _op_blend_pt_p_c_dp_sse3 -#define _op_blend_pt_pan_caa_dp_sse3 _op_blend_pt_p_c_dp_sse3 - -#define _op_blend_pt_p_c_dpan_sse3 _op_blend_pt_p_c_dp_sse3 -#define _op_blend_pt_pas_c_dpan_sse3 _op_blend_pt_pas_c_dp_sse3 -#define _op_blend_pt_pan_c_dpan_sse3 _op_blend_pt_pan_c_dp_sse3 -#define _op_blend_pt_p_can_dpan_sse3 _op_blend_pt_p_can_dp_sse3 -#define _op_blend_pt_pas_can_dpan_sse3 _op_blend_pt_pas_can_dp_sse3 -#define _op_blend_pt_pan_can_dpan_sse3 _op_blend_pt_pan_can_dp_sse3 -#define _op_blend_pt_p_caa_dpan_sse3 _op_blend_pt_p_caa_dp_sse3 -#define _op_blend_pt_pas_caa_dpan_sse3 _op_blend_pt_pas_caa_dp_sse3 -#define _op_blend_pt_pan_caa_dpan_sse3 _op_blend_pt_pan_caa_dp_sse3 - -static void -init_blend_pixel_color_pt_funcs_sse3(void) -{ - op_blend_pt_funcs[SP][SM_N][SC][DP][CPU_SSE3] = _op_blend_pt_p_c_dp_sse3; - op_blend_pt_funcs[SP_AS][SM_N][SC][DP][CPU_SSE3] = _op_blend_pt_pas_c_dp_sse3; - op_blend_pt_funcs[SP_AN][SM_N][SC][DP][CPU_SSE3] = _op_blend_pt_pan_c_dp_sse3; - op_blend_pt_funcs[SP][SM_N][SC_AN][DP][CPU_SSE3] = _op_blend_pt_p_can_dp_sse3; - op_blend_pt_funcs[SP_AS][SM_N][SC_AN][DP][CPU_SSE3] = _op_blend_pt_pas_can_dp_sse3; - op_blend_pt_funcs[SP_AN][SM_N][SC_AN][DP][CPU_SSE3] = _op_blend_pt_pan_can_dp_sse3; - op_blend_pt_funcs[SP][SM_N][SC_AA][DP][CPU_SSE3] = _op_blend_pt_p_caa_dp_sse3; - op_blend_pt_funcs[SP_AS][SM_N][SC_AA][DP][CPU_SSE3] = _op_blend_pt_pas_caa_dp_sse3; - op_blend_pt_funcs[SP_AN][SM_N][SC_AA][DP][CPU_SSE3] = _op_blend_pt_pan_caa_dp_sse3; - - op_blend_pt_funcs[SP][SM_N][SC][DP_AN][CPU_SSE3] = _op_blend_pt_p_c_dpan_sse3; - op_blend_pt_funcs[SP_AS][SM_N][SC][DP_AN][CPU_SSE3] = _op_blend_pt_pas_c_dpan_sse3; - op_blend_pt_funcs[SP_AN][SM_N][SC][DP_AN][CPU_SSE3] = _op_blend_pt_pan_c_dpan_sse3; - op_blend_pt_funcs[SP][SM_N][SC_AN][DP_AN][CPU_SSE3] = _op_blend_pt_p_can_dpan_sse3; - op_blend_pt_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_SSE3] = _op_blend_pt_pas_can_dpan_sse3; - op_blend_pt_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_SSE3] = _op_blend_pt_pan_can_dpan_sse3; - op_blend_pt_funcs[SP][SM_N][SC_AA][DP_AN][CPU_SSE3] = _op_blend_pt_p_caa_dpan_sse3; - op_blend_pt_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_SSE3] = _op_blend_pt_pas_caa_dpan_sse3; - op_blend_pt_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_SSE3] = _op_blend_pt_pan_caa_dpan_sse3; -} - -/*-----*/ - -/* blend_rel pixel x color -> dst */ - -static void -_op_blend_rel_p_c_dp_sse3(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) { - - int alpha; - - const __m128i c_packed = _mm_set_epi32(c, c, c, c); - - LOOP_ALIGNED_U1_A48_SSE3(d, l, - { /* UOP */ - - DATA32 sc = MUL4_SYM(c, *s); - alpha = 256 - (sc >> 24); - *d = MUL_SYM(*d >> 24, sc) + MUL_256(alpha, *d); - d++; s++; l--; - }, - { /* A4OP */ - - __m128i s0 = _mm_lddqu_si128((__m128i *)s); - __m128i d0 = _mm_load_si128((__m128i *)d); - - __m128i sc0 = mul4_sym_sse3(c_packed, s0); - __m128i a0 = sub4_alpha_sse3(sc0); - - __m128i l0 = mul_sym_sse3(_mm_srli_epi32(d0, 24), sc0); - __m128i r0 = mul_256_sse3(a0, d0); - - r0 = _mm_add_epi32(l0, r0); - - _mm_store_si128((__m128i *)d, r0); - - d += 4; s += 4; l -= 4; - }, - { /* A8OP */ - - __m128i s0 = _mm_lddqu_si128((__m128i *)s); - __m128i d0 = _mm_load_si128((__m128i *)d); - - __m128i s1 = _mm_lddqu_si128((__m128i *)(s+4)); - __m128i d1 = _mm_load_si128((__m128i *)(d+4)); - - __m128i sc0 = mul4_sym_sse3(c_packed, s0); - __m128i sc1 = mul4_sym_sse3(c_packed, s1); - - __m128i a0 = sub4_alpha_sse3(sc0); - __m128i a1 = sub4_alpha_sse3(sc1); - - __m128i l0 = mul_sym_sse3(_mm_srli_epi32(d0, 24), sc0); - __m128i r0 = mul_256_sse3(a0, d0); - - __m128i l1 = mul_sym_sse3(_mm_srli_epi32(d1, 24), sc1); - __m128i r1 = mul_256_sse3(a1, d1); - - r0 = _mm_add_epi32(l0, r0); - r1 = _mm_add_epi32(l1, r1); - - _mm_store_si128((__m128i *)d, r0); - _mm_store_si128((__m128i *)(d+4), r1); - - d += 8; s += 8; l -= 8; - }) -} - -#define _op_blend_rel_pas_c_dp_sse3 _op_blend_rel_p_c_dp_sse3 -#define _op_blend_rel_pan_c_dp_sse3 _op_blend_rel_p_c_dp_sse3 -#define _op_blend_rel_p_can_dp_sse3 _op_blend_rel_p_c_dp_sse3 -#define _op_blend_rel_pas_can_dp_sse3 _op_blend_rel_p_c_dp_sse3 -#define _op_blend_rel_pan_can_dp_sse3 _op_blend_rel_p_c_dp_sse3 -#define _op_blend_rel_p_caa_dp_sse3 _op_blend_rel_p_c_dp_sse3 -#define _op_blend_rel_pas_caa_dp_sse3 _op_blend_rel_p_c_dp_sse3 -#define _op_blend_rel_pan_caa_dp_sse3 _op_blend_rel_p_c_dp_sse3 - -#define _op_blend_rel_p_c_dpan_sse3 _op_blend_p_c_dpan_sse3 -#define _op_blend_rel_pas_c_dpan_sse3 _op_blend_pas_c_dpan_sse3 -#define _op_blend_rel_pan_c_dpan_sse3 _op_blend_pan_c_dpan_sse3 -#define _op_blend_rel_p_can_dpan_sse3 _op_blend_p_can_dpan_sse3 -#define _op_blend_rel_pas_can_dpan_sse3 _op_blend_pas_can_dpan_sse3 -#define _op_blend_rel_pan_can_dpan_sse3 _op_blend_pan_can_dpan_sse3 -#define _op_blend_rel_p_caa_dpan_sse3 _op_blend_p_caa_dpan_sse3 -#define _op_blend_rel_pas_caa_dpan_sse3 _op_blend_pas_caa_dpan_sse3 -#define _op_blend_rel_pan_caa_dpan_sse3 _op_blend_pan_caa_dpan_sse3 - -static void -init_blend_rel_pixel_color_span_funcs_sse3(void) -{ - op_blend_rel_span_funcs[SP][SM_N][SC][DP][CPU_SSE3] = _op_blend_rel_p_c_dp_sse3; - op_blend_rel_span_funcs[SP_AS][SM_N][SC][DP][CPU_SSE3] = _op_blend_rel_pas_c_dp_sse3; - op_blend_rel_span_funcs[SP_AN][SM_N][SC][DP][CPU_SSE3] = _op_blend_rel_pan_c_dp_sse3; - op_blend_rel_span_funcs[SP][SM_N][SC_AN][DP][CPU_SSE3] = _op_blend_rel_p_can_dp_sse3; - op_blend_rel_span_funcs[SP_AS][SM_N][SC_AN][DP][CPU_SSE3] = _op_blend_rel_pas_can_dp_sse3; - op_blend_rel_span_funcs[SP_AN][SM_N][SC_AN][DP][CPU_SSE3] = _op_blend_rel_pan_can_dp_sse3; - op_blend_rel_span_funcs[SP][SM_N][SC_AA][DP][CPU_SSE3] = _op_blend_rel_p_caa_dp_sse3; - op_blend_rel_span_funcs[SP_AS][SM_N][SC_AA][DP][CPU_SSE3] = _op_blend_rel_pas_caa_dp_sse3; - op_blend_rel_span_funcs[SP_AN][SM_N][SC_AA][DP][CPU_SSE3] = _op_blend_rel_pan_caa_dp_sse3; - - op_blend_rel_span_funcs[SP][SM_N][SC][DP_AN][CPU_SSE3] = _op_blend_rel_p_c_dpan_sse3; - op_blend_rel_span_funcs[SP_AS][SM_N][SC][DP_AN][CPU_SSE3] = _op_blend_rel_pas_c_dpan_sse3; - op_blend_rel_span_funcs[SP_AN][SM_N][SC][DP_AN][CPU_SSE3] = _op_blend_rel_pan_c_dpan_sse3; - op_blend_rel_span_funcs[SP][SM_N][SC_AN][DP_AN][CPU_SSE3] = _op_blend_rel_p_can_dpan_sse3; - op_blend_rel_span_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_SSE3] = _op_blend_rel_pas_can_dpan_sse3; - op_blend_rel_span_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_SSE3] = _op_blend_rel_pan_can_dpan_sse3; - op_blend_rel_span_funcs[SP][SM_N][SC_AA][DP_AN][CPU_SSE3] = _op_blend_rel_p_caa_dpan_sse3; - op_blend_rel_span_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_SSE3] = _op_blend_rel_pas_caa_dpan_sse3; - op_blend_rel_span_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_SSE3] = _op_blend_rel_pan_caa_dpan_sse3; -} - -#define _op_blend_rel_pt_p_c_dp_sse3 NULL - -#define _op_blend_rel_pt_pas_c_dp_sse3 _op_blend_rel_pt_p_c_dp_sse3 -#define _op_blend_rel_pt_pan_c_dp_sse3 _op_blend_rel_pt_p_c_dp_sse3 -#define _op_blend_rel_pt_p_can_dp_sse3 _op_blend_rel_pt_p_c_dp_sse3 -#define _op_blend_rel_pt_pas_can_dp_sse3 _op_blend_rel_pt_p_c_dp_sse3 -#define _op_blend_rel_pt_pan_can_dp_sse3 _op_blend_rel_pt_p_c_dp_sse3 -#define _op_blend_rel_pt_p_caa_dp_sse3 _op_blend_rel_pt_p_c_dp_sse3 -#define _op_blend_rel_pt_pas_caa_dp_sse3 _op_blend_rel_pt_p_c_dp_sse3 -#define _op_blend_rel_pt_pan_caa_dp_sse3 _op_blend_rel_pt_p_c_dp_sse3 - -#define _op_blend_rel_pt_p_c_dpan_sse3 _op_blend_pt_p_c_dpan_sse3 -#define _op_blend_rel_pt_pas_c_dpan_sse3 _op_blend_pt_pas_c_dpan_sse3 -#define _op_blend_rel_pt_pan_c_dpan_sse3 _op_blend_pt_pan_c_dpan_sse3 -#define _op_blend_rel_pt_p_can_dpan_sse3 _op_blend_pt_p_can_dpan_sse3 -#define _op_blend_rel_pt_pas_can_dpan_sse3 _op_blend_pt_pas_can_dpan_sse3 -#define _op_blend_rel_pt_pan_can_dpan_sse3 _op_blend_pt_pan_can_dpan_sse3 -#define _op_blend_rel_pt_p_caa_dpan_sse3 _op_blend_pt_p_caa_dpan_sse3 -#define _op_blend_rel_pt_pas_caa_dpan_sse3 _op_blend_pt_pas_caa_dpan_sse3 -#define _op_blend_rel_pt_pan_caa_dpan_sse3 _op_blend_pt_pan_caa_dpan_sse3 - -static void -init_blend_rel_pixel_color_pt_funcs_sse3(void) -{ - op_blend_rel_pt_funcs[SP][SM_N][SC][DP][CPU_SSE3] = _op_blend_rel_pt_p_c_dp_sse3; - op_blend_rel_pt_funcs[SP_AS][SM_N][SC][DP][CPU_SSE3] = _op_blend_rel_pt_pas_c_dp_sse3; - op_blend_rel_pt_funcs[SP_AN][SM_N][SC][DP][CPU_SSE3] = _op_blend_rel_pt_pan_c_dp_sse3; - op_blend_rel_pt_funcs[SP][SM_N][SC_AN][DP][CPU_SSE3] = _op_blend_rel_pt_p_can_dp_sse3; - op_blend_rel_pt_funcs[SP_AS][SM_N][SC_AN][DP][CPU_SSE3] = _op_blend_rel_pt_pas_can_dp_sse3; - op_blend_rel_pt_funcs[SP_AN][SM_N][SC_AN][DP][CPU_SSE3] = _op_blend_rel_pt_pan_can_dp_sse3; - op_blend_rel_pt_funcs[SP][SM_N][SC_AA][DP][CPU_SSE3] = _op_blend_rel_pt_p_caa_dp_sse3; - op_blend_rel_pt_funcs[SP_AS][SM_N][SC_AA][DP][CPU_SSE3] = _op_blend_rel_pt_pas_caa_dp_sse3; - op_blend_rel_pt_funcs[SP_AN][SM_N][SC_AA][DP][CPU_SSE3] = _op_blend_rel_pt_pan_caa_dp_sse3; - - op_blend_rel_pt_funcs[SP][SM_N][SC][DP_AN][CPU_SSE3] = _op_blend_rel_pt_p_c_dpan_sse3; - op_blend_rel_pt_funcs[SP_AS][SM_N][SC][DP_AN][CPU_SSE3] = _op_blend_rel_pt_pas_c_dpan_sse3; - op_blend_rel_pt_funcs[SP_AN][SM_N][SC][DP_AN][CPU_SSE3] = _op_blend_rel_pt_pan_c_dpan_sse3; - op_blend_rel_pt_funcs[SP][SM_N][SC_AN][DP_AN][CPU_SSE3] = _op_blend_rel_pt_p_can_dpan_sse3; - op_blend_rel_pt_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_SSE3] = _op_blend_rel_pt_pas_can_dpan_sse3; - op_blend_rel_pt_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_SSE3] = _op_blend_rel_pt_pan_can_dpan_sse3; - op_blend_rel_pt_funcs[SP][SM_N][SC_AA][DP_AN][CPU_SSE3] = _op_blend_rel_pt_p_caa_dpan_sse3; - op_blend_rel_pt_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_SSE3] = _op_blend_rel_pt_pas_caa_dpan_sse3; - op_blend_rel_pt_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_SSE3] = _op_blend_rel_pt_pan_caa_dpan_sse3; -} - -#endif diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_i386.c b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_i386.c deleted file mode 100644 index 9b5abe6..0000000 --- a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_i386.c +++ /dev/null @@ -1,217 +0,0 @@ -/* blend pixel --> dst */ - -#ifdef BUILD_MMX -static void -_op_blend_p_dp_mmx(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c __UNUSED__, DATA32 *d, int l) { - DATA32 *e = d + l; - pxor_r2r(mm0, mm0); - MOV_A2R(ALPHA_256, mm6) - while (d < e) - { - MOV_P2R(*s, mm2, mm0) - MOV_RA2R(mm2, mm1) - movq_r2r(mm6, mm3); - psubw_r2r(mm1, mm3); - - MOV_P2R(*d, mm1, mm0) - MUL4_256_R2R(mm3, mm1) - - paddw_r2r(mm2, mm1); - MOV_R2P(mm1, *d, mm0) - s++; d++; - } -} - -static void -_op_blend_pas_dp_mmx(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c __UNUSED__, DATA32 *d, int l) { - _op_blend_p_dp_mmx(s, m, c, d, l); - return; - DATA32 *e = d + l; - pxor_r2r(mm0, mm0); - MOV_A2R(ALPHA_256, mm6) - while (d < e) - { - switch (*s & 0xff000000) - { - case 0: - break; - case 0xff000000: - *d = *s; - break; - default : - MOV_P2R(*s, mm2, mm0) - MOV_RA2R(mm2, mm1) - movq_r2r(mm6, mm3); - psubw_r2r(mm1, mm3); - - MOV_P2R(*d, mm1, mm0) - MUL4_256_R2R(mm3, mm1) - - paddw_r2r(mm2, mm1); - MOV_R2P(mm1, *d, mm0) - break; - } - s++; d++; - } -} - -#define _op_blend_pan_dp_mmx NULL - -#define _op_blend_p_dpan_mmx _op_blend_p_dp_mmx -#define _op_blend_pas_dpan_mmx _op_blend_pas_dp_mmx -#define _op_blend_pan_dpan_mmx _op_blend_pan_dp_mmx - -static void -init_blend_pixel_span_funcs_mmx(void) -{ - op_blend_span_funcs[SP][SM_N][SC_N][DP][CPU_MMX] = _op_blend_p_dp_mmx; - op_blend_span_funcs[SP_AS][SM_N][SC_N][DP][CPU_MMX] = _op_blend_pas_dp_mmx; - op_blend_span_funcs[SP_AN][SM_N][SC_N][DP][CPU_MMX] = _op_blend_pan_dp_mmx; - - op_blend_span_funcs[SP][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_p_dpan_mmx; - op_blend_span_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_pas_dpan_mmx; - op_blend_span_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_pan_dpan_mmx; -} -#endif - -#ifdef BUILD_MMX -static void -_op_blend_pt_p_dp_mmx(DATA32 s, DATA8 m __UNUSED__, DATA32 c __UNUSED__, DATA32 *d) { - pxor_r2r(mm0, mm0); - MOV_A2R(ALPHA_256, mm6) - MOV_P2R(s, mm2, mm0) - MOV_RA2R(mm2, mm1) - movq_r2r(mm6, mm3); - psubw_r2r(mm1, mm3); - - MOV_P2R(*d, mm1, mm0) - MUL4_256_R2R(mm3, mm1) - - paddw_r2r(mm2, mm1); - MOV_R2P(mm1, *d, mm0) -} - - -#define _op_blend_pt_pan_dp_mmx NULL -#define _op_blend_pt_pas_dp_mmx _op_blend_pt_p_dp_mmx - -#define _op_blend_pt_p_dpan_mmx _op_blend_pt_p_dp_mmx -#define _op_blend_pt_pan_dpan_mmx _op_blend_pt_pan_dp_mmx -#define _op_blend_pt_pas_dpan_mmx _op_blend_pt_pas_dp_mmx - -static void -init_blend_pixel_pt_funcs_mmx(void) -{ - op_blend_pt_funcs[SP][SM_N][SC_N][DP][CPU_MMX] = _op_blend_pt_p_dp_mmx; - op_blend_pt_funcs[SP_AS][SM_N][SC_N][DP][CPU_MMX] = _op_blend_pt_pas_dp_mmx; - op_blend_pt_funcs[SP_AN][SM_N][SC_N][DP][CPU_MMX] = _op_blend_pt_pan_dp_mmx; - - op_blend_pt_funcs[SP][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_pt_p_dpan_mmx; - op_blend_pt_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_pt_pas_dpan_mmx; - op_blend_pt_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_pt_pan_dpan_mmx; -} -#endif - -/*-----*/ - -/* blend_rel pixel -> dst */ - -#ifdef BUILD_MMX -static void -_op_blend_rel_p_dp_mmx(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c __UNUSED__, DATA32 *d, int l) { - DATA32 *e = d + l; - pxor_r2r(mm0, mm0); - MOV_A2R(ALPHA_256, mm6) - MOV_A2R(ALPHA_255, mm5) - while (d < e) - { - MOV_P2R(*s, mm2, mm0) - MOV_RA2R(mm2, mm1) - movq_r2r(mm6, mm3); - psubw_r2r(mm1, mm3); - - MOV_P2R(*d, mm1, mm0) - MOV_RA2R(mm1, mm4) - MUL4_256_R2R(mm3, mm1) - - MUL4_SYM_R2R(mm4, mm2, mm5) - paddw_r2r(mm2, mm1); - MOV_R2P(mm1, *d, mm0) - s++; d++; - } -} - -static void -_op_blend_rel_pan_dp_mmx(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c __UNUSED__, DATA32 *d, int l) { - DATA32 *e = d + l; - pxor_r2r(mm0, mm0); - MOV_A2R(ALPHA_256, mm6) - MOV_A2R(ALPHA_255, mm5) - while (d < e) - { - MOV_P2R(*s, mm2, mm0) - MOV_PA2R(*d, mm1) - MUL4_SYM_R2R(mm2, mm1, mm5) - MOV_R2P(mm1, *d, mm0) - s++; d++; - } -} - -#define _op_blend_rel_pas_dp_mmx _op_blend_rel_p_dp_mmx - -#define _op_blend_rel_p_dpan_mmx _op_blend_p_dpan_mmx -#define _op_blend_rel_pan_dpan_mmx _op_blend_pan_dpan_mmx -#define _op_blend_rel_pas_dpan_mmx _op_blend_pas_dpan_mmx - -static void -init_blend_rel_pixel_span_funcs_mmx(void) -{ - op_blend_rel_span_funcs[SP][SM_N][SC_N][DP][CPU_MMX] = _op_blend_rel_p_dp_mmx; - op_blend_rel_span_funcs[SP_AS][SM_N][SC_N][DP][CPU_MMX] = _op_blend_rel_pas_dp_mmx; - op_blend_rel_span_funcs[SP_AN][SM_N][SC_N][DP][CPU_MMX] = _op_blend_rel_pan_dp_mmx; - - op_blend_rel_span_funcs[SP][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_p_dpan_mmx; - op_blend_rel_span_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_pas_dpan_mmx; - op_blend_rel_span_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_pan_dpan_mmx; -} -#endif - -#ifdef BUILD_MMX -static void -_op_blend_rel_pt_p_dp_mmx(DATA32 s, DATA8 m __UNUSED__, DATA32 c __UNUSED__, DATA32 *d) { - pxor_r2r(mm0, mm0); - MOV_A2R(ALPHA_256, mm6) - MOV_A2R(ALPHA_255, mm5) - - MOV_P2R(s, mm2, mm0) - MOV_RA2R(mm2, mm1) - psubw_r2r(mm1, mm6); - - MOV_P2R(*d, mm1, mm0) - MOV_RA2R(mm1, mm4) - MUL4_256_R2R(mm6, mm1) - - MUL4_SYM_R2R(mm4, mm2, mm5) - paddw_r2r(mm2, mm1); - MOV_R2P(mm1, *d, mm0) -} - -#define _op_blend_rel_pt_pas_dp_mmx _op_blend_rel_pt_p_dp_mmx -#define _op_blend_rel_pt_pan_dp_mmx _op_blend_rel_pt_p_dp_mmx - -#define _op_blend_rel_pt_p_dpan_mmx _op_blend_pt_p_dpan_mmx -#define _op_blend_rel_pt_pas_dpan_mmx _op_blend_pt_pas_dpan_mmx -#define _op_blend_rel_pt_pan_dpan_mmx _op_blend_pt_pan_dpan_mmx - -static void -init_blend_rel_pixel_pt_funcs_mmx(void) -{ - op_blend_rel_pt_funcs[SP][SM_N][SC_N][DP][CPU_MMX] = _op_blend_rel_pt_p_dp_mmx; - op_blend_rel_pt_funcs[SP_AS][SM_N][SC_N][DP][CPU_MMX] = _op_blend_rel_pt_pas_dp_mmx; - op_blend_rel_pt_funcs[SP_AN][SM_N][SC_N][DP][CPU_MMX] = _op_blend_rel_pt_pan_dp_mmx; - - op_blend_rel_pt_funcs[SP][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_pt_p_dpan_mmx; - op_blend_rel_pt_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_pt_pas_dpan_mmx; - op_blend_rel_pt_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_pt_pan_dpan_mmx; -} -#endif diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_mask_.c b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_mask_.c deleted file mode 100644 index a9d0f4b..0000000 --- a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_mask_.c +++ /dev/null @@ -1,189 +0,0 @@ -/* blend pixel x mask --> dst */ - -#ifdef BUILD_C -static void -_op_blend_p_mas_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) { - DATA32 *e; - int alpha; - UNROLL8_PLD_WHILE(d, l, e, - { - alpha = *m; - switch(alpha) - { - case 0: - break; - case 255: - alpha = 256 - (*s >> 24); - *d = *s + MUL_256(alpha, *d); - break; - default: - c = MUL_SYM(alpha, *s); - alpha = 256 - (c >> 24); - *d = c + MUL_256(alpha, *d); - break; - } - m++; s++; d++; - }); -} - -static void -_op_blend_pas_mas_dp(DATA32 *s, DATA8 *m, DATA32 c __UNUSED__, DATA32 *d, int l) { - DATA32 *e; - int alpha; - UNROLL8_PLD_WHILE(d, l, e, - { - alpha = *m; - switch(alpha) - { - case 0: - break; - case 255: - *d = *s; - break; - default: - alpha++; - *d = INTERP_256(alpha, *s, *d); - break; - } - m++; s++; d++; - }); -} - -static void -_op_blend_pan_mas_dp(DATA32 *s, DATA8 *m, DATA32 c __UNUSED__, DATA32 *d, int l) { - DATA32 *e; - int alpha; - UNROLL8_PLD_WHILE(d, l, e, - { - alpha = *m; - switch(alpha) - { - case 0: - break; - case 255: - *d = *s; - break; - default: - alpha++; - *d = INTERP_256(alpha, *s, *d); - break; - } - m++; s++; d++; - }); -} - - -#define _op_blend_p_mas_dpan _op_blend_p_mas_dp -#define _op_blend_pas_mas_dpan _op_blend_pas_mas_dp -#define _op_blend_pan_mas_dpan _op_blend_pan_mas_dp - -static void -init_blend_pixel_mask_span_funcs_c(void) -{ - op_blend_span_funcs[SP][SM_AS][SC_N][DP][CPU_C] = _op_blend_p_mas_dp; - op_blend_span_funcs[SP_AS][SM_AS][SC_N][DP][CPU_C] = _op_blend_pas_mas_dp; - op_blend_span_funcs[SP_AN][SM_AS][SC_N][DP][CPU_C] = _op_blend_pan_mas_dp; - - op_blend_span_funcs[SP][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_p_mas_dpan; - op_blend_span_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_pas_mas_dpan; - op_blend_span_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_pan_mas_dpan; -} -#endif - -#ifdef BUILD_C -static void -_op_blend_pt_p_mas_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) { - s = MUL_SYM(m, s); - c = 256 - (s >> 24); - *d = s + MUL_256(c, *d); -} - -static void -_op_blend_pt_pan_mas_dp(DATA32 s, DATA8 m, DATA32 c __UNUSED__, DATA32 *d) { - *d = INTERP_256(m + 1, s, *d); -} - -#define _op_blend_pt_pas_mas_dp _op_blend_pt_p_mas_dp - -#define _op_blend_pt_p_mas_dpan _op_blend_pt_p_mas_dp -#define _op_blend_pt_pas_mas_dpan _op_blend_pt_pas_mas_dp -#define _op_blend_pt_pan_mas_dpan _op_blend_pt_pan_mas_dp - -static void -init_blend_pixel_mask_pt_funcs_c(void) -{ - op_blend_pt_funcs[SP][SM_AS][SC_N][DP][CPU_C] = _op_blend_pt_p_mas_dp; - op_blend_pt_funcs[SP_AS][SM_AS][SC_N][DP][CPU_C] = _op_blend_pt_pas_mas_dp; - op_blend_pt_funcs[SP_AN][SM_AS][SC_N][DP][CPU_C] = _op_blend_pt_pan_mas_dp; - - op_blend_pt_funcs[SP][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_pt_p_mas_dpan; - op_blend_pt_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_pt_pas_mas_dpan; - op_blend_pt_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_pt_pan_mas_dpan; -} -#endif - -/*-----*/ - -/* blend_rel pixel x mask -> dst */ - -#ifdef BUILD_C -static void -_op_blend_rel_p_mas_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) { - DATA32 *e; - int alpha; - UNROLL8_PLD_WHILE(d, l, e, - { - c = MUL_SYM(*m, *s); - alpha = 256 - (c >> 24); - *d = MUL_SYM(*d >> 24, c) + MUL_256(alpha, *d); - d++; m++; s++; - }); -} - -#define _op_blend_rel_pas_mas_dp _op_blend_rel_p_mas_dp -#define _op_blend_rel_pan_mas_dp _op_blend_rel_p_mas_dp - -#define _op_blend_rel_p_mas_dpan _op_blend_p_mas_dpan -#define _op_blend_rel_pas_mas_dpan _op_blend_pas_mas_dpan -#define _op_blend_rel_pan_mas_dpan _op_blend_pan_mas_dpan - -static void -init_blend_rel_pixel_mask_span_funcs_c(void) -{ - op_blend_rel_span_funcs[SP][SM_AS][SC_N][DP][CPU_C] = _op_blend_rel_p_mas_dp; - op_blend_rel_span_funcs[SP_AS][SM_AS][SC_N][DP][CPU_C] = _op_blend_rel_pas_mas_dp; - op_blend_rel_span_funcs[SP_AN][SM_AS][SC_N][DP][CPU_C] = _op_blend_rel_pan_mas_dp; - - op_blend_rel_span_funcs[SP][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_rel_p_mas_dpan; - op_blend_rel_span_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_rel_pas_mas_dpan; - op_blend_rel_span_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_rel_pan_mas_dpan; -} -#endif - -#ifdef BUILD_C -static void -_op_blend_rel_pt_p_mas_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) { - s = MUL_SYM(m, s); - c = 256 - (s >> 24); - *d = MUL_SYM(*d >> 24, s) + MUL_256(c, *d); -} - -#define _op_blend_rel_pt_pas_mas_dp _op_blend_rel_pt_p_mas_dp -#define _op_blend_rel_pt_pan_mas_dp _op_blend_rel_pt_p_mas_dp - -#define _op_blend_rel_pt_p_mas_dpan _op_blend_pt_p_mas_dpan -#define _op_blend_rel_pt_pas_mas_dpan _op_blend_pt_pas_mas_dpan -#define _op_blend_rel_pt_pan_mas_dpan _op_blend_pt_pan_mas_dpan - -static void -init_blend_rel_pixel_mask_pt_funcs_c(void) -{ - op_blend_rel_pt_funcs[SP][SM_AS][SC_N][DP][CPU_C] = _op_blend_rel_pt_p_mas_dp; - op_blend_rel_pt_funcs[SP_AS][SM_AS][SC_N][DP][CPU_C] = _op_blend_rel_pt_pas_mas_dp; - op_blend_rel_pt_funcs[SP_AN][SM_AS][SC_N][DP][CPU_C] = _op_blend_rel_pt_pan_mas_dp; - - op_blend_rel_pt_funcs[SP][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_rel_pt_p_mas_dpan; - op_blend_rel_pt_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_rel_pt_pas_mas_dpan; - op_blend_rel_pt_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_rel_pt_pan_mas_dpan; -} -#endif diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_mask_i386.c b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_mask_i386.c deleted file mode 100644 index 4fa50a9..0000000 --- a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_mask_i386.c +++ /dev/null @@ -1,157 +0,0 @@ -/* blend pixel x mask --> dst */ - -#ifdef BUILD_MMX -static void -_op_blend_pas_mas_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c __UNUSED__, DATA32 *d, int l) { - DATA32 *e = d + l; - pxor_r2r(mm0, mm0); - MOV_A2R(ALPHA_256, mm6) - while (d < e) { - l = (*s >> 24); - switch(*m & l) - { - case 0: - break; - case 255: - *d = *s; - break; - default: - l = 1 + *m; - MOV_A2R(l, mm3) - MOV_P2R(*s, mm2, mm0) - MUL4_256_R2R(mm3, mm2) - - MOV_RA2R(mm2, mm1) - movq_r2r(mm6, mm3); - psubw_r2r(mm1, mm3); - - MOV_P2R(*d, mm1, mm0) - MUL4_256_R2R(mm3, mm1) - - paddw_r2r(mm2, mm1); - MOV_R2P(mm1, *d, mm0) - break; - } - m++; s++; d++; - } -} - -static void -_op_blend_pan_mas_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c __UNUSED__, DATA32 *d, int l) { - DATA32 *e = d + l; - MOV_A2R(ALPHA_255, mm5) - pxor_r2r(mm0, mm0); - while (d < e) { - l = *m; - switch(l) - { - case 0: - break; - case 255: - *d = *s; - break; - default: - l++; - MOV_A2R(l, mm3) - MOV_P2R(*s, mm2, mm0) - MOV_P2R(*d, mm1, mm0) - INTERP_256_R2R(mm3, mm2, mm1, mm5) - MOV_R2P(mm1, *d, mm0) - break; - } - m++; s++; d++; - } -} - -#define _op_blend_p_mas_dp_mmx _op_blend_pas_mas_dp_mmx - -#define _op_blend_p_mas_dpan_mmx _op_blend_p_mas_dp_mmx -#define _op_blend_pan_mas_dpan_mmx _op_blend_pan_mas_dp_mmx -#define _op_blend_pas_mas_dpan_mmx _op_blend_pas_mas_dp_mmx - -static void -init_blend_pixel_mask_span_funcs_mmx(void) -{ - op_blend_span_funcs[SP][SM_AS][SC_N][DP][CPU_MMX] = _op_blend_p_mas_dp_mmx; - op_blend_span_funcs[SP_AS][SM_AS][SC_N][DP][CPU_MMX] = _op_blend_pas_mas_dp_mmx; - op_blend_span_funcs[SP_AN][SM_AS][SC_N][DP][CPU_MMX] = _op_blend_pan_mas_dp_mmx; - - op_blend_span_funcs[SP][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_blend_p_mas_dpan_mmx; - op_blend_span_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_blend_pas_mas_dpan_mmx; - op_blend_span_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_blend_pan_mas_dpan_mmx; -} -#endif - -#ifdef BUILD_MMX -static void -_op_blend_pt_p_mas_dp_mmx(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) { - c = m + 1; - MOV_A2R(c, mm3) - pxor_r2r(mm0, mm0); - MOV_A2R(ALPHA_256, mm6) - MOV_P2R(s, mm2, mm0) - MUL4_256_R2R(mm3, mm2) - - MOV_RA2R(mm2, mm1) - psubw_r2r(mm1, mm6); - - MOV_P2R(*d, mm1, mm0) - MUL4_256_R2R(mm6, mm1) - - paddw_r2r(mm2, mm1); - MOV_R2P(mm1, *d, mm0) -} - -#define _op_blend_pt_pan_mas_dp_mmx _op_blend_pt_p_mas_dp_mmx -#define _op_blend_pt_pas_mas_dp_mmx _op_blend_pt_p_mas_dp_mmx - -#define _op_blend_pt_p_mas_dpan_mmx _op_blend_pt_p_mas_dp_mmx -#define _op_blend_pt_pas_mas_dpan_mmx _op_blend_pt_pas_mas_dp_mmx -#define _op_blend_pt_pan_mas_dpan_mmx _op_blend_pt_pan_mas_dp_mmx - -static void -init_blend_pixel_mask_pt_funcs_mmx(void) -{ - op_blend_pt_funcs[SP][SM_AS][SC_N][DP][CPU_MMX] = _op_blend_pt_p_mas_dp_mmx; - op_blend_pt_funcs[SP_AS][SM_AS][SC_N][DP][CPU_MMX] = _op_blend_pt_pas_mas_dp_mmx; - op_blend_pt_funcs[SP_AN][SM_AS][SC_N][DP][CPU_MMX] = _op_blend_pt_pan_mas_dp_mmx; - - op_blend_pt_funcs[SP][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_blend_pt_p_mas_dpan_mmx; - op_blend_pt_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_blend_pt_pas_mas_dpan_mmx; - op_blend_pt_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_blend_pt_pan_mas_dpan_mmx; -} -#endif - -/*-----*/ - -/* blend_rel pixel x mask -> dst */ - -#ifdef BUILD_MMX - -#define _op_blend_rel_p_mas_dpan_mmx _op_blend_p_mas_dpan_mmx -#define _op_blend_rel_pas_mas_dpan_mmx _op_blend_pas_mas_dpan_mmx -#define _op_blend_rel_pan_mas_dpan_mmx _op_blend_pan_mas_dpan_mmx - -static void -init_blend_rel_pixel_mask_span_funcs_mmx(void) -{ - op_blend_rel_span_funcs[SP][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_p_mas_dpan_mmx; - op_blend_rel_span_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_pas_mas_dpan_mmx; - op_blend_rel_span_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_pan_mas_dpan_mmx; -} -#endif - -#ifdef BUILD_MMX - -#define _op_blend_rel_pt_p_mas_dpan_mmx _op_blend_pt_p_mas_dpan_mmx -#define _op_blend_rel_pt_pas_mas_dpan_mmx _op_blend_pt_pas_mas_dpan_mmx -#define _op_blend_rel_pt_pan_mas_dpan_mmx _op_blend_pt_pan_mas_dpan_mmx - -static void -init_blend_rel_pixel_mask_pt_funcs_mmx(void) -{ - op_blend_rel_pt_funcs[SP][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_pt_p_mas_dpan_mmx; - op_blend_rel_pt_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_pt_pas_mas_dpan_mmx; - op_blend_rel_pt_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_pt_pan_mas_dpan_mmx; -} -#endif diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_mask_neon.c b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_mask_neon.c deleted file mode 100644 index b252a67..0000000 --- a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_mask_neon.c +++ /dev/null @@ -1,129 +0,0 @@ -/* blend pixel x mask --> dst */ - -#ifdef BUILD_NEON -static void -_op_blend_pas_mas_dp_neon(DATA32 *s, DATA8 *m, DATA32 c __UNUSED__, DATA32 *d, int l) { - DATA32 *e; - int alpha; - UNROLL8_PLD_WHILE(d, l, e, - { - alpha = *m; - switch(alpha) - { - case 0: - break; - case 255: - *d = *s; - break; - default: - alpha++; - *d = INTERP_256(alpha, *s, *d); - break; - } - m++; s++; d++; - }); -} - -static void -_op_blend_pan_mas_dp_neon(DATA32 *s, DATA8 *m, DATA32 c __UNUSED__, DATA32 *d, int l) { - DATA32 *e; - int alpha; - UNROLL8_PLD_WHILE(d, l, e, - { - alpha = *m; - switch(alpha) - { - case 0: - break; - case 255: - *d = *s; - break; - default: - alpha++; - *d = INTERP_256(alpha, *s, *d); - break; - } - m++; s++; d++; - }); -} - -#define _op_blend_p_mas_dp_neon _op_blend_pas_mas_dp_neon - -#define _op_blend_p_mas_dpan_neon _op_blend_p_mas_dp_neon -#define _op_blend_pan_mas_dpan_neon _op_blend_pan_mas_dp_neon -#define _op_blend_pas_mas_dpan_neon _op_blend_pas_mas_dp_neon - -static void -init_blend_pixel_mask_span_funcs_neon(void) -{ - op_blend_span_funcs[SP][SM_AS][SC_N][DP][CPU_NEON] = _op_blend_p_mas_dp_neon; - op_blend_span_funcs[SP_AS][SM_AS][SC_N][DP][CPU_NEON] = _op_blend_pas_mas_dp_neon; - op_blend_span_funcs[SP_AN][SM_AS][SC_N][DP][CPU_NEON] = _op_blend_pan_mas_dp_neon; - - op_blend_span_funcs[SP][SM_AS][SC_N][DP_AN][CPU_NEON] = _op_blend_p_mas_dpan_neon; - op_blend_span_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_NEON] = _op_blend_pas_mas_dpan_neon; - op_blend_span_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_NEON] = _op_blend_pan_mas_dpan_neon; -} -#endif - -#ifdef BUILD_NEON -static void -_op_blend_pt_p_mas_dp_neon(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) { - s = MUL_SYM(m, s); - c = 256 - (s >> 24); - *d = s + MUL_256(c, *d); -} - -#define _op_blend_pt_pan_mas_dp_neon _op_blend_pt_p_mas_dp_neon -#define _op_blend_pt_pas_mas_dp_neon _op_blend_pt_p_mas_dp_neon - -#define _op_blend_pt_p_mas_dpan_neon _op_blend_pt_p_mas_dp_neon -#define _op_blend_pt_pas_mas_dpan_neon _op_blend_pt_pas_mas_dp_neon -#define _op_blend_pt_pan_mas_dpan_neon _op_blend_pt_pan_mas_dp_neon - -static void -init_blend_pixel_mask_pt_funcs_neon(void) -{ - op_blend_pt_funcs[SP][SM_AS][SC_N][DP][CPU_NEON] = _op_blend_pt_p_mas_dp_neon; - op_blend_pt_funcs[SP_AS][SM_AS][SC_N][DP][CPU_NEON] = _op_blend_pt_pas_mas_dp_neon; - op_blend_pt_funcs[SP_AN][SM_AS][SC_N][DP][CPU_NEON] = _op_blend_pt_pan_mas_dp_neon; - - op_blend_pt_funcs[SP][SM_AS][SC_N][DP_AN][CPU_NEON] = _op_blend_pt_p_mas_dpan_neon; - op_blend_pt_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_NEON] = _op_blend_pt_pas_mas_dpan_neon; - op_blend_pt_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_NEON] = _op_blend_pt_pan_mas_dpan_neon; -} -#endif - -/*-----*/ - -/* blend_rel pixel x mask -> dst */ - -#ifdef BUILD_NEON - -#define _op_blend_rel_p_mas_dpan_neon _op_blend_p_mas_dpan_neon -#define _op_blend_rel_pas_mas_dpan_neon _op_blend_pas_mas_dpan_neon -#define _op_blend_rel_pan_mas_dpan_neon _op_blend_pan_mas_dpan_neon - -static void -init_blend_rel_pixel_mask_span_funcs_neon(void) -{ - op_blend_rel_span_funcs[SP][SM_AS][SC_N][DP_AN][CPU_NEON] = _op_blend_rel_p_mas_dpan_neon; - op_blend_rel_span_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_NEON] = _op_blend_rel_pas_mas_dpan_neon; - op_blend_rel_span_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_NEON] = _op_blend_rel_pan_mas_dpan_neon; -} -#endif - -#ifdef BUILD_NEON - -#define _op_blend_rel_pt_p_mas_dpan_neon _op_blend_pt_p_mas_dpan_neon -#define _op_blend_rel_pt_pas_mas_dpan_neon _op_blend_pt_pas_mas_dpan_neon -#define _op_blend_rel_pt_pan_mas_dpan_neon _op_blend_pt_pan_mas_dpan_neon - -static void -init_blend_rel_pixel_mask_pt_funcs_neon(void) -{ - op_blend_rel_pt_funcs[SP][SM_AS][SC_N][DP_AN][CPU_NEON] = _op_blend_rel_pt_p_mas_dpan_neon; - op_blend_rel_pt_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_NEON] = _op_blend_rel_pt_pas_mas_dpan_neon; - op_blend_rel_pt_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_NEON] = _op_blend_rel_pt_pan_mas_dpan_neon; -} -#endif diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_mask_sse3.c b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_mask_sse3.c deleted file mode 100644 index 617b9e2..0000000 --- a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_mask_sse3.c +++ /dev/null @@ -1,300 +0,0 @@ -/* blend pixel x mask --> dst */ - -#ifdef BUILD_SSE3 - -static void -_op_blend_p_mas_dp_sse3(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) { - - int alpha; - - LOOP_ALIGNED_U1_A48_SSE3(d, l, - { /* UOP */ - - alpha = *m; - c = MUL_SYM(alpha, *s); - alpha = 256 - (c >> 24); - *d = c + MUL_256(alpha, *d); - m++; s++; d++; l--; - }, - { /* A4OP */ - - __m128i s0 = _mm_lddqu_si128((__m128i *)s); - __m128i d0 = _mm_load_si128((__m128i *)d); - __m128i m0 = _mm_set_epi32(m[3], m[2], m[1], m[0]); - - __m128i c0 = mul_sym_sse3(m0, s0); - __m128i a0 = sub4_alpha_sse3(c0); - __m128i r0 = mul_256_sse3(a0, d0); - - r0 = _mm_add_epi32(r0, c0); - - _mm_store_si128((__m128i *)d, r0); - - m += 4; s += 4; d += 4; l -= 4; - }, - { /* A8OP */ - - __m128i s0 = _mm_lddqu_si128((__m128i *)s); - __m128i d0 = _mm_load_si128((__m128i *)d); - __m128i m0 = _mm_set_epi32(m[3], m[2], m[1], m[0]); - - __m128i s1 = _mm_lddqu_si128((__m128i *)(s+4)); - __m128i d1 = _mm_load_si128((__m128i *)(d+4)); - __m128i m1 = _mm_set_epi32(m[7], m[6], m[5], m[4]); - - __m128i c0 = mul_sym_sse3(m0, s0); - __m128i c1 = mul_sym_sse3(m1, s1); - - __m128i a0 = sub4_alpha_sse3(c0); - __m128i a1 = sub4_alpha_sse3(c1); - - __m128i r0 = mul_256_sse3(a0, d0); - __m128i r1 = mul_256_sse3(a1, d1); - - r0 = _mm_add_epi32(r0, c0); - r1 = _mm_add_epi32(r1, c1); - - _mm_store_si128((__m128i *)d, r0); - _mm_store_si128((__m128i *)(d+4), r1); - - m += 8; s += 8; d += 8; l -= 8; - }) -} - -static void -_op_blend_pas_mas_dp_sse3(DATA32 *s, DATA8 *m, DATA32 c __UNUSED__, DATA32 *d, int l) { - - const __m128i ones = _mm_set_epi32(1, 1, 1, 1); - int alpha; - - LOOP_ALIGNED_U1_A48_SSE3(d, l, - { /* UOP */ - - alpha = *m; - switch(alpha) - { - case 0: - break; - case 255: - *d = *s; - break; - default: - alpha++; - *d = INTERP_256(alpha, *s, *d); - break; - } - m++; s++; d++; l--; - }, - { /*A4OP */ - - if ((m[3] | m[2] | m[1] | m[0]) == 0) { - m += 4; s += 4; d += 4; l -= 4; - continue; - } - - __m128i s0 = _mm_lddqu_si128((__m128i *)s); - __m128i d0 = _mm_load_si128((__m128i *)d); - __m128i m0 = _mm_set_epi32(m[3], m[2], m[1], m[0]); - - __m128i zm0 = _mm_cmpeq_epi32(m0, _mm_setzero_si128()); - - m0 = _mm_add_epi32(m0, ones); - - __m128i r0 = interp4_256_sse3(m0, s0, d0); - - r0 = _mm_and_si128(~zm0, r0); - d0 = _mm_and_si128(zm0, d0); - - d0 = _mm_add_epi32(r0, d0); - - _mm_store_si128((__m128i *)d, d0); - - m += 4; s += 4; d += 4; l -= 4; - }, - { /* A8OP */ - - if ((m[7] | m[6] | m[5] | m[4] | m[3] | m[2] | m[1] | m[0]) == 0) { - m += 8; s += 8; d += 8; l -= 8; - continue; - } - - __m128i s0 = _mm_lddqu_si128((__m128i *)s); - __m128i d0 = _mm_load_si128((__m128i *)d); - __m128i m0 = _mm_set_epi32(m[3], m[2], m[1], m[0]); - - __m128i s1 = _mm_lddqu_si128((__m128i *)(s+4)); - __m128i d1 = _mm_load_si128((__m128i *)(d+4)); - __m128i m1 = _mm_set_epi32(m[7], m[6], m[5], m[4]); - - __m128i zm0 = _mm_cmpeq_epi32(m0, _mm_setzero_si128()); - __m128i zm1 = _mm_cmpeq_epi32(m1, _mm_setzero_si128()); - - m0 = _mm_add_epi32(m0, ones); - m1 = _mm_add_epi32(m1, ones); - - __m128i r0 = interp4_256_sse3(m0, s0, d0); - __m128i r1 = interp4_256_sse3(m1, s1, d1); - - r0 = _mm_and_si128(~zm0, r0); - d0 = _mm_and_si128(zm0, d0); - - r1 = _mm_and_si128(~zm1, r1); - d1 = _mm_and_si128(zm1, d1); - - d0 = _mm_add_epi32(d0, r0); - d1 = _mm_add_epi32(d1, r1); - - _mm_store_si128((__m128i *)d, d0); - _mm_store_si128((__m128i *)(d+4), d1); - - m += 8; s += 8; d += 8; l -= 8; - }) -} - -#define _op_blend_pan_mas_dp_sse3 _op_blend_pas_mas_dp_sse3 - -#define _op_blend_p_mas_dpan_sse3 _op_blend_p_mas_dp_sse3 -#define _op_blend_pas_mas_dpan_sse3 _op_blend_pas_mas_dp_sse3 -#define _op_blend_pan_mas_dpan_sse3 _op_blend_pan_mas_dp_sse3 - -static void -init_blend_pixel_mask_span_funcs_sse3(void) -{ - op_blend_span_funcs[SP][SM_AS][SC_N][DP][CPU_SSE3] = _op_blend_p_mas_dp_sse3; - op_blend_span_funcs[SP_AS][SM_AS][SC_N][DP][CPU_SSE3] = _op_blend_pas_mas_dp_sse3; - op_blend_span_funcs[SP_AN][SM_AS][SC_N][DP][CPU_SSE3] = _op_blend_pan_mas_dp_sse3; - - op_blend_span_funcs[SP][SM_AS][SC_N][DP_AN][CPU_SSE3] = _op_blend_p_mas_dpan_sse3; - op_blend_span_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_SSE3] = _op_blend_pas_mas_dpan_sse3; - op_blend_span_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_SSE3] = _op_blend_pan_mas_dpan_sse3; -} - -#define _op_blend_pt_p_mas_dp_sse3 NULL -#define _op_blend_pt_pan_mas_dp_sse3 NULL - -#define _op_blend_pt_pas_mas_dp_sse3 _op_blend_pt_p_mas_dp_sse3 - -#define _op_blend_pt_p_mas_dpan_sse3 _op_blend_pt_p_mas_dp_sse3 -#define _op_blend_pt_pas_mas_dpan_sse3 _op_blend_pt_pas_mas_dp_sse3 -#define _op_blend_pt_pan_mas_dpan_sse3 _op_blend_pt_pan_mas_dp_sse3 - -static void -init_blend_pixel_mask_pt_funcs_sse3(void) -{ - op_blend_pt_funcs[SP][SM_AS][SC_N][DP][CPU_SSE3] = _op_blend_pt_p_mas_dp_sse3; - op_blend_pt_funcs[SP_AS][SM_AS][SC_N][DP][CPU_SSE3] = _op_blend_pt_pas_mas_dp_sse3; - op_blend_pt_funcs[SP_AN][SM_AS][SC_N][DP][CPU_SSE3] = _op_blend_pt_pan_mas_dp_sse3; - - op_blend_pt_funcs[SP][SM_AS][SC_N][DP_AN][CPU_SSE3] = _op_blend_pt_p_mas_dpan_sse3; - op_blend_pt_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_SSE3] = _op_blend_pt_pas_mas_dpan_sse3; - op_blend_pt_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_SSE3] = _op_blend_pt_pan_mas_dpan_sse3; -} - -/*-----*/ - -/* blend_rel pixel x mask -> dst */ - -static void -_op_blend_rel_p_mas_dp_sse3(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) { - - int alpha; - - LOOP_ALIGNED_U1_A48_SSE3(d, l, - { /* UOP */ - - c = MUL_SYM(*m, *s); - alpha = 256 - (c >> 24); - *d = MUL_SYM(*d >> 24, c) + MUL_256(alpha, *d); - d++; m++; s++; l--; - }, - { /* A4OP */ - - __m128i s0 = _mm_lddqu_si128((__m128i *)s); - __m128i m0 = _mm_set_epi32(m[3], m[2], m[1], m[0]); - __m128i d0 = _mm_load_si128((__m128i *)d); - - __m128i c0 = mul_sym_sse3(m0, s0); - __m128i a0 = sub4_alpha_sse3(c0); - - __m128i l0 = mul_sym_sse3(_mm_srli_epi32(d0, 24), c0); - __m128i r0 = mul_256_sse3(a0, d0); - - d0 = _mm_add_epi32(l0, r0); - - _mm_store_si128((__m128i *)d, d0); - - d += 4; m += 4; s += 4; l -= 4; - }, - { /* A8OP */ - - __m128i s0 = _mm_lddqu_si128((__m128i *)s); - __m128i m0 = _mm_set_epi32(m[3], m[2], m[1], m[0]); - __m128i d0 = _mm_load_si128((__m128i *)d); - - __m128i s1 = _mm_lddqu_si128((__m128i *)(s+4)); - __m128i m1 = _mm_set_epi32(m[7], m[6], m[5], m[4]); - __m128i d1 = _mm_load_si128((__m128i *)(d+4)); - - __m128i c0 = mul_sym_sse3(m0, s0); - __m128i c1 = mul_sym_sse3(m1, s1); - - __m128i a0 = sub4_alpha_sse3(c0); - __m128i a1 = sub4_alpha_sse3(c1); - - __m128i l0 = mul_sym_sse3(_mm_srli_epi32(d0, 24), c0); - __m128i r0 = mul_256_sse3(a0, d0); - - __m128i l1 = mul_sym_sse3(_mm_srli_epi32(d1, 24), c1); - __m128i r1 = mul_256_sse3(a1, d1); - - d0 = _mm_add_epi32(l0, r0); - d1 = _mm_add_epi32(l1, r1); - - _mm_store_si128((__m128i *)d, d0); - _mm_store_si128((__m128i *)(d+4), d1); - - d += 8; m += 8; s += 8; l -= 8; - }) -} - -#define _op_blend_rel_pas_mas_dp_sse3 _op_blend_rel_p_mas_dp_sse3 -#define _op_blend_rel_pan_mas_dp_sse3 _op_blend_rel_p_mas_dp_sse3 - -#define _op_blend_rel_p_mas_dpan_sse3 _op_blend_p_mas_dpan_sse3 -#define _op_blend_rel_pas_mas_dpan_sse3 _op_blend_pas_mas_dpan_sse3 -#define _op_blend_rel_pan_mas_dpan_sse3 _op_blend_pan_mas_dpan_sse3 - -static void -init_blend_rel_pixel_mask_span_funcs_sse3(void) -{ - op_blend_rel_span_funcs[SP][SM_AS][SC_N][DP][CPU_SSE3] = _op_blend_rel_p_mas_dp_sse3; - op_blend_rel_span_funcs[SP_AS][SM_AS][SC_N][DP][CPU_SSE3] = _op_blend_rel_pas_mas_dp_sse3; - op_blend_rel_span_funcs[SP_AN][SM_AS][SC_N][DP][CPU_SSE3] = _op_blend_rel_pan_mas_dp_sse3; - - op_blend_rel_span_funcs[SP][SM_AS][SC_N][DP_AN][CPU_SSE3] = _op_blend_rel_p_mas_dpan_sse3; - op_blend_rel_span_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_SSE3] = _op_blend_rel_pas_mas_dpan_sse3; - op_blend_rel_span_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_SSE3] = _op_blend_rel_pan_mas_dpan_sse3; -} - -#define _op_blend_rel_pt_p_mas_dp_sse3 NULL - -#define _op_blend_rel_pt_pas_mas_dp_sse3 _op_blend_rel_pt_p_mas_dp_sse3 -#define _op_blend_rel_pt_pan_mas_dp_sse3 _op_blend_rel_pt_p_mas_dp_sse3 - -#define _op_blend_rel_pt_p_mas_dpan_sse3 _op_blend_pt_p_mas_dpan_sse3 -#define _op_blend_rel_pt_pas_mas_dpan_sse3 _op_blend_pt_pas_mas_dpan_sse3 -#define _op_blend_rel_pt_pan_mas_dpan_sse3 _op_blend_pt_pan_mas_dpan_sse3 - -static void -init_blend_rel_pixel_mask_pt_funcs_sse3(void) -{ - op_blend_rel_pt_funcs[SP][SM_AS][SC_N][DP][CPU_SSE3] = _op_blend_rel_pt_p_mas_dp_sse3; - op_blend_rel_pt_funcs[SP_AS][SM_AS][SC_N][DP][CPU_SSE3] = _op_blend_rel_pt_pas_mas_dp_sse3; - op_blend_rel_pt_funcs[SP_AN][SM_AS][SC_N][DP][CPU_SSE3] = _op_blend_rel_pt_pan_mas_dp_sse3; - - op_blend_rel_pt_funcs[SP][SM_AS][SC_N][DP_AN][CPU_SSE3] = _op_blend_rel_pt_p_mas_dpan_sse3; - op_blend_rel_pt_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_SSE3] = _op_blend_rel_pt_pas_mas_dpan_sse3; - op_blend_rel_pt_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_SSE3] = _op_blend_rel_pt_pan_mas_dpan_sse3; -} - -#endif diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_neon.c b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_neon.c deleted file mode 100644 index 1cb50b6..0000000 --- a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_neon.c +++ /dev/null @@ -1,530 +0,0 @@ -/* blend pixel --> dst */ - -#ifdef BUILD_NEON -static void -_op_blend_p_dp_neon(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) { -#define AP "blend_p_dp_" - asm volatile ( - ".fpu neon \n\t" - //** init - "vmov.i8 q8, $0x1 \n\t" - - AP "loopchoose: \n\t" - // If aligned already - straight to octs - "andS %[tmp], %[d],$0x1f \n\t" - "beq "AP"octloops \n\t" - - "andS %[tmp], %[d],$0xf \n\t" - "beq "AP"quadloops \n\t" - - "andS %[tmp], %[d],$0x4 \n\t" - "beq "AP"dualloop \n\t" - - // Only ever executes once, fall through to dual - AP "singleloop: \n\t" - "vld1.32 d0[0], [%[s]]! \n\t" - "vld1.32 d4[0], [%[d]] \n\t" - - "vmvn.u8 d8, d0 \n\t" - "vshr.u32 d8, d8, #24 \n\t" - - "vmul.u32 d8, d16, d8 \n\t" - - "vmull.u8 q6, d4,d8 \n\t" - "vqrshrn.u16 d8, q6, #8 \n\t" - // Add to 's' - "vqadd.u8 q2, q4,q0 \n\t" - - "vst1.32 d4[0], [%[d]] \n\t" - "add %[d], #4 \n\t" - - // Can we go the fast path? - "andS %[tmp], %[d],$0x1f \n\t" - "beq "AP"octloops \n\t" - - "andS %[tmp], %[d],$0x0f \n\t" - "beq "AP"quadloops \n\t" - - - AP "dualloop: \n\t" - "sub %[tmp], %[e], %[d] \n\t" - "cmp %[tmp], #32 \n\t" - "blt "AP"loopout \n\t" - - AP "dualloopint: \n\t" - //** Dual Loop - "vldm %[s]!, {d0} \n\t" - "vldr d4, [%[d]] \n\t" - - "vmvn.u8 d8, d0 \n\t" - "vshr.u32 d8, d8, #24 \n\t" - - "vmul.u32 d8, d16, d8 \n\t" - - "vmull.u8 q6, d4,d8 \n\t" - "vqrshrn.u16 d8, q6, #8 \n\t" - // Add to 's' - "vqadd.u8 d4, d8,d0 \n\t" - "vstr d4, [%[d]] \n\t" - "add %[d], #8 \n\t" - - "ands %[tmp], %[d], $0x1f \n\t" - "beq "AP"octloops \n\t" - - AP"quadloops: \n\t" - "sub %[tmp], %[e], %[d] \n\t" - "cmp %[tmp], #32 \n\t" - "blt "AP"loopout \n\t" - - "vldm %[s]!, {d0,d1) \n\t" - "vldm %[d], {d4,d5} \n\t" - - - // Copy s.a into q2 (>> 24) & subtract from 255 - "vmvn.u8 q4, q0 \n\t" - "vshr.u32 q4, q4,$0x18 \n\t" - - // Multiply into all fields - "vmul.u32 q4, q8,q4 \n\t" - - // a * d (clobbering 'd'/q7) - "vmull.u8 q6, d4,d8 \n\t" - "vmull.u8 q2, d5,d9 \n\t" - - // Shift & narrow it - "vqrshrn.u16 d8, q6, #8 \n\t" - "vqrshrn.u16 d9, q2, #8 \n\t" - - // Add to s - "vqadd.u8 q2, q4,q0 \n\t" - - // Write it - "vstm %[d]!, {d4,d5} \n\t" - - AP "octloops: \n\t" - "sub %[tmp], %[e], %[d] \n\t" - "cmp %[tmp], #32 \n\t" - "ble "AP"loopout \n\t" - - "sub %[tmp],%[e],#64 \n\t" - - - AP "octloopint:\n\t" - //** Oct loop - "vldm %[s]!, {d0,d1,d2,d3) \n\t" - "vldm %[d], {d4,d5,d6,d7} \n\t" - "pld [%[s], #64] \n\t" - - - // Copy s.a into q2 (>> 24) & subtract from 255 - "vmvn.u8 q4, q0 \n\t" - "vmvn.u8 q5, q1 \n\t" - "vshr.u32 q4, q4,$0x18 \n\t" - "vshr.u32 q5, q5,$0x18\n\t" - - // Multiply into all fields - "vmul.u32 q4, q8,q4 \n\t" - "vmul.u32 q5, q8,q5 \n\t" - - - // a * d (clobbering 'd'/q7) - "vmull.u8 q6, d4,d8 \n\t" - "vmull.u8 q2, d5,d9 \n\t" - "vmull.u8 q7, d6,d10 \n\t" - "vmull.u8 q3, d7,d11 \n\t" - - "cmp %[tmp], %[d]\n\t" - - // Shift & narrow it - "vqrshrn.u16 d8, q6, #8 \n\t" - "vqrshrn.u16 d9, q2, #8 \n\t" - "vqrshrn.u16 d10, q7, #8 \n\t" - "vqrshrn.u16 d11, q3, #8 \n\t" - - - // Add to s - "vqadd.u8 q2, q4,q0 \n\t" - "vqadd.u8 q3, q5,q1 \n\t" - - // Write it - "vstm %[d]!, {d4,d5,d6,d7} \n\t" - - "bhi "AP"octloopint\n\t" - - AP "loopout: \n\t" - "cmp %[d], %[e] \n\t" - "beq "AP"done \n\t" - "sub %[tmp],%[e], %[d] \n\t" - "cmp %[tmp],$0x04 \n\t" - "ble "AP"singleloop2 \n\t" - - AP "dualloop2: \n\t" - "sub %[tmp],%[e],$0x7 \n\t" - AP "dualloop2int: \n\t" - //** Trailing double - - "vldm %[s]!, {d0} \n\t" - "vldm %[d], {d4} \n\t" - - "vmvn.u8 d8, d0 \n\t" - "vshr.u32 d8, d8, #24 \n\t" - - "vmul.u32 d8, d16, d8 \n\t" - - "vmull.u8 q6, d4,d8 \n\t" - "vqrshrn.u16 d8, q6, #8 \n\t" - // Add to 's' - "vqadd.u8 d4, d8,d0 \n\t" - - "vstr.32 d4, [%[d]] \n\t" - "add %[d], #8 \n\t" - - "cmp %[tmp], %[d] \n\t" - "bhi "AP"dualloop2int \n\t" - - // Single ?? - "cmp %[e], %[d] \n\t" - "beq "AP"done \n\t" - - AP"singleloop2: \n\t" - "vld1.32 d0[0], [%[s]] \n\t" - "vld1.32 d4[0], [%[d]] \n\t" - - "vmvn.u8 d8, d0 \n\t" - "vshr.u32 d8, d8, #24 \n\t" - - "vmul.u32 d8, d8, d16 \n\t" - - "vmull.u8 q6, d8,d4 \n\t" - "vqrshrn.u16 d8, q6, #8 \n\t" - // Add to 's' - "vqadd.u8 d0, d0,d8 \n\t" - "vst1.32 d0[0], [%[d]] \n\t" - - //** Trailing single - - AP"done:\n\t" -//"sub %[tmp], %[e], #4 \n\t" -//"vmov.i32 d0, $0xffff0000 \n\t" -//"vst1.32 d0[0], [%[tmp]] \n\t" - - - : // output regs - // Input - : [e] "r" (d + l), [d] "r" (d), [s] "r" (s), [c] "r" (c), - [tmp] "r" (7) - : "q0", "q1", "q2","q3", "q4","q5","q6", "q7","q8","memory" // clobbered - ); -#undef AP - -} - -static void -_op_blend_pas_dp_neon(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) { -#define AP "blend_pas_dp_" - DATA32 *e = d + l,*tmp = e + 32,*pl=(void*)912; - asm volatile ( - ".fpu neon \n\t" - "vmov.i8 q8, #1 \n\t" - AP"loopchoose: \n\t" - // If aliged - go as fast we can - "andS %[tmp], %[d], #31 \n\t" - "beq "AP"quadstart \n\t" - - // See if we can at least do our double loop - "andS %[tmp], %[d], $0x7 \n\t" - "beq "AP"dualstart \n\t" - - // Ugly single word version - AP "singleloop: \n\t" - "vld1.32 d0[0], [%[s]]! \n\t" - "vld1.32 d4[0], [%[d]] \n\t" - - "vmvn.u8 d8, d0 \n\t" - - "vshr.u32 d8, d8,$0x18 \n\t" - - // Mulitply into all fields - "vmul.u32 d8, d8, d16 \n\t" - - // Multiply out - "vmull.u8 q6, d8, d4 \n\t" - - "vqrshrn.u16 d8, q6, #8 \n\t" - - // Add to s - "vqadd.u8 d0, d0,d8 \n\t" - "vst1.32 d0[0], [%[d]]! \n\t" - - AP"dualstart: \n\t" - "sub %[tmp], %[e], %[d] \n\t" - "cmp %[tmp], #32 \n\t" - "blt "AP"loopout \n\t" - - // If aligned - go as fast we can - "andS %[tmp], %[d], #31 \n\t" - "beq "AP"quadstart \n\t" - - - AP"dualloop: \n\t" - - "vldm %[s]!, {d0) \n\t" - "vldm %[d], {d4} \n\t" - - // Subtract from 255 (ie negate) and extract alpha channel - "vmvn.u8 d8, d0 \n\t" - "vshr.u32 d8, d8,$0x18 \n\t" - - // Mulitply into all fields - "vmul.u32 d8, d8, d16 \n\t" - - // Multiply out - "vmull.u8 q6, d8, d4 \n\t" - - "vqrshrn.u16 d8, q6, #8 \n\t" - - // Add to s - "vqadd.u8 d0, d0,d8 \n\t" - "vstm %[d]!, {d0} \n\t" - - "andS %[tmp], %[d], $0x1f \n\t" - "bne "AP"dualloop \n\t" - - - AP"quadstart: \n\t" - "sub %[tmp], %[e], %[d] \n\t" - "cmp %[tmp], #32 \n\t" - "blt "AP"loopout \n\t" - - "sub %[tmp], %[e], #31 \n\t" - - AP"quadloop:\n\t" - "vldm %[s]!, {d0,d1,d2,d3) \n\t" - "vldm %[d], {d4,d5,d6,d7} \n\t" - - // Subtract from 255 (ie negate) and extract alpha channel - "vmvn.u8 q4, q0 \n\t" - "vmvn.u8 q5, q1 \n\t" - "vshr.u32 q4, q4,$0x18 \n\t" - "vshr.u32 q5, q5,$0x18 \n\t" - - // Prepare to preload - "add %[pl], %[s], #32 \n\t" - - // Mulitply into all fields - "vmul.u32 q4, q4, q8 \n\t" - "vmul.u32 q5, q5, q8 \n\t" - "pld [%[pl]] \n\t" - - // Multiply out - "vmull.u8 q6, d8, d4 \n\t" - "vmull.u8 q7, d10, d6 \n\t" - "vmull.u8 q2, d9, d5 \n\t" - "vmull.u8 q3, d11, d7 \n\t" - - "add %[pl], %[d], #32 \n\t" - - "vqrshrn.u16 d8, q6, #8 \n\t" - "vqrshrn.u16 d10, q7, #8 \n\t" - "vqrshrn.u16 d9, q2, #8 \n\t" - "vqrshrn.u16 d11, q3, #8 \n\t" - "pld [%[pl]] \n\t" - - "cmp %[tmp], %[pl] \n\t" - // Add to s - "vqadd.u8 q0, q0,q4 \n\t" - "vqadd.u8 q1, q1,q5 \n\t" - - "vstm %[d]!, {d0,d1,d2,d3} \n\t" - - "bhi "AP"quadloop \n\t" - - AP "loopout: \n\t" - "cmp %[d], %[e] \n\t" - "beq "AP"done \n\t" - - "sub %[tmp],%[e], %[d] \n\t" - "cmp %[tmp],$0x04 \n\t" - "beq "AP"singleloop2 \n\t" - - "sub %[tmp],%[e],$0x7 \n\t" - - AP"dualloop2: \n\t" - "vldm %[s]!, {d0) \n\t" - "vldm %[d], {d4} \n\t" - - // Subtract from 255 (ie negate) and extract alpha channel - "vmvn.u8 d8, d0 \n\t" - "vshr.u32 d8, d8,$0x18 \n\t" - - // Mulitply into all fields - "vmul.u32 d8, d8, d16 \n\t" - - // Multiply out - "vmull.u8 q6, d8, d4 \n\t" - - "vqrshrn.u16 d8, q6, #8 \n\t" - - // Add to s - "vqadd.u8 d0, d0,d8 \n\t" - - "vstm %[d]!, {d0} \n\t" - "cmp %[tmp], %[d] \n\t" - - "bhi "AP"dualloop2 \n\t" - - // Single ?? - "cmp %[e], %[d] \n\t" - "beq "AP"done \n\t" - - AP "singleloop2: \n\t" - "vld1.32 d0[0], [%[s]] \n\t" - "vld1.32 d4[0], [%[d]] \n\t" - - "vmvn.u8 d8, d0 \n\t" - - "vshr.u32 d8, d8,$0x18 \n\t" - - // Mulitply into all fields - "vmul.u32 d8, d8, d16 \n\t" - - // Multiply out - "vmull.u8 q6, d8, d4 \n\t" - - "vqrshrn.u16 d8, q6, #8 \n\t" - - // Add to s - "vqadd.u8 d0, d0,d8 \n\t" - - "vst1.32 d0[0], [%[d]] \n\t" - AP "done:\n\t" - - - : /* Out */ - : /* In */ [s] "r" (s), [e] "r" (e), [d] "r" (d), [tmp] "r" (tmp), - [pl] "r" (pl) - : /* Clobbered */ - "q0","q1","q2","q3","q4","q5","q6","q7","q8","memory" - ); -#undef AP -} - -#define _op_blend_pan_dp_neon NULL - -#define _op_blend_p_dpan_neon _op_blend_p_dp_neon -#define _op_blend_pas_dpan_neon _op_blend_pas_dp_neon -#define _op_blend_pan_dpan_neon _op_blend_pan_dp_neon - -static void -init_blend_pixel_span_funcs_neon(void) -{ - op_blend_span_funcs[SP][SM_N][SC_N][DP][CPU_NEON] = _op_blend_p_dp_neon; - op_blend_span_funcs[SP_AS][SM_N][SC_N][DP][CPU_NEON] = _op_blend_pas_dp_neon; - op_blend_span_funcs[SP_AN][SM_N][SC_N][DP][CPU_NEON] = _op_blend_pan_dp_neon; - - op_blend_span_funcs[SP][SM_N][SC_N][DP_AN][CPU_NEON] = _op_blend_p_dpan_neon; - op_blend_span_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_NEON] = _op_blend_pas_dpan_neon; - op_blend_span_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_NEON] = _op_blend_pan_dpan_neon; -} -#endif - -#ifdef BUILD_NEON -static void -_op_blend_pt_p_dp_neon(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) { - c = 256 - (s >> 24); - *d = s + MUL_256(c, *d); -} - - -#define _op_blend_pt_pan_dp_neon NULL -#define _op_blend_pt_pas_dp_neon _op_blend_pt_p_dp_neon - -#define _op_blend_pt_p_dpan_neon _op_blend_pt_p_dp_neon -#define _op_blend_pt_pan_dpan_neon _op_blend_pt_pan_dp_neon -#define _op_blend_pt_pas_dpan_neon _op_blend_pt_pas_dp_neon - -static void -init_blend_pixel_pt_funcs_neon(void) -{ - op_blend_pt_funcs[SP][SM_N][SC_N][DP][CPU_NEON] = _op_blend_pt_p_dp_neon; - op_blend_pt_funcs[SP_AS][SM_N][SC_N][DP][CPU_NEON] = _op_blend_pt_pas_dp_neon; - op_blend_pt_funcs[SP_AN][SM_N][SC_N][DP][CPU_NEON] = _op_blend_pt_pan_dp_neon; - - op_blend_pt_funcs[SP][SM_N][SC_N][DP_AN][CPU_NEON] = _op_blend_pt_p_dpan_neon; - op_blend_pt_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_NEON] = _op_blend_pt_pas_dpan_neon; - op_blend_pt_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_NEON] = _op_blend_pt_pan_dpan_neon; -} -#endif - -/*-----*/ - -/* blend_rel pixel -> dst */ - -#ifdef BUILD_NEON -static void -_op_blend_rel_p_dp_neon(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) { - DATA32 *e = d + l; - while (d < e) { - l = 256 - (*s >> 24); - c = 1 + (*d >> 24); - *d = MUL_256(c, *s) + MUL_256(l, *d); - d++; - s++; - } -} - -static void -_op_blend_rel_pan_dp_neon(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) { - DATA32 *e = d + l; - while (d < e) { - c = 1 + (*d >> 24); - *d++ = MUL_256(c, *s); - s++; - } -} - -#define _op_blend_rel_pas_dp_neon _op_blend_rel_p_dp_neon - -#define _op_blend_rel_p_dpan_neon _op_blend_p_dpan_neon -#define _op_blend_rel_pan_dpan_neon _op_blend_pan_dpan_neon -#define _op_blend_rel_pas_dpan_neon _op_blend_pas_dpan_neon - -static void -init_blend_rel_pixel_span_funcs_neon(void) -{ - op_blend_rel_span_funcs[SP][SM_N][SC_N][DP][CPU_NEON] = _op_blend_rel_p_dp_neon; - op_blend_rel_span_funcs[SP_AS][SM_N][SC_N][DP][CPU_NEON] = _op_blend_rel_pas_dp_neon; - op_blend_rel_span_funcs[SP_AN][SM_N][SC_N][DP][CPU_NEON] = _op_blend_rel_pan_dp_neon; - - op_blend_rel_span_funcs[SP][SM_N][SC_N][DP_AN][CPU_NEON] = _op_blend_rel_p_dpan_neon; - op_blend_rel_span_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_NEON] = _op_blend_rel_pas_dpan_neon; - op_blend_rel_span_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_NEON] = _op_blend_rel_pan_dpan_neon; -} -#endif - -#ifdef BUILD_NEON -static void -_op_blend_rel_pt_p_dp_neon(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) { - c = 256 - (s >> 24); - *d = MUL_SYM(*d >> 24, s) + MUL_256(c, *d); -} - -#define _op_blend_rel_pt_pas_dp_neon _op_blend_rel_pt_p_dp_neon -#define _op_blend_rel_pt_pan_dp_neon _op_blend_rel_pt_p_dp_neon - -#define _op_blend_rel_pt_p_dpan_neon _op_blend_pt_p_dpan_neon -#define _op_blend_rel_pt_pas_dpan_neon _op_blend_pt_pas_dpan_neon -#define _op_blend_rel_pt_pan_dpan_neon _op_blend_pt_pan_dpan_neon - -static void -init_blend_rel_pixel_pt_funcs_neon(void) -{ - op_blend_rel_pt_funcs[SP][SM_N][SC_N][DP][CPU_NEON] = _op_blend_rel_pt_p_dp_neon; - op_blend_rel_pt_funcs[SP_AS][SM_N][SC_N][DP][CPU_NEON] = _op_blend_rel_pt_pas_dp_neon; - op_blend_rel_pt_funcs[SP_AN][SM_N][SC_N][DP][CPU_NEON] = _op_blend_rel_pt_pan_dp_neon; - - op_blend_rel_pt_funcs[SP][SM_N][SC_N][DP_AN][CPU_NEON] = _op_blend_rel_pt_p_dpan_neon; - op_blend_rel_pt_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_NEON] = _op_blend_rel_pt_pas_dpan_neon; - op_blend_rel_pt_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_NEON] = _op_blend_rel_pt_pan_dpan_neon; -} -#endif diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_sse3.c b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_sse3.c deleted file mode 100644 index 69c597c..0000000 --- a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_pixel_sse3.c +++ /dev/null @@ -1,315 +0,0 @@ -/* blend pixel --> dst */ - -#ifdef BUILD_SSE3 - -static void -_op_blend_p_dp_sse3(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c __UNUSED__, DATA32 *d, int l) { - - LOOP_ALIGNED_U1_A48_SSE3(d, l, - { /* UOP */ - - int alpha = 256 - (*s >> 24); - *d = *s + MUL_256(alpha, *d); - s++; d++; l--; - }, - { /* A4OP */ - - __m128i s0 = _mm_lddqu_si128((__m128i *)s); - __m128i d0 = _mm_load_si128((__m128i *)d); - - __m128i a0 = sub4_alpha_sse3(s0); - __m128i mul0 = mul_256_sse3(a0, d0); - d0 = _mm_add_epi32(mul0, s0); - - _mm_store_si128((__m128i *)d, d0); - - s += 4; d += 4; l -= 4; - }, - { /* A8OP */ - - __m128i s0 = _mm_lddqu_si128((__m128i *)s); - __m128i d0 = _mm_load_si128((__m128i *)d); - - __m128i s1 = _mm_lddqu_si128((__m128i *)(s+4)); - __m128i d1 = _mm_load_si128((__m128i *)(d+4)); - - __m128i a0 = sub4_alpha_sse3(s0); - __m128i a1 = sub4_alpha_sse3(s1); - - __m128i mul0 = mul_256_sse3(a0, d0); - __m128i mul1 = mul_256_sse3(a1, d1); - - d0 = _mm_add_epi32(mul0, s0); - d1 = _mm_add_epi32(mul1, s1); - - _mm_store_si128((__m128i *)d, d0); - _mm_store_si128((__m128i *)(d+4), d1); - - s += 8; d += 8; l -= 8; - }) -} - -static void -_op_blend_pas_dp_sse3(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c __UNUSED__, DATA32 *d, int l) { - - int alpha; - - const __m128i zero = _mm_setzero_si128(); - - LOOP_ALIGNED_U1_A48_SSE3(d, l, - { /* UOP */ - switch (*s & 0xff000000) - { - case 0: - break; - case 0xff000000: - *d = *s; - break; - default: - alpha = 256 - (*s >> 24); - *d = *s + MUL_256(alpha, *d); - break; - } - s++; d++; l--; - }, - { /* A4OP */ - - __m128i s0 = _mm_lddqu_si128((__m128i *)s); - __m128i d0 = _mm_load_si128((__m128i *)d); - - __m128i a0 = sub4_alpha_sse3(s0); - __m128i mul0 = mul_256_sse3(a0, d0); - - mul0 = _mm_add_epi32(s0, mul0); - - __m128i zmask0 = _mm_cmpeq_epi32(_mm_srli_epi32(s0, 24), zero); - __m128i imask0 = ~zmask0; - - mul0 = _mm_and_si128(imask0, mul0); - d0 = _mm_and_si128(zmask0, d0); - - d0 = _mm_add_epi32(mul0, d0); - - _mm_store_si128((__m128i *)d, d0); - - s += 4; d += 4; l -= 4; - }, - { /* A8OP */ - - __m128i s0 = _mm_lddqu_si128((__m128i *)s); - __m128i d0 = _mm_load_si128((__m128i *)d); - - __m128i s1 = _mm_lddqu_si128((__m128i *)(s+4)); - __m128i d1 = _mm_load_si128((__m128i *)(d+4)); - - __m128i a0 = sub4_alpha_sse3(s0); - __m128i a1 = sub4_alpha_sse3(s1); - - __m128i mul0 = mul_256_sse3(a0, d0); - __m128i mul1 = mul_256_sse3(a1, d1); - - mul0 = _mm_add_epi32(s0, mul0); - mul1 = _mm_add_epi32(s1, mul1); - - __m128i zmask0 = _mm_cmpeq_epi32(_mm_srli_epi32(s0, 24), zero); - __m128i zmask1 = _mm_cmpeq_epi32(_mm_srli_epi32(s1, 24), zero); - - __m128i imask0 = ~zmask0; - __m128i imask1 = ~zmask1; - - mul0 = _mm_and_si128(imask0, mul0); - d0 = _mm_and_si128(zmask0, d0); - - mul1 = _mm_and_si128(imask1, mul1); - d1 = _mm_and_si128(zmask1, d1); - - d0 = _mm_add_epi32(mul0, d0); - d1 = _mm_add_epi32(mul1, d1); - - _mm_store_si128((__m128i *)d, d0); - _mm_store_si128((__m128i *)(d+4), d1); - - s += 8; d += 8; l -= 8; - }) -} - -#define _op_blend_pan_dp_sse3 NULL - -#define _op_blend_p_dpan_sse3 _op_blend_p_dp_sse3 -#define _op_blend_pas_dpan_sse3 _op_blend_pas_dp_sse3 -#define _op_blend_pan_dpan_sse3 _op_blend_pan_dp_sse3 - -static void -init_blend_pixel_span_funcs_sse3(void) -{ - op_blend_span_funcs[SP][SM_N][SC_N][DP][CPU_SSE3] = _op_blend_p_dp_sse3; - op_blend_span_funcs[SP_AS][SM_N][SC_N][DP][CPU_SSE3] = _op_blend_pas_dp_sse3; - op_blend_span_funcs[SP_AN][SM_N][SC_N][DP][CPU_SSE3] = _op_blend_pan_dp_sse3; - -// FIXME: BUGGY BUGGY Core i5 750 (32bit), 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4), ello (text and rectangle) -// op_blend_span_funcs[SP][SM_N][SC_N][DP_AN][CPU_SSE3] = _op_blend_p_dpan_sse3; - op_blend_span_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_SSE3] = _op_blend_pas_dpan_sse3; - op_blend_span_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_SSE3] = _op_blend_pan_dpan_sse3; -} - -#define _op_blend_pt_p_dp_sse3 NULL - -#define _op_blend_pt_pas_dp_sse3 _op_blend_pt_p_dp_sse3 -#define _op_blend_pt_pan_dp_sse3 NULL - -#define _op_blend_pt_p_dpan_sse3 _op_blend_pt_p_dp_sse3 -#define _op_blend_pt_pan_dpan_sse3 _op_blend_pt_pan_dp_sse3 -#define _op_blend_pt_pas_dpan_sse3 _op_blend_pt_pas_dp_sse3 - -static void -init_blend_pixel_pt_funcs_sse3(void) -{ - op_blend_pt_funcs[SP][SM_N][SC_N][DP][CPU_SSE3] = _op_blend_pt_p_dp_sse3; - op_blend_pt_funcs[SP_AS][SM_N][SC_N][DP][CPU_SSE3] = _op_blend_pt_pas_dp_sse3; - op_blend_pt_funcs[SP_AN][SM_N][SC_N][DP][CPU_SSE3] = _op_blend_pt_pan_dp_sse3; - - op_blend_pt_funcs[SP][SM_N][SC_N][DP_AN][CPU_SSE3] = _op_blend_pt_p_dpan_sse3; - op_blend_pt_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_SSE3] = _op_blend_pt_pas_dpan_sse3; - op_blend_pt_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_SSE3] = _op_blend_pt_pan_dpan_sse3; -} - -/*-----*/ - -/* blend_rel pixel -> dst */ - -static void -_op_blend_rel_p_dp_sse3(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) { - - const __m128i ones = _mm_set_epi32(1, 1, 1, 1); - - LOOP_ALIGNED_U1_A48_SSE3(d, l, - { /* UOP */ - - int alpha = 256 - (*s >> 24); - c = 1 + (*d >> 24); - *d = MUL_256(c, *s) + MUL_256(alpha, *d); - d++; s++; l--; - }, - { /*A4OP */ - - __m128i s0 = _mm_lddqu_si128((__m128i *)s); - __m128i d0 = _mm_load_si128((__m128i *)d); - - __m128i c0 = _mm_add_epi32(_mm_srli_epi32(d0, 24), ones); - __m128i a0 = sub4_alpha_sse3(s0); - - d0 = _mm_add_epi32(mul_256_sse3(c0, s0), mul_256_sse3(a0, d0)); - - _mm_store_si128((__m128i *)d, d0); - - d += 4; s += 4; l -= 4; - }, - { /* A8OP */ - - __m128i s0 = _mm_lddqu_si128((__m128i *)s); - __m128i d0 = _mm_load_si128 ((__m128i *)d); - - __m128i s1 = _mm_lddqu_si128((__m128i *)(s+4)); - __m128i d1 = _mm_load_si128 ((__m128i *)(d+4)); - - __m128i c0 = _mm_add_epi32(_mm_srli_epi32(d0, 24), ones); - __m128i c1 = _mm_add_epi32(_mm_srli_epi32(d1, 24), ones); - - __m128i a0 = sub4_alpha_sse3(s0); - __m128i a1 = sub4_alpha_sse3(s1); - - d0 = _mm_add_epi32(mul_256_sse3(c0, s0), mul_256_sse3(a0, d0)); - d1 = _mm_add_epi32(mul_256_sse3(c1, s1), mul_256_sse3(a1, d1)); - - _mm_store_si128((__m128i *)d, d0); - _mm_store_si128((__m128i *)(d+4), d1); - - d += 8; s += 8; l -= 8; - }) -} - -static void -_op_blend_rel_pan_dp_sse3(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) { - - const __m128i ones = _mm_set_epi32(1, 1, 1, 1); - - LOOP_ALIGNED_U1_A48_SSE3(d, l, - { /* UOP */ - - c = 1 + (*d >> 24); - *d++ = MUL_256(c, *s); - s++; l--; - }, - { /* A4OP */ - - __m128i s0 = _mm_lddqu_si128((__m128i *)s); - __m128i d0 = _mm_load_si128((__m128i *)d); - - __m128i c0 = _mm_add_epi32(_mm_srli_epi32(d0, 24), ones); - d0 = mul_256_sse3(c0, s0); - - _mm_store_si128((__m128i *)d, d0); - - d += 4; s += 4; l -= 4; - }, - { /* A8OP */ - - __m128i s0 = _mm_lddqu_si128((__m128i *)s); - __m128i d0 = _mm_load_si128 ((__m128i *)d); - - __m128i s1 = _mm_lddqu_si128((__m128i *)(s+4)); - __m128i d1 = _mm_load_si128 ((__m128i *)(d+4)); - - __m128i c0 = _mm_add_epi32(_mm_srli_epi32(d0, 24), ones); - __m128i c1 = _mm_add_epi32(_mm_srli_epi32(d1, 24), ones); - - d0 = mul_256_sse3(c0, s0); - d1 = mul_256_sse3(c1, s1); - - _mm_store_si128((__m128i *)d, d0); - _mm_store_si128((__m128i *)(d+4), d1); - - d += 8; s += 8; l -= 8; - }) -} - -#define _op_blend_rel_pas_dp_sse3 _op_blend_rel_p_dp_sse3 - -#define _op_blend_rel_p_dpan_sse3 _op_blend_p_dpan_sse3 -#define _op_blend_rel_pan_dpan_sse3 _op_blend_pan_dpan_sse3 -#define _op_blend_rel_pas_dpan_sse3 _op_blend_pas_dpan_sse3 - -static void -init_blend_rel_pixel_span_funcs_sse3(void) -{ - op_blend_rel_span_funcs[SP][SM_N][SC_N][DP][CPU_SSE3] = _op_blend_rel_p_dp_sse3; - op_blend_rel_span_funcs[SP_AS][SM_N][SC_N][DP][CPU_SSE3] = _op_blend_rel_pas_dp_sse3; - op_blend_rel_span_funcs[SP_AN][SM_N][SC_N][DP][CPU_SSE3] = _op_blend_rel_pan_dp_sse3; - - op_blend_rel_span_funcs[SP][SM_N][SC_N][DP_AN][CPU_SSE3] = _op_blend_rel_p_dpan_sse3; - op_blend_rel_span_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_SSE3] = _op_blend_rel_pas_dpan_sse3; - op_blend_rel_span_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_SSE3] = _op_blend_rel_pan_dpan_sse3; -} - -#define _op_blend_rel_pt_p_dp_sse3 NULL -#define _op_blend_rel_pt_pan_dp_sse3 NULL - -#define _op_blend_rel_pt_pas_dp_sse3 _op_blend_rel_pt_p_dp_sse3 - -#define _op_blend_rel_pt_p_dpan_sse3 _op_blend_pt_p_dpan_sse3 -#define _op_blend_rel_pt_pan_dpan_sse3 _op_blend_pt_pan_dpan_sse3 -#define _op_blend_rel_pt_pas_dpan_sse3 _op_blend_pt_pas_dpan_sse3 - -static void -init_blend_rel_pixel_pt_funcs_sse3(void) -{ - op_blend_rel_pt_funcs[SP][SM_N][SC_N][DP][CPU_SSE3] = _op_blend_rel_pt_p_dp_sse3; - op_blend_rel_pt_funcs[SP_AS][SM_N][SC_N][DP][CPU_SSE3] = _op_blend_rel_pt_pas_dp_sse3; - op_blend_rel_pt_funcs[SP_AN][SM_N][SC_N][DP][CPU_SSE3] = _op_blend_rel_pt_pan_dp_sse3; - - op_blend_rel_pt_funcs[SP][SM_N][SC_N][DP_AN][CPU_SSE3] = _op_blend_rel_pt_p_dpan_sse3; - op_blend_rel_pt_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_SSE3] = _op_blend_rel_pt_pas_dpan_sse3; - op_blend_rel_pt_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_SSE3] = _op_blend_rel_pt_pan_dpan_sse3; -} - -#endif -- cgit v1.1