vis_proto.h
上传用户:lyxiangda
上传日期:2007-01-12
资源大小:3042k
文件大小:10k
源码类别:

CA认证

开发平台:

WINDOWS

  1. /*
  2.  * The contents of this file are subject to the Mozilla Public
  3.  * License Version 1.1 (the "License"); you may not use this file
  4.  * except in compliance with the License. You may obtain a copy of
  5.  * the License at http://www.mozilla.org/MPL/
  6.  * 
  7.  * Software distributed under the License is distributed on an "AS
  8.  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  9.  * implied. See the License for the specific language governing
  10.  * rights and limitations under the License.
  11.  * 
  12.  * The Original Code is prototypes for vis.il  (vis_proto.h 1.3)
  13.  *
  14.  * The Initial Developer of the Original Code is Sun Microsystems Inc.
  15.  * Portions created by Sun Microsystems Inc. are 
  16.  * Copyright (C) 1995, 1997 Sun Microsystems Inc. All Rights Reserved.
  17.  * 
  18.  * Contributor(s):
  19.  * 
  20.  * Alternatively, the contents of this file may be used under the
  21.  * terms of the GNU General Public License Version 2 or later (the
  22.  * "GPL"), in which case the provisions of the GPL are applicable 
  23.  * instead of those above. If you wish to allow use of your 
  24.  * version of this file only under the terms of the GPL and not to
  25.  * allow others to use your version of this file under the MPL,
  26.  * indicate your decision by deleting the provisions above and
  27.  * replace them with the notice and other provisions required by
  28.  * the GPL.  If you do not delete the provisions above, a recipient
  29.  * may use your version of this file under either the MPL or the
  30.  * GPL.
  31.  *  $Id: vis_proto.h,v 1.1 2000/09/29 23:38:05 nelsonb%netscape.com Exp $
  32.  */
  33. /*
  34.  * Prototypes for the inline templates in vis.il
  35.  */
  36. #ifndef VIS_PROTO_H
  37. #define VIS_PROTO_H
  38. #pragma ident "@(#)vis_proto.h 1.3 97/03/30 SMI"
  39. #ifdef __cplusplus
  40. extern "C" {
  41. #endif /* __cplusplus */
  42. /* Pure edge handling instructions */
  43. int vis_edge8(void * /*frs1*/, void * /*frs2*/);
  44. int vis_edge8l(void * /*frs1*/, void * /*frs2*/);
  45. int vis_edge16(void * /*frs1*/, void * /*frs2*/);
  46. int vis_edge16l(void * /*frs1*/, void * /*frs2*/);
  47. int vis_edge32(void * /*frs1*/, void * /*frs2*/);
  48. int vis_edge32l(void * /*frs1*/, void * /*frs2*/);
  49. /* Edge handling instructions with negative return values if cc set. */
  50. int vis_edge8cc(void * /*frs1*/, void * /*frs2*/);
  51. int vis_edge8lcc(void * /*frs1*/, void * /*frs2*/);
  52. int vis_edge16cc(void * /*frs1*/, void * /*frs2*/);
  53. int vis_edge16lcc(void * /*frs1*/, void * /*frs2*/);
  54. int vis_edge32cc(void * /*frs1*/, void * /*frs2*/);
  55. int vis_edge32lcc(void * /*frs1*/, void * /*frs2*/);
  56. /* Alignment instructions. */
  57. void *vis_alignaddr(void * /*rs1*/, int /*rs2*/);
  58. void *vis_alignaddrl(void * /*rs1*/, int /*rs2*/);
  59. double vis_faligndata(double /*frs1*/, double /*frs2*/);
  60. /* Partitioned comparison instructions. */
  61. int vis_fcmple16(double /*frs1*/, double /*frs2*/);
  62. int vis_fcmpne16(double /*frs1*/, double /*frs2*/);
  63. int vis_fcmple32(double /*frs1*/, double /*frs2*/);
  64. int vis_fcmpne32(double /*frs1*/, double /*frs2*/);
  65. int vis_fcmpgt16(double /*frs1*/, double /*frs2*/);
  66. int vis_fcmpeq16(double /*frs1*/, double /*frs2*/);
  67. int vis_fcmpgt32(double /*frs1*/, double /*frs2*/);
  68. int vis_fcmpeq32(double /*frs1*/, double /*frs2*/);
  69. /* Partitioned multiplication. */
  70. #if 0
  71. double vis_fmul8x16(float /*frs1*/, double /*frs2*/);
  72. #endif
  73. double vis_fmul8x16_dummy(float /*frs1*/, int /*dummy*/, double /*frs2*/);
  74. double vis_fmul8x16au(float /*frs1*/, float /*frs2*/);
  75. double vis_fmul8x16al(float /*frs1*/, float /*frs2*/);
  76. double vis_fmul8sux16(double /*frs1*/, double /*frs2*/);
  77. double vis_fmul8ulx16(double /*frs1*/, double /*frs2*/);
  78. double vis_fmuld8ulx16(float /*frs1*/, float /*frs2*/);
  79. double vis_fmuld8sux16(float /*frs1*/, float /*frs2*/);
  80. /* Partitioned addition & subtraction. */
  81. double vis_fpadd16(double /*frs1*/, double /*frs2*/);
  82. float vis_fpadd16s(float /*frs1*/, float /*frs2*/);
  83. double vis_fpadd32(double /*frs1*/, double /*frs2*/);
  84. float vis_fpadd32s(float /*frs1*/, float /*frs2*/);
  85. double vis_fpsub16(double /*frs1*/, double /*frs2*/);
  86. float vis_fpsub16s(float /*frs1*/, float /*frs2*/);
  87. double vis_fpsub32(double /*frs1*/, double /*frs2*/);
  88. float vis_fpsub32s(float /*frs1*/, float /*frs2*/);
  89. /* Pixel packing & clamping. */
  90. float vis_fpack16(double /*frs2*/);
  91. double vis_fpack32(double /*frs1*/, double /*frs2*/);
  92. float vis_fpackfix(double /*frs2*/);
  93. /* Combined pack ops. */
  94. double vis_fpack16_pair(double /*frs2*/, double /*frs2*/);
  95. double vis_fpackfix_pair(double /*frs2*/, double /*frs2*/);
  96. void vis_st2_fpack16(double, double, double *);
  97. void vis_std_fpack16(double, double, double *);
  98. void vis_st2_fpackfix(double, double, double *);
  99. double vis_fpack16_to_hi(double /*frs1*/, double /*frs2*/);
  100. double vis_fpack16_to_lo(double /*frs1*/, double /*frs2*/);
  101. /* Motion estimation. */
  102. double vis_pdist(double /*frs1*/, double /*frs2*/, double /*frd*/);
  103. /* Channel merging. */
  104. double vis_fpmerge(float /*frs1*/, float /*frs2*/);
  105. /* Pixel expansion. */
  106. double vis_fexpand(float /*frs2*/);
  107. double vis_fexpand_hi(double /*frs2*/);
  108. double vis_fexpand_lo(double /*frs2*/);
  109. /* Bitwise logical operators. */
  110. double vis_fnor(double /*frs1*/, double /*frs2*/);
  111. float vis_fnors(float /*frs1*/, float /*frs2*/);
  112. double vis_fandnot(double /*frs1*/, double /*frs2*/);
  113. float vis_fandnots(float /*frs1*/, float /*frs2*/);
  114. double vis_fnot(double /*frs1*/);
  115. float vis_fnots(float /*frs1*/);
  116. double vis_fxor(double /*frs1*/, double /*frs2*/);
  117. float vis_fxors(float /*frs1*/, float /*frs2*/);
  118. double vis_fnand(double /*frs1*/, double /*frs2*/);
  119. float vis_fnands(float /*frs1*/, float /*frs2*/);
  120. double vis_fand(double /*frs1*/, double /*frs2*/);
  121. float vis_fands(float /*frs1*/, float /*frs2*/);
  122. double vis_fxnor(double /*frs1*/, double /*frs2*/);
  123. float vis_fxnors(float /*frs1*/, float /*frs2*/);
  124. double vis_fsrc(double /*frs1*/);
  125. float vis_fsrcs(float /*frs1*/);
  126. double vis_fornot(double /*frs1*/, double /*frs2*/);
  127. float vis_fornots(float /*frs1*/, float /*frs2*/);
  128. double vis_for(double /*frs1*/, double /*frs2*/);
  129. float vis_fors(float /*frs1*/, float /*frs2*/);
  130. double vis_fzero(void);
  131. float vis_fzeros(void);
  132. double vis_fone(void);
  133. float vis_fones(void);
  134. /* Partial stores. */
  135. void vis_stdfa_ASI_PST8P(double /*frd*/, void * /*rs1*/, int /*rmask*/);
  136. void vis_stdfa_ASI_PST8PL(double /*frd*/, void * /*rs1*/, int /*rmask*/);
  137. void vis_stdfa_ASI_PST8P_int_pair(void * /*rs1*/, void * /*rs2*/,
  138.                                   void * /*rs3*/, int /*rmask*/);
  139. void vis_stdfa_ASI_PST8S(double /*frd*/, void * /*rs1*/, int /*rmask*/);
  140. void vis_stdfa_ASI_PST16P(double /*frd*/, void * /*rs1*/, int /*rmask*/);
  141. void vis_stdfa_ASI_PST16S(double /*frd*/, void * /*rs1*/, int /*rmask*/);
  142. void vis_stdfa_ASI_PST32P(double /*frd*/, void * /*rs1*/, int /*rmask*/);
  143. void vis_stdfa_ASI_PST32S(double /*frd*/, void * /*rs1*/, int /*rmask*/);
  144. /* Byte & short stores. */
  145. void vis_stdfa_ASI_FL8P(double /*frd*/, void * /*rs1*/);
  146. void vis_stdfa_ASI_FL8P_index(double /*frd*/, void * /*rs1*/, long /*index*/);
  147. void vis_stdfa_ASI_FL8S(double /*frd*/, void * /*rs1*/);
  148. void vis_stdfa_ASI_FL16P(double /*frd*/, void * /*rs1*/);
  149. void vis_stdfa_ASI_FL16P_index(double /*frd*/, void * /*rs1*/, long /*index*/);
  150. void vis_stdfa_ASI_FL16S(double /*frd*/, void * /*rs1*/);
  151. void vis_stdfa_ASI_FL8PL(double /*frd*/, void * /*rs1*/);
  152. void vis_stdfa_ASI_FL8SL(double /*frd*/, void * /*rs1*/);
  153. void vis_stdfa_ASI_FL16PL(double /*frd*/, void * /*rs1*/);
  154. void vis_stdfa_ASI_FL16SL(double /*frd*/, void * /*rs1*/);
  155. /* Byte & short loads. */
  156. double vis_lddfa_ASI_FL8P(void * /*rs1*/);
  157. double vis_lddfa_ASI_FL8P_index(void * /*rs1*/, long /*index*/);
  158. double vis_lddfa_ASI_FL8P_hi(void * /*rs1*/, unsigned int /*index*/);
  159. double vis_lddfa_ASI_FL8P_lo(void * /*rs1*/, unsigned int /*index*/);
  160. double vis_lddfa_ASI_FL8S(void * /*rs1*/);
  161. double vis_lddfa_ASI_FL16P(void * /*rs1*/);
  162. double vis_lddfa_ASI_FL16P_index(void * /*rs1*/, long /*index*/);
  163. double vis_lddfa_ASI_FL16S(void * /*rs1*/);
  164. double vis_lddfa_ASI_FL8PL(void * /*rs1*/);
  165. double vis_lddfa_ASI_FL8SL(void * /*rs1*/);
  166. double vis_lddfa_ASI_FL16PL(void * /*rs1*/);
  167. double vis_lddfa_ASI_FL16SL(void * /*rs1*/);
  168. /* Direct write to GSR, read from GSR */
  169. void vis_write_gsr(unsigned int /*GSR*/);
  170. unsigned int vis_read_gsr(void);
  171. /* Voxel texture mapping. */
  172. #if !defined(_NO_LONGLONG)
  173. unsigned long vis_array8(unsigned long long /*rs1*/, int /*rs2*/);
  174. unsigned long vis_array16(unsigned long long /*rs1*/, int /*rs2*/);
  175. unsigned long vis_array32(unsigned long long /*rs1*/, int /*rs2*/);
  176. #endif /* !defined(_NO_LONGLONG) */
  177. /* Register aliasing and type casts. */
  178. float vis_read_hi(double /*frs1*/);
  179. float vis_read_lo(double /*frs1*/);
  180. double vis_write_hi(double /*frs1*/, float /*frs2*/);
  181. double vis_write_lo(double /*frs1*/, float /*frs2*/);
  182. double vis_freg_pair(float /*frs1*/, float /*frs2*/);
  183. float vis_to_float(unsigned int /*value*/);
  184. double vis_to_double(unsigned int /*value1*/, unsigned int /*value2*/);
  185. double vis_to_double_dup(unsigned int /*value*/);
  186. #if !defined(_NO_LONGLONG)
  187. double vis_ll_to_double(unsigned long long /*value*/);
  188. #endif /* !defined(_NO_LONGLONG) */
  189. /* Miscellany (no inlines) */
  190. void vis_error(char * /*fmt*/, int /*a0*/);
  191. void vis_sim_init(void);
  192. /* For better performance */
  193. #define vis_fmul8x16(farg,darg) vis_fmul8x16_dummy((farg),0,(darg))
  194. /* Nicknames for explicit ASI loads and stores. */
  195. #define vis_st_u8      vis_stdfa_ASI_FL8P
  196. #define vis_st_u8_i    vis_stdfa_ASI_FL8P_index
  197. #define vis_st_u8_le   vis_stdfa_ASI_FL8PL
  198. #define vis_st_u16     vis_stdfa_ASI_FL16P
  199. #define vis_st_u16_i   vis_stdfa_ASI_FL16P_index
  200. #define vis_st_u16_le  vis_stdfa_ASI_FL16PL
  201. #define vis_ld_u8      vis_lddfa_ASI_FL8P
  202. #define vis_ld_u8_i    vis_lddfa_ASI_FL8P_index
  203. #define vis_ld_u8_le   vis_lddfa_ASI_FL8PL
  204. #define vis_ld_u16     vis_lddfa_ASI_FL16P
  205. #define vis_ld_u16_i   vis_lddfa_ASI_FL16P_index
  206. #define vis_ld_u16_le  vis_lddfa_ASI_FL16PL
  207. #define vis_pst_8      vis_stdfa_ASI_PST8P
  208. #define vis_pst_16     vis_stdfa_ASI_PST16P
  209. #define vis_pst_32     vis_stdfa_ASI_PST32P
  210. #define vis_st_u8s     vis_stdfa_ASI_FL8S
  211. #define vis_st_u8s_le  vis_stdfa_ASI_FL8SL
  212. #define vis_st_u16s    vis_stdfa_ASI_FL16S
  213. #define vis_st_u16s_le vis_stdfa_ASI_FL16SL
  214. #define vis_ld_u8s     vis_lddfa_ASI_FL8S
  215. #define vis_ld_u8s_le  vis_lddfa_ASI_FL8SL
  216. #define vis_ld_u16s    vis_lddfa_ASI_FL16S
  217. #define vis_ld_u16s_le vis_lddfa_ASI_FL16SL
  218. #define vis_pst_8s     vis_stdfa_ASI_PST8S
  219. #define vis_pst_16s    vis_stdfa_ASI_PST16S
  220. #define vis_pst_32s    vis_stdfa_ASI_PST32S
  221. /* "<" and ">=" may be implemented in terms of ">" and "<=". */
  222. #define vis_fcmplt16(a,b) vis_fcmpgt16((b),(a))
  223. #define vis_fcmplt32(a,b) vis_fcmpgt32((b),(a))
  224. #define vis_fcmpge16(a,b) vis_fcmple16((b),(a))
  225. #define vis_fcmpge32(a,b) vis_fcmple32((b),(a))
  226. #ifdef __cplusplus
  227. } // End of extern "C"
  228. #endif /* __cplusplus */
  229. #endif /* VIS_PROTO_H */