configure.ac: Detect and indicate if GCC inline assembly syntax is available.

Original commit message from CVS:
* configure.ac:
Detect and indicate if GCC inline assembly syntax is
available.
* gst/goom/Makefile.am:
* gst/goom/convolve_fx.c:
* gst/goom/flying_stars_fx.c:
* gst/goom/goom_config.h:
* gst/goom/goom_core.c:
* gst/goom/goomsl.c:
* gst/goom/ifs.c:
* gst/goom/mmx.c:
* gst/goom/plugin_info.c:
* gst/goom/xmmx.c:
Fix various GCC-isms, and only build the inline assembly
with compilers that support GCC inline assembly.
Fix a couple of other warnings shown with Forte.
This commit is contained in:
Jan Schmidt 2008-02-26 10:09:38 +00:00
parent c99b95d8cb
commit c34fa140d0
13 changed files with 79 additions and 23 deletions

View file

@ -1,3 +1,24 @@
2008-02-26 Jan Schmidt <jan.schmidt@sun.com>
* configure.ac:
Detect and indicate if GCC inline assembly syntax is
available.
* gst/goom/Makefile.am:
* gst/goom/convolve_fx.c:
* gst/goom/flying_stars_fx.c:
* gst/goom/goom_config.h:
* gst/goom/goom_core.c:
* gst/goom/goomsl.c:
* gst/goom/ifs.c:
* gst/goom/mmx.c:
* gst/goom/plugin_info.c:
* gst/goom/xmmx.c:
Fix various GCC-isms, and only build the inline assembly
with compilers that support GCC inline assembly.
Fix a couple of other warnings shown with Forte.
2008-02-25 Stefan Kost <ensonic@users.sf.net> 2008-02-25 Stefan Kost <ensonic@users.sf.net>
* gst/goom/xmmx.c: * gst/goom/xmmx.c:

2
common

@ -1 +1 @@
Subproject commit 1c5138efc5679d9eaee66c84dcfabdec5b727493 Subproject commit e746d20ef536a73aea9964666c7d5f6d5c9465df

View file

@ -337,6 +337,13 @@ dnl Check for Yacc and Lex for the goom plugin
AG_GST_BISON_CHECK AG_GST_BISON_CHECK
AG_GST_FLEX_CHECK AG_GST_FLEX_CHECK
AM_PROG_AS AM_PROG_AS
dnl Check if we have GCC inline-asm
AS_GCC_INLINE_ASSEMBLY([HAVE_GCC_ASM=yes], [HAVE_GCC_ASM=no])
if test x$HAVE_GCC_ASM = xyes ; then
AC_DEFINE(HAVE_GCC_ASM, 1,
[Define if compiler supports gcc inline assembly])
fi
AM_CONDITIONAL(HAVE_GCC_ASM, test "x$HAVE_GCC_ASM" = "xyes")
dnl *** sys plug-ins *** dnl *** sys plug-ins ***

View file

@ -11,7 +11,7 @@ ARCH_FILES = $(PPC_FILES)
endif endif
if HAVE_CPU_I386 if HAVE_CPU_I386
ARCH_FILES = $(MMX_FILES) ARCH_FILES = $(MMX_FILES)
ARCH_CFLAGS = -DHAVE_MMX ARCH_CFLAGS = -DBUILD_MMX
endif endif
libgstgoom_la_SOURCES = \ libgstgoom_la_SOURCES = \

View file

@ -340,10 +340,10 @@ VisualFX
convolve_create (void) convolve_create (void)
{ {
VisualFX vfx = { VisualFX vfx = {
init:convolve_init, convolve_init,
free:convolve_free, convolve_free,
apply:convolve_apply, convolve_apply,
fx_data:0 NULL
}; };
return vfx; return vfx;
} }

View file

@ -200,8 +200,7 @@ fs_sound_event_occured (VisualFX * _this, PluginInfo * info)
FSData *data = (FSData *) _this->fx_data; FSData *data = (FSData *) _this->fx_data;
int i; int i;
int max = int max = (int) ((1.0f + info->sound.goomPower) * goom_irand (info->gRandom,
(int) ((1.0f + info->sound.goomPower) * goom_irand (info->gRandom,
150)) + 100; 150)) + 100;
float radius = float radius =
(1.0f + info->sound.goomPower) * (float) (goom_irand (info->gRandom, (1.0f + info->sound.goomPower) * (float) (goom_irand (info->gRandom,
@ -332,10 +331,10 @@ VisualFX
flying_star_create (void) flying_star_create (void)
{ {
VisualFX vfx = { VisualFX vfx = {
init:fs_init, fs_init,
free:fs_free, fs_free,
apply:fs_apply, fs_apply,
fx_data:0 NULL
}; };
return vfx; return vfx;
} }

View file

@ -26,3 +26,7 @@
#define gint16 signed short int #define gint16 signed short int
#define gint32 signed int #define gint32 signed int
#endif #endif
#if defined (BUILD_MMX) && defined (HAVE_GCC_ASM)
#define HAVE_MMX
#endif

View file

@ -11,6 +11,7 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <strings.h>
#include <inttypes.h> #include <inttypes.h>
#include "goom.h" #include "goom.h"
@ -721,8 +722,7 @@ goom_update (PluginInfo * goomInfo, gint16 data[2][512],
goomInfo->update.lineMode--; goomInfo->update.lineMode--;
if (goomInfo->update.lineMode == -1) if (goomInfo->update.lineMode == -1)
goomInfo->update.lineMode = 0; goomInfo->update.lineMode = 0;
} else } else if ((goomInfo->cycle % 80 == 0)
if ((goomInfo->cycle % 80 == 0)
&& (goom_irand (goomInfo->gRandom, 5) == 0) && goomInfo->update.lineMode) && (goom_irand (goomInfo->gRandom, 5) == 0) && goomInfo->update.lineMode)
goomInfo->update.lineMode--; goomInfo->update.lineMode--;

View file

@ -2,6 +2,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <glib.h>
#include "goomsl.h" #include "goomsl.h"
#include "goomsl_private.h" #include "goomsl_private.h"
#include "goomsl_yacc.h" #include "goomsl_yacc.h"
@ -465,7 +466,6 @@ gsl_instr_validate (Instruction * _this)
default: default:
return VALIDATE_TODO; return VALIDATE_TODO;
} }
return VALIDATE_ERROR;
} /* }}} */ } /* }}} */
/*************/ /*************/

