x86.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:12k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /* 
  2.  * Copyright (C) 2003-2005 Gabest
  3.  * http://www.gabest.org
  4.  *
  5.  *  This Program is free software; you can redistribute it and/or modify
  6.  *  it under the terms of the GNU General Public License as published by
  7.  *  the Free Software Foundation; either version 2, or (at your option)
  8.  *  any later version.
  9.  *   
  10.  *  This Program is distributed in the hope that it will be useful,
  11.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13.  *  GNU General Public License for more details.
  14.  *   
  15.  *  You should have received a copy of the GNU General Public License
  16.  *  along with GNU Make; see the file COPYING.  If not, write to
  17.  *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. 
  18.  *  http://www.gnu.org/copyleft/gpl.html
  19.  *
  20.  */
  21. #pragma once
  22. #include "GS.h"
  23. extern "C" void __fastcall memsetd(void* dst, unsigned int c, size_t len);
  24. extern "C" void unSwizzleBlock32_amd64(BYTE* src, BYTE* dst, __int64 dstpitch);
  25. extern "C" void unSwizzleBlock16_amd64(BYTE* src, BYTE* dst, __int64 dstpitch);
  26. extern "C" void unSwizzleBlock8_amd64(BYTE* src, BYTE* dst, __int64 dstpitch);
  27. extern "C" void unSwizzleBlock4_amd64(BYTE* src, BYTE* dst, __int64 dstpitch);
  28. extern "C" void unSwizzleBlock8HP_amd64(BYTE* src, BYTE* dst, __int64 dstpitch);
  29. extern "C" void unSwizzleBlock4HLP_amd64(BYTE* src, BYTE* dst, __int64 dstpitch);
  30. extern "C" void unSwizzleBlock4HHP_amd64(BYTE* src, BYTE* dst, __int64 dstpitch);
  31. extern "C" void unSwizzleBlock4P_amd64(BYTE* src, BYTE* dst, __int64 dstpitch);
  32. extern "C" void SwizzleBlock32_amd64(BYTE* dst, BYTE* src, __int64 srcpitch, DWORD WriteMask = 0xffffffff);
  33. extern "C" void SwizzleBlock16_amd64(BYTE* dst, BYTE* src, __int64 srcpitch);
  34. extern "C" void SwizzleBlock8_amd64(BYTE* dst, BYTE* src, __int64 srcpitch);
  35. extern "C" void SwizzleBlock4_amd64(BYTE* dst, BYTE* src, __int64 srcpitch);
  36. extern "C" void SwizzleBlock32u_amd64(BYTE* dst, BYTE* src, __int64 srcpitch, DWORD WriteMask = 0xffffffff);
  37. extern "C" void SwizzleBlock16u_amd64(BYTE* dst, BYTE* src, __int64 srcpitch);
  38. extern "C" void SwizzleBlock8u_amd64(BYTE* dst, BYTE* src, __int64 srcpitch);
  39. extern "C" void SwizzleBlock4u_amd64(BYTE* dst, BYTE* src, __int64 srcpitch);
  40. extern "C" void __fastcall unSwizzleBlock32_sse2(BYTE* src, BYTE* dst, int dstpitch);
  41. extern "C" void __fastcall unSwizzleBlock16_sse2(BYTE* src, BYTE* dst, int dstpitch);
  42. extern "C" void __fastcall unSwizzleBlock8_sse2(BYTE* src, BYTE* dst, int dstpitch);
  43. extern "C" void __fastcall unSwizzleBlock4_sse2(BYTE* src, BYTE* dst, int dstpitch);
  44. extern "C" void __fastcall unSwizzleBlock8HP_sse2(BYTE* src, BYTE* dst, int dstpitch);
  45. extern "C" void __fastcall unSwizzleBlock4HLP_sse2(BYTE* src, BYTE* dst, int dstpitch);
  46. extern "C" void __fastcall unSwizzleBlock4HHP_sse2(BYTE* src, BYTE* dst, int dstpitch);
  47. extern "C" void __fastcall unSwizzleBlock4P_sse2(BYTE* src, BYTE* dst, int dstpitch);
  48. extern "C" void __fastcall SwizzleBlock32_sse2(BYTE* dst, BYTE* src, int srcpitch, DWORD WriteMask = 0xffffffff);
  49. extern "C" void __fastcall SwizzleBlock16_sse2(BYTE* dst, BYTE* src, int srcpitch);
  50. extern "C" void __fastcall SwizzleBlock8_sse2(BYTE* dst, BYTE* src, int srcpitch);
  51. extern "C" void __fastcall SwizzleBlock4_sse2(BYTE* dst, BYTE* src, int srcpitch);
  52. extern "C" void __fastcall SwizzleBlock32u_sse2(BYTE* dst, BYTE* src, int srcpitch, DWORD WriteMask = 0xffffffff);
  53. extern "C" void __fastcall SwizzleBlock16u_sse2(BYTE* dst, BYTE* src, int srcpitch);
  54. extern "C" void __fastcall SwizzleBlock8u_sse2(BYTE* dst, BYTE* src, int srcpitch);
  55. extern "C" void __fastcall SwizzleBlock4u_sse2(BYTE* dst, BYTE* src, int srcpitch);
  56. extern void __fastcall unSwizzleBlock32_c(BYTE* src, BYTE* dst, int dstpitch);
  57. extern void __fastcall unSwizzleBlock16_c(BYTE* src, BYTE* dst, int dstpitch);
  58. extern void __fastcall unSwizzleBlock8_c(BYTE* src, BYTE* dst, int dstpitch);
  59. extern void __fastcall unSwizzleBlock4_c(BYTE* src, BYTE* dst, int dstpitch);
  60. extern void __fastcall unSwizzleBlock8HP_c(BYTE* src, BYTE* dst, int dstpitch);
  61. extern void __fastcall unSwizzleBlock4HLP_c(BYTE* src, BYTE* dst, int dstpitch);
  62. extern void __fastcall unSwizzleBlock4HHP_c(BYTE* src, BYTE* dst, int dstpitch);
  63. extern void __fastcall unSwizzleBlock4P_c(BYTE* src, BYTE* dst, int dstpitch);
  64. extern void __fastcall SwizzleBlock32_c(BYTE* dst, BYTE* src, int srcpitch, DWORD WriteMask = 0xffffffff);
  65. extern void __fastcall SwizzleBlock16_c(BYTE* dst, BYTE* src, int srcpitch);
  66. extern void __fastcall SwizzleBlock8_c(BYTE* dst, BYTE* src, int srcpitch);
  67. extern void __fastcall SwizzleBlock4_c(BYTE* dst, BYTE* src, int srcpitch);
  68. extern void __fastcall SwizzleColumn32_c(int y, BYTE* dst, BYTE* src, int srcpitch, DWORD WriteMask = 0xffffffff);
  69. extern void __fastcall SwizzleColumn16_c(int y, BYTE* dst, BYTE* src, int srcpitch);
  70. extern void __fastcall SwizzleColumn8_c(int y, BYTE* dst, BYTE* src, int srcpitch);
  71. extern void __fastcall SwizzleColumn4_c(int y, BYTE* dst, BYTE* src, int srcpitch);
  72. extern void __fastcall ExpandBlock24_sse2(DWORD* src, DWORD* dst, int dstpitch, GIFRegTEXA* pTEXA);
  73. extern void __fastcall ExpandBlock16_sse2(WORD* src, DWORD* dst, int dstpitch, GIFRegTEXA* pTEXA);
  74. extern void __fastcall Expand16_sse2(WORD* src, DWORD* dst, int w, GIFRegTEXA* pTEXA);
  75. extern void __fastcall ExpandBlock24_c(DWORD* src, DWORD* dst, int dstpitch, GIFRegTEXA* pTEXA);
  76. extern void __fastcall ExpandBlock16_c(WORD* src, DWORD* dst, int dstpitch, GIFRegTEXA* pTEXA);
  77. extern void __fastcall Expand16_c(WORD* src, DWORD* dst, int w, GIFRegTEXA* pTEXA);
  78. extern "C" void SaturateColor_amd64(int* c);
  79. extern "C" void __fastcall SaturateColor_sse2(int* c);
  80. extern "C" void __fastcall SaturateColor_asm(int* c);
  81. struct uvmm_t {float umin, vmin, umax, vmax;};
  82. struct vertex_t {float xyzw[4]; DWORD color[2]; float u, v;};
  83. extern "C" void __fastcall UVMinMax_sse2(int nVertices, vertex_t* pVertices, uvmm_t* uv);
  84. extern "C" void __fastcall UVMinMax_c(int nVertices, vertex_t* pVertices, uvmm_t* uv);
  85. extern "C" void __fastcall WriteCLUT_T16_I8_CSM1_sse2(WORD* vm, WORD* clut);
  86. extern "C" void __fastcall WriteCLUT_T32_I8_CSM1_sse2(DWORD* vm, WORD* clut);
  87. extern "C" void __fastcall WriteCLUT_T16_I4_CSM1_sse2(WORD* vm, WORD* clut);
  88. extern "C" void __fastcall WriteCLUT_T32_I4_CSM1_sse2(DWORD* vm, WORD* clut);
  89. extern void __fastcall WriteCLUT_T16_I8_CSM1_c(WORD* vm, WORD* clut);
  90. extern void __fastcall WriteCLUT_T32_I8_CSM1_c(DWORD* vm, WORD* clut);
  91. extern void __fastcall WriteCLUT_T16_I4_CSM1_c(WORD* vm, WORD* clut);
  92. extern void __fastcall WriteCLUT_T32_I4_CSM1_c(DWORD* vm, WORD* clut);
  93. extern "C" void __fastcall ReadCLUT32_T32_I8_sse2(WORD* src, DWORD* dst);
  94. extern "C" void __fastcall ReadCLUT32_T32_I4_sse2(WORD* src, DWORD* dst);
  95. extern "C" void __fastcall ReadCLUT32_T16_I8_sse2(WORD* src, DWORD* dst);
  96. extern "C" void __fastcall ReadCLUT32_T16_I4_sse2(WORD* src, DWORD* dst);
  97. extern void __fastcall ReadCLUT32_T32_I8_c(WORD* src, DWORD* dst);
  98. extern void __fastcall ReadCLUT32_T32_I4_c(WORD* src, DWORD* dst);
  99. extern void __fastcall ReadCLUT32_T16_I8_c(WORD* src, DWORD* dst);
  100. extern void __fastcall ReadCLUT32_T16_I4_c(WORD* src, DWORD* dst);
  101. #ifdef _M_AMD64
  102. #define SaturateColor SaturateColor_amd64
  103. #define unSwizzleBlock32 unSwizzleBlock32_amd64
  104. #define unSwizzleBlock16 unSwizzleBlock16_amd64
  105. #define unSwizzleBlock8 unSwizzleBlock8_amd64
  106. #define unSwizzleBlock4 unSwizzleBlock4_amd64
  107. #define unSwizzleBlock8HP unSwizzleBlock8HP_amd64
  108. #define unSwizzleBlock4HLP unSwizzleBlock4HLP_amd64
  109. #define unSwizzleBlock4HHP unSwizzleBlock4HHP_amd64
  110. #define unSwizzleBlock4P unSwizzleBlock4P_amd64
  111. #define SwizzleBlock32 SwizzleBlock32_amd64
  112. #define SwizzleBlock16 SwizzleBlock16_amd64
  113. #define SwizzleBlock8 SwizzleBlock8_amd64
  114. #define SwizzleBlock4 SwizzleBlock4_amd64
  115. #define SwizzleBlock32u SwizzleBlock32u_amd64
  116. #define SwizzleBlock16u SwizzleBlock16u_amd64
  117. #define SwizzleBlock8u SwizzleBlock8u_amd64
  118. #define SwizzleBlock4u SwizzleBlock4u_amd64
  119. #define SwizzleColumn32 SwizzleColumn32_c
  120. #define SwizzleColumn16 SwizzleColumn16_c
  121. #define SwizzleColumn8 SwizzleColumn8_c
  122. #define SwizzleColumn4 SwizzleColumn4_c
  123. #define ExpandBlock24 ExpandBlock24_sse2
  124. #define ExpandBlock16 ExpandBlock16_sse2
  125. #define Expand16 Expand16_sse2
  126. #define UVMinMax UVMinMax_sse2
  127. #define WriteCLUT_T16_I8_CSM1 WriteCLUT_T16_I8_CSM1_sse2
  128. #define WriteCLUT_T32_I8_CSM1 WriteCLUT_T32_I8_CSM1_sse2
  129. #define WriteCLUT_T16_I4_CSM1 WriteCLUT_T16_I4_CSM1_sse2
  130. #define WriteCLUT_T32_I4_CSM1 WriteCLUT_T32_I4_CSM1_sse2
  131. #define ReadCLUT32_T32_I8 ReadCLUT32_T32_I8_sse2
  132. #define ReadCLUT32_T32_I4 ReadCLUT32_T32_I4_sse2
  133. #define ReadCLUT32_T16_I8 ReadCLUT32_T16_I8_sse2
  134. #define ReadCLUT32_T16_I4 ReadCLUT32_T16_I4_sse2
  135. #elif _M_IX86_FP >= 2
  136. #define SaturateColor SaturateColor_sse2
  137. #define unSwizzleBlock32 unSwizzleBlock32_sse2
  138. #define unSwizzleBlock16 unSwizzleBlock16_sse2
  139. #define unSwizzleBlock8 unSwizzleBlock8_sse2
  140. #define unSwizzleBlock4 unSwizzleBlock4_sse2
  141. #define unSwizzleBlock8HP unSwizzleBlock8HP_sse2
  142. #define unSwizzleBlock4HLP unSwizzleBlock4HLP_sse2
  143. #define unSwizzleBlock4HHP unSwizzleBlock4HHP_sse2
  144. #define unSwizzleBlock4P unSwizzleBlock4P_sse2
  145. #define SwizzleBlock32 SwizzleBlock32_sse2
  146. #define SwizzleBlock16 SwizzleBlock16_sse2
  147. #define SwizzleBlock8 SwizzleBlock8_sse2
  148. #define SwizzleBlock4 SwizzleBlock4_sse2
  149. #define SwizzleBlock32u SwizzleBlock32u_sse2
  150. #define SwizzleBlock16u SwizzleBlock16u_sse2
  151. #define SwizzleBlock8u SwizzleBlock8u_sse2
  152. #define SwizzleBlock4u SwizzleBlock4u_sse2
  153. #define SwizzleColumn32 SwizzleColumn32_c
  154. #define SwizzleColumn16 SwizzleColumn16_c
  155. #define SwizzleColumn8 SwizzleColumn8_c
  156. #define SwizzleColumn4 SwizzleColumn4_c
  157. #define ExpandBlock24 ExpandBlock24_sse2
  158. #define ExpandBlock16 ExpandBlock16_sse2
  159. #define Expand16 Expand16_sse2
  160. #define UVMinMax UVMinMax_sse2
  161. #define WriteCLUT_T16_I8_CSM1 WriteCLUT_T16_I8_CSM1_sse2
  162. #define WriteCLUT_T32_I8_CSM1 WriteCLUT_T32_I8_CSM1_sse2
  163. #define WriteCLUT_T16_I4_CSM1 WriteCLUT_T16_I4_CSM1_sse2
  164. #define WriteCLUT_T32_I4_CSM1 WriteCLUT_T32_I4_CSM1_sse2
  165. #define ReadCLUT32_T32_I8 ReadCLUT32_T32_I8_sse2
  166. #define ReadCLUT32_T32_I4 ReadCLUT32_T32_I4_sse2
  167. #define ReadCLUT32_T16_I8 ReadCLUT32_T16_I8_sse2
  168. #define ReadCLUT32_T16_I4 ReadCLUT32_T16_I4_sse2
  169. #else
  170. #define SaturateColor SaturateColor_asm
  171. #define unSwizzleBlock32 unSwizzleBlock32_c
  172. #define unSwizzleBlock16 unSwizzleBlock16_c
  173. #define unSwizzleBlock8 unSwizzleBlock8_c
  174. #define unSwizzleBlock4 unSwizzleBlock4_c
  175. #define unSwizzleBlock8HP unSwizzleBlock8HP_c
  176. #define unSwizzleBlock4HLP unSwizzleBlock4HLP_c
  177. #define unSwizzleBlock4HHP unSwizzleBlock4HHP_c
  178. #define unSwizzleBlock4P unSwizzleBlock4P_c
  179. #define SwizzleBlock32 SwizzleBlock32_c
  180. #define SwizzleBlock16 SwizzleBlock16_c
  181. #define SwizzleBlock8 SwizzleBlock8_c
  182. #define SwizzleBlock4 SwizzleBlock4_c
  183. #define SwizzleBlock32u SwizzleBlock32_c
  184. #define SwizzleBlock16u SwizzleBlock16_c
  185. #define SwizzleBlock8u SwizzleBlock8_c
  186. #define SwizzleBlock4u SwizzleBlock4_c
  187. #define SwizzleColumn32 SwizzleColumn32_c
  188. #define SwizzleColumn16 SwizzleColumn16_c
  189. #define SwizzleColumn8 SwizzleColumn8_c
  190. #define SwizzleColumn4 SwizzleColumn4_c
  191. #define ExpandBlock24 ExpandBlock24_c
  192. #define ExpandBlock16 ExpandBlock16_c
  193. #define Expand16 Expand16_c
  194. #define UVMinMax UVMinMax_c
  195. #define WriteCLUT_T16_I8_CSM1 WriteCLUT_T16_I8_CSM1_c
  196. #define WriteCLUT_T32_I8_CSM1 WriteCLUT_T32_I8_CSM1_c
  197. #define WriteCLUT_T16_I4_CSM1 WriteCLUT_T16_I4_CSM1_c
  198. #define WriteCLUT_T32_I4_CSM1 WriteCLUT_T32_I4_CSM1_c
  199. #define ReadCLUT32_T32_I8 ReadCLUT32_T32_I8_c
  200. #define ReadCLUT32_T32_I4 ReadCLUT32_T32_I4_c
  201. #define ReadCLUT32_T16_I8 ReadCLUT32_T16_I8_c
  202. #define ReadCLUT32_T16_I4 ReadCLUT32_T16_I4_c
  203. #endif