src/hermes/HeadMMX.h
author Ryan C. Gordon
Wed, 29 Nov 2006 10:30:05 +0000
branchSDL-1.2
changeset 3900 ce3a2bd11305
parent 1402 d910939febfa
child 1662 782fd950bd46
child 1895 c121d94672cb
child 4152 39b9405d3cb6
permissions -rw-r--r--
Wrapped some macro params in parentheses for alloca wrappers.
Thansk, Suzuki Masahiro.
     1 /*
     2    Header definitions for the MMX routines for the HERMES library
     3    Copyright (c) 1998 Christian Nentwich (c.nentwich@cs.ucl.ac.uk)
     4    This source code is licensed under the GNU LGPL
     5   
     6    Please refer to the file COPYING.LIB contained in the distribution for
     7    licensing conditions
     8 */
     9 #include "SDL_config.h"
    10 
    11 #ifndef __HERMES_HEAD_MMX__
    12 #define __HERMES_HEAD_MMX__
    13 
    14 
    15 /* If you cannot stand ifdefs, then please do not look into this file, it's
    16    going to end your life :) */
    17 
    18 #ifdef X86_ASSEMBLER
    19 
    20 
    21 #ifdef __cplusplus
    22 extern "C" {
    23 #endif
    24 
    25 void STACKCALL ConvertMMX(HermesConverterInterface *);
    26 
    27 void STACKCALL ClearMMX_32(HermesClearInterface *);
    28 void STACKCALL ClearMMX_24(HermesClearInterface *);
    29 void STACKCALL ClearMMX_16(HermesClearInterface *);
    30 void STACKCALL ClearMMX_8(HermesClearInterface *);
    31 
    32 void ConvertMMXpII32_24RGB888();
    33 void ConvertMMXpII32_16RGB565();
    34 void ConvertMMXpII32_16BGR565();
    35 void ConvertMMXpII32_16RGB555();
    36 void ConvertMMXpII32_16BGR565();
    37 void ConvertMMXpII32_16BGR555();
    38 
    39 void ConvertMMXp32_16RGB555();
    40 
    41 #ifdef __cplusplus
    42 }
    43 #endif
    44 
    45 
    46 
    47 /* Fix the underscore business with ELF compilers */
    48 
    49 #if defined(__ELF__) && defined(__GNUC__)
    50   #ifdef __cplusplus 
    51   extern "C" {   
    52   #endif
    53 
    54   extern void _ConvertMMX(HermesConverterInterface *);
    55   extern void _ConvertMMXpII32_24RGB888();
    56   extern void _ConvertMMXpII32_16RGB565();
    57   extern void _ConvertMMXpII32_16BGR565();
    58   extern void _ConvertMMXpII32_16RGB555();
    59   extern void _ConvertMMXpII32_16BGR555();
    60 
    61   #define ConvertMMX _ConvertMMX
    62   #define ConvertMMXpII32_24RGB888 _ConvertMMXpII32_24RGB888
    63   #define ConvertMMXpII32_16RGB565 _ConvertMMXpII32_16RGB565
    64   #define ConvertMMXpII32_16BGR565 _ConvertMMXpII32_16BGR565
    65   #define ConvertMMXpII32_16RGB555 _ConvertMMXpII32_16RGB555
    66   #define ConvertMMXpII32_16BGR555 _ConvertMMXpII32_16BGR555
    67 
    68   #ifdef __cplusplus
    69   }
    70   #endif
    71 
    72 #endif /* ELF and GNUC */
    73 
    74 
    75 
    76 
    77 /* Make it work with Watcom */
    78 #ifdef __WATCOMC__
    79 #pragma warning 601 9
    80 
    81 #pragma aux ConvertMMX "_*" modify [EAX EBX ECX EDX ESI EDI]
    82 
    83 #pragma aux ClearMMX_32 "_*" modify [EAX EBX ECX EDX ESI EDI]
    84 #pragma aux ClearMMX_24 "_*" modify [EAX EBX ECX EDX ESI EDI]
    85 #pragma aux ClearMMX_16 "_*" modify [EAX EBX ECX EDX ESI EDI]
    86 #pragma aux ClearMMX_8 "_*" modify [EAX EBX ECX EDX ESI EDI]
    87 
    88 #pragma aux ConvertMMXpII32_24RGB888 "_*"
    89 #pragma aux ConvertMMXpII32_16RGB565 "_*"
    90 #pragma aux ConvertMMXpII32_16BGR565 "_*"
    91 #pragma aux ConvertMMXpII32_16RGB555 "_*"
    92 #pragma aux ConvertMMXpII32_16BGR555 "_*"
    93 #pragma aux ConvertMMXp32_16RGB555 "_*"
    94 
    95 #endif /* WATCOM */
    96 
    97 #endif /* X86_ASSEMBLER */
    98 
    99 
   100 #endif