jsimd.h 48 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083
  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_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. EXTERN(void) jsimd_rgb_ycc_convert_dspr2
  123. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  124. JDIMENSION output_row, int num_rows);
  125. EXTERN(void) jsimd_extrgb_ycc_convert_dspr2
  126. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  127. JDIMENSION output_row, int num_rows);
  128. EXTERN(void) jsimd_extrgbx_ycc_convert_dspr2
  129. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  130. JDIMENSION output_row, int num_rows);
  131. EXTERN(void) jsimd_extbgr_ycc_convert_dspr2
  132. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  133. JDIMENSION output_row, int num_rows);
  134. EXTERN(void) jsimd_extbgrx_ycc_convert_dspr2
  135. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  136. JDIMENSION output_row, int num_rows);
  137. EXTERN(void) jsimd_extxbgr_ycc_convert_dspr2
  138. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  139. JDIMENSION output_row, int num_rows);
  140. EXTERN(void) jsimd_extxrgb_ycc_convert_dspr2
  141. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  142. JDIMENSION output_row, int num_rows);
  143. EXTERN(void) jsimd_rgb_ycc_convert_mmi
  144. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  145. JDIMENSION output_row, int num_rows);
  146. EXTERN(void) jsimd_extrgb_ycc_convert_mmi
  147. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  148. JDIMENSION output_row, int num_rows);
  149. EXTERN(void) jsimd_extrgbx_ycc_convert_mmi
  150. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  151. JDIMENSION output_row, int num_rows);
  152. EXTERN(void) jsimd_extbgr_ycc_convert_mmi
  153. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  154. JDIMENSION output_row, int num_rows);
  155. EXTERN(void) jsimd_extbgrx_ycc_convert_mmi
  156. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  157. JDIMENSION output_row, int num_rows);
  158. EXTERN(void) jsimd_extxbgr_ycc_convert_mmi
  159. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  160. JDIMENSION output_row, int num_rows);
  161. EXTERN(void) jsimd_extxrgb_ycc_convert_mmi
  162. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  163. JDIMENSION output_row, int num_rows);
  164. EXTERN(void) jsimd_rgb_ycc_convert_altivec
  165. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  166. JDIMENSION output_row, int num_rows);
  167. EXTERN(void) jsimd_extrgb_ycc_convert_altivec
  168. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  169. JDIMENSION output_row, int num_rows);
  170. EXTERN(void) jsimd_extrgbx_ycc_convert_altivec
  171. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  172. JDIMENSION output_row, int num_rows);
  173. EXTERN(void) jsimd_extbgr_ycc_convert_altivec
  174. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  175. JDIMENSION output_row, int num_rows);
  176. EXTERN(void) jsimd_extbgrx_ycc_convert_altivec
  177. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  178. JDIMENSION output_row, int num_rows);
  179. EXTERN(void) jsimd_extxbgr_ycc_convert_altivec
  180. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  181. JDIMENSION output_row, int num_rows);
  182. EXTERN(void) jsimd_extxrgb_ycc_convert_altivec
  183. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  184. JDIMENSION output_row, int num_rows);
  185. /* RGB & extended RGB --> Grayscale Colorspace Conversion */
  186. EXTERN(void) jsimd_rgb_gray_convert_mmx
  187. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  188. JDIMENSION output_row, int num_rows);
  189. EXTERN(void) jsimd_extrgb_gray_convert_mmx
  190. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  191. JDIMENSION output_row, int num_rows);
  192. EXTERN(void) jsimd_extrgbx_gray_convert_mmx
  193. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  194. JDIMENSION output_row, int num_rows);
  195. EXTERN(void) jsimd_extbgr_gray_convert_mmx
  196. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  197. JDIMENSION output_row, int num_rows);
  198. EXTERN(void) jsimd_extbgrx_gray_convert_mmx
  199. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  200. JDIMENSION output_row, int num_rows);
  201. EXTERN(void) jsimd_extxbgr_gray_convert_mmx
  202. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  203. JDIMENSION output_row, int num_rows);
  204. EXTERN(void) jsimd_extxrgb_gray_convert_mmx
  205. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  206. JDIMENSION output_row, int num_rows);
  207. extern const int jconst_rgb_gray_convert_sse2[];
  208. EXTERN(void) jsimd_rgb_gray_convert_sse2
  209. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  210. JDIMENSION output_row, int num_rows);
  211. EXTERN(void) jsimd_extrgb_gray_convert_sse2
  212. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  213. JDIMENSION output_row, int num_rows);
  214. EXTERN(void) jsimd_extrgbx_gray_convert_sse2
  215. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  216. JDIMENSION output_row, int num_rows);
  217. EXTERN(void) jsimd_extbgr_gray_convert_sse2
  218. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  219. JDIMENSION output_row, int num_rows);
  220. EXTERN(void) jsimd_extbgrx_gray_convert_sse2
  221. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  222. JDIMENSION output_row, int num_rows);
  223. EXTERN(void) jsimd_extxbgr_gray_convert_sse2
  224. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  225. JDIMENSION output_row, int num_rows);
  226. EXTERN(void) jsimd_extxrgb_gray_convert_sse2
  227. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  228. JDIMENSION output_row, int num_rows);
  229. extern const int jconst_rgb_gray_convert_avx2[];
  230. EXTERN(void) jsimd_rgb_gray_convert_avx2
  231. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  232. JDIMENSION output_row, int num_rows);
  233. EXTERN(void) jsimd_extrgb_gray_convert_avx2
  234. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  235. JDIMENSION output_row, int num_rows);
  236. EXTERN(void) jsimd_extrgbx_gray_convert_avx2
  237. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  238. JDIMENSION output_row, int num_rows);
  239. EXTERN(void) jsimd_extbgr_gray_convert_avx2
  240. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  241. JDIMENSION output_row, int num_rows);
  242. EXTERN(void) jsimd_extbgrx_gray_convert_avx2
  243. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  244. JDIMENSION output_row, int num_rows);
  245. EXTERN(void) jsimd_extxbgr_gray_convert_avx2
  246. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  247. JDIMENSION output_row, int num_rows);
  248. EXTERN(void) jsimd_extxrgb_gray_convert_avx2
  249. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  250. JDIMENSION output_row, int num_rows);
  251. EXTERN(void) jsimd_rgb_gray_convert_dspr2
  252. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  253. JDIMENSION output_row, int num_rows);
  254. EXTERN(void) jsimd_extrgb_gray_convert_dspr2
  255. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  256. JDIMENSION output_row, int num_rows);
  257. EXTERN(void) jsimd_extrgbx_gray_convert_dspr2
  258. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  259. JDIMENSION output_row, int num_rows);
  260. EXTERN(void) jsimd_extbgr_gray_convert_dspr2
  261. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  262. JDIMENSION output_row, int num_rows);
  263. EXTERN(void) jsimd_extbgrx_gray_convert_dspr2
  264. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  265. JDIMENSION output_row, int num_rows);
  266. EXTERN(void) jsimd_extxbgr_gray_convert_dspr2
  267. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  268. JDIMENSION output_row, int num_rows);
  269. EXTERN(void) jsimd_extxrgb_gray_convert_dspr2
  270. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  271. JDIMENSION output_row, int num_rows);
  272. EXTERN(void) jsimd_rgb_gray_convert_altivec
  273. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  274. JDIMENSION output_row, int num_rows);
  275. EXTERN(void) jsimd_extrgb_gray_convert_altivec
  276. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  277. JDIMENSION output_row, int num_rows);
  278. EXTERN(void) jsimd_extrgbx_gray_convert_altivec
  279. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  280. JDIMENSION output_row, int num_rows);
  281. EXTERN(void) jsimd_extbgr_gray_convert_altivec
  282. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  283. JDIMENSION output_row, int num_rows);
  284. EXTERN(void) jsimd_extbgrx_gray_convert_altivec
  285. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  286. JDIMENSION output_row, int num_rows);
  287. EXTERN(void) jsimd_extxbgr_gray_convert_altivec
  288. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  289. JDIMENSION output_row, int num_rows);
  290. EXTERN(void) jsimd_extxrgb_gray_convert_altivec
  291. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  292. JDIMENSION output_row, int num_rows);
  293. /* YCC --> RGB & extended RGB Colorspace Conversion */
  294. EXTERN(void) jsimd_ycc_rgb_convert_mmx
  295. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  296. JSAMPARRAY output_buf, int num_rows);
  297. EXTERN(void) jsimd_ycc_extrgb_convert_mmx
  298. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  299. JSAMPARRAY output_buf, int num_rows);
  300. EXTERN(void) jsimd_ycc_extrgbx_convert_mmx
  301. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  302. JSAMPARRAY output_buf, int num_rows);
  303. EXTERN(void) jsimd_ycc_extbgr_convert_mmx
  304. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  305. JSAMPARRAY output_buf, int num_rows);
  306. EXTERN(void) jsimd_ycc_extbgrx_convert_mmx
  307. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  308. JSAMPARRAY output_buf, int num_rows);
  309. EXTERN(void) jsimd_ycc_extxbgr_convert_mmx
  310. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  311. JSAMPARRAY output_buf, int num_rows);
  312. EXTERN(void) jsimd_ycc_extxrgb_convert_mmx
  313. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  314. JSAMPARRAY output_buf, int num_rows);
  315. extern const int jconst_ycc_rgb_convert_sse2[];
  316. EXTERN(void) jsimd_ycc_rgb_convert_sse2
  317. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  318. JSAMPARRAY output_buf, int num_rows);
  319. EXTERN(void) jsimd_ycc_extrgb_convert_sse2
  320. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  321. JSAMPARRAY output_buf, int num_rows);
  322. EXTERN(void) jsimd_ycc_extrgbx_convert_sse2
  323. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  324. JSAMPARRAY output_buf, int num_rows);
  325. EXTERN(void) jsimd_ycc_extbgr_convert_sse2
  326. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  327. JSAMPARRAY output_buf, int num_rows);
  328. EXTERN(void) jsimd_ycc_extbgrx_convert_sse2
  329. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  330. JSAMPARRAY output_buf, int num_rows);
  331. EXTERN(void) jsimd_ycc_extxbgr_convert_sse2
  332. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  333. JSAMPARRAY output_buf, int num_rows);
  334. EXTERN(void) jsimd_ycc_extxrgb_convert_sse2
  335. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  336. JSAMPARRAY output_buf, int num_rows);
  337. extern const int jconst_ycc_rgb_convert_avx2[];
  338. EXTERN(void) jsimd_ycc_rgb_convert_avx2
  339. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  340. JSAMPARRAY output_buf, int num_rows);
  341. EXTERN(void) jsimd_ycc_extrgb_convert_avx2
  342. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  343. JSAMPARRAY output_buf, int num_rows);
  344. EXTERN(void) jsimd_ycc_extrgbx_convert_avx2
  345. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  346. JSAMPARRAY output_buf, int num_rows);
  347. EXTERN(void) jsimd_ycc_extbgr_convert_avx2
  348. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  349. JSAMPARRAY output_buf, int num_rows);
  350. EXTERN(void) jsimd_ycc_extbgrx_convert_avx2
  351. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  352. JSAMPARRAY output_buf, int num_rows);
  353. EXTERN(void) jsimd_ycc_extxbgr_convert_avx2
  354. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  355. JSAMPARRAY output_buf, int num_rows);
  356. EXTERN(void) jsimd_ycc_extxrgb_convert_avx2
  357. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  358. JSAMPARRAY output_buf, int num_rows);
  359. EXTERN(void) jsimd_ycc_rgb_convert_neon
  360. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  361. JSAMPARRAY output_buf, int num_rows);
  362. EXTERN(void) jsimd_ycc_extrgb_convert_neon
  363. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  364. JSAMPARRAY output_buf, int num_rows);
  365. EXTERN(void) jsimd_ycc_extrgbx_convert_neon
  366. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  367. JSAMPARRAY output_buf, int num_rows);
  368. EXTERN(void) jsimd_ycc_extbgr_convert_neon
  369. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  370. JSAMPARRAY output_buf, int num_rows);
  371. EXTERN(void) jsimd_ycc_extbgrx_convert_neon
  372. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  373. JSAMPARRAY output_buf, int num_rows);
  374. EXTERN(void) jsimd_ycc_extxbgr_convert_neon
  375. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  376. JSAMPARRAY output_buf, int num_rows);
  377. EXTERN(void) jsimd_ycc_extxrgb_convert_neon
  378. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  379. JSAMPARRAY output_buf, int num_rows);
  380. EXTERN(void) jsimd_ycc_rgb565_convert_neon
  381. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  382. JSAMPARRAY output_buf, int num_rows);
  383. EXTERN(void) jsimd_ycc_extrgb_convert_neon_slowst3
  384. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  385. JSAMPARRAY output_buf, int num_rows);
  386. EXTERN(void) jsimd_ycc_extbgr_convert_neon_slowst3
  387. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  388. JSAMPARRAY output_buf, int num_rows);
  389. EXTERN(void) jsimd_ycc_rgb_convert_dspr2
  390. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  391. JSAMPARRAY output_buf, int num_rows);
  392. EXTERN(void) jsimd_ycc_extrgb_convert_dspr2
  393. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  394. JSAMPARRAY output_buf, int num_rows);
  395. EXTERN(void) jsimd_ycc_extrgbx_convert_dspr2
  396. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  397. JSAMPARRAY output_buf, int num_rows);
  398. EXTERN(void) jsimd_ycc_extbgr_convert_dspr2
  399. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  400. JSAMPARRAY output_buf, int num_rows);
  401. EXTERN(void) jsimd_ycc_extbgrx_convert_dspr2
  402. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  403. JSAMPARRAY output_buf, int num_rows);
  404. EXTERN(void) jsimd_ycc_extxbgr_convert_dspr2
  405. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  406. JSAMPARRAY output_buf, int num_rows);
  407. EXTERN(void) jsimd_ycc_extxrgb_convert_dspr2
  408. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  409. JSAMPARRAY output_buf, int num_rows);
  410. EXTERN(void) jsimd_ycc_rgb_convert_mmi
  411. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  412. JSAMPARRAY output_buf, int num_rows);
  413. EXTERN(void) jsimd_ycc_extrgb_convert_mmi
  414. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  415. JSAMPARRAY output_buf, int num_rows);
  416. EXTERN(void) jsimd_ycc_extrgbx_convert_mmi
  417. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  418. JSAMPARRAY output_buf, int num_rows);
  419. EXTERN(void) jsimd_ycc_extbgr_convert_mmi
  420. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  421. JSAMPARRAY output_buf, int num_rows);
  422. EXTERN(void) jsimd_ycc_extbgrx_convert_mmi
  423. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  424. JSAMPARRAY output_buf, int num_rows);
  425. EXTERN(void) jsimd_ycc_extxbgr_convert_mmi
  426. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  427. JSAMPARRAY output_buf, int num_rows);
  428. EXTERN(void) jsimd_ycc_extxrgb_convert_mmi
  429. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  430. JSAMPARRAY output_buf, int num_rows);
  431. EXTERN(void) jsimd_ycc_rgb_convert_altivec
  432. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  433. JSAMPARRAY output_buf, int num_rows);
  434. EXTERN(void) jsimd_ycc_extrgb_convert_altivec
  435. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  436. JSAMPARRAY output_buf, int num_rows);
  437. EXTERN(void) jsimd_ycc_extrgbx_convert_altivec
  438. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  439. JSAMPARRAY output_buf, int num_rows);
  440. EXTERN(void) jsimd_ycc_extbgr_convert_altivec
  441. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  442. JSAMPARRAY output_buf, int num_rows);
  443. EXTERN(void) jsimd_ycc_extbgrx_convert_altivec
  444. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  445. JSAMPARRAY output_buf, int num_rows);
  446. EXTERN(void) jsimd_ycc_extxbgr_convert_altivec
  447. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  448. JSAMPARRAY output_buf, int num_rows);
  449. EXTERN(void) jsimd_ycc_extxrgb_convert_altivec
  450. (JDIMENSION out_width, JSAMPIMAGE input_buf, JDIMENSION input_row,
  451. JSAMPARRAY output_buf, int num_rows);
  452. /* NULL Colorspace Conversion */
  453. EXTERN(void) jsimd_c_null_convert_dspr2
  454. (JDIMENSION img_width, JSAMPARRAY input_buf, JSAMPIMAGE output_buf,
  455. JDIMENSION output_row, int num_rows, int num_components);
  456. /* h2v1 Downsampling */
  457. EXTERN(void) jsimd_h2v1_downsample_mmx
  458. (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
  459. JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
  460. EXTERN(void) jsimd_h2v1_downsample_sse2
  461. (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
  462. JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
  463. EXTERN(void) jsimd_h2v1_downsample_avx2
  464. (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
  465. JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
  466. EXTERN(void) jsimd_h2v1_downsample_neon
  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_dspr2
  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_altivec
  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. /* h2v2 Downsampling */
  476. EXTERN(void) jsimd_h2v2_downsample_mmx
  477. (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
  478. JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
  479. EXTERN(void) jsimd_h2v2_downsample_sse2
  480. (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
  481. JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
  482. EXTERN(void) jsimd_h2v2_downsample_avx2
  483. (JDIMENSION image_width, int max_v_samp_factor, JDIMENSION v_samp_factor,
  484. JDIMENSION width_in_blocks, JSAMPARRAY input_data, JSAMPARRAY output_data);
  485. EXTERN(void) jsimd_h2v2_downsample_neon
  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_dspr2
  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_mmi
  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_altivec
  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. /* h2v2 Smooth Downsampling */
  498. EXTERN(void) jsimd_h2v2_smooth_downsample_dspr2
  499. (JSAMPARRAY input_data, JSAMPARRAY output_data, JDIMENSION v_samp_factor,
  500. int max_v_samp_factor, int smoothing_factor, JDIMENSION width_in_blocks,
  501. JDIMENSION image_width);
  502. /* Upsampling */
  503. EXTERN(void) jsimd_h2v1_upsample_mmx
  504. (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
  505. JSAMPARRAY *output_data_ptr);
  506. EXTERN(void) jsimd_h2v2_upsample_mmx
  507. (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
  508. JSAMPARRAY *output_data_ptr);
  509. EXTERN(void) jsimd_h2v1_upsample_sse2
  510. (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
  511. JSAMPARRAY *output_data_ptr);
  512. EXTERN(void) jsimd_h2v2_upsample_sse2
  513. (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
  514. JSAMPARRAY *output_data_ptr);
  515. EXTERN(void) jsimd_h2v1_upsample_avx2
  516. (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
  517. JSAMPARRAY *output_data_ptr);
  518. EXTERN(void) jsimd_h2v2_upsample_avx2
  519. (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
  520. JSAMPARRAY *output_data_ptr);
  521. EXTERN(void) jsimd_h2v1_upsample_dspr2
  522. (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
  523. JSAMPARRAY *output_data_ptr);
  524. EXTERN(void) jsimd_h2v2_upsample_dspr2
  525. (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
  526. JSAMPARRAY *output_data_ptr);
  527. EXTERN(void) jsimd_int_upsample_dspr2
  528. (UINT8 h_expand, UINT8 v_expand, JSAMPARRAY input_data,
  529. JSAMPARRAY *output_data_ptr, JDIMENSION output_width,
  530. int max_v_samp_factor);
  531. EXTERN(void) jsimd_h2v1_upsample_altivec
  532. (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
  533. JSAMPARRAY *output_data_ptr);
  534. EXTERN(void) jsimd_h2v2_upsample_altivec
  535. (int max_v_samp_factor, JDIMENSION output_width, JSAMPARRAY input_data,
  536. JSAMPARRAY *output_data_ptr);
  537. /* Fancy Upsampling */
  538. EXTERN(void) jsimd_h2v1_fancy_upsample_mmx
  539. (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
  540. JSAMPARRAY *output_data_ptr);
  541. EXTERN(void) jsimd_h2v2_fancy_upsample_mmx
  542. (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
  543. JSAMPARRAY *output_data_ptr);
  544. extern const int jconst_fancy_upsample_sse2[];
  545. EXTERN(void) jsimd_h2v1_fancy_upsample_sse2
  546. (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
  547. JSAMPARRAY *output_data_ptr);
  548. EXTERN(void) jsimd_h2v2_fancy_upsample_sse2
  549. (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
  550. JSAMPARRAY *output_data_ptr);
  551. extern const int jconst_fancy_upsample_avx2[];
  552. EXTERN(void) jsimd_h2v1_fancy_upsample_avx2
  553. (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
  554. JSAMPARRAY *output_data_ptr);
  555. EXTERN(void) jsimd_h2v2_fancy_upsample_avx2
  556. (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
  557. JSAMPARRAY *output_data_ptr);
  558. EXTERN(void) jsimd_h2v1_fancy_upsample_neon
  559. (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
  560. JSAMPARRAY *output_data_ptr);
  561. EXTERN(void) jsimd_h2v1_fancy_upsample_dspr2
  562. (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
  563. JSAMPARRAY *output_data_ptr);
  564. EXTERN(void) jsimd_h2v2_fancy_upsample_dspr2
  565. (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
  566. JSAMPARRAY *output_data_ptr);
  567. EXTERN(void) jsimd_h2v2_fancy_upsample_mmi
  568. (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
  569. JSAMPARRAY *output_data_ptr);
  570. EXTERN(void) jsimd_h2v1_fancy_upsample_altivec
  571. (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
  572. JSAMPARRAY *output_data_ptr);
  573. EXTERN(void) jsimd_h2v2_fancy_upsample_altivec
  574. (int max_v_samp_factor, JDIMENSION downsampled_width, JSAMPARRAY input_data,
  575. JSAMPARRAY *output_data_ptr);
  576. /* Merged Upsampling */
  577. EXTERN(void) jsimd_h2v1_merged_upsample_mmx
  578. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  579. JSAMPARRAY output_buf);
  580. EXTERN(void) jsimd_h2v1_extrgb_merged_upsample_mmx
  581. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  582. JSAMPARRAY output_buf);
  583. EXTERN(void) jsimd_h2v1_extrgbx_merged_upsample_mmx
  584. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  585. JSAMPARRAY output_buf);
  586. EXTERN(void) jsimd_h2v1_extbgr_merged_upsample_mmx
  587. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  588. JSAMPARRAY output_buf);
  589. EXTERN(void) jsimd_h2v1_extbgrx_merged_upsample_mmx
  590. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  591. JSAMPARRAY output_buf);
  592. EXTERN(void) jsimd_h2v1_extxbgr_merged_upsample_mmx
  593. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  594. JSAMPARRAY output_buf);
  595. EXTERN(void) jsimd_h2v1_extxrgb_merged_upsample_mmx
  596. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  597. JSAMPARRAY output_buf);
  598. EXTERN(void) jsimd_h2v2_merged_upsample_mmx
  599. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  600. JSAMPARRAY output_buf);
  601. EXTERN(void) jsimd_h2v2_extrgb_merged_upsample_mmx
  602. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  603. JSAMPARRAY output_buf);
  604. EXTERN(void) jsimd_h2v2_extrgbx_merged_upsample_mmx
  605. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  606. JSAMPARRAY output_buf);
  607. EXTERN(void) jsimd_h2v2_extbgr_merged_upsample_mmx
  608. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  609. JSAMPARRAY output_buf);
  610. EXTERN(void) jsimd_h2v2_extbgrx_merged_upsample_mmx
  611. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  612. JSAMPARRAY output_buf);
  613. EXTERN(void) jsimd_h2v2_extxbgr_merged_upsample_mmx
  614. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  615. JSAMPARRAY output_buf);
  616. EXTERN(void) jsimd_h2v2_extxrgb_merged_upsample_mmx
  617. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  618. JSAMPARRAY output_buf);
  619. extern const int jconst_merged_upsample_sse2[];
  620. EXTERN(void) jsimd_h2v1_merged_upsample_sse2
  621. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  622. JSAMPARRAY output_buf);
  623. EXTERN(void) jsimd_h2v1_extrgb_merged_upsample_sse2
  624. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  625. JSAMPARRAY output_buf);
  626. EXTERN(void) jsimd_h2v1_extrgbx_merged_upsample_sse2
  627. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  628. JSAMPARRAY output_buf);
  629. EXTERN(void) jsimd_h2v1_extbgr_merged_upsample_sse2
  630. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  631. JSAMPARRAY output_buf);
  632. EXTERN(void) jsimd_h2v1_extbgrx_merged_upsample_sse2
  633. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  634. JSAMPARRAY output_buf);
  635. EXTERN(void) jsimd_h2v1_extxbgr_merged_upsample_sse2
  636. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  637. JSAMPARRAY output_buf);
  638. EXTERN(void) jsimd_h2v1_extxrgb_merged_upsample_sse2
  639. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  640. JSAMPARRAY output_buf);
  641. EXTERN(void) jsimd_h2v2_merged_upsample_sse2
  642. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  643. JSAMPARRAY output_buf);
  644. EXTERN(void) jsimd_h2v2_extrgb_merged_upsample_sse2
  645. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  646. JSAMPARRAY output_buf);
  647. EXTERN(void) jsimd_h2v2_extrgbx_merged_upsample_sse2
  648. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  649. JSAMPARRAY output_buf);
  650. EXTERN(void) jsimd_h2v2_extbgr_merged_upsample_sse2
  651. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  652. JSAMPARRAY output_buf);
  653. EXTERN(void) jsimd_h2v2_extbgrx_merged_upsample_sse2
  654. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  655. JSAMPARRAY output_buf);
  656. EXTERN(void) jsimd_h2v2_extxbgr_merged_upsample_sse2
  657. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  658. JSAMPARRAY output_buf);
  659. EXTERN(void) jsimd_h2v2_extxrgb_merged_upsample_sse2
  660. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  661. JSAMPARRAY output_buf);
  662. extern const int jconst_merged_upsample_avx2[];
  663. EXTERN(void) jsimd_h2v1_merged_upsample_avx2
  664. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  665. JSAMPARRAY output_buf);
  666. EXTERN(void) jsimd_h2v1_extrgb_merged_upsample_avx2
  667. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  668. JSAMPARRAY output_buf);
  669. EXTERN(void) jsimd_h2v1_extrgbx_merged_upsample_avx2
  670. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  671. JSAMPARRAY output_buf);
  672. EXTERN(void) jsimd_h2v1_extbgr_merged_upsample_avx2
  673. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  674. JSAMPARRAY output_buf);
  675. EXTERN(void) jsimd_h2v1_extbgrx_merged_upsample_avx2
  676. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  677. JSAMPARRAY output_buf);
  678. EXTERN(void) jsimd_h2v1_extxbgr_merged_upsample_avx2
  679. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  680. JSAMPARRAY output_buf);
  681. EXTERN(void) jsimd_h2v1_extxrgb_merged_upsample_avx2
  682. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  683. JSAMPARRAY output_buf);
  684. EXTERN(void) jsimd_h2v2_merged_upsample_avx2
  685. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  686. JSAMPARRAY output_buf);
  687. EXTERN(void) jsimd_h2v2_extrgb_merged_upsample_avx2
  688. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  689. JSAMPARRAY output_buf);
  690. EXTERN(void) jsimd_h2v2_extrgbx_merged_upsample_avx2
  691. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  692. JSAMPARRAY output_buf);
  693. EXTERN(void) jsimd_h2v2_extbgr_merged_upsample_avx2
  694. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  695. JSAMPARRAY output_buf);
  696. EXTERN(void) jsimd_h2v2_extbgrx_merged_upsample_avx2
  697. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  698. JSAMPARRAY output_buf);
  699. EXTERN(void) jsimd_h2v2_extxbgr_merged_upsample_avx2
  700. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  701. JSAMPARRAY output_buf);
  702. EXTERN(void) jsimd_h2v2_extxrgb_merged_upsample_avx2
  703. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  704. JSAMPARRAY output_buf);
  705. EXTERN(void) jsimd_h2v1_merged_upsample_dspr2
  706. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  707. JSAMPARRAY output_buf, JSAMPLE *range);
  708. EXTERN(void) jsimd_h2v1_extrgb_merged_upsample_dspr2
  709. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  710. JSAMPARRAY output_buf, JSAMPLE *range);
  711. EXTERN(void) jsimd_h2v1_extrgbx_merged_upsample_dspr2
  712. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  713. JSAMPARRAY output_buf, JSAMPLE *range);
  714. EXTERN(void) jsimd_h2v1_extbgr_merged_upsample_dspr2
  715. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  716. JSAMPARRAY output_buf, JSAMPLE *range);
  717. EXTERN(void) jsimd_h2v1_extbgrx_merged_upsample_dspr2
  718. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  719. JSAMPARRAY output_buf, JSAMPLE *range);
  720. EXTERN(void) jsimd_h2v1_extxbgr_merged_upsample_dspr2
  721. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  722. JSAMPARRAY output_buf, JSAMPLE *range);
  723. EXTERN(void) jsimd_h2v1_extxrgb_merged_upsample_dspr2
  724. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  725. JSAMPARRAY output_buf, JSAMPLE *range);
  726. EXTERN(void) jsimd_h2v2_merged_upsample_dspr2
  727. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  728. JSAMPARRAY output_buf, JSAMPLE *range);
  729. EXTERN(void) jsimd_h2v2_extrgb_merged_upsample_dspr2
  730. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  731. JSAMPARRAY output_buf, JSAMPLE *range);
  732. EXTERN(void) jsimd_h2v2_extrgbx_merged_upsample_dspr2
  733. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  734. JSAMPARRAY output_buf, JSAMPLE *range);
  735. EXTERN(void) jsimd_h2v2_extbgr_merged_upsample_dspr2
  736. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  737. JSAMPARRAY output_buf, JSAMPLE *range);
  738. EXTERN(void) jsimd_h2v2_extbgrx_merged_upsample_dspr2
  739. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  740. JSAMPARRAY output_buf, JSAMPLE *range);
  741. EXTERN(void) jsimd_h2v2_extxbgr_merged_upsample_dspr2
  742. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  743. JSAMPARRAY output_buf, JSAMPLE *range);
  744. EXTERN(void) jsimd_h2v2_extxrgb_merged_upsample_dspr2
  745. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  746. JSAMPARRAY output_buf, JSAMPLE *range);
  747. EXTERN(void) jsimd_h2v1_merged_upsample_altivec
  748. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  749. JSAMPARRAY output_buf);
  750. EXTERN(void) jsimd_h2v1_extrgb_merged_upsample_altivec
  751. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  752. JSAMPARRAY output_buf);
  753. EXTERN(void) jsimd_h2v1_extrgbx_merged_upsample_altivec
  754. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  755. JSAMPARRAY output_buf);
  756. EXTERN(void) jsimd_h2v1_extbgr_merged_upsample_altivec
  757. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  758. JSAMPARRAY output_buf);
  759. EXTERN(void) jsimd_h2v1_extbgrx_merged_upsample_altivec
  760. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  761. JSAMPARRAY output_buf);
  762. EXTERN(void) jsimd_h2v1_extxbgr_merged_upsample_altivec
  763. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  764. JSAMPARRAY output_buf);
  765. EXTERN(void) jsimd_h2v1_extxrgb_merged_upsample_altivec
  766. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  767. JSAMPARRAY output_buf);
  768. EXTERN(void) jsimd_h2v2_merged_upsample_altivec
  769. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  770. JSAMPARRAY output_buf);
  771. EXTERN(void) jsimd_h2v2_extrgb_merged_upsample_altivec
  772. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  773. JSAMPARRAY output_buf);
  774. EXTERN(void) jsimd_h2v2_extrgbx_merged_upsample_altivec
  775. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  776. JSAMPARRAY output_buf);
  777. EXTERN(void) jsimd_h2v2_extbgr_merged_upsample_altivec
  778. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  779. JSAMPARRAY output_buf);
  780. EXTERN(void) jsimd_h2v2_extbgrx_merged_upsample_altivec
  781. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  782. JSAMPARRAY output_buf);
  783. EXTERN(void) jsimd_h2v2_extxbgr_merged_upsample_altivec
  784. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  785. JSAMPARRAY output_buf);
  786. EXTERN(void) jsimd_h2v2_extxrgb_merged_upsample_altivec
  787. (JDIMENSION output_width, JSAMPIMAGE input_buf, JDIMENSION in_row_group_ctr,
  788. JSAMPARRAY output_buf);
  789. /* Sample Conversion */
  790. EXTERN(void) jsimd_convsamp_mmx
  791. (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM *workspace);
  792. EXTERN(void) jsimd_convsamp_sse2
  793. (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM *workspace);
  794. EXTERN(void) jsimd_convsamp_avx2
  795. (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM *workspace);
  796. EXTERN(void) jsimd_convsamp_neon
  797. (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM *workspace);
  798. EXTERN(void) jsimd_convsamp_dspr2
  799. (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM *workspace);
  800. EXTERN(void) jsimd_convsamp_altivec
  801. (JSAMPARRAY sample_data, JDIMENSION start_col, DCTELEM *workspace);
  802. /* Floating Point Sample Conversion */
  803. EXTERN(void) jsimd_convsamp_float_3dnow
  804. (JSAMPARRAY sample_data, JDIMENSION start_col, FAST_FLOAT *workspace);
  805. EXTERN(void) jsimd_convsamp_float_sse
  806. (JSAMPARRAY sample_data, JDIMENSION start_col, FAST_FLOAT *workspace);
  807. EXTERN(void) jsimd_convsamp_float_sse2
  808. (JSAMPARRAY sample_data, JDIMENSION start_col, FAST_FLOAT *workspace);
  809. EXTERN(void) jsimd_convsamp_float_dspr2
  810. (JSAMPARRAY sample_data, JDIMENSION start_col, FAST_FLOAT *workspace);
  811. /* Slow Integer Forward DCT */
  812. EXTERN(void) jsimd_fdct_islow_mmx(DCTELEM *data);
  813. extern const int jconst_fdct_islow_sse2[];
  814. EXTERN(void) jsimd_fdct_islow_sse2(DCTELEM *data);
  815. extern const int jconst_fdct_islow_avx2[];
  816. EXTERN(void) jsimd_fdct_islow_avx2(DCTELEM *data);
  817. EXTERN(void) jsimd_fdct_islow_neon(DCTELEM *data);
  818. EXTERN(void) jsimd_fdct_islow_dspr2(DCTELEM *data);
  819. EXTERN(void) jsimd_fdct_islow_mmi(DCTELEM *data);
  820. EXTERN(void) jsimd_fdct_islow_altivec(DCTELEM *data);
  821. /* Fast Integer Forward DCT */
  822. EXTERN(void) jsimd_fdct_ifast_mmx(DCTELEM *data);
  823. extern const int jconst_fdct_ifast_sse2[];
  824. EXTERN(void) jsimd_fdct_ifast_sse2(DCTELEM *data);
  825. EXTERN(void) jsimd_fdct_ifast_neon(DCTELEM *data);
  826. EXTERN(void) jsimd_fdct_ifast_dspr2(DCTELEM *data);
  827. EXTERN(void) jsimd_fdct_ifast_altivec(DCTELEM *data);
  828. /* Floating Point Forward DCT */
  829. EXTERN(void) jsimd_fdct_float_3dnow(FAST_FLOAT *data);
  830. extern const int jconst_fdct_float_sse[];
  831. EXTERN(void) jsimd_fdct_float_sse(FAST_FLOAT *data);
  832. /* Quantization */
  833. EXTERN(void) jsimd_quantize_mmx
  834. (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
  835. EXTERN(void) jsimd_quantize_sse2
  836. (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
  837. EXTERN(void) jsimd_quantize_avx2
  838. (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
  839. EXTERN(void) jsimd_quantize_neon
  840. (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
  841. EXTERN(void) jsimd_quantize_dspr2
  842. (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
  843. EXTERN(void) jsimd_quantize_mmi
  844. (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
  845. EXTERN(void) jsimd_quantize_altivec
  846. (JCOEFPTR coef_block, DCTELEM *divisors, DCTELEM *workspace);
  847. /* Floating Point Quantization */
  848. EXTERN(void) jsimd_quantize_float_3dnow
  849. (JCOEFPTR coef_block, FAST_FLOAT *divisors, FAST_FLOAT *workspace);
  850. EXTERN(void) jsimd_quantize_float_sse
  851. (JCOEFPTR coef_block, FAST_FLOAT *divisors, FAST_FLOAT *workspace);
  852. EXTERN(void) jsimd_quantize_float_sse2
  853. (JCOEFPTR coef_block, FAST_FLOAT *divisors, FAST_FLOAT *workspace);
  854. EXTERN(void) jsimd_quantize_float_dspr2
  855. (JCOEFPTR coef_block, FAST_FLOAT *divisors, FAST_FLOAT *workspace);
  856. /* Scaled Inverse DCT */
  857. EXTERN(void) jsimd_idct_2x2_mmx
  858. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  859. JDIMENSION output_col);
  860. EXTERN(void) jsimd_idct_4x4_mmx
  861. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  862. JDIMENSION output_col);
  863. extern const int jconst_idct_red_sse2[];
  864. EXTERN(void) jsimd_idct_2x2_sse2
  865. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  866. JDIMENSION output_col);
  867. EXTERN(void) jsimd_idct_4x4_sse2
  868. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  869. JDIMENSION output_col);
  870. EXTERN(void) jsimd_idct_2x2_neon
  871. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  872. JDIMENSION output_col);
  873. EXTERN(void) jsimd_idct_4x4_neon
  874. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  875. JDIMENSION output_col);
  876. EXTERN(void) jsimd_idct_2x2_dspr2
  877. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  878. JDIMENSION output_col);
  879. EXTERN(void) jsimd_idct_4x4_dspr2
  880. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  881. JDIMENSION output_col, int *workspace);
  882. EXTERN(void) jsimd_idct_6x6_dspr2
  883. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  884. JDIMENSION output_col);
  885. EXTERN(void) jsimd_idct_12x12_pass1_dspr2
  886. (JCOEFPTR coef_block, void *dct_table, int *workspace);
  887. EXTERN(void) jsimd_idct_12x12_pass2_dspr2
  888. (int *workspace, int *output);
  889. /* Slow Integer Inverse DCT */
  890. EXTERN(void) jsimd_idct_islow_mmx
  891. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  892. JDIMENSION output_col);
  893. extern const int jconst_idct_islow_sse2[];
  894. EXTERN(void) jsimd_idct_islow_sse2
  895. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  896. JDIMENSION output_col);
  897. extern const int jconst_idct_islow_avx2[];
  898. EXTERN(void) jsimd_idct_islow_avx2
  899. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  900. JDIMENSION output_col);
  901. EXTERN(void) jsimd_idct_islow_neon
  902. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  903. JDIMENSION output_col);
  904. EXTERN(void) jsimd_idct_islow_dspr2
  905. (void *dct_table, JCOEFPTR coef_block, int *output_buf, JSAMPLE *output_col);
  906. EXTERN(void) jsimd_idct_islow_mmi
  907. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  908. JDIMENSION output_col);
  909. EXTERN(void) jsimd_idct_islow_altivec
  910. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  911. JDIMENSION output_col);
  912. /* Fast Integer Inverse DCT */
  913. EXTERN(void) jsimd_idct_ifast_mmx
  914. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  915. JDIMENSION output_col);
  916. extern const int jconst_idct_ifast_sse2[];
  917. EXTERN(void) jsimd_idct_ifast_sse2
  918. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  919. JDIMENSION output_col);
  920. EXTERN(void) jsimd_idct_ifast_neon
  921. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  922. JDIMENSION output_col);
  923. EXTERN(void) jsimd_idct_ifast_cols_dspr2
  924. (JCOEF *inptr, IFAST_MULT_TYPE *quantptr, DCTELEM *wsptr,
  925. const int *idct_coefs);
  926. EXTERN(void) jsimd_idct_ifast_rows_dspr2
  927. (DCTELEM *wsptr, JSAMPARRAY output_buf, JDIMENSION output_col,
  928. const int *idct_coefs);
  929. EXTERN(void) jsimd_idct_ifast_altivec
  930. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  931. JDIMENSION output_col);
  932. /* Floating Point Inverse DCT */
  933. EXTERN(void) jsimd_idct_float_3dnow
  934. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  935. JDIMENSION output_col);
  936. extern const int jconst_idct_float_sse[];
  937. EXTERN(void) jsimd_idct_float_sse
  938. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  939. JDIMENSION output_col);
  940. extern const int jconst_idct_float_sse2[];
  941. EXTERN(void) jsimd_idct_float_sse2
  942. (void *dct_table, JCOEFPTR coef_block, JSAMPARRAY output_buf,
  943. JDIMENSION output_col);
  944. /* Huffman coding */
  945. extern const int jconst_huff_encode_one_block[];
  946. EXTERN(JOCTET *) jsimd_huff_encode_one_block_sse2
  947. (void *state, JOCTET *buffer, JCOEFPTR block, int last_dc_val,
  948. c_derived_tbl *dctbl, c_derived_tbl *actbl);
  949. EXTERN(JOCTET *) jsimd_huff_encode_one_block_neon
  950. (void *state, JOCTET *buffer, JCOEFPTR block, int last_dc_val,
  951. c_derived_tbl *dctbl, c_derived_tbl *actbl);
  952. EXTERN(JOCTET *) jsimd_huff_encode_one_block_neon_slowtbl
  953. (void *state, JOCTET *buffer, JCOEFPTR block, int last_dc_val,
  954. c_derived_tbl *dctbl, c_derived_tbl *actbl);
  955. /* Progressive Huffman encoding */
  956. EXTERN(void) jsimd_encode_mcu_AC_first_prepare_sse2
  957. (const JCOEF *block, const int *jpeg_natural_order_start, int Sl, int Al,
  958. JCOEF *values, size_t *zerobits);
  959. EXTERN(int) jsimd_encode_mcu_AC_refine_prepare_sse2
  960. (const JCOEF *block, const int *jpeg_natural_order_start, int Sl, int Al,
  961. JCOEF *absvalues, size_t *bits);