summaryrefslogtreecommitdiff
path: root/src/post/goom/mmx.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/post/goom/mmx.h')
-rwxr-xr-xsrc/post/goom/mmx.h18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/post/goom/mmx.h b/src/post/goom/mmx.h
index fe095de12..53c1cc5d9 100755
--- a/src/post/goom/mmx.h
+++ b/src/post/goom/mmx.h
@@ -27,6 +27,8 @@
#ifndef _MMX_H
#define _MMX_H
+#include "goom_graphic.h"
+
/* Warning: at this writing, the version of GAS packaged
with most Linux distributions does not handle the
parallel AND operation mnemonic correctly. If the
@@ -58,7 +60,7 @@ typedef union {
/* Function to test if multimedia instructions are supported...
*/
-inline extern int
+static int
mm_support(void)
{
/* Returns 1 if MMX instructions are supported,
@@ -223,13 +225,25 @@ mm_support(void)
/* Function to test if mmx instructions are supported...
*/
-inline extern int
+static inline int
mmx_ok(void)
{
/* Returns 1 if MMX instructions are supported, 0 otherwise */
return ( mm_support() & 0x1 );
}
+int mmx_supported (void);
+int xmmx_supported (void);
+
+
+/* MMX optimized implementations */
+void draw_line_mmx (Pixel *data, int x1, int y1, int x2, int y2, int col, int screenx, int screeny);
+void draw_line_xmmx (Pixel *data, int x1, int y1, int x2, int y2, int col, int screenx, int screeny);
+void zoom_filter_mmx (int prevX, int prevY, Pixel *expix1, Pixel *expix2,
+ int *brutS, int *brutD, int buffratio, int precalCoef[16][16]);
+void zoom_filter_xmmx (int prevX, int prevY, Pixel *expix1, Pixel *expix2,
+ int *lbruS, int *lbruD, int buffratio, int precalCoef[16][16]);
+
/* Helper functions for the instruction macros that follow...
(note that memory-to-register, m2r, instructions are nearly