sse.bmx 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. ' Copyright (c) 2016 David JJ Camp
  2. '
  3. ' This software is provided 'as-is', without any express or implied
  4. ' warranty. In no event will the authors be held liable for any damages
  5. ' arising from the use of this software.
  6. '
  7. ' Permission is granted to anyone to use this software for any purpose,
  8. ' including commercial applications, and to alter it and redistribute it
  9. ' freely, subject to the following restrictions:
  10. '
  11. ' 1. The origin of this software must not be misrepresented; you must not
  12. ' claim that you wrote the original software. If you use this software
  13. ' in a product, an acknowledgement in the product documentation would be
  14. ' appreciated but is not required.
  15. ' 2. Altered source versions must be plainly marked as such, and must not be
  16. ' misrepresented as being the original software.
  17. ' 3. This notice may not be removed or altered from any source distribution.
  18. '
  19. SuperStrict
  20. Extern
  21. Function _mm_add_ps:Float128(a:Float128,b:Float128)="__m128 _mm_add_ps(__m128 ,__m128 )!"
  22. Function _mm_add_ss:Float128(a:Float128,b:Float128)="__m128 _mm_add_ss(__m128 ,__m128 )!"
  23. Function _mm_and_ps:Float128(a:Float128,b:Float128)="__m128 _mm_and_ps(__m128 ,__m128 )!"
  24. Function _mm_andnot_ps:Float128(a:Float128,b:Float128)="__m128 _mm_andnot_ps(__m128 ,__m128 )!"
  25. Function _mm_avg_pu16:Float64(a:Float64,b:Float64)="__m64 _mm_avg_pu16(__m64 ,__m64 )!"
  26. Function _mm_avg_pu8:Float64(a:Float64,b:Float64)="__m64 _mm_avg_pu8(__m64 ,__m64 )!"
  27. Function _mm_cmpeq_ps:Float128(a:Float128,b:Float128)="__m128 _mm_cmpeq_ps(__m128 ,__m128 )!"
  28. Function _mm_cmpeq_ss:Float128(a:Float128,b:Float128)="__m128 _mm_cmpeq_ss(__m128 ,__m128 )!"
  29. Function _mm_cmpge_ps:Float128(a:Float128,b:Float128)="__m128 _mm_cmpge_ps(__m128 ,__m128 )!"
  30. Function _mm_cmpge_ss:Float128(a:Float128,b:Float128)="__m128 _mm_cmpge_ss(__m128 ,__m128 )!"
  31. Function _mm_cmpgt_ps:Float128(a:Float128,b:Float128)="__m128 _mm_cmpgt_ps(__m128 ,__m128 )!"
  32. Function _mm_cmpgt_ss:Float128(a:Float128,b:Float128)="__m128 _mm_cmpgt_ss(__m128 ,__m128 )!"
  33. Function _mm_cmple_ps:Float128(a:Float128,b:Float128)="__m128 _mm_cmple_ps(__m128 ,__m128 )!"
  34. Function _mm_cmple_ss:Float128(a:Float128,b:Float128)="__m128 _mm_cmple_ss(__m128 ,__m128 )!"
  35. Function _mm_cmplt_ps:Float128(a:Float128,b:Float128)="__m128 _mm_cmplt_ps(__m128 ,__m128 )!"
  36. Function _mm_cmplt_ss:Float128(a:Float128,b:Float128)="__m128 _mm_cmplt_ss(__m128 ,__m128 )!"
  37. Function _mm_cmpneq_ps:Float128(a:Float128,b:Float128)="__m128 _mm_cmpneq_ps(__m128 ,__m128 )!"
  38. Function _mm_cmpneq_ss:Float128(a:Float128,b:Float128)="__m128 _mm_cmpneq_ss(__m128 ,__m128 )!"
  39. Function _mm_cmpnge_ps:Float128(a:Float128,b:Float128)="__m128 _mm_cmpnge_ps(__m128 ,__m128 )!"
  40. Function _mm_cmpnge_ss:Float128(a:Float128,b:Float128)="__m128 _mm_cmpnge_ss(__m128 ,__m128 )!"
  41. Function _mm_cmpngt_ps:Float128(a:Float128,b:Float128)="__m128 _mm_cmpngt_ps(__m128 ,__m128 )!"
  42. Function _mm_cmpngt_ss:Float128(a:Float128,b:Float128)="__m128 _mm_cmpngt_ss(__m128 ,__m128 )!"
  43. Function _mm_cmpnle_ps:Float128(a:Float128,b:Float128)="__m128 _mm_cmpnle_ps(__m128 ,__m128 )!"
  44. Function _mm_cmpnle_ss:Float128(a:Float128,b:Float128)="__m128 _mm_cmpnle_ss(__m128 ,__m128 )!"
  45. Function _mm_cmpnlt_ps:Float128(a:Float128,b:Float128)="__m128 _mm_cmpnlt_ps(__m128 ,__m128 )!"
  46. Function _mm_cmpnlt_ss:Float128(a:Float128,b:Float128)="__m128 _mm_cmpnlt_ss(__m128 ,__m128 )!"
  47. Function _mm_cmpord_ps:Float128(a:Float128,b:Float128)="__m128 _mm_cmpord_ps(__m128 ,__m128 )!"
  48. Function _mm_cmpord_ss:Float128(a:Float128,b:Float128)="__m128 _mm_cmpord_ss(__m128 ,__m128 )!"
  49. Function _mm_cmpunord_ps:Float128(a:Float128,b:Float128)="__m128 _mm_cmpunord_ps(__m128 ,__m128 )!"
  50. Function _mm_cmpunord_ss:Float128(a:Float128,b:Float128)="__m128 _mm_cmpunord_ss(__m128 ,__m128 )!"
  51. Function _mm_comieq_ss:Int(a:Float128,b:Float128)="int _mm_comieq_ss(__m128 ,__m128 )!"
  52. Function _mm_comige_ss:Int(a:Float128,b:Float128)="int _mm_comige_ss(__m128 ,__m128 )!"
  53. Function _mm_comigt_ss:Int(a:Float128,b:Float128)="int _mm_comigt_ss(__m128 ,__m128 )!"
  54. Function _mm_comile_ss:Int(a:Float128,b:Float128)="int _mm_comile_ss(__m128 ,__m128 )!"
  55. Function _mm_comilt_ss:Int(a:Float128,b:Float128)="int _mm_comilt_ss(__m128 ,__m128 )!"
  56. Function _mm_comineq_ss:Int(a:Float128,b:Float128)="int _mm_comineq_ss(__m128 ,__m128 )!"
  57. Function _mm_cvt_pi2ps:Float128(a:Float128,b:Float64)="__m128 _mm_cvt_pi2ps(__m128 ,__m64 )!"
  58. Function _mm_cvt_ps2pi:Float64(a:Float128)="__m64 _mm_cvt_ps2pi(__m128 )!"
  59. Function _mm_cvt_si2ss:Float128(a:Float128,b:Int)="__m128 _mm_cvt_si2ss(__m128 ,int )!"
  60. Function _mm_cvt_ss2si:Int(a:Float128)="int _mm_cvt_ss2si(__m128 )!"
  61. Function _mm_cvtpi16_ps:Float128(a:Float64)="__m128 _mm_cvtpi16_ps(__m64 )!"
  62. Function _mm_cvtpi32_ps:Float128(a:Float128,b:Float64)="__m128 _mm_cvtpi32_ps(__m128 ,__m64 )!"
  63. Function _mm_cvtpi32x2_ps:Float128(a:Float64,b:Float64)="__m128 _mm_cvtpi32x2_ps(__m64 ,__m64 )!"
  64. Function _mm_cvtpi8_ps:Float128(a:Float64)="__m128 _mm_cvtpi8_ps(__m64 )!"
  65. Function _mm_cvtps_pi16:Float64(a:Float128)="__m64 _mm_cvtps_pi16(__m128 )!"
  66. Function _mm_cvtps_pi32:Float64(a:Float128)="__m64 _mm_cvtps_pi32(__m128 )!"
  67. Function _mm_cvtps_pi8:Float64(a:Float128)="__m64 _mm_cvtps_pi8(__m128 )!"
  68. Function _mm_cvtpu16_ps:Float128(a:Float64)="__m128 _mm_cvtpu16_ps(__m64 )!"
  69. Function _mm_cvtpu8_ps:Float128(a:Float64)="__m128 _mm_cvtpu8_ps(__m64 )!"
  70. Function _mm_cvtsi32_ss:Float128(a:Float128,b:Int)="__m128 _mm_cvtsi32_ss(__m128 ,int )!"
  71. Function _mm_cvtsi64_ss:Float128(a:Float128,b:Long)="__m128 _mm_cvtsi64_ss(__m128 ,__int64 )!"
  72. Function _mm_cvtss_f32:Float(a:Float128)="float _mm_cvtss_f32(__m128 )!"
  73. Function _mm_cvtss_si32:Int(a:Float128)="int _mm_cvtss_si32(__m128 )!"
  74. Function _mm_cvtss_si64:Long(a:Float128)="__int64 _mm_cvtss_si64(__m128 )!"
  75. Function _mm_cvtt_ps2pi:Float64(a:Float128)="__m64 _mm_cvtt_ps2pi(__m128 )!"
  76. Function _mm_cvtt_ss2si:Int(a:Float128)="int _mm_cvtt_ss2si(__m128 )!"
  77. Function _mm_cvttps_pi32:Float64(a:Float128)="__m64 _mm_cvttps_pi32(__m128 )!"
  78. Function _mm_cvttss_si32:Int(a:Float128)="int _mm_cvttss_si32(__m128 )!"
  79. Function _mm_cvttss_si64:Long(a:Float128)="__int64 _mm_cvttss_si64(__m128 )!"
  80. Function _mm_div_ps:Float128(a:Float128,b:Float128)="__m128 _mm_div_ps(__m128 ,__m128 )!"
  81. Function _mm_div_ss:Float128(a:Float128,b:Float128)="__m128 _mm_div_ss(__m128 ,__m128 )!"
  82. Function _mm_extract_pi16:Int(a:Float64,imm8:Int)="int _mm_extract_pi16(__m64 ,int )!"
  83. Function _MM_GET_EXCEPTION_MASK:UInt()="unsigned int _MM_GET_EXCEPTION_MASK()!"
  84. Function _MM_GET_EXCEPTION_STATE:UInt()="unsigned int _MM_GET_EXCEPTION_STATE()!"
  85. Function _MM_GET_FLUSH_ZERO_MODE:UInt()="unsigned int _MM_GET_FLUSH_ZERO_MODE()!"
  86. Function _MM_GET_ROUNDING_MODE:UInt()="unsigned int _MM_GET_ROUNDING_MODE()!"
  87. Function _mm_getcsr:UInt()="unsigned int _mm_getcsr(void )!"
  88. Function _mm_insert_pi16:Float64(a:Float64,i:Int,imm8:Int)="__m64 _mm_insert_pi16(__m64 ,int ,int )!"
  89. Function _mm_load_ps:Float128(mem_addr:Float Ptr)="__m128 _mm_load_ps(float* )!"
  90. Function _mm_load_ps1:Float128(mem_addr:Float Ptr)="__m128 _mm_load_ps1(float* )!"
  91. Function _mm_load_ss:Float128(mem_addr:Float Ptr)="__m128 _mm_load_ss(float* )!"
  92. Function _mm_load1_ps:Float128(mem_addr:Float Ptr)="__m128 _mm_load1_ps(float* )!"
  93. Function _mm_loadh_pi:Float128(a:Float128,mem_addr:Float64 Ptr)="__m128 _mm_loadh_pi(__m128 ,__m64* )!"
  94. Function _mm_loadl_pi:Float128(a:Float128,mem_addr:Float64 Ptr)="__m128 _mm_loadl_pi(__m128 ,__m64* )!"
  95. Function _mm_loadr_ps:Float128(mem_addr:Float Ptr)="__m128 _mm_loadr_ps(float* )!"
  96. Function _mm_loadu_ps:Float128(mem_addr:Float Ptr)="__m128 _mm_loadu_ps(float* )!"
  97. Function _mm_maskmove_si64(a:Float64,mask:Float64,mem_addr:Byte Ptr)="void _mm_maskmove_si64(__m64 ,__m64 ,char* )!"
  98. Function _m_maskmovq(a:Float64,mask:Float64,mem_addr:Byte Ptr)="void _m_maskmovq(__m64 ,__m64 ,char* )!"
  99. Function _mm_max_pi16:Float64(a:Float64,b:Float64)="__m64 _mm_max_pi16(__m64 ,__m64 )!"
  100. Function _mm_max_ps:Float128(a:Float128,b:Float128)="__m128 _mm_max_ps(__m128 ,__m128 )!"
  101. Function _mm_max_pu8:Float64(a:Float64,b:Float64)="__m64 _mm_max_pu8(__m64 ,__m64 )!"
  102. Function _mm_max_ss:Float128(a:Float128,b:Float128)="__m128 _mm_max_ss(__m128 ,__m128 )!"
  103. Function _mm_min_pi16:Float64(a:Float64,b:Float64)="__m64 _mm_min_pi16(__m64 ,__m64 )!"
  104. Function _mm_min_ps:Float128(a:Float128,b:Float128)="__m128 _mm_min_ps(__m128 ,__m128 )!"
  105. Function _mm_min_pu8:Float64(a:Float64,b:Float64)="__m64 _mm_min_pu8(__m64 ,__m64 )!"
  106. Function _mm_min_ss:Float128(a:Float128,b:Float128)="__m128 _mm_min_ss(__m128 ,__m128 )!"
  107. Function _mm_move_ss:Float128(a:Float128,b:Float128)="__m128 _mm_move_ss(__m128 ,__m128 )!"
  108. Function _mm_movehl_ps:Float128(a:Float128,b:Float128)="__m128 _mm_movehl_ps(__m128 ,__m128 )!"
  109. Function _mm_movelh_ps:Float128(a:Float128,b:Float128)="__m128 _mm_movelh_ps(__m128 ,__m128 )!"
  110. Function _mm_movemask_pi8:Int(a:Float64)="int _mm_movemask_pi8(__m64 )!"
  111. Function _mm_movemask_ps:Int(a:Float128)="int _mm_movemask_ps(__m128 )!"
  112. Function _mm_mul_ps:Float128(a:Float128,b:Float128)="__m128 _mm_mul_ps(__m128 ,__m128 )!"
  113. Function _mm_mul_ss:Float128(a:Float128,b:Float128)="__m128 _mm_mul_ss(__m128 ,__m128 )!"
  114. Function _mm_mulhi_pu16:Float64(a:Float64,b:Float64)="__m64 _mm_mulhi_pu16(__m64 ,__m64 )!"
  115. Function _mm_or_ps:Float128(a:Float128,b:Float128)="__m128 _mm_or_ps(__m128 ,__m128 )!"
  116. Function _m_pavgb:Float64(a:Float64,b:Float64)="__m64 _m_pavgb(__m64 ,__m64 )!"
  117. Function _m_pavgw:Float64(a:Float64,b:Float64)="__m64 _m_pavgw(__m64 ,__m64 )!"
  118. Function _m_pextrw:Int(a:Float64,imm8:Int)="int _m_pextrw(__m64 ,int )!"
  119. Function _m_pinsrw:Float64(a:Float64,i:Int,imm8:Int)="__m64 _m_pinsrw(__m64 ,int ,int )!"
  120. Function _m_pmaxsw:Float64(a:Float64,b:Float64)="__m64 _m_pmaxsw(__m64 ,__m64 )!"
  121. Function _m_pmaxub:Float64(a:Float64,b:Float64)="__m64 _m_pmaxub(__m64 ,__m64 )!"
  122. Function _m_pminsw:Float64(a:Float64,b:Float64)="__m64 _m_pminsw(__m64 ,__m64 )!"
  123. Function _m_pminub:Float64(a:Float64,b:Float64)="__m64 _m_pminub(__m64 ,__m64 )!"
  124. Function _m_pmovmskb:Int(a:Float64)="int _m_pmovmskb(__m64 )!"
  125. Function _m_pmulhuw:Float64(a:Float64,b:Float64)="__m64 _m_pmulhuw(__m64 ,__m64 )!"
  126. Function _mm_prefetch(p:Byte Ptr,i:Int)="void _mm_prefetch(char* ,int )!"
  127. Function _m_psadbw:Float64(a:Float64,b:Float64)="__m64 _m_psadbw(__m64 ,__m64 )!"
  128. Function _m_pshufw:Float64(a:Float64,imm8:Int)="__m64 _m_pshufw(__m64 ,int )!"
  129. Function _mm_rcp_ps:Float128(a:Float128)="__m128 _mm_rcp_ps(__m128 )!"
  130. Function _mm_rcp_ss:Float128(a:Float128)="__m128 _mm_rcp_ss(__m128 )!"
  131. Function _mm_rsqrt_ps:Float128(a:Float128)="__m128 _mm_rsqrt_ps(__m128 )!"
  132. Function _mm_rsqrt_ss:Float128(a:Float128)="__m128 _mm_rsqrt_ss(__m128 )!"
  133. Function _mm_sad_pu8:Float64(a:Float64,b:Float64)="__m64 _mm_sad_pu8(__m64 ,__m64 )!"
  134. Function _MM_SET_EXCEPTION_MASK(a:UInt)="void _MM_SET_EXCEPTION_MASK(unsigned int )!"
  135. Function _MM_SET_EXCEPTION_STATE(a:UInt)="void _MM_SET_EXCEPTION_STATE(unsigned int )!"
  136. Function _MM_SET_FLUSH_ZERO_MODE(a:UInt)="void _MM_SET_FLUSH_ZERO_MODE(unsigned int )!"
  137. Function _mm_set_ps:Float128(e3:Float,e2:Float,e1:Float,e0:Float)="__m128 _mm_set_ps(float ,float ,float ,float )!"
  138. Function _mm_set_ps1:Float128(a:Float)="__m128 _mm_set_ps1(float )!"
  139. Function _MM_SET_ROUNDING_MODE(a:UInt)="void _MM_SET_ROUNDING_MODE(unsigned int )!"
  140. Function _mm_set_ss:Float128(a:Float)="__m128 _mm_set_ss(float )!"
  141. Function _mm_set1_ps:Float128(a:Float)="__m128 _mm_set1_ps(float )!"
  142. Function _mm_setcsr(a:UInt)="void _mm_setcsr(unsigned int )!"
  143. Function _mm_setr_ps:Float128(e3:Float,e2:Float,e1:Float,e0:Float)="__m128 _mm_setr_ps(float ,float ,float ,float )!"
  144. Function _mm_setzero_ps:Float128()="__m128 _mm_setzero_ps(void )!"
  145. Function _mm_sfence()="void _mm_sfence(void )!"
  146. Function _mm_shuffle_pi16:Float64(a:Float64,imm8:Int)="__m64 _mm_shuffle_pi16(__m64 ,int )!"
  147. Function _mm_shuffle_ps:Float128(a:Float128,b:Float128,imm8:UInt)="__m128 _mm_shuffle_ps(__m128 ,__m128 ,unsigned int )!"
  148. Function _mm_sqrt_ps:Float128(a:Float128)="__m128 _mm_sqrt_ps(__m128 )!"
  149. Function _mm_sqrt_ss:Float128(a:Float128)="__m128 _mm_sqrt_ss(__m128 )!"
  150. Function _mm_store_ps(mem_addr:Float Ptr,a:Float128)="void _mm_store_ps(float* ,__m128 )!"
  151. Function _mm_store_ps1(mem_addr:Float Ptr,a:Float128)="void _mm_store_ps1(float* ,__m128 )!"
  152. Function _mm_store_ss(mem_addr:Float Ptr,a:Float128)="void _mm_store_ss(float* ,__m128 )!"
  153. Function _mm_store1_ps(mem_addr:Float Ptr,a:Float128)="void _mm_store1_ps(float* ,__m128 )!"
  154. Function _mm_storeh_pi(mem_addr:Float64 Ptr,a:Float128)="void _mm_storeh_pi(__m64* ,__m128 )!"
  155. Function _mm_storel_pi(mem_addr:Float64 Ptr,a:Float128)="void _mm_storel_pi(__m64* ,__m128 )!"
  156. Function _mm_storer_ps(mem_addr:Float Ptr,a:Float128)="void _mm_storer_ps(float* ,__m128 )!"
  157. Function _mm_storeu_ps(mem_addr:Float Ptr,a:Float128)="void _mm_storeu_ps(float* ,__m128 )!"
  158. Function _mm_stream_pi(mem_addr:Float64 Ptr,a:Float64)="void _mm_stream_pi(__m64* ,__m64 )!"
  159. Function _mm_stream_ps(mem_addr:Float Ptr,a:Float128)="void _mm_stream_ps(float* ,__m128 )!"
  160. Function _mm_sub_ps:Float128(a:Float128,b:Float128)="__m128 _mm_sub_ps(__m128 ,__m128 )!"
  161. Function _mm_sub_ss:Float128(a:Float128,b:Float128)="__m128 _mm_sub_ss(__m128 ,__m128 )!"
  162. Function _mm_ucomieq_ss:Int(a:Float128,b:Float128)="int _mm_ucomieq_ss(__m128 ,__m128 )!"
  163. Function _mm_ucomige_ss:Int(a:Float128,b:Float128)="int _mm_ucomige_ss(__m128 ,__m128 )!"
  164. Function _mm_ucomigt_ss:Int(a:Float128,b:Float128)="int _mm_ucomigt_ss(__m128 ,__m128 )!"
  165. Function _mm_ucomile_ss:Int(a:Float128,b:Float128)="int _mm_ucomile_ss(__m128 ,__m128 )!"
  166. Function _mm_ucomilt_ss:Int(a:Float128,b:Float128)="int _mm_ucomilt_ss(__m128 ,__m128 )!"
  167. Function _mm_ucomineq_ss:Int(a:Float128,b:Float128)="int _mm_ucomineq_ss(__m128 ,__m128 )!"
  168. Function _mm_unpackhi_ps:Float128(a:Float128,b:Float128)="__m128 _mm_unpackhi_ps(__m128 ,__m128 )!"
  169. Function _mm_unpacklo_ps:Float128(a:Float128,b:Float128)="__m128 _mm_unpacklo_ps(__m128 ,__m128 )!"
  170. Function _mm_xor_ps:Float128(a:Float128,b:Float128)="__m128 _mm_xor_ps(__m128 ,__m128 )!"
  171. EndExtern