jsimd.h 51 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148
  1. /*
  2. * simd/jsimd.h
  3. *
  4. * Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
  5. * Copyright (C) 2011, 2014-2016, 2018, D. R. Commander.
  6. * Copyright (C) 2013-2014, MIPS Technologies, Inc., California.
  7. * Copyright (C) 2014, Linaro Limited.
  8. * Copyright (C) 2015-2016, 2018, Matthieu Darbois.
  9. * Copyright (C) 2016-2017, Loongson Technology Corporation Limited, BeiJing.
  10. *
  11. * Based on the x86 SIMD extension for IJG JPEG library,
  12. * Copyright (C) 1999-2006, MIYASAKA Masaru.
  13. * For conditions of distribution and use, see copyright notice in jsimdext.inc
  14. *
  15. */
  16. /* Bitmask for supported acceleration methods */
  17. #define JSIMD_NONE 0x00
  18. #define JSIMD_MMX 0x01
  19. #define JSIMD_3DNOW 0x02
  20. #define JSIMD_SSE 0x04
  21. #define JSIMD_SSE2 0x08
  22. #define JSIMD_NEON 0x10
  23. #define JSIMD_DSPR2 0x20
  24. #define JSIMD_ALTIVEC 0x40
  25. #define JSIMD_AVX2 0x80
  26. #define JSIMD_MMI 0x100
  27. /* SIMD Ext: retrieve SIMD/CPU information */
  28. EXTERN(unsigned int) jpeg_simd_cpu_support(void);
  29. /* RGB & extended RGB --> YCC Colorspace Conversion */
  30. EXTERN(void) jsimd_rgb_ycc_convert_mmx
  31. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  32. JDIMENSION output_row, int num_rows);
  33. EXTERN(void) jsimd_extrgb_ycc_convert_mmx
  34. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  35. JDIMENSION output_row, int num_rows);
  36. EXTERN(void) jsimd_extrgbx_ycc_convert_mmx
  37. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  38. JDIMENSION output_row, int num_rows);
  39. EXTERN(void) jsimd_extbgr_ycc_convert_mmx
  40. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  41. JDIMENSION output_row, int num_rows);
  42. EXTERN(void) jsimd_extbgrx_ycc_convert_mmx
  43. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  44. JDIMENSION output_row, int num_rows);
  45. EXTERN(void) jsimd_extxbgr_ycc_convert_mmx
  46. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  47. JDIMENSION output_row, int num_rows);
  48. EXTERN(void) jsimd_extxrgb_ycc_convert_mmx
  49. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  50. JDIMENSION output_row, int num_rows);
  51. extern const int jconst_rgb_ycc_convert_sse2[];
  52. EXTERN(void) jsimd_rgb_ycc_convert_sse2
  53. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  54. JDIMENSION output_row, int num_rows);
  55. EXTERN(void) jsimd_extrgb_ycc_convert_sse2
  56. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  57. JDIMENSION output_row, int num_rows);
  58. EXTERN(void) jsimd_extrgbx_ycc_convert_sse2
  59. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  60. JDIMENSION output_row, int num_rows);
  61. EXTERN(void) jsimd_extbgr_ycc_convert_sse2
  62. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  63. JDIMENSION output_row, int num_rows);
  64. EXTERN(void) jsimd_extbgrx_ycc_convert_sse2
  65. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  66. JDIMENSION output_row, int num_rows);
  67. EXTERN(void) jsimd_extxbgr_ycc_convert_sse2
  68. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  69. JDIMENSION output_row, int num_rows);
  70. EXTERN(void) jsimd_extxrgb_ycc_convert_sse2
  71. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  72. JDIMENSION output_row, int num_rows);
  73. extern const int jconst_rgb_ycc_convert_avx2[];
  74. EXTERN(void) jsimd_rgb_ycc_convert_avx2
  75. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  76. JDIMENSION output_row, int num_rows);
  77. EXTERN(void) jsimd_extrgb_ycc_convert_avx2
  78. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  79. JDIMENSION output_row, int num_rows);
  80. EXTERN(void) jsimd_extrgbx_ycc_convert_avx2
  81. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  82. JDIMENSION output_row, int num_rows);
  83. EXTERN(void) jsimd_extbgr_ycc_convert_avx2
  84. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  85. JDIMENSION output_row, int num_rows);
  86. EXTERN(void) jsimd_extbgrx_ycc_convert_avx2
  87. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  88. JDIMENSION output_row, int num_rows);
  89. EXTERN(void) jsimd_extxbgr_ycc_convert_avx2
  90. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  91. JDIMENSION output_row, int num_rows);
  92. EXTERN(void) jsimd_extxrgb_ycc_convert_avx2
  93. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  94. JDIMENSION output_row, int num_rows);
  95. EXTERN(void) jsimd_rgb_ycc_convert_neon
  96. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  97. JDIMENSION output_row, int num_rows);
  98. EXTERN(void) jsimd_extrgb_ycc_convert_neon
  99. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  100. JDIMENSION output_row, int num_rows);
  101. EXTERN(void) jsimd_extrgbx_ycc_convert_neon
  102. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  103. JDIMENSION output_row, int num_rows);
  104. EXTERN(void) jsimd_extbgr_ycc_convert_neon
  105. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  106. JDIMENSION output_row, int num_rows);
  107. EXTERN(void) jsimd_extbgrx_ycc_convert_neon
  108. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  109. JDIMENSION output_row, int num_rows);
  110. EXTERN(void) jsimd_extxbgr_ycc_convert_neon
  111. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  112. JDIMENSION output_row, int num_rows);
  113. EXTERN(void) jsimd_extxrgb_ycc_convert_neon
  114. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  115. JDIMENSION output_row, int num_rows);
  116. EXTERN(void) jsimd_rgb_ycc_convert_dspr2
  117. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  118. JDIMENSION output_row, int num_rows);
  119. EXTERN(void) jsimd_extrgb_ycc_convert_dspr2
  120. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  121. JDIMENSION output_row, int num_rows);
  122. EXTERN(void) jsimd_extrgbx_ycc_convert_dspr2
  123. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  124. JDIMENSION output_row, int num_rows);
  125. EXTERN(void) jsimd_extbgr_ycc_convert_dspr2
  126. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  127. JDIMENSION output_row, int num_rows);
  128. EXTERN(void) jsimd_extbgrx_ycc_convert_dspr2
  129. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  130. JDIMENSION output_row, int num_rows);
  131. EXTERN(void) jsimd_extxbgr_ycc_convert_dspr2
  132. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  133. JDIMENSION output_row, int num_rows);
  134. EXTERN(void) jsimd_extxrgb_ycc_convert_dspr2
  135. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  136. JDIMENSION output_row, int num_rows);
  137. EXTERN(void) jsimd_rgb_ycc_convert_mmi
  138. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  139. JDIMENSION output_row, int num_rows);
  140. EXTERN(void) jsimd_extrgb_ycc_convert_mmi
  141. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  142. JDIMENSION output_row, int num_rows);
  143. EXTERN(void) jsimd_extrgbx_ycc_convert_mmi
  144. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  145. JDIMENSION output_row, int num_rows);
  146. EXTERN(void) jsimd_extbgr_ycc_convert_mmi
  147. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  148. JDIMENSION output_row, int num_rows);
  149. EXTERN(void) jsimd_extbgrx_ycc_convert_mmi
  150. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  151. JDIMENSION output_row, int num_rows);
  152. EXTERN(void) jsimd_extxbgr_ycc_convert_mmi
  153. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  154. JDIMENSION output_row, int num_rows);
  155. EXTERN(void) jsimd_extxrgb_ycc_convert_mmi
  156. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  157. JDIMENSION output_row, int num_rows);
  158. EXTERN(void) jsimd_rgb_ycc_convert_altivec
  159. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  160. JDIMENSION output_row, int num_rows);
  161. EXTERN(void) jsimd_extrgb_ycc_convert_altivec
  162. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  163. JDIMENSION output_row, int num_rows);
  164. EXTERN(void) jsimd_extrgbx_ycc_convert_altivec
  165. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  166. JDIMENSION output_row, int num_rows);
  167. EXTERN(void) jsimd_extbgr_ycc_convert_altivec
  168. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  169. JDIMENSION output_row, int num_rows);
  170. EXTERN(void) jsimd_extbgrx_ycc_convert_altivec
  171. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  172. JDIMENSION output_row, int num_rows);
  173. EXTERN(void) jsimd_extxbgr_ycc_convert_altivec
  174. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  175. JDIMENSION output_row, int num_rows);
  176. EXTERN(void) jsimd_extxrgb_ycc_convert_altivec
  177. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  178. JDIMENSION output_row, int num_rows);
  179. /* RGB & extended RGB --> Grayscale Colorspace Conversion */
  180. EXTERN(void) jsimd_rgb_gray_convert_mmx
  181. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  182. JDIMENSION output_row, int num_rows);
  183. EXTERN(void) jsimd_extrgb_gray_convert_mmx
  184. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  185. JDIMENSION output_row, int num_rows);
  186. EXTERN(void) jsimd_extrgbx_gray_convert_mmx
  187. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  188. JDIMENSION output_row, int num_rows);
  189. EXTERN(void) jsimd_extbgr_gray_convert_mmx
  190. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  191. JDIMENSION output_row, int num_rows);
  192. EXTERN(void) jsimd_extbgrx_gray_convert_mmx
  193. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  194. JDIMENSION output_row, int num_rows);
  195. EXTERN(void) jsimd_extxbgr_gray_convert_mmx
  196. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  197. JDIMENSION output_row, int num_rows);
  198. EXTERN(void) jsimd_extxrgb_gray_convert_mmx
  199. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  200. JDIMENSION output_row, int num_rows);
  201. extern const int jconst_rgb_gray_convert_sse2[];
  202. EXTERN(void) jsimd_rgb_gray_convert_sse2
  203. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  204. JDIMENSION output_row, int num_rows);
  205. EXTERN(void) jsimd_extrgb_gray_convert_sse2
  206. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  207. JDIMENSION output_row, int num_rows);
  208. EXTERN(void) jsimd_extrgbx_gray_convert_sse2
  209. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  210. JDIMENSION output_row, int num_rows);
  211. EXTERN(void) jsimd_extbgr_gray_convert_sse2
  212. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  213. JDIMENSION output_row, int num_rows);
  214. EXTERN(void) jsimd_extbgrx_gray_convert_sse2
  215. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  216. JDIMENSION output_row, int num_rows);
  217. EXTERN(void) jsimd_extxbgr_gray_convert_sse2
  218. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  219. JDIMENSION output_row, int num_rows);
  220. EXTERN(void) jsimd_extxrgb_gray_convert_sse2
  221. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  222. JDIMENSION output_row, int num_rows);
  223. extern const int jconst_rgb_gray_convert_avx2[];
  224. EXTERN(void) jsimd_rgb_gray_convert_avx2
  225. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  226. JDIMENSION output_row, int num_rows);
  227. EXTERN(void) jsimd_extrgb_gray_convert_avx2
  228. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  229. JDIMENSION output_row, int num_rows);
  230. EXTERN(void) jsimd_extrgbx_gray_convert_avx2
  231. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  232. JDIMENSION output_row, int num_rows);
  233. EXTERN(void) jsimd_extbgr_gray_convert_avx2
  234. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  235. JDIMENSION output_row, int num_rows);
  236. EXTERN(void) jsimd_extbgrx_gray_convert_avx2
  237. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  238. JDIMENSION output_row, int num_rows);
  239. EXTERN(void) jsimd_extxbgr_gray_convert_avx2
  240. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  241. JDIMENSION output_row, int num_rows);
  242. EXTERN(void) jsimd_extxrgb_gray_convert_avx2
  243. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  244. JDIMENSION output_row, int num_rows);
  245. EXTERN(void) jsimd_rgb_gray_convert_neon
  246. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  247. JDIMENSION output_row, int num_rows);
  248. EXTERN(void) jsimd_extrgb_gray_convert_neon
  249. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  250. JDIMENSION output_row, int num_rows);
  251. EXTERN(void) jsimd_extrgbx_gray_convert_neon
  252. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  253. JDIMENSION output_row, int num_rows);
  254. EXTERN(void) jsimd_extbgr_gray_convert_neon
  255. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  256. JDIMENSION output_row, int num_rows);
  257. EXTERN(void) jsimd_extbgrx_gray_convert_neon
  258. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  259. JDIMENSION output_row, int num_rows);
  260. EXTERN(void) jsimd_extxbgr_gray_convert_neon
  261. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  262. JDIMENSION output_row, int num_rows);
  263. EXTERN(void) jsimd_extxrgb_gray_convert_neon
  264. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  265. JDIMENSION output_row, int num_rows);
  266. EXTERN(void) jsimd_rgb_gray_convert_dspr2
  267. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  268. JDIMENSION output_row, int num_rows);
  269. EXTERN(void) jsimd_extrgb_gray_convert_dspr2
  270. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  271. JDIMENSION output_row, int num_rows);
  272. EXTERN(void) jsimd_extrgbx_gray_convert_dspr2
  273. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  274. JDIMENSION output_row, int num_rows);
  275. EXTERN(void) jsimd_extbgr_gray_convert_dspr2
  276. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  277. JDIMENSION output_row, int num_rows);
  278. EXTERN(void) jsimd_extbgrx_gray_convert_dspr2
  279. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  280. JDIMENSION output_row, int num_rows);
  281. EXTERN(void) jsimd_extxbgr_gray_convert_dspr2
  282. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  283. JDIMENSION output_row, int num_rows);
  284. EXTERN(void) jsimd_extxrgb_gray_convert_dspr2
  285. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  286. JDIMENSION output_row, int num_rows);
  287. EXTERN(void) jsimd_rgb_gray_convert_altivec
  288. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  289. JDIMENSION output_row, int num_rows);
  290. EXTERN(void) jsimd_extrgb_gray_convert_altivec
  291. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  292. JDIMENSION output_row, int num_rows);
  293. EXTERN(void) jsimd_extrgbx_gray_convert_altivec
  294. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  295. JDIMENSION output_row, int num_rows);
  296. EXTERN(void) jsimd_extbgr_gray_convert_altivec
  297. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  298. JDIMENSION output_row, int num_rows);
  299. EXTERN(void) jsimd_extbgrx_gray_convert_altivec
  300. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  301. JDIMENSION output_row, int num_rows);
  302. EXTERN(void) jsimd_extxbgr_gray_convert_altivec
  303. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  304. JDIMENSION output_row, int num_rows);
  305. EXTERN(void) jsimd_extxrgb_gray_convert_altivec
  306. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  307. JDIMENSION output_row, int num_rows);
  308. /* YCC --> RGB & extended RGB Colorspace Conversion */
  309. EXTERN(void) jsimd_ycc_rgb_convert_mmx
  310. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  311. JSAMPARRAY output_buf, int num_rows);
  312. EXTERN(void) jsimd_ycc_extrgb_convert_mmx
  313. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  314. JSAMPARRAY output_buf, int num_rows);
  315. EXTERN(void) jsimd_ycc_extrgbx_convert_mmx
  316. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  317. JSAMPARRAY output_buf, int num_rows);
  318. EXTERN(void) jsimd_ycc_extbgr_convert_mmx
  319. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  320. JSAMPARRAY output_buf, int num_rows);
  321. EXTERN(void) jsimd_ycc_extbgrx_convert_mmx
  322. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  323. JSAMPARRAY output_buf, int num_rows);
  324. EXTERN(void) jsimd_ycc_extxbgr_convert_mmx
  325. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  326. JSAMPARRAY output_buf, int num_rows);
  327. EXTERN(void) jsimd_ycc_extxrgb_convert_mmx
  328. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  329. JSAMPARRAY output_buf, int num_rows);
  330. extern const int jconst_ycc_rgb_convert_sse2[];
  331. EXTERN(void) jsimd_ycc_rgb_convert_sse2
  332. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  333. JSAMPARRAY output_buf, int num_rows);
  334. EXTERN(void) jsimd_ycc_extrgb_convert_sse2
  335. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  336. JSAMPARRAY output_buf, int num_rows);
  337. EXTERN(void) jsimd_ycc_extrgbx_convert_sse2
  338. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  339. JSAMPARRAY output_buf, int num_rows);
  340. EXTERN(void) jsimd_ycc_extbgr_convert_sse2
  341. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  342. JSAMPARRAY output_buf, int num_rows);
  343. EXTERN(void) jsimd_ycc_extbgrx_convert_sse2
  344. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  345. JSAMPARRAY output_buf, int num_rows);
  346. EXTERN(void) jsimd_ycc_extxbgr_convert_sse2
  347. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  348. JSAMPARRAY output_buf, int num_rows);
  349. EXTERN(void) jsimd_ycc_extxrgb_convert_sse2
  350. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  351. JSAMPARRAY output_buf, int num_rows);
  352. extern const int jconst_ycc_rgb_convert_avx2[];
  353. EXTERN(void) jsimd_ycc_rgb_convert_avx2
  354. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  355. JSAMPARRAY output_buf, int num_rows);
  356. EXTERN(void) jsimd_ycc_extrgb_convert_avx2
  357. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  358. JSAMPARRAY output_buf, int num_rows);
  359. EXTERN(void) jsimd_ycc_extrgbx_convert_avx2
  360. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  361. JSAMPARRAY output_buf, int num_rows);
  362. EXTERN(void) jsimd_ycc_extbgr_convert_avx2
  363. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  364. JSAMPARRAY output_buf, int num_rows);
  365. EXTERN(void) jsimd_ycc_extbgrx_convert_avx2
  366. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  367. JSAMPARRAY output_buf, int num_rows);
  368. EXTERN(void) jsimd_ycc_extxbgr_convert_avx2
  369. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  370. JSAMPARRAY output_buf, int num_rows);
  371. EXTERN(void) jsimd_ycc_extxrgb_convert_avx2
  372. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  373. JSAMPARRAY output_buf, int num_rows);
  374. EXTERN(void) jsimd_ycc_rgb_convert_neon
  375. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  376. JSAMPARRAY output_buf, int num_rows);
  377. EXTERN(void) jsimd_ycc_extrgb_convert_neon
  378. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  379. JSAMPARRAY output_buf, int num_rows);
  380. EXTERN(void) jsimd_ycc_extrgbx_convert_neon
  381. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  382. JSAMPARRAY output_buf, int num_rows);
  383. EXTERN(void) jsimd_ycc_extbgr_convert_neon
  384. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  385. JSAMPARRAY output_buf, int num_rows);
  386. EXTERN(void) jsimd_ycc_extbgrx_convert_neon
  387. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  388. JSAMPARRAY output_buf, int num_rows);
  389. EXTERN(void) jsimd_ycc_extxbgr_convert_neon
  390. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  391. JSAMPARRAY output_buf, int num_rows);
  392. EXTERN(void) jsimd_ycc_extxrgb_convert_neon
  393. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  394. JSAMPARRAY output_buf, int num_rows);
  395. EXTERN(void) jsimd_ycc_rgb565_convert_neon
  396. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  397. JSAMPARRAY output_buf, int num_rows);
  398. EXTERN(void) jsimd_ycc_rgb_convert_dspr2
  399. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  400. JSAMPARRAY output_buf, int num_rows);
  401. EXTERN(void) jsimd_ycc_extrgb_convert_dspr2
  402. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  403. JSAMPARRAY output_buf, int num_rows);
  404. EXTERN(void) jsimd_ycc_extrgbx_convert_dspr2
  405. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  406. JSAMPARRAY output_buf, int num_rows);
  407. EXTERN(void) jsimd_ycc_extbgr_convert_dspr2
  408. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  409. JSAMPARRAY output_buf, int num_rows);
  410. EXTERN(void) jsimd_ycc_extbgrx_convert_dspr2
  411. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  412. JSAMPARRAY output_buf, int num_rows);
  413. EXTERN(void) jsimd_ycc_extxbgr_convert_dspr2
  414. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  415. JSAMPARRAY output_buf, int num_rows);
  416. EXTERN(void) jsimd_ycc_extxrgb_convert_dspr2
  417. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  418. JSAMPARRAY output_buf, int num_rows);
  419. EXTERN(void) jsimd_ycc_rgb_convert_mmi
  420. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  421. JSAMPARRAY output_buf, int num_rows);
  422. EXTERN(void) jsimd_ycc_extrgb_convert_mmi
  423. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  424. JSAMPARRAY output_buf, int num_rows);
  425. EXTERN(void) jsimd_ycc_extrgbx_convert_mmi
  426. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  427. JSAMPARRAY output_buf, int num_rows);
  428. EXTERN(void) jsimd_ycc_extbgr_convert_mmi
  429. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  430. JSAMPARRAY output_buf, int num_rows);
  431. EXTERN(void) jsimd_ycc_extbgrx_convert_mmi
  432. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  433. JSAMPARRAY output_buf, int num_rows);
  434. EXTERN(void) jsimd_ycc_extxbgr_convert_mmi
  435. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  436. JSAMPARRAY output_buf, int num_rows);
  437. EXTERN(void) jsimd_ycc_extxrgb_convert_mmi
  438. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  439. JSAMPARRAY output_buf, int num_rows);
  440. EXTERN(void) jsimd_ycc_rgb_convert_altivec
  441. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  442. JSAMPARRAY output_buf, int num_rows);
  443. EXTERN(void) jsimd_ycc_extrgb_convert_altivec
  444. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  445. JSAMPARRAY output_buf, int num_rows);
  446. EXTERN(void) jsimd_ycc_extrgbx_convert_altivec
  447. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  448. JSAMPARRAY output_buf, int num_rows);
  449. EXTERN(void) jsimd_ycc_extbgr_convert_altivec
  450. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  451. JSAMPARRAY output_buf, int num_rows);
  452. EXTERN(void) jsimd_ycc_extbgrx_convert_altivec
  453. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  454. JSAMPARRAY output_buf, int num_rows);
  455. EXTERN(void) jsimd_ycc_extxbgr_convert_altivec
  456. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  457. JSAMPARRAY output_buf, int num_rows);
  458. EXTERN(void) jsimd_ycc_extxrgb_convert_altivec
  459. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  460. JSAMPARRAY output_buf, int num_rows);
  461. /* NULL Colorspace Conversion */
  462. EXTERN(void) jsimd_c_null_convert_dspr2
  463. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  464. JDIMENSION output_row, int num_rows, int num_components);
  465. /* h2v1 Downsampling */
  466. EXTERN(void) jsimd_h2v1_downsample_mmx
  467. (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
  468. JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
  469. EXTERN(void) jsimd_h2v1_downsample_sse2
  470. (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
  471. JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
  472. EXTERN(void) jsimd_h2v1_downsample_avx2
  473. (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
  474. JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
  475. EXTERN(void) jsimd_h2v1_downsample_neon
  476. (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
  477. JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
  478. EXTERN(void) jsimd_h2v1_downsample_dspr2
  479. (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
  480. JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
  481. EXTERN(void) jsimd_h2v1_downsample_altivec
  482. (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
  483. JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
  484. /* h2v2 Downsampling */
  485. EXTERN(void) jsimd_h2v2_downsample_mmx
  486. (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
  487. JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
  488. EXTERN(void) jsimd_h2v2_downsample_sse2
  489. (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
  490. JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
  491. EXTERN(void) jsimd_h2v2_downsample_avx2
  492. (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
  493. JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
  494. EXTERN(void) jsimd_h2v2_downsample_neon
  495. (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
  496. JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
  497. EXTERN(void) jsimd_h2v2_downsample_dspr2
  498. (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
  499. JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
  500. EXTERN(void) jsimd_h2v2_downsample_mmi
  501. (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
  502. JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
  503. EXTERN(void) jsimd_h2v2_downsample_altivec
  504. (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
  505. JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
  506. /* h2v2 Smooth Downsampling */
  507. EXTERN(void) jsimd_h2v2_smooth_downsample_dspr2
  508. (JSAMPARRAY input_data, JSAMPARRAY output_data, JDIMENSION v_samp_factor,
  509. int max_v_samp_factor, int smoothing_factor, JDIMENSION width_in_blocks,
  510. JDIMENSION image_width);
  511. /* Upsampling */
  512. EXTERN(void) jsimd_h2v1_upsample_mmx
  513. (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
  514. JSAMPARRAY *output_data_ptr);
  515. EXTERN(void) jsimd_h2v2_upsample_mmx
  516. (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
  517. JSAMPARRAY *output_data_ptr);
  518. EXTERN(void) jsimd_h2v1_upsample_sse2
  519. (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
  520. JSAMPARRAY *output_data_ptr);
  521. EXTERN(void) jsimd_h2v2_upsample_sse2
  522. (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
  523. JSAMPARRAY *output_data_ptr);
  524. EXTERN(void) jsimd_h2v1_upsample_avx2
  525. (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
  526. JSAMPARRAY *output_data_ptr);
  527. EXTERN(void) jsimd_h2v2_upsample_avx2
  528. (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
  529. JSAMPARRAY *output_data_ptr);
  530. EXTERN(void) jsimd_h2v1_upsample_neon
  531. (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
  532. JSAMPARRAY *output_data_ptr);
  533. EXTERN(void) jsimd_h2v2_upsample_neon
  534. (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
  535. JSAMPARRAY *output_data_ptr);
  536. EXTERN(void) jsimd_h2v1_upsample_dspr2
  537. (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
  538. JSAMPARRAY *output_data_ptr);
  539. EXTERN(void) jsimd_h2v2_upsample_dspr2
  540. (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
  541. JSAMPARRAY *output_data_ptr);
  542. EXTERN(void) jsimd_int_upsample_dspr2
  543. (UINT8 h_expand, UINT8 v_expand, JSAMPARRAY input_data,
  544. JSAMPARRAY *output_data_ptr, JDIMENSION output_width,
  545. int max_v_samp_factor);
  546. EXTERN(void) jsimd_h2v1_upsample_altivec
  547. (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
  548. JSAMPARRAY *output_data_ptr);
  549. EXTERN(void) jsimd_h2v2_upsample_altivec
  550. (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
  551. JSAMPARRAY *output_data_ptr);
  552. /* Fancy Upsampling */
  553. EXTERN(void) jsimd_h2v1_fancy_upsample_mmx
  554. (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
  555. JSAMPARRAY *output_data_ptr);
  556. EXTERN(void) jsimd_h2v2_fancy_upsample_mmx
  557. (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
  558. JSAMPARRAY *output_data_ptr);
  559. extern const int jconst_fancy_upsample_sse2[];
  560. EXTERN(void) jsimd_h2v1_fancy_upsample_sse2
  561. (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
  562. JSAMPARRAY *output_data_ptr);
  563. EXTERN(void) jsimd_h2v2_fancy_upsample_sse2
  564. (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
  565. JSAMPARRAY *output_data_ptr);
  566. extern const int jconst_fancy_upsample_avx2[];
  567. EXTERN(void) jsimd_h2v1_fancy_upsample_avx2
  568. (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
  569. JSAMPARRAY *output_data_ptr);
  570. EXTERN(void) jsimd_h2v2_fancy_upsample_avx2
  571. (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
  572. JSAMPARRAY *output_data_ptr);
  573. EXTERN(void) jsimd_h2v1_fancy_upsample_neon
  574. (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
  575. JSAMPARRAY *output_data_ptr);
  576. EXTERN(void) jsimd_h2v2_fancy_upsample_neon
  577. (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
  578. JSAMPARRAY *output_data_ptr);
  579. EXTERN(void) jsimd_h1v2_fancy_upsample_neon
  580. (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
  581. JSAMPARRAY *output_data_ptr);
  582. EXTERN(void) jsimd_h2v1_fancy_upsample_dspr2
  583. (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
  584. JSAMPARRAY *output_data_ptr);
  585. EXTERN(void) jsimd_h2v2_fancy_upsample_dspr2
  586. (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
  587. JSAMPARRAY *output_data_ptr);
  588. EXTERN(void) jsimd_h2v2_fancy_upsample_mmi
  589. (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
  590. JSAMPARRAY *output_data_ptr);
  591. EXTERN(void) jsimd_h2v1_fancy_upsample_altivec
  592. (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
  593. JSAMPARRAY *output_data_ptr);
  594. EXTERN(void) jsimd_h2v2_fancy_upsample_altivec
  595. (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
  596. JSAMPARRAY *output_data_ptr);
  597. /* Merged Upsampling */
  598. EXTERN(void) jsimd_h2v1_merged_upsample_mmx
  599. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  600. JSAMPARRAY output_buf);
  601. EXTERN(void) jsimd_h2v1_extrgb_merged_upsample_mmx
  602. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  603. JSAMPARRAY output_buf);
  604. EXTERN(void) jsimd_h2v1_extrgbx_merged_upsample_mmx
  605. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  606. JSAMPARRAY output_buf);
  607. EXTERN(void) jsimd_h2v1_extbgr_merged_upsample_mmx
  608. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  609. JSAMPARRAY output_buf);
  610. EXTERN(void) jsimd_h2v1_extbgrx_merged_upsample_mmx
  611. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  612. JSAMPARRAY output_buf);
  613. EXTERN(void) jsimd_h2v1_extxbgr_merged_upsample_mmx
  614. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  615. JSAMPARRAY output_buf);
  616. EXTERN(void) jsimd_h2v1_extxrgb_merged_upsample_mmx
  617. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  618. JSAMPARRAY output_buf);
  619. EXTERN(void) jsimd_h2v2_merged_upsample_mmx
  620. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  621. JSAMPARRAY output_buf);
  622. EXTERN(void) jsimd_h2v2_extrgb_merged_upsample_mmx
  623. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  624. JSAMPARRAY output_buf);
  625. EXTERN(void) jsimd_h2v2_extrgbx_merged_upsample_mmx
  626. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  627. JSAMPARRAY output_buf);
  628. EXTERN(void) jsimd_h2v2_extbgr_merged_upsample_mmx
  629. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  630. JSAMPARRAY output_buf);
  631. EXTERN(void) jsimd_h2v2_extbgrx_merged_upsample_mmx
  632. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  633. JSAMPARRAY output_buf);
  634. EXTERN(void) jsimd_h2v2_extxbgr_merged_upsample_mmx
  635. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  636. JSAMPARRAY output_buf);
  637. EXTERN(void) jsimd_h2v2_extxrgb_merged_upsample_mmx
  638. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  639. JSAMPARRAY output_buf);
  640. extern const int jconst_merged_upsample_sse2[];
  641. EXTERN(void) jsimd_h2v1_merged_upsample_sse2
  642. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  643. JSAMPARRAY output_buf);
  644. EXTERN(void) jsimd_h2v1_extrgb_merged_upsample_sse2
  645. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  646. JSAMPARRAY output_buf);
  647. EXTERN(void) jsimd_h2v1_extrgbx_merged_upsample_sse2
  648. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  649. JSAMPARRAY output_buf);
  650. EXTERN(void) jsimd_h2v1_extbgr_merged_upsample_sse2
  651. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  652. JSAMPARRAY output_buf);
  653. EXTERN(void) jsimd_h2v1_extbgrx_merged_upsample_sse2
  654. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  655. JSAMPARRAY output_buf);
  656. EXTERN(void) jsimd_h2v1_extxbgr_merged_upsample_sse2
  657. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  658. JSAMPARRAY output_buf);
  659. EXTERN(void) jsimd_h2v1_extxrgb_merged_upsample_sse2
  660. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  661. JSAMPARRAY output_buf);
  662. EXTERN(void) jsimd_h2v2_merged_upsample_sse2
  663. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  664. JSAMPARRAY output_buf);
  665. EXTERN(void) jsimd_h2v2_extrgb_merged_upsample_sse2
  666. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  667. JSAMPARRAY output_buf);
  668. EXTERN(void) jsimd_h2v2_extrgbx_merged_upsample_sse2
  669. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  670. JSAMPARRAY output_buf);
  671. EXTERN(void) jsimd_h2v2_extbgr_merged_upsample_sse2
  672. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  673. JSAMPARRAY output_buf);
  674. EXTERN(void) jsimd_h2v2_extbgrx_merged_upsample_sse2
  675. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  676. JSAMPARRAY output_buf);
  677. EXTERN(void) jsimd_h2v2_extxbgr_merged_upsample_sse2
  678. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  679. JSAMPARRAY output_buf);
  680. EXTERN(void) jsimd_h2v2_extxrgb_merged_upsample_sse2
  681. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  682. JSAMPARRAY output_buf);
  683. extern const int jconst_merged_upsample_avx2[];
  684. EXTERN(void) jsimd_h2v1_merged_upsample_avx2
  685. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  686. JSAMPARRAY output_buf);
  687. EXTERN(void) jsimd_h2v1_extrgb_merged_upsample_avx2
  688. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  689. JSAMPARRAY output_buf);
  690. EXTERN(void) jsimd_h2v1_extrgbx_merged_upsample_avx2
  691. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  692. JSAMPARRAY output_buf);
  693. EXTERN(void) jsimd_h2v1_extbgr_merged_upsample_avx2
  694. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  695. JSAMPARRAY output_buf);
  696. EXTERN(void) jsimd_h2v1_extbgrx_merged_upsample_avx2
  697. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  698. JSAMPARRAY output_buf);
  699. EXTERN(void) jsimd_h2v1_extxbgr_merged_upsample_avx2
  700. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  701. JSAMPARRAY output_buf);
  702. EXTERN(void) jsimd_h2v1_extxrgb_merged_upsample_avx2
  703. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  704. JSAMPARRAY output_buf);
  705. EXTERN(void) jsimd_h2v2_merged_upsample_avx2
  706. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  707. JSAMPARRAY output_buf);
  708. EXTERN(void) jsimd_h2v2_extrgb_merged_upsample_avx2
  709. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  710. JSAMPARRAY output_buf);
  711. EXTERN(void) jsimd_h2v2_extrgbx_merged_upsample_avx2
  712. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  713. JSAMPARRAY output_buf);
  714. EXTERN(void) jsimd_h2v2_extbgr_merged_upsample_avx2
  715. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  716. JSAMPARRAY output_buf);
  717. EXTERN(void) jsimd_h2v2_extbgrx_merged_upsample_avx2
  718. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  719. JSAMPARRAY output_buf);
  720. EXTERN(void) jsimd_h2v2_extxbgr_merged_upsample_avx2
  721. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  722. JSAMPARRAY output_buf);
  723. EXTERN(void) jsimd_h2v2_extxrgb_merged_upsample_avx2
  724. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  725. JSAMPARRAY output_buf);
  726. EXTERN(void) jsimd_h2v1_merged_upsample_neon
  727. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  728. JSAMPARRAY output_buf);
  729. EXTERN(void) jsimd_h2v1_extrgb_merged_upsample_neon
  730. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  731. JSAMPARRAY output_buf);
  732. EXTERN(void) jsimd_h2v1_extrgbx_merged_upsample_neon
  733. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  734. JSAMPARRAY output_buf);
  735. EXTERN(void) jsimd_h2v1_extbgr_merged_upsample_neon
  736. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  737. JSAMPARRAY output_buf);
  738. EXTERN(void) jsimd_h2v1_extbgrx_merged_upsample_neon
  739. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  740. JSAMPARRAY output_buf);
  741. EXTERN(void) jsimd_h2v1_extxbgr_merged_upsample_neon
  742. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  743. JSAMPARRAY output_buf);
  744. EXTERN(void) jsimd_h2v1_extxrgb_merged_upsample_neon
  745. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  746. JSAMPARRAY output_buf);
  747. EXTERN(void) jsimd_h2v2_merged_upsample_neon
  748. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  749. JSAMPARRAY output_buf);
  750. EXTERN(void) jsimd_h2v2_extrgb_merged_upsample_neon
  751. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  752. JSAMPARRAY output_buf);
  753. EXTERN(void) jsimd_h2v2_extrgbx_merged_upsample_neon
  754. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  755. JSAMPARRAY output_buf);
  756. EXTERN(void) jsimd_h2v2_extbgr_merged_upsample_neon
  757. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  758. JSAMPARRAY output_buf);
  759. EXTERN(void) jsimd_h2v2_extbgrx_merged_upsample_neon
  760. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  761. JSAMPARRAY output_buf);
  762. EXTERN(void) jsimd_h2v2_extxbgr_merged_upsample_neon
  763. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  764. JSAMPARRAY output_buf);
  765. EXTERN(void) jsimd_h2v2_extxrgb_merged_upsample_neon
  766. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  767. JSAMPARRAY output_buf);
  768. EXTERN(void) jsimd_h2v1_merged_upsample_dspr2
  769. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  770. JSAMPARRAY output_buf, JSAMPLE *range);
  771. EXTERN(void) jsimd_h2v1_extrgb_merged_upsample_dspr2
  772. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  773. JSAMPARRAY output_buf, JSAMPLE *range);
  774. EXTERN(void) jsimd_h2v1_extrgbx_merged_upsample_dspr2
  775. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  776. JSAMPARRAY output_buf, JSAMPLE *range);
  777. EXTERN(void) jsimd_h2v1_extbgr_merged_upsample_dspr2
  778. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  779. JSAMPARRAY output_buf, JSAMPLE *range);
  780. EXTERN(void) jsimd_h2v1_extbgrx_merged_upsample_dspr2
  781. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  782. JSAMPARRAY output_buf, JSAMPLE *range);
  783. EXTERN(void) jsimd_h2v1_extxbgr_merged_upsample_dspr2
  784. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  785. JSAMPARRAY output_buf, JSAMPLE *range);
  786. EXTERN(void) jsimd_h2v1_extxrgb_merged_upsample_dspr2
  787. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  788. JSAMPARRAY output_buf, JSAMPLE *range);
  789. EXTERN(void) jsimd_h2v2_merged_upsample_dspr2
  790. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  791. JSAMPARRAY output_buf, JSAMPLE *range);
  792. EXTERN(void) jsimd_h2v2_extrgb_merged_upsample_dspr2
  793. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  794. JSAMPARRAY output_buf, JSAMPLE *range);
  795. EXTERN(void) jsimd_h2v2_extrgbx_merged_upsample_dspr2
  796. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  797. JSAMPARRAY output_buf, JSAMPLE *range);
  798. EXTERN(void) jsimd_h2v2_extbgr_merged_upsample_dspr2
  799. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  800. JSAMPARRAY output_buf, JSAMPLE *range);
  801. EXTERN(void) jsimd_h2v2_extbgrx_merged_upsample_dspr2
  802. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  803. JSAMPARRAY output_buf, JSAMPLE *range);
  804. EXTERN(void) jsimd_h2v2_extxbgr_merged_upsample_dspr2
  805. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  806. JSAMPARRAY output_buf, JSAMPLE *range);
  807. EXTERN(void) jsimd_h2v2_extxrgb_merged_upsample_dspr2
  808. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  809. JSAMPARRAY output_buf, JSAMPLE *range);
  810. EXTERN(void) jsimd_h2v1_merged_upsample_altivec
  811. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  812. JSAMPARRAY output_buf);
  813. EXTERN(void) jsimd_h2v1_extrgb_merged_upsample_altivec
  814. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  815. JSAMPARRAY output_buf);
  816. EXTERN(void) jsimd_h2v1_extrgbx_merged_upsample_altivec
  817. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  818. JSAMPARRAY output_buf);
  819. EXTERN(void) jsimd_h2v1_extbgr_merged_upsample_altivec
  820. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  821. JSAMPARRAY output_buf);
  822. EXTERN(void) jsimd_h2v1_extbgrx_merged_upsample_altivec
  823. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  824. JSAMPARRAY output_buf);
  825. EXTERN(void) jsimd_h2v1_extxbgr_merged_upsample_altivec
  826. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  827. JSAMPARRAY output_buf);
  828. EXTERN(void) jsimd_h2v1_extxrgb_merged_upsample_altivec
  829. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  830. JSAMPARRAY output_buf);
  831. EXTERN(void) jsimd_h2v2_merged_upsample_altivec
  832. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  833. JSAMPARRAY output_buf);
  834. EXTERN(void) jsimd_h2v2_extrgb_merged_upsample_altivec
  835. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  836. JSAMPARRAY output_buf);
  837. EXTERN(void) jsimd_h2v2_extrgbx_merged_upsample_altivec
  838. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  839. JSAMPARRAY output_buf);
  840. EXTERN(void) jsimd_h2v2_extbgr_merged_upsample_altivec
  841. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  842. JSAMPARRAY output_buf);
  843. EXTERN(void) jsimd_h2v2_extbgrx_merged_upsample_altivec
  844. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  845. JSAMPARRAY output_buf);
  846. EXTERN(void) jsimd_h2v2_extxbgr_merged_upsample_altivec
  847. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  848. JSAMPARRAY output_buf);
  849. EXTERN(void) jsimd_h2v2_extxrgb_merged_upsample_altivec
  850. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  851. JSAMPARRAY output_buf);
  852. /* Sample Conversion */
  853. EXTERN(void) jsimd_convsamp_mmx
  854. (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM *workspace);
  855. EXTERN(void) jsimd_convsamp_sse2
  856. (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM *workspace);
  857. EXTERN(void) jsimd_convsamp_avx2
  858. (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM *workspace);
  859. EXTERN(void) jsimd_convsamp_neon
  860. (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM *workspace);
  861. EXTERN(void) jsimd_convsamp_dspr2
  862. (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM *workspace);
  863. EXTERN(void) jsimd_convsamp_altivec
  864. (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM *workspace);
  865. /* Floating Point Sample Conversion */
  866. EXTERN(void) jsimd_convsamp_float_3dnow
  867. (JSAMPARRAY sample_data, JDIMENSION start_col, FAST_FLOAT *workspace);
  868. EXTERN(void) jsimd_convsamp_float_sse
  869. (JSAMPARRAY sample_data, JDIMENSION start_col, FAST_FLOAT *workspace);
  870. EXTERN(void) jsimd_convsamp_float_sse2
  871. (JSAMPARRAY sample_data, JDIMENSION start_col, FAST_FLOAT *workspace);
  872. EXTERN(void) jsimd_convsamp_float_dspr2
  873. (JSAMPARRAY sample_data, JDIMENSION start_col, FAST_FLOAT *workspace);
  874. /* Slow Integer Forward DCT */
  875. EXTERN(void) jsimd_fdct_islow_mmx(DCTELEM *data);
  876. extern const int jconst_fdct_islow_sse2[];
  877. EXTERN(void) jsimd_fdct_islow_sse2(DCTELEM *data);
  878. extern const int jconst_fdct_islow_avx2[];
  879. EXTERN(void) jsimd_fdct_islow_avx2(DCTELEM *data);
  880. EXTERN(void) jsimd_fdct_islow_neon(DCTELEM *data);
  881. EXTERN(void) jsimd_fdct_islow_dspr2(DCTELEM *data);
  882. EXTERN(void) jsimd_fdct_islow_mmi(DCTELEM *data);
  883. EXTERN(void) jsimd_fdct_islow_altivec(DCTELEM *data);
  884. /* Fast Integer Forward DCT */
  885. EXTERN(void) jsimd_fdct_ifast_mmx(DCTELEM *data);
  886. extern const int jconst_fdct_ifast_sse2[];
  887. EXTERN(void) jsimd_fdct_ifast_sse2(DCTELEM *data);
  888. EXTERN(void) jsimd_fdct_ifast_neon(DCTELEM *data);
  889. EXTERN(void) jsimd_fdct_ifast_dspr2(DCTELEM *data);
  890. EXTERN(void) jsimd_fdct_ifast_altivec(DCTELEM *data);
  891. /* Floating Point Forward DCT */
  892. EXTERN(void) jsimd_fdct_float_3dnow(FAST_FLOAT *data);
  893. extern const int jconst_fdct_float_sse[];
  894. EXTERN(void) jsimd_fdct_float_sse(FAST_FLOAT *data);
  895. /* Quantization */
  896. EXTERN(void) jsimd_quantize_mmx
  897. (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
  898. EXTERN(void) jsimd_quantize_sse2
  899. (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
  900. EXTERN(void) jsimd_quantize_avx2
  901. (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
  902. EXTERN(void) jsimd_quantize_neon
  903. (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
  904. EXTERN(void) jsimd_quantize_dspr2
  905. (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
  906. EXTERN(void) jsimd_quantize_mmi
  907. (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
  908. EXTERN(void) jsimd_quantize_altivec
  909. (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
  910. /* Floating Point Quantization */
  911. EXTERN(void) jsimd_quantize_float_3dnow
  912. (JCOEFPTR coef_block, FAST_FLOAT *divisors, FAST_FLOAT *workspace);
  913. EXTERN(void) jsimd_quantize_float_sse
  914. (JCOEFPTR coef_block, FAST_FLOAT *divisors, FAST_FLOAT *workspace);
  915. EXTERN(void) jsimd_quantize_float_sse2
  916. (JCOEFPTR coef_block, FAST_FLOAT *divisors, FAST_FLOAT *workspace);
  917. EXTERN(void) jsimd_quantize_float_dspr2
  918. (JCOEFPTR coef_block, FAST_FLOAT *divisors, FAST_FLOAT *workspace);
  919. /* Scaled Inverse DCT */
  920. EXTERN(void) jsimd_idct_2x2_mmx
  921. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  922. JDIMENSION output_col);
  923. EXTERN(void) jsimd_idct_4x4_mmx
  924. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  925. JDIMENSION output_col);
  926. extern const int jconst_idct_red_sse2[];
  927. EXTERN(void) jsimd_idct_2x2_sse2
  928. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  929. JDIMENSION output_col);
  930. EXTERN(void) jsimd_idct_4x4_sse2
  931. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  932. JDIMENSION output_col);
  933. EXTERN(void) jsimd_idct_2x2_neon
  934. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  935. JDIMENSION output_col);
  936. EXTERN(void) jsimd_idct_4x4_neon
  937. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  938. JDIMENSION output_col);
  939. EXTERN(void) jsimd_idct_2x2_dspr2
  940. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  941. JDIMENSION output_col);
  942. EXTERN(void) jsimd_idct_4x4_dspr2
  943. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  944. JDIMENSION output_col, int *workspace);
  945. EXTERN(void) jsimd_idct_6x6_dspr2
  946. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  947. JDIMENSION output_col);
  948. EXTERN(void) jsimd_idct_12x12_pass1_dspr2
  949. (JCOEFPTR coef_block, void *dct_table, int *workspace);
  950. EXTERN(void) jsimd_idct_12x12_pass2_dspr2
  951. (int *workspace, int *output);
  952. /* Slow Integer Inverse DCT */
  953. EXTERN(void) jsimd_idct_islow_mmx
  954. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  955. JDIMENSION output_col);
  956. extern const int jconst_idct_islow_sse2[];
  957. EXTERN(void) jsimd_idct_islow_sse2
  958. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  959. JDIMENSION output_col);
  960. extern const int jconst_idct_islow_avx2[];
  961. EXTERN(void) jsimd_idct_islow_avx2
  962. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  963. JDIMENSION output_col);
  964. EXTERN(void) jsimd_idct_islow_neon
  965. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  966. JDIMENSION output_col);
  967. EXTERN(void) jsimd_idct_islow_dspr2
  968. (void *dct_table, JCOEFPTR coef_block, int *output_buf, JSAMPLE *output_col);
  969. EXTERN(void) jsimd_idct_islow_mmi
  970. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  971. JDIMENSION output_col);
  972. EXTERN(void) jsimd_idct_islow_altivec
  973. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  974. JDIMENSION output_col);
  975. /* Fast Integer Inverse DCT */
  976. EXTERN(void) jsimd_idct_ifast_mmx
  977. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  978. JDIMENSION output_col);
  979. extern const int jconst_idct_ifast_sse2[];
  980. EXTERN(void) jsimd_idct_ifast_sse2
  981. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  982. JDIMENSION output_col);
  983. EXTERN(void) jsimd_idct_ifast_neon
  984. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  985. JDIMENSION output_col);
  986. EXTERN(void) jsimd_idct_ifast_cols_dspr2
  987. (JCOEF *inptr, IFAST_MULT_TYPE *quantptr, DCTELEM *wsptr,
  988. const int *idct_coefs);
  989. EXTERN(void) jsimd_idct_ifast_rows_dspr2
  990. (DCTELEM *wsptr, JSAMPARRAY output_buf, JDIMENSION output_col,
  991. const int *idct_coefs);
  992. EXTERN(void) jsimd_idct_ifast_altivec
  993. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  994. JDIMENSION output_col);
  995. /* Floating Point Inverse DCT */
  996. EXTERN(void) jsimd_idct_float_3dnow
  997. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  998. JDIMENSION output_col);
  999. extern const int jconst_idct_float_sse[];
  1000. EXTERN(void) jsimd_idct_float_sse
  1001. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  1002. JDIMENSION output_col);
  1003. extern const int jconst_idct_float_sse2[];
  1004. EXTERN(void) jsimd_idct_float_sse2
  1005. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  1006. JDIMENSION output_col);
  1007. /* Huffman coding */
  1008. extern const int jconst_huff_encode_one_block[];
  1009. EXTERN(JOCTET *) jsimd_huff_encode_one_block_sse2
  1010. (void *state, JOCTET *buffer, JCOEFPTR block, int last_dc_val,
  1011. c_derived_tbl *dctbl, c_derived_tbl *actbl);
  1012. EXTERN(JOCTET *) jsimd_huff_encode_one_block_neon
  1013. (void *state, JOCTET *buffer, JCOEFPTR block, int last_dc_val,
  1014. c_derived_tbl *dctbl, c_derived_tbl *actbl);
  1015. EXTERN(JOCTET *) jsimd_huff_encode_one_block_neon_slowtbl
  1016. (void *state, JOCTET *buffer, JCOEFPTR block, int last_dc_val,
  1017. c_derived_tbl *dctbl, c_derived_tbl *actbl);
  1018. /* Progressive Huffman encoding */
  1019. EXTERN(void) jsimd_encode_mcu_AC_first_prepare_sse2
  1020. (const JCOEF *block, const int *jpeg_natural_order_start, int Sl, int Al,
  1021. JCOEF *values, size_t *zerobits);
  1022. EXTERN(int) jsimd_encode_mcu_AC_refine_prepare_sse2
  1023. (const JCOEF *block, const int *jpeg_natural_order_start, int Sl, int Al,
  1024. JCOEF *absvalues, size_t *bits);