generate smaller tables and less code. Now takes real command line

* app/composite/make-installer.py: generate smaller tables and
  less code.  Now takes real command line options:
  options:
    --version                        show program's version number and exit
    -h, --help                       show this help message and exit
    -f FILE, --file=FILE             the input object file
    -t, --test                       generate regression testing code
    -r REQUIRES, --requires=REQUIRES cpp #if conditionals

  See Makefile.am for how I use these options to generate the code.

* app/composite/gimp-composite-altivec-{installer,test}.c:
* app/composite/gimp-composite-generic-{installer,test}.c:
* app/composite/gimp-composite-mmx-{installer,test}.c
* app/composite/gimp-composite-sse-{installer,test}.c:
* app/composite/gimp-composite-vis-{installer,test}.c: regenerated
  with smaller tables and less ode.
This commit is contained in:
Helvetix Victorinox 2003-08-15 04:31:18 +00:00
parent 4b91dd342d
commit 0af62f01bf
9 changed files with 1985 additions and 2663 deletions

View File

@ -1,3 +1,24 @@
2003-08-14 Helvetix Victorinox <helvetix@gimp.org>
* app/composite/make-installer.py: generate smaller tables and
less code. Now takes real command line options:
options:
--version show program's version number and exit
-h, --help show this help message and exit
-f FILE, --file=FILE the input object file
-t, --test generate regression testing code
-r REQUIRES, --requires=REQUIRES cpp #if conditionals
See Makefile.am for how I use these options to generate the code.
* app/composite/gimp-composite-altivec-{installer,test}.c:
* app/composite/gimp-composite-generic-{installer,test}.c:
* app/composite/gimp-composite-mmx-{installer,test}.c
* app/composite/gimp-composite-sse-{installer,test}.c:
* app/composite/gimp-composite-vis-{installer,test}.c: regenerated
with smaller tables and less ode.
2003-08-14 Tor Lillqvist <tml@iki.fi>
* app/base/base.c (base_init): If a development version (odd

View File

@ -49,11 +49,11 @@ libappcomposite_a_built_sources = \
libappcomposite_a_SOURCES = $(libappcomposite_a_built_sources) $(libappcomposite_a_sources)
regenerate: gimp-composite-generic.o gimp-composite-mmx.o gimp-composite-sse.o gimp-composite-altivec.o gimp-composite-vis.o
$(srcdir)/make-installer.py gimp-composite-generic.o
$(srcdir)/make-installer.py gimp-composite-mmx.o
$(srcdir)/make-installer.py gimp-composite-sse.o
$(srcdir)/make-installer.py gimp-composite-altivec.o
$(srcdir)/make-installer.py gimp-composite-vis.o
$(srcdir)/make-installer.py -t -f gimp-composite-generic.o
$(srcdir)/make-installer.py -t -r '(__GNUC__ >= 3) && defined(USE_MMX) && defined(ARCH_X86)' -f gimp-composite-mmx.o
$(srcdir)/make-installer.py -t -r '(__GNUC__ >= 3) && defined(USE_MMX) && defined(ARCH_X86)' -f gimp-composite-sse.o
$(srcdir)/make-installer.py -t -r '(__GNUC__ >= 3) && defined(USE_MMX) && defined(ARCH_PPC)' -f gimp-composite-altivec.o
$(srcdir)/make-installer.py -t -r '(__GNUC__ >= 3) && (defined(sparc) || defined(__sparc__))' -f gimp-composite-vis.o
EXTRA_DIST = \
make-installer.py \

View File

@ -1,5 +1,5 @@
/* THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT */
/* REGENERATE BY EXECUTING: make-installer.py gimp-composite-altivec.o */
/* REGENERATE BY USING make-installer.py */
#include "config.h"
#include <glib-object.h>
#include <stdlib.h>
@ -9,11 +9,6 @@
#include "gimp-composite-altivec.h"
/*
* No
* static void (*gimp_composite_altivec[GIMP_COMPOSITE_N][GIMP_PIXELFORMAT_N][GIMP_PIXELFORMAT_N][GIMP_PIXELFORMAT_N])
* table to define
*/
void
gimp_composite_altivec_install (void)

File diff suppressed because it is too large Load Diff

View File

@ -1143,10 +1143,6 @@ gimp_composite_generic_init(void)
GRand *gr;
#define RANDOM_SEED 314159265
if (gimp_composite_options.bits & GIMP_COMPOSITE_OPTION_VERBOSE) {
printf("gimp_composite_generic_init:\n");
}
/* generate a table of random seeds */
gr = g_rand_new_with_seed(RANDOM_SEED);

View File

@ -1,5 +1,5 @@
/* THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT */
/* REGENERATE BY EXECUTING: make-installer.py gimp-composite-mmx.o */
/* REGENERATE BY USING make-installer.py */
#include "config.h"
#include <glib-object.h>
#include <stdlib.h>
@ -9,873 +9,38 @@
#include "gimp-composite-mmx.h"
#ifdef USE_MMX
#ifdef ARCH_X86
#if __GNUC__ >= 3
static void (*gimp_composite_mmx[GIMP_COMPOSITE_N][GIMP_PIXELFORMAT_N][GIMP_PIXELFORMAT_N][GIMP_PIXELFORMAT_N])(GimpCompositeContext *) = {
{ /* GIMP_COMPOSITE_NORMAL */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
{ /* GIMP_COMPOSITE_DISSOLVE */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
{ /* GIMP_COMPOSITE_BEHIND */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
{ /* GIMP_COMPOSITE_MULTIPLY */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, gimp_composite_multiply_rgba8_rgba8_rgba8_mmx, },
},
},
{ /* GIMP_COMPOSITE_SCREEN */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, gimp_composite_screen_rgba8_rgba8_rgba8_mmx, },
},
},
{ /* GIMP_COMPOSITE_OVERLAY */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
{ /* GIMP_COMPOSITE_DIFFERENCE */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, gimp_composite_difference_rgba8_rgba8_rgba8_mmx, },
},
},
{ /* GIMP_COMPOSITE_ADDITION */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, gimp_composite_addition_rgba8_rgba8_rgba8_mmx, },
},
},
{ /* GIMP_COMPOSITE_SUBTRACT */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, gimp_composite_subtract_rgba8_rgba8_rgba8_mmx, },
},
},
{ /* GIMP_COMPOSITE_DARKEN */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, gimp_composite_darken_rgba8_rgba8_rgba8_mmx, },
},
},
{ /* GIMP_COMPOSITE_LIGHTEN */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, gimp_composite_lighten_rgba8_rgba8_rgba8_mmx, },
},
},
{ /* GIMP_COMPOSITE_HUE */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
{ /* GIMP_COMPOSITE_SATURATION */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
{ /* GIMP_COMPOSITE_COLOR_ONLY */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
{ /* GIMP_COMPOSITE_VALUE */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
{ /* GIMP_COMPOSITE_DIVIDE */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, gimp_composite_divide_rgba8_rgba8_rgba8_mmx, },
},
},
{ /* GIMP_COMPOSITE_DODGE */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, gimp_composite_dodge_rgba8_rgba8_rgba8_mmx, },
},
},
{ /* GIMP_COMPOSITE_BURN */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, gimp_composite_burn_rgba8_rgba8_rgba8_mmx, },
},
},
{ /* GIMP_COMPOSITE_HARDLIGHT */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
{ /* GIMP_COMPOSITE_SOFTLIGHT */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
{ /* GIMP_COMPOSITE_GRAIN_EXTRACT */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
{ /* GIMP_COMPOSITE_GRAIN_MERGE */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
{ /* GIMP_COMPOSITE_COLOR_ERASE */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
{ /* GIMP_COMPOSITE_ERASE */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
{ /* GIMP_COMPOSITE_REPLACE */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
{ /* GIMP_COMPOSITE_ANTI_ERASE */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
{ /* GIMP_COMPOSITE_BLEND */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
{ /* GIMP_COMPOSITE_SHADE */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
{ /* GIMP_COMPOSITE_SWAP */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, gimp_composite_swap_rgba8_rgba8_rgba8_mmx, },
},
},
{ /* GIMP_COMPOSITE_SCALE */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, gimp_composite_scale_rgba8_rgba8_rgba8_mmx, },
},
},
{ /* GIMP_COMPOSITE_CONVERT */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
{ /* GIMP_COMPOSITE_XOR */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
static struct install_table {
GimpCompositeOperation mode;
GimpPixelFormat A;
GimpPixelFormat B;
GimpPixelFormat D;
void (*function)(GimpCompositeContext *);
} _gimp_composite_mmx[] = {
#if (__GNUC__ >= 3) && defined(USE_MMX) && defined(ARCH_X86)
{ GIMP_COMPOSITE_MULTIPLY, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, gimp_composite_multiply_rgba8_rgba8_rgba8_mmx },
{ GIMP_COMPOSITE_SCREEN, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, gimp_composite_screen_rgba8_rgba8_rgba8_mmx },
{ GIMP_COMPOSITE_DIFFERENCE, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, gimp_composite_difference_rgba8_rgba8_rgba8_mmx },
{ GIMP_COMPOSITE_ADDITION, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, gimp_composite_addition_rgba8_rgba8_rgba8_mmx },
{ GIMP_COMPOSITE_SUBTRACT, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, gimp_composite_subtract_rgba8_rgba8_rgba8_mmx },
{ GIMP_COMPOSITE_DARKEN, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, gimp_composite_darken_rgba8_rgba8_rgba8_mmx },
{ GIMP_COMPOSITE_LIGHTEN, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, gimp_composite_lighten_rgba8_rgba8_rgba8_mmx },
{ GIMP_COMPOSITE_DIVIDE, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, gimp_composite_divide_rgba8_rgba8_rgba8_mmx },
{ GIMP_COMPOSITE_DODGE, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, gimp_composite_dodge_rgba8_rgba8_rgba8_mmx },
{ GIMP_COMPOSITE_BURN, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, gimp_composite_burn_rgba8_rgba8_rgba8_mmx },
{ GIMP_COMPOSITE_SWAP, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, gimp_composite_swap_rgba8_rgba8_rgba8_mmx },
{ GIMP_COMPOSITE_SCALE, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, gimp_composite_scale_rgba8_rgba8_rgba8_mmx },
#endif
{ 0, 0, 0, 0, NULL }
};
#endif
#endif
#endif
void
gimp_composite_mmx_install (void)
{
#ifdef USE_MMX
#ifdef ARCH_X86
#if __GNUC__ >= 3
int mode, a, b, d;
static struct install_table *t = _gimp_composite_mmx;
for (mode = 0; mode < GIMP_COMPOSITE_N; mode++) {
for (a = 0; a < GIMP_PIXELFORMAT_N; a++) {
for (b = 0; b < GIMP_PIXELFORMAT_N; b++) {
for (d = 0; d < GIMP_PIXELFORMAT_N; d++) {
if (gimp_composite_mmx[mode][a][b][d]) {
gimp_composite_function[mode][a][b][d] = gimp_composite_mmx[mode][a][b][d];
if (gimp_composite_options.bits & GIMP_COMPOSITE_OPTION_VERBOSE) {
printf("gimp_composite_install: %s %s %s %s: %p\n", gimp_composite_mode_astext(mode), gimp_composite_pixelformat_astext(a), gimp_composite_pixelformat_astext(b), gimp_composite_pixelformat_astext(d), gimp_composite_function[mode][a][b][d]);
}
}
}
}
}
for (t = &_gimp_composite_mmx[0]; t->function != NULL; t++) {
gimp_composite_function[t->mode][t->A][t->B][t->D] = t->function;
}
#endif
#endif
#endif
gimp_composite_mmx_init();
}

View File

@ -1,5 +1,5 @@
/* THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT */
/* REGENERATE BY EXECUTING: make-installer.py gimp-composite-sse.o */
/* REGENERATE BY USING make-installer.py */
#include "config.h"
#include <glib-object.h>
#include <stdlib.h>
@ -9,874 +9,41 @@
#include "gimp-composite-sse.h"
#ifdef USE_MMX
#ifdef ARCH_X86
#if __GNUC__ >= 3
static void (*gimp_composite_sse[GIMP_COMPOSITE_N][GIMP_PIXELFORMAT_N][GIMP_PIXELFORMAT_N][GIMP_PIXELFORMAT_N])(GimpCompositeContext *) = {
{ /* GIMP_COMPOSITE_NORMAL */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
{ /* GIMP_COMPOSITE_DISSOLVE */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
{ /* GIMP_COMPOSITE_BEHIND */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
{ /* GIMP_COMPOSITE_MULTIPLY */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, gimp_composite_multiply_rgba8_rgba8_rgba8_sse, },
},
},
{ /* GIMP_COMPOSITE_SCREEN */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, gimp_composite_screen_rgba8_rgba8_rgba8_sse, },
},
},
{ /* GIMP_COMPOSITE_OVERLAY */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, gimp_composite_overlay_rgba8_rgba8_rgba8_sse, },
},
},
{ /* GIMP_COMPOSITE_DIFFERENCE */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, gimp_composite_difference_rgba8_rgba8_rgba8_sse, },
},
},
{ /* GIMP_COMPOSITE_ADDITION */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, gimp_composite_addition_rgba8_rgba8_rgba8_sse, },
},
},
{ /* GIMP_COMPOSITE_SUBTRACT */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, gimp_composite_subtract_rgba8_rgba8_rgba8_sse, },
},
},
{ /* GIMP_COMPOSITE_DARKEN */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, gimp_composite_darken_rgba8_rgba8_rgba8_sse, },
},
},
{ /* GIMP_COMPOSITE_LIGHTEN */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, gimp_composite_lighten_rgba8_rgba8_rgba8_sse, },
},
},
{ /* GIMP_COMPOSITE_HUE */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
{ /* GIMP_COMPOSITE_SATURATION */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
{ /* GIMP_COMPOSITE_COLOR_ONLY */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
{ /* GIMP_COMPOSITE_VALUE */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
{ /* GIMP_COMPOSITE_DIVIDE */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, gimp_composite_divide_rgba8_rgba8_rgba8_sse, },
},
},
{ /* GIMP_COMPOSITE_DODGE */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, gimp_composite_dodge_rgba8_rgba8_rgba8_sse, },
},
},
{ /* GIMP_COMPOSITE_BURN */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, gimp_composite_burn_rgba8_rgba8_rgba8_sse, },
},
},
{ /* GIMP_COMPOSITE_HARDLIGHT */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
{ /* GIMP_COMPOSITE_SOFTLIGHT */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
{ /* GIMP_COMPOSITE_GRAIN_EXTRACT */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, gimp_composite_grain_extract_rgba8_rgba8_rgba8_sse, },
},
},
{ /* GIMP_COMPOSITE_GRAIN_MERGE */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, gimp_composite_grain_merge_rgba8_rgba8_rgba8_sse, },
},
},
{ /* GIMP_COMPOSITE_COLOR_ERASE */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
{ /* GIMP_COMPOSITE_ERASE */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
{ /* GIMP_COMPOSITE_REPLACE */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
{ /* GIMP_COMPOSITE_ANTI_ERASE */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
{ /* GIMP_COMPOSITE_BLEND */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
{ /* GIMP_COMPOSITE_SHADE */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
{ /* GIMP_COMPOSITE_SWAP */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, gimp_composite_swap_rgba8_rgba8_rgba8_sse, },
},
},
{ /* GIMP_COMPOSITE_SCALE */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, gimp_composite_scale_rgba8_rgba8_rgba8_sse, },
},
},
{ /* GIMP_COMPOSITE_CONVERT */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
{ /* GIMP_COMPOSITE_XOR */
{ /* A = v8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = va8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgb8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
{ /* A = rgba8 */
/* v8 */ { NULL, NULL, NULL, NULL, },
/* va8 */ { NULL, NULL, NULL, NULL, },
/* rgb8 */ { NULL, NULL, NULL, NULL, },
/* rgba8 */ { NULL, NULL, NULL, NULL, },
},
},
static struct install_table {
GimpCompositeOperation mode;
GimpPixelFormat A;
GimpPixelFormat B;
GimpPixelFormat D;
void (*function)(GimpCompositeContext *);
} _gimp_composite_sse[] = {
#if (__GNUC__ >= 3) && defined(USE_MMX) && defined(ARCH_X86)
{ GIMP_COMPOSITE_MULTIPLY, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, gimp_composite_multiply_rgba8_rgba8_rgba8_sse },
{ GIMP_COMPOSITE_SCREEN, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, gimp_composite_screen_rgba8_rgba8_rgba8_sse },
{ GIMP_COMPOSITE_OVERLAY, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, gimp_composite_overlay_rgba8_rgba8_rgba8_sse },
{ GIMP_COMPOSITE_DIFFERENCE, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, gimp_composite_difference_rgba8_rgba8_rgba8_sse },
{ GIMP_COMPOSITE_ADDITION, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, gimp_composite_addition_rgba8_rgba8_rgba8_sse },
{ GIMP_COMPOSITE_SUBTRACT, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, gimp_composite_subtract_rgba8_rgba8_rgba8_sse },
{ GIMP_COMPOSITE_DARKEN, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, gimp_composite_darken_rgba8_rgba8_rgba8_sse },
{ GIMP_COMPOSITE_LIGHTEN, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, gimp_composite_lighten_rgba8_rgba8_rgba8_sse },
{ GIMP_COMPOSITE_DIVIDE, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, gimp_composite_divide_rgba8_rgba8_rgba8_sse },
{ GIMP_COMPOSITE_DODGE, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, gimp_composite_dodge_rgba8_rgba8_rgba8_sse },
{ GIMP_COMPOSITE_BURN, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, gimp_composite_burn_rgba8_rgba8_rgba8_sse },
{ GIMP_COMPOSITE_GRAIN_EXTRACT, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, gimp_composite_grain_extract_rgba8_rgba8_rgba8_sse },
{ GIMP_COMPOSITE_GRAIN_MERGE, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, gimp_composite_grain_merge_rgba8_rgba8_rgba8_sse },
{ GIMP_COMPOSITE_SWAP, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, gimp_composite_swap_rgba8_rgba8_rgba8_sse },
{ GIMP_COMPOSITE_SCALE, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, GIMP_PIXELFORMAT_RGBA8, gimp_composite_scale_rgba8_rgba8_rgba8_sse },
#endif
{ 0, 0, 0, 0, NULL }
};
#endif
#endif
#endif
void
gimp_composite_sse_install (void)
{
#ifdef USE_MMX
#ifdef ARCH_X86
#if __GNUC__ >= 3
int mode, a, b, d;
static struct install_table *t = _gimp_composite_sse;
for (mode = 0; mode < GIMP_COMPOSITE_N; mode++) {
for (a = 0; a < GIMP_PIXELFORMAT_N; a++) {
for (b = 0; b < GIMP_PIXELFORMAT_N; b++) {
for (d = 0; d < GIMP_PIXELFORMAT_N; d++) {
if (gimp_composite_sse[mode][a][b][d]) {
gimp_composite_function[mode][a][b][d] = gimp_composite_sse[mode][a][b][d];
if (gimp_composite_options.bits & GIMP_COMPOSITE_OPTION_VERBOSE) {
printf("gimp_composite_install: %s %s %s %s: %p\n", gimp_composite_mode_astext(mode), gimp_composite_pixelformat_astext(a), gimp_composite_pixelformat_astext(b), gimp_composite_pixelformat_astext(d), gimp_composite_function[mode][a][b][d]);
}
}
}
}
}
for (t = &_gimp_composite_sse[0]; t->function != NULL; t++) {
gimp_composite_function[t->mode][t->A][t->B][t->D] = t->function;
}
#endif
#endif
#endif
gimp_composite_sse_init();
}

View File

@ -1,5 +1,5 @@
/* THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT */
/* REGENERATE BY EXECUTING: make-installer.py gimp-composite-vis.o */
/* REGENERATE BY USING make-installer.py */
#include "config.h"
#include <glib-object.h>
#include <stdlib.h>
@ -9,11 +9,6 @@
#include "gimp-composite-vis.h"
/*
* No
* static void (*gimp_composite_vis[GIMP_COMPOSITE_N][GIMP_PIXELFORMAT_N][GIMP_PIXELFORMAT_N][GIMP_PIXELFORMAT_N])
* table to define
*/
void
gimp_composite_vis_install (void)

View File

@ -23,7 +23,7 @@ import string
import os
import ns
import pprint
import getopt
import optparse
import copy
#
@ -126,56 +126,44 @@ def filenameify(filename):
f = string.replace(f, ".h", "")
return (f)
def print_function_table(fpout, name, function_table):
def print_function_table(fpout, name, function_table, requirements=[]):
if len(function_table) > 1:
if len(function_table) < 1:
return;
function_table_declarations = dict()
print >>fpout, 'static struct install_table {'
print >>fpout, ' GimpCompositeOperation mode;'
print >>fpout, ' GimpPixelFormat A;'
print >>fpout, ' GimpPixelFormat B;'
print >>fpout, ' GimpPixelFormat D;'
print >>fpout, ' void (*function)(GimpCompositeContext *);'
#print >>fpout, ' char *name;'
print >>fpout, '} _%s[] = {' % (functionnameify(name))
function_table_keys = function_table.keys()
function_table_keys.sort()
if 0:
for key in function_table_keys:
if not function_table_declarations.has_key(function_table[key][0]):
print >>fpout, 'void %s(GimpCompositeContext *);' % (function_table[key][0])
function_table_declarations[function_table[key][0]] = function_table[key][0]
pass
pass
pass
print >>fpout, ''
print >>fpout, 'static void (*%s[%s][%s][%s][%s])(GimpCompositeContext *) = {' % (functionnameify(name), "GIMP_COMPOSITE_N", "GIMP_PIXELFORMAT_N", "GIMP_PIXELFORMAT_N", "GIMP_PIXELFORMAT_N")
for mode in composite_modes:
print >>fpout, ' { /* %s */' % (mode)
for A in filter(lambda pf: pf != "GIMP_PIXELFORMAT_ANY", pixel_format):
print >>fpout, ' { /* A = %s */' % (pixel_depth_name(A))
for B in filter(lambda pf: pf != "GIMP_PIXELFORMAT_ANY", pixel_format):
print >>fpout, ' /* %-6s */ {' % (pixel_depth_name(B)),
for D in filter(lambda pf: pf != "GIMP_PIXELFORMAT_ANY", pixel_format):
key = "%s_%s_%s_%s" % (string.lower(mode), pixel_depth_name(A), pixel_depth_name(B), pixel_depth_name(D))
if function_table.has_key(key):
print >>fpout, '%s, ' % (function_table[key][0]),
else:
print >>fpout, '%s, ' % ("NULL"),
pass
pass
print >>fpout, '},'
pass
print >>fpout, ' },'
pass
print >>fpout, ' },'
pass
print >>fpout, '};\n'
else:
print >>fpout, '/*'
print >>fpout, '* No'
print >>fpout, '* static void (*%s[%s][%s][%s][%s])' % (functionnameify(name), "GIMP_COMPOSITE_N", "GIMP_PIXELFORMAT_N", "GIMP_PIXELFORMAT_N", "GIMP_PIXELFORMAT_N")
print >>fpout, '* table to define'
print >>fpout, '*/'
for r in requirements:
print >>fpout, '#if %s' % (r)
pass
for mode in composite_modes:
for A in filter(lambda pf: pf != "GIMP_PIXELFORMAT_ANY", pixel_format):
for B in filter(lambda pf: pf != "GIMP_PIXELFORMAT_ANY", pixel_format):
for D in filter(lambda pf: pf != "GIMP_PIXELFORMAT_ANY", pixel_format):
key = "%s_%s_%s_%s" % (string.lower(mode), pixel_depth_name(A), pixel_depth_name(B), pixel_depth_name(D))
if function_table.has_key(key):
print >>fpout, ' { %s, %s, %s, %s, %s }, ' % (mode, A, B, D, function_table[key][0])
pass
pass
pass
pass
pass
for r in requirements:
print >>fpout, '#endif'
pass
print >>fpout, ' { 0, 0, 0, 0, NULL }'
print >>fpout, '};'
return
def print_function_table_name(fpout, name, function_table):
@ -259,7 +247,7 @@ def merge_function_tables(tables):
return (main_table)
def gimp_composite_regression(fpout, name, function_tables):
def gimp_composite_regression(fpout, name, function_tables, requirements=[]):
# XXX move all this out to C code, instead of here.
print >>fpout, '#include "config.h"'
@ -415,12 +403,16 @@ def gimp_composite_regression(fpout, name, function_tables):
return
def gimp_composite_installer_install(fpout, name, function_table):
def gimp_composite_installer_install(fpout, name, function_table, requirements=[]):
print >>fpout, ''
print >>fpout, 'void'
print >>fpout, '%s_install (void)' % (functionnameify(name))
print >>fpout, '{'
for r in requirements:
print >>fpout, '#if %s' % (r)
pass
if len(function_table) > 1:
print >>fpout, ' int mode, a, b, d;'
print >>fpout, ''
@ -442,6 +434,30 @@ def gimp_composite_installer_install(fpout, name, function_table):
print >>fpout, ' /* nothing to do */'
pass
print >>fpout, ''
print >>fpout, ' %s_init();' % functionnameify(name)
for r in requirements:
print >>fpout, '#endif'
pass
print >>fpout, '}'
pass
def gimp_composite_installer_install2(fpout, name, function_table, requirements=[]):
print >>fpout, ''
print >>fpout, 'void'
print >>fpout, '%s_install (void)' % (functionnameify(name))
print >>fpout, '{'
if len(function_table) > 1:
print >>fpout, ' static struct install_table *t = _%s;' % (functionnameify(name))
print >>fpout, ''
print >>fpout, ' for (t = &_%s[0]; t->function != NULL; t++) {' % (functionnameify(name))
print >>fpout, ' gimp_composite_function[t->mode][t->A][t->B][t->D] = t->function;'
print >>fpout, ' }'
else:
print >>fpout, ' /* nothing to do */'
pass
print >>fpout, ''
print >>fpout, ' %s_init();' % functionnameify(name)
print >>fpout, '}'
@ -449,7 +465,7 @@ def gimp_composite_installer_install(fpout, name, function_table):
def gimp_composite_hfile(fpout, name, function_table):
print >>fpout, '/* THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT */'
print >>fpout, '/* REGENERATE BY EXECUTING: make-installer.py %s */' % (name)
print >>fpout, '/* REGENERATE BY USING make-installer.py */'
print >>fpout, ''
print >>fpout, 'void %s_install (void);' % (functionnameify(name))
print >>fpout, ''
@ -457,9 +473,9 @@ def gimp_composite_hfile(fpout, name, function_table):
return
def gimp_composite_cfile(fpout, name, function_table):
def gimp_composite_cfile(fpout, name, function_table, requirements=[]):
print >>fpout, '/* THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT */'
print >>fpout, '/* REGENERATE BY EXECUTING: make-installer.py %s */' % (name)
print >>fpout, '/* REGENERATE BY USING make-installer.py */'
print >>fpout, '#include "config.h"'
print >>fpout, '#include <glib-object.h>'
print >>fpout, '#include <stdlib.h>'
@ -470,29 +486,26 @@ def gimp_composite_cfile(fpout, name, function_table):
print >>fpout, '#include "%s.h"' % (filenameify(name))
print >>fpout, ''
print_function_table(fpout, name, function_table)
print_function_table(fpout, name, function_table, requirements)
#main_table = merge_function_tables(d)
#print_function_table(fpout, "gimp_composite_function", main_table)
#print_function_table_name(fpout, "gimp_composite_function", main_table)
gimp_composite_installer_install(fpout, name, function_table)
gimp_composite_installer_install2(fpout, name, function_table, requirements)
return
###########################################
if len(sys.argv) != 2:
print "Usage: %s <composite-file>.o" % (sys.argv[0])
sys.exit(1)
op = optparse.OptionParser(version="$Revision$")
op.add_option('-f', '--file', action='store', type='string', dest='file', default=None, help='the input object file')
op.add_option('-t', '--test', action='store_true', dest='test', default=False, help='generate regression testing code')
op.add_option('-r', '--requires', action='append', type='string', dest='requires', default=[], help='cpp #if conditionals')
options, args = op.parse_args()
table = load_function_table(options.file)
gimp_composite_cfile(open(filenameify(options.file) + "-installer.c", "w"), options.file, table, options.requires)
if options.test == True:
gimp_composite_regression(open(filenameify(options.file) + "-test.c", "w"), options.file, table, options.requires)
pass
function_file = sys.argv[1]
table = load_function_table(function_file)
gimp_composite_cfile(open(filenameify(function_file) + "-installer.c", "w"), function_file, table)
gimp_composite_regression(open(filenameify(function_file) + "-test.c", "w"), function_file, table)
sys.exit(0)