jsimd.h 56 KB

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