View file

@ -470,7 +470,7 @@ static void
ifs_update (PluginInfo * goomInfo, Pixel * data, Pixel * back, int increment, ifs_update (PluginInfo * goomInfo, Pixel * data, Pixel * back, int increment,
IfsData * fx_data) IfsData * fx_data)
{ {
static int couleur = 0xc0c0c0c0; static unsigned int couleur = 0xc0c0c0c0;
static int v[4] = { 2, 4, 3, 2 }; static int v[4] = { 2, 4, 3, 2 };
static int col[4] = { 2, 4, 3, 2 }; static int col[4] = { 2, 4, 3, 2 };
@ -486,7 +486,7 @@ ifs_update (PluginInfo * goomInfo, Pixel * data, Pixel * back, int increment,
IFSPoint *points; IFSPoint *points;
int i; int i;
int couleursl = couleur; unsigned int couleursl = couleur;
int width = goomInfo->screen.width; int width = goomInfo->screen.width;
int height = goomInfo->screen.height; int height = goomInfo->screen.height;

View file

@ -1,6 +1,10 @@
#ifdef HAVE_CONFIG_H
#include "config.h" #include "config.h"
#endif
#if defined (HAVE_CPU_I386) || defined (HAVE_CPU_X86_64) #include "goom_config.h"
#ifdef HAVE_MMX
#define BUFFPOINTNB 16 #define BUFFPOINTNB 16
#define BUFFPOINTMASK 0xffff #define BUFFPOINTMASK 0xffff
@ -252,5 +256,10 @@ end_of_line:
emms (); emms ();
/* __asm__ __volatile__ ("emms"); */ /* __asm__ __volatile__ ("emms"); */
} }
#else
#endif /* HAVE_CPU_I386 || HAVE_CPU_X86_64 */ int
mmx_supported (void)
{
return (0);
}
#endif /* HAVE_MMX */

View file

@ -1,7 +1,11 @@
#ifdef HAVE_CONFIG_H
#include "config.h" #include "config.h"
#endif
#include <gst/gst.h> #include <gst/gst.h>
#include "goom_config.h"
#include "goom_plugin_info.h" #include "goom_plugin_info.h"
#include "goom_fx.h" #include "goom_fx.h"
#include "default_scripts.h" #include "default_scripts.h"
@ -18,9 +22,9 @@
#endif /* HAVE_CPU_PPC64 || HAVE_CPU_PPC */ #endif /* HAVE_CPU_PPC64 || HAVE_CPU_PPC */
#ifdef HAVE_CPU_I386 #ifdef HAVE_MMX
#include "mmx.h" #include "mmx.h"
#endif /* HAVE_CPU_I386 */ #endif /* HAVE_MMX */
#include <liboil/liboil.h> #include <liboil/liboil.h>
#include <liboil/liboilfunction.h> #include <liboil/liboilfunction.h>
@ -44,6 +48,7 @@ setOptimizedMethods (PluginInfo * p)
/* FIXME: what about HAVE_CPU_X86_64 ? */ /* FIXME: what about HAVE_CPU_X86_64 ? */
#ifdef HAVE_CPU_I386 #ifdef HAVE_CPU_I386
#ifdef HAVE_MMX
GST_INFO ("have an x86"); GST_INFO ("have an x86");
if (cpuFlavour & OIL_IMPL_FLAG_MMXEXT) { if (cpuFlavour & OIL_IMPL_FLAG_MMXEXT) {
GST_INFO ("Extended MMX detected. Using the fastest methods!"); GST_INFO ("Extended MMX detected. Using the fastest methods!");
@ -56,6 +61,7 @@ setOptimizedMethods (PluginInfo * p)
} else { } else {
GST_INFO ("Too bad ! No SIMD optimization available for your CPU."); GST_INFO ("Too bad ! No SIMD optimization available for your CPU.");
} }
#endif
#endif /* HAVE_CPU_I386 */ #endif /* HAVE_CPU_I386 */
#ifdef HAVE_CPU_PPC64 #ifdef HAVE_CPU_PPC64

View file

@ -1,3 +1,8 @@
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "goom_config.h"
#ifdef HAVE_MMX #ifdef HAVE_MMX
@ -362,5 +367,10 @@ end_of_line:
/* this was femms, which is AMD 3dnow */ /* this was femms, which is AMD 3dnow */
__asm__ __volatile__ ("emms\n"); __asm__ __volatile__ ("emms\n");
} }
#else
int
xmmx_supported (void)
{
return (0);
}
#endif #endif