Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  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.  
  10. #ifndef __HERMES_HEAD_MMX__
  11. #define __HERMES_HEAD_MMX__
  12.  
  13.  
  14. /* If you cannot stand ifdefs, then please do not look into this file, it's
  15.    going to end your life :) */
  16.  
  17. #ifdef X86_ASSEMBLER
  18.  
  19.  
  20. #ifdef __cplusplus
  21. extern "C" {
  22. #endif
  23.  
  24. void STACKCALL ConvertMMX(HermesConverterInterface *);
  25.  
  26. void STACKCALL ClearMMX_32(HermesClearInterface *);
  27. void STACKCALL ClearMMX_24(HermesClearInterface *);
  28. void STACKCALL ClearMMX_16(HermesClearInterface *);
  29. void STACKCALL ClearMMX_8(HermesClearInterface *);
  30.  
  31. void ConvertMMXpII32_24RGB888();
  32. void ConvertMMXpII32_16RGB565();
  33. void ConvertMMXpII32_16BGR565();
  34. void ConvertMMXpII32_16RGB555();
  35. void ConvertMMXpII32_16BGR565();
  36. void ConvertMMXpII32_16BGR555();
  37.  
  38. void ConvertMMXp32_16RGB555();
  39.  
  40. #ifdef __cplusplus
  41. }
  42. #endif
  43.  
  44.  
  45.  
  46. /* Fix the underscore business with ELF compilers */
  47.  
  48. #if defined(__ELF__) && defined(__GNUC__)
  49.   #ifdef __cplusplus
  50.   extern "C" {  
  51.   #endif
  52.  
  53.   void ConvertMMX(HermesConverterInterface *) __attribute__ ((alias ("_ConvertMMX")));
  54. #if 0
  55.   void ClearMMX_32(HermesClearInterface *) __attribute__ ((alias ("_ClearMMX_32")));
  56.   void ClearMMX_24(HermesClearInterface *)  __attribute__ ((alias ("_ClearMMX_24")));
  57.   void ClearMMX_16(HermesClearInterface *)  __attribute__ ((alias ("_ClearMMX_16")));
  58.   void ClearMMX_8(HermesClearInterface *)  __attribute__ ((alias ("_ClearMMX_8")));
  59.  
  60.   void ConvertMMXp32_16RGB555() __attribute__ ((alias ("_ConvertMMXp32_16RGB555")));
  61. #endif
  62.  
  63.   void ConvertMMXpII32_24RGB888() __attribute__ ((alias ("_ConvertMMXpII32_24RGB888")));
  64.   void ConvertMMXpII32_16RGB565() __attribute__ ((alias ("_ConvertMMXpII32_16RGB565")));
  65.   void ConvertMMXpII32_16BGR565() __attribute__ ((alias ("_ConvertMMXpII32_16BGR565")));
  66.   void ConvertMMXpII32_16RGB555() __attribute__ ((alias ("_ConvertMMXpII32_16RGB555")));
  67.   void ConvertMMXpII32_16BGR555() __attribute__ ((alias ("_ConvertMMXpII32_16BGR555")));
  68.  
  69.   #ifdef __cplusplus
  70.   }
  71.   #endif
  72.  
  73. #endif /* ELF and GNUC */
  74.  
  75.  
  76.  
  77.  
  78. /* Make it work with Watcom */
  79. #ifdef __WATCOMC__
  80. #pragma warning 601 9
  81.  
  82. #pragma aux ConvertMMX "_*" modify [EAX EBX ECX EDX ESI EDI]
  83.  
  84. #pragma aux ClearMMX_32 "_*" modify [EAX EBX ECX EDX ESI EDI]
  85. #pragma aux ClearMMX_24 "_*" modify [EAX EBX ECX EDX ESI EDI]
  86. #pragma aux ClearMMX_16 "_*" modify [EAX EBX ECX EDX ESI EDI]
  87. #pragma aux ClearMMX_8 "_*" modify [EAX EBX ECX EDX ESI EDI]
  88.  
  89. #pragma aux ConvertMMXpII32_24RGB888 "_*"
  90. #pragma aux ConvertMMXpII32_16RGB565 "_*"
  91. #pragma aux ConvertMMXpII32_16BGR565 "_*"
  92. #pragma aux ConvertMMXpII32_16RGB555 "_*"
  93. #pragma aux ConvertMMXpII32_16BGR555 "_*"
  94. #pragma aux ConvertMMXp32_16RGB555 "_*"
  95.  
  96. #endif /* WATCOM */
  97.  
  98. #endif /* X86_ASSEMBLER */
  99.  
  100.  
  101. #endif
  102.