image_pack 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (319) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +18 -0
  3. data/LICENSE.txt +21 -0
  4. data/README.md +140 -0
  5. data/THIRD_PARTY_NOTICES.md +8 -0
  6. data/ext/image_pack/extconf.rb +515 -0
  7. data/ext/image_pack/image_pack.c +1618 -0
  8. data/ext/image_pack/vendor/.vendored +1 -0
  9. data/ext/image_pack/vendor/mozjpeg/BUILDING.txt +902 -0
  10. data/ext/image_pack/vendor/mozjpeg/CMakeLists.txt +1593 -0
  11. data/ext/image_pack/vendor/mozjpeg/LICENSE.md +132 -0
  12. data/ext/image_pack/vendor/mozjpeg/README-mozilla.txt +194 -0
  13. data/ext/image_pack/vendor/mozjpeg/README-turbo.txt +346 -0
  14. data/ext/image_pack/vendor/mozjpeg/README.ijg +258 -0
  15. data/ext/image_pack/vendor/mozjpeg/README.md +29 -0
  16. data/ext/image_pack/vendor/mozjpeg/cderror.h +128 -0
  17. data/ext/image_pack/vendor/mozjpeg/cdjpeg.c +156 -0
  18. data/ext/image_pack/vendor/mozjpeg/cdjpeg.h +171 -0
  19. data/ext/image_pack/vendor/mozjpeg/cjpeg.c +961 -0
  20. data/ext/image_pack/vendor/mozjpeg/cmyk.h +60 -0
  21. data/ext/image_pack/vendor/mozjpeg/coderules.txt +78 -0
  22. data/ext/image_pack/vendor/mozjpeg/croptest.in +95 -0
  23. data/ext/image_pack/vendor/mozjpeg/djpeg.c +855 -0
  24. data/ext/image_pack/vendor/mozjpeg/example.txt +464 -0
  25. data/ext/image_pack/vendor/mozjpeg/jaricom.c +157 -0
  26. data/ext/image_pack/vendor/mozjpeg/jcapimin.c +307 -0
  27. data/ext/image_pack/vendor/mozjpeg/jcapistd.c +168 -0
  28. data/ext/image_pack/vendor/mozjpeg/jcarith.c +972 -0
  29. data/ext/image_pack/vendor/mozjpeg/jccoefct.c +609 -0
  30. data/ext/image_pack/vendor/mozjpeg/jccolext.c +144 -0
  31. data/ext/image_pack/vendor/mozjpeg/jccolor.c +721 -0
  32. data/ext/image_pack/vendor/mozjpeg/jcdctmgr.c +1776 -0
  33. data/ext/image_pack/vendor/mozjpeg/jcext.c +219 -0
  34. data/ext/image_pack/vendor/mozjpeg/jchuff.c +1146 -0
  35. data/ext/image_pack/vendor/mozjpeg/jchuff.h +57 -0
  36. data/ext/image_pack/vendor/mozjpeg/jcicc.c +105 -0
  37. data/ext/image_pack/vendor/mozjpeg/jcinit.c +82 -0
  38. data/ext/image_pack/vendor/mozjpeg/jcmainct.c +162 -0
  39. data/ext/image_pack/vendor/mozjpeg/jcmarker.c +844 -0
  40. data/ext/image_pack/vendor/mozjpeg/jcmaster.c +958 -0
  41. data/ext/image_pack/vendor/mozjpeg/jcmaster.h +56 -0
  42. data/ext/image_pack/vendor/mozjpeg/jcomapi.c +109 -0
  43. data/ext/image_pack/vendor/mozjpeg/jconfig.h.in +37 -0
  44. data/ext/image_pack/vendor/mozjpeg/jconfig.txt +93 -0
  45. data/ext/image_pack/vendor/mozjpeg/jconfigint.h.in +44 -0
  46. data/ext/image_pack/vendor/mozjpeg/jcparam.c +991 -0
  47. data/ext/image_pack/vendor/mozjpeg/jcphuff.c +1123 -0
  48. data/ext/image_pack/vendor/mozjpeg/jcprepct.c +351 -0
  49. data/ext/image_pack/vendor/mozjpeg/jcsample.c +522 -0
  50. data/ext/image_pack/vendor/mozjpeg/jcstest.c +126 -0
  51. data/ext/image_pack/vendor/mozjpeg/jctrans.c +408 -0
  52. data/ext/image_pack/vendor/mozjpeg/jdapimin.c +407 -0
  53. data/ext/image_pack/vendor/mozjpeg/jdapistd.c +691 -0
  54. data/ext/image_pack/vendor/mozjpeg/jdarith.c +782 -0
  55. data/ext/image_pack/vendor/mozjpeg/jdatadst-tj.c +198 -0
  56. data/ext/image_pack/vendor/mozjpeg/jdatadst.c +299 -0
  57. data/ext/image_pack/vendor/mozjpeg/jdatasrc-tj.c +194 -0
  58. data/ext/image_pack/vendor/mozjpeg/jdatasrc.c +295 -0
  59. data/ext/image_pack/vendor/mozjpeg/jdcoefct.c +881 -0
  60. data/ext/image_pack/vendor/mozjpeg/jdcoefct.h +83 -0
  61. data/ext/image_pack/vendor/mozjpeg/jdcol565.c +384 -0
  62. data/ext/image_pack/vendor/mozjpeg/jdcolext.c +141 -0
  63. data/ext/image_pack/vendor/mozjpeg/jdcolor.c +881 -0
  64. data/ext/image_pack/vendor/mozjpeg/jdct.h +208 -0
  65. data/ext/image_pack/vendor/mozjpeg/jddctmgr.c +367 -0
  66. data/ext/image_pack/vendor/mozjpeg/jdhuff.c +834 -0
  67. data/ext/image_pack/vendor/mozjpeg/jdhuff.h +247 -0
  68. data/ext/image_pack/vendor/mozjpeg/jdicc.c +167 -0
  69. data/ext/image_pack/vendor/mozjpeg/jdinput.c +408 -0
  70. data/ext/image_pack/vendor/mozjpeg/jdmainct.c +460 -0
  71. data/ext/image_pack/vendor/mozjpeg/jdmainct.h +71 -0
  72. data/ext/image_pack/vendor/mozjpeg/jdmarker.c +1374 -0
  73. data/ext/image_pack/vendor/mozjpeg/jdmaster.c +727 -0
  74. data/ext/image_pack/vendor/mozjpeg/jdmaster.h +33 -0
  75. data/ext/image_pack/vendor/mozjpeg/jdmerge.c +587 -0
  76. data/ext/image_pack/vendor/mozjpeg/jdmerge.h +47 -0
  77. data/ext/image_pack/vendor/mozjpeg/jdmrg565.c +354 -0
  78. data/ext/image_pack/vendor/mozjpeg/jdmrgext.c +184 -0
  79. data/ext/image_pack/vendor/mozjpeg/jdphuff.c +679 -0
  80. data/ext/image_pack/vendor/mozjpeg/jdpostct.c +294 -0
  81. data/ext/image_pack/vendor/mozjpeg/jdsample.c +524 -0
  82. data/ext/image_pack/vendor/mozjpeg/jdsample.h +50 -0
  83. data/ext/image_pack/vendor/mozjpeg/jdtrans.c +156 -0
  84. data/ext/image_pack/vendor/mozjpeg/jerror.c +251 -0
  85. data/ext/image_pack/vendor/mozjpeg/jerror.h +335 -0
  86. data/ext/image_pack/vendor/mozjpeg/jfdctflt.c +169 -0
  87. data/ext/image_pack/vendor/mozjpeg/jfdctfst.c +227 -0
  88. data/ext/image_pack/vendor/mozjpeg/jfdctint.c +288 -0
  89. data/ext/image_pack/vendor/mozjpeg/jidctflt.c +240 -0
  90. data/ext/image_pack/vendor/mozjpeg/jidctfst.c +371 -0
  91. data/ext/image_pack/vendor/mozjpeg/jidctint.c +2627 -0
  92. data/ext/image_pack/vendor/mozjpeg/jidctred.c +409 -0
  93. data/ext/image_pack/vendor/mozjpeg/jinclude.h +147 -0
  94. data/ext/image_pack/vendor/mozjpeg/jmemmgr.c +1180 -0
  95. data/ext/image_pack/vendor/mozjpeg/jmemnobs.c +110 -0
  96. data/ext/image_pack/vendor/mozjpeg/jmemsys.h +178 -0
  97. data/ext/image_pack/vendor/mozjpeg/jmorecfg.h +382 -0
  98. data/ext/image_pack/vendor/mozjpeg/jpeg_nbits_table.h +4098 -0
  99. data/ext/image_pack/vendor/mozjpeg/jpegcomp.h +32 -0
  100. data/ext/image_pack/vendor/mozjpeg/jpegint.h +453 -0
  101. data/ext/image_pack/vendor/mozjpeg/jpeglib.h +1211 -0
  102. data/ext/image_pack/vendor/mozjpeg/jpegtran.c +827 -0
  103. data/ext/image_pack/vendor/mozjpeg/jpegyuv.c +172 -0
  104. data/ext/image_pack/vendor/mozjpeg/jquant1.c +856 -0
  105. data/ext/image_pack/vendor/mozjpeg/jquant2.c +1286 -0
  106. data/ext/image_pack/vendor/mozjpeg/jsimd.h +123 -0
  107. data/ext/image_pack/vendor/mozjpeg/jsimd_none.c +431 -0
  108. data/ext/image_pack/vendor/mozjpeg/jsimddct.h +70 -0
  109. data/ext/image_pack/vendor/mozjpeg/jstdhuff.c +144 -0
  110. data/ext/image_pack/vendor/mozjpeg/jutils.c +133 -0
  111. data/ext/image_pack/vendor/mozjpeg/jversion.h.in +56 -0
  112. data/ext/image_pack/vendor/mozjpeg/libjpeg.map.in +11 -0
  113. data/ext/image_pack/vendor/mozjpeg/libjpeg.txt +3150 -0
  114. data/ext/image_pack/vendor/mozjpeg/rdbmp.c +690 -0
  115. data/ext/image_pack/vendor/mozjpeg/rdcolmap.c +253 -0
  116. data/ext/image_pack/vendor/mozjpeg/rdgif.c +720 -0
  117. data/ext/image_pack/vendor/mozjpeg/rdjpeg.c +160 -0
  118. data/ext/image_pack/vendor/mozjpeg/rdjpgcom.c +494 -0
  119. data/ext/image_pack/vendor/mozjpeg/rdpng.c +194 -0
  120. data/ext/image_pack/vendor/mozjpeg/rdppm.c +781 -0
  121. data/ext/image_pack/vendor/mozjpeg/rdswitch.c +642 -0
  122. data/ext/image_pack/vendor/mozjpeg/rdtarga.c +508 -0
  123. data/ext/image_pack/vendor/mozjpeg/simd/arm/aarch32/jccolext-neon.c +148 -0
  124. data/ext/image_pack/vendor/mozjpeg/simd/arm/aarch32/jchuff-neon.c +334 -0
  125. data/ext/image_pack/vendor/mozjpeg/simd/arm/aarch32/jsimd.c +976 -0
  126. data/ext/image_pack/vendor/mozjpeg/simd/arm/aarch32/jsimd_neon.S +1200 -0
  127. data/ext/image_pack/vendor/mozjpeg/simd/arm/aarch64/jccolext-neon.c +316 -0
  128. data/ext/image_pack/vendor/mozjpeg/simd/arm/aarch64/jchuff-neon.c +411 -0
  129. data/ext/image_pack/vendor/mozjpeg/simd/arm/aarch64/jsimd.c +1053 -0
  130. data/ext/image_pack/vendor/mozjpeg/simd/arm/aarch64/jsimd_neon.S +2254 -0
  131. data/ext/image_pack/vendor/mozjpeg/simd/arm/align.h +28 -0
  132. data/ext/image_pack/vendor/mozjpeg/simd/arm/jccolor-neon.c +160 -0
  133. data/ext/image_pack/vendor/mozjpeg/simd/arm/jcgray-neon.c +120 -0
  134. data/ext/image_pack/vendor/mozjpeg/simd/arm/jcgryext-neon.c +106 -0
  135. data/ext/image_pack/vendor/mozjpeg/simd/arm/jchuff.h +131 -0
  136. data/ext/image_pack/vendor/mozjpeg/simd/arm/jcphuff-neon.c +623 -0
  137. data/ext/image_pack/vendor/mozjpeg/simd/arm/jcsample-neon.c +192 -0
  138. data/ext/image_pack/vendor/mozjpeg/simd/arm/jdcolext-neon.c +374 -0
  139. data/ext/image_pack/vendor/mozjpeg/simd/arm/jdcolor-neon.c +141 -0
  140. data/ext/image_pack/vendor/mozjpeg/simd/arm/jdmerge-neon.c +144 -0
  141. data/ext/image_pack/vendor/mozjpeg/simd/arm/jdmrgext-neon.c +723 -0
  142. data/ext/image_pack/vendor/mozjpeg/simd/arm/jdsample-neon.c +569 -0
  143. data/ext/image_pack/vendor/mozjpeg/simd/arm/jfdctfst-neon.c +214 -0
  144. data/ext/image_pack/vendor/mozjpeg/simd/arm/jfdctint-neon.c +376 -0
  145. data/ext/image_pack/vendor/mozjpeg/simd/arm/jidctfst-neon.c +472 -0
  146. data/ext/image_pack/vendor/mozjpeg/simd/arm/jidctint-neon.c +801 -0
  147. data/ext/image_pack/vendor/mozjpeg/simd/arm/jidctred-neon.c +486 -0
  148. data/ext/image_pack/vendor/mozjpeg/simd/arm/jquanti-neon.c +193 -0
  149. data/ext/image_pack/vendor/mozjpeg/simd/arm/neon-compat.h +26 -0
  150. data/ext/image_pack/vendor/mozjpeg/simd/arm/neon-compat.h.in +37 -0
  151. data/ext/image_pack/vendor/mozjpeg/simd/i386/jccolext-avx2.asm +578 -0
  152. data/ext/image_pack/vendor/mozjpeg/simd/i386/jccolext-mmx.asm +476 -0
  153. data/ext/image_pack/vendor/mozjpeg/simd/i386/jccolext-sse2.asm +503 -0
  154. data/ext/image_pack/vendor/mozjpeg/simd/i386/jccolor-avx2.asm +121 -0
  155. data/ext/image_pack/vendor/mozjpeg/simd/i386/jccolor-mmx.asm +121 -0
  156. data/ext/image_pack/vendor/mozjpeg/simd/i386/jccolor-sse2.asm +120 -0
  157. data/ext/image_pack/vendor/mozjpeg/simd/i386/jcgray-avx2.asm +113 -0
  158. data/ext/image_pack/vendor/mozjpeg/simd/i386/jcgray-mmx.asm +113 -0
  159. data/ext/image_pack/vendor/mozjpeg/simd/i386/jcgray-sse2.asm +112 -0
  160. data/ext/image_pack/vendor/mozjpeg/simd/i386/jcgryext-avx2.asm +457 -0
  161. data/ext/image_pack/vendor/mozjpeg/simd/i386/jcgryext-mmx.asm +355 -0
  162. data/ext/image_pack/vendor/mozjpeg/simd/i386/jcgryext-sse2.asm +382 -0
  163. data/ext/image_pack/vendor/mozjpeg/simd/i386/jchuff-sse2.asm +761 -0
  164. data/ext/image_pack/vendor/mozjpeg/simd/i386/jcphuff-sse2.asm +662 -0
  165. data/ext/image_pack/vendor/mozjpeg/simd/i386/jcsample-avx2.asm +388 -0
  166. data/ext/image_pack/vendor/mozjpeg/simd/i386/jcsample-mmx.asm +324 -0
  167. data/ext/image_pack/vendor/mozjpeg/simd/i386/jcsample-sse2.asm +351 -0
  168. data/ext/image_pack/vendor/mozjpeg/simd/i386/jdcolext-avx2.asm +515 -0
  169. data/ext/image_pack/vendor/mozjpeg/simd/i386/jdcolext-mmx.asm +404 -0
  170. data/ext/image_pack/vendor/mozjpeg/simd/i386/jdcolext-sse2.asm +458 -0
  171. data/ext/image_pack/vendor/mozjpeg/simd/i386/jdcolor-avx2.asm +118 -0
  172. data/ext/image_pack/vendor/mozjpeg/simd/i386/jdcolor-mmx.asm +117 -0
  173. data/ext/image_pack/vendor/mozjpeg/simd/i386/jdcolor-sse2.asm +117 -0
  174. data/ext/image_pack/vendor/mozjpeg/simd/i386/jdmerge-avx2.asm +136 -0
  175. data/ext/image_pack/vendor/mozjpeg/simd/i386/jdmerge-mmx.asm +123 -0
  176. data/ext/image_pack/vendor/mozjpeg/simd/i386/jdmerge-sse2.asm +135 -0
  177. data/ext/image_pack/vendor/mozjpeg/simd/i386/jdmrgext-avx2.asm +575 -0
  178. data/ext/image_pack/vendor/mozjpeg/simd/i386/jdmrgext-mmx.asm +460 -0
  179. data/ext/image_pack/vendor/mozjpeg/simd/i386/jdmrgext-sse2.asm +517 -0
  180. data/ext/image_pack/vendor/mozjpeg/simd/i386/jdsample-avx2.asm +760 -0
  181. data/ext/image_pack/vendor/mozjpeg/simd/i386/jdsample-mmx.asm +731 -0
  182. data/ext/image_pack/vendor/mozjpeg/simd/i386/jdsample-sse2.asm +724 -0
  183. data/ext/image_pack/vendor/mozjpeg/simd/i386/jfdctflt-3dn.asm +318 -0
  184. data/ext/image_pack/vendor/mozjpeg/simd/i386/jfdctflt-sse.asm +369 -0
  185. data/ext/image_pack/vendor/mozjpeg/simd/i386/jfdctfst-mmx.asm +395 -0
  186. data/ext/image_pack/vendor/mozjpeg/simd/i386/jfdctfst-sse2.asm +403 -0
  187. data/ext/image_pack/vendor/mozjpeg/simd/i386/jfdctint-avx2.asm +331 -0
  188. data/ext/image_pack/vendor/mozjpeg/simd/i386/jfdctint-mmx.asm +620 -0
  189. data/ext/image_pack/vendor/mozjpeg/simd/i386/jfdctint-sse2.asm +633 -0
  190. data/ext/image_pack/vendor/mozjpeg/simd/i386/jidctflt-3dn.asm +451 -0
  191. data/ext/image_pack/vendor/mozjpeg/simd/i386/jidctflt-sse.asm +571 -0
  192. data/ext/image_pack/vendor/mozjpeg/simd/i386/jidctflt-sse2.asm +497 -0
  193. data/ext/image_pack/vendor/mozjpeg/simd/i386/jidctfst-mmx.asm +499 -0
  194. data/ext/image_pack/vendor/mozjpeg/simd/i386/jidctfst-sse2.asm +501 -0
  195. data/ext/image_pack/vendor/mozjpeg/simd/i386/jidctint-avx2.asm +453 -0
  196. data/ext/image_pack/vendor/mozjpeg/simd/i386/jidctint-mmx.asm +851 -0
  197. data/ext/image_pack/vendor/mozjpeg/simd/i386/jidctint-sse2.asm +858 -0
  198. data/ext/image_pack/vendor/mozjpeg/simd/i386/jidctred-mmx.asm +704 -0
  199. data/ext/image_pack/vendor/mozjpeg/simd/i386/jidctred-sse2.asm +592 -0
  200. data/ext/image_pack/vendor/mozjpeg/simd/i386/jquant-3dn.asm +230 -0
  201. data/ext/image_pack/vendor/mozjpeg/simd/i386/jquant-mmx.asm +276 -0
  202. data/ext/image_pack/vendor/mozjpeg/simd/i386/jquant-sse.asm +208 -0
  203. data/ext/image_pack/vendor/mozjpeg/simd/i386/jquantf-sse2.asm +168 -0
  204. data/ext/image_pack/vendor/mozjpeg/simd/i386/jquanti-avx2.asm +188 -0
  205. data/ext/image_pack/vendor/mozjpeg/simd/i386/jquanti-sse2.asm +201 -0
  206. data/ext/image_pack/vendor/mozjpeg/simd/i386/jsimd.c +1312 -0
  207. data/ext/image_pack/vendor/mozjpeg/simd/i386/jsimdcpu.asm +135 -0
  208. data/ext/image_pack/vendor/mozjpeg/simd/jsimd.h +1258 -0
  209. data/ext/image_pack/vendor/mozjpeg/simd/mips/jsimd.c +1143 -0
  210. data/ext/image_pack/vendor/mozjpeg/simd/mips/jsimd_dspr2.S +4543 -0
  211. data/ext/image_pack/vendor/mozjpeg/simd/mips/jsimd_dspr2_asm.h +292 -0
  212. data/ext/image_pack/vendor/mozjpeg/simd/mips64/jccolext-mmi.c +455 -0
  213. data/ext/image_pack/vendor/mozjpeg/simd/mips64/jccolor-mmi.c +148 -0
  214. data/ext/image_pack/vendor/mozjpeg/simd/mips64/jcgray-mmi.c +132 -0
  215. data/ext/image_pack/vendor/mozjpeg/simd/mips64/jcgryext-mmi.c +374 -0
  216. data/ext/image_pack/vendor/mozjpeg/simd/mips64/jcsample-mmi.c +98 -0
  217. data/ext/image_pack/vendor/mozjpeg/simd/mips64/jcsample.h +28 -0
  218. data/ext/image_pack/vendor/mozjpeg/simd/mips64/jdcolext-mmi.c +415 -0
  219. data/ext/image_pack/vendor/mozjpeg/simd/mips64/jdcolor-mmi.c +139 -0
  220. data/ext/image_pack/vendor/mozjpeg/simd/mips64/jdmerge-mmi.c +149 -0
  221. data/ext/image_pack/vendor/mozjpeg/simd/mips64/jdmrgext-mmi.c +615 -0
  222. data/ext/image_pack/vendor/mozjpeg/simd/mips64/jdsample-mmi.c +304 -0
  223. data/ext/image_pack/vendor/mozjpeg/simd/mips64/jfdctfst-mmi.c +255 -0
  224. data/ext/image_pack/vendor/mozjpeg/simd/mips64/jfdctint-mmi.c +398 -0
  225. data/ext/image_pack/vendor/mozjpeg/simd/mips64/jidctfst-mmi.c +395 -0
  226. data/ext/image_pack/vendor/mozjpeg/simd/mips64/jidctint-mmi.c +571 -0
  227. data/ext/image_pack/vendor/mozjpeg/simd/mips64/jquanti-mmi.c +124 -0
  228. data/ext/image_pack/vendor/mozjpeg/simd/mips64/jsimd.c +866 -0
  229. data/ext/image_pack/vendor/mozjpeg/simd/mips64/jsimd_mmi.h +69 -0
  230. data/ext/image_pack/vendor/mozjpeg/simd/mips64/loongson-mmintrin.h +1334 -0
  231. data/ext/image_pack/vendor/mozjpeg/simd/nasm/jcolsamp.inc +135 -0
  232. data/ext/image_pack/vendor/mozjpeg/simd/nasm/jdct.inc +31 -0
  233. data/ext/image_pack/vendor/mozjpeg/simd/nasm/jsimdcfg.inc +93 -0
  234. data/ext/image_pack/vendor/mozjpeg/simd/nasm/jsimdcfg.inc.h +133 -0
  235. data/ext/image_pack/vendor/mozjpeg/simd/nasm/jsimdext.inc +520 -0
  236. data/ext/image_pack/vendor/mozjpeg/simd/powerpc/jccolext-altivec.c +269 -0
  237. data/ext/image_pack/vendor/mozjpeg/simd/powerpc/jccolor-altivec.c +116 -0
  238. data/ext/image_pack/vendor/mozjpeg/simd/powerpc/jcgray-altivec.c +111 -0
  239. data/ext/image_pack/vendor/mozjpeg/simd/powerpc/jcgryext-altivec.c +228 -0
  240. data/ext/image_pack/vendor/mozjpeg/simd/powerpc/jcsample-altivec.c +159 -0
  241. data/ext/image_pack/vendor/mozjpeg/simd/powerpc/jcsample.h +28 -0
  242. data/ext/image_pack/vendor/mozjpeg/simd/powerpc/jdcolext-altivec.c +276 -0
  243. data/ext/image_pack/vendor/mozjpeg/simd/powerpc/jdcolor-altivec.c +106 -0
  244. data/ext/image_pack/vendor/mozjpeg/simd/powerpc/jdmerge-altivec.c +130 -0
  245. data/ext/image_pack/vendor/mozjpeg/simd/powerpc/jdmrgext-altivec.c +329 -0
  246. data/ext/image_pack/vendor/mozjpeg/simd/powerpc/jdsample-altivec.c +400 -0
  247. data/ext/image_pack/vendor/mozjpeg/simd/powerpc/jfdctfst-altivec.c +154 -0
  248. data/ext/image_pack/vendor/mozjpeg/simd/powerpc/jfdctint-altivec.c +258 -0
  249. data/ext/image_pack/vendor/mozjpeg/simd/powerpc/jidctfst-altivec.c +255 -0
  250. data/ext/image_pack/vendor/mozjpeg/simd/powerpc/jidctint-altivec.c +357 -0
  251. data/ext/image_pack/vendor/mozjpeg/simd/powerpc/jquanti-altivec.c +250 -0
  252. data/ext/image_pack/vendor/mozjpeg/simd/powerpc/jsimd.c +884 -0
  253. data/ext/image_pack/vendor/mozjpeg/simd/powerpc/jsimd_altivec.h +98 -0
  254. data/ext/image_pack/vendor/mozjpeg/simd/x86_64/jccolext-avx2.asm +559 -0
  255. data/ext/image_pack/vendor/mozjpeg/simd/x86_64/jccolext-sse2.asm +484 -0
  256. data/ext/image_pack/vendor/mozjpeg/simd/x86_64/jccolor-avx2.asm +121 -0
  257. data/ext/image_pack/vendor/mozjpeg/simd/x86_64/jccolor-sse2.asm +120 -0
  258. data/ext/image_pack/vendor/mozjpeg/simd/x86_64/jcgray-avx2.asm +113 -0
  259. data/ext/image_pack/vendor/mozjpeg/simd/x86_64/jcgray-sse2.asm +112 -0
  260. data/ext/image_pack/vendor/mozjpeg/simd/x86_64/jcgryext-avx2.asm +438 -0
  261. data/ext/image_pack/vendor/mozjpeg/simd/x86_64/jcgryext-sse2.asm +363 -0
  262. data/ext/image_pack/vendor/mozjpeg/simd/x86_64/jchuff-sse2.asm +583 -0
  263. data/ext/image_pack/vendor/mozjpeg/simd/x86_64/jcphuff-sse2.asm +639 -0
  264. data/ext/image_pack/vendor/mozjpeg/simd/x86_64/jcsample-avx2.asm +367 -0
  265. data/ext/image_pack/vendor/mozjpeg/simd/x86_64/jcsample-sse2.asm +330 -0
  266. data/ext/image_pack/vendor/mozjpeg/simd/x86_64/jdcolext-avx2.asm +496 -0
  267. data/ext/image_pack/vendor/mozjpeg/simd/x86_64/jdcolext-sse2.asm +439 -0
  268. data/ext/image_pack/vendor/mozjpeg/simd/x86_64/jdcolor-avx2.asm +118 -0
  269. data/ext/image_pack/vendor/mozjpeg/simd/x86_64/jdcolor-sse2.asm +117 -0
  270. data/ext/image_pack/vendor/mozjpeg/simd/x86_64/jdmerge-avx2.asm +136 -0
  271. data/ext/image_pack/vendor/mozjpeg/simd/x86_64/jdmerge-sse2.asm +135 -0
  272. data/ext/image_pack/vendor/mozjpeg/simd/x86_64/jdmrgext-avx2.asm +596 -0
  273. data/ext/image_pack/vendor/mozjpeg/simd/x86_64/jdmrgext-sse2.asm +538 -0
  274. data/ext/image_pack/vendor/mozjpeg/simd/x86_64/jdsample-avx2.asm +696 -0
  275. data/ext/image_pack/vendor/mozjpeg/simd/x86_64/jdsample-sse2.asm +665 -0
  276. data/ext/image_pack/vendor/mozjpeg/simd/x86_64/jfdctflt-sse.asm +355 -0
  277. data/ext/image_pack/vendor/mozjpeg/simd/x86_64/jfdctfst-sse2.asm +389 -0
  278. data/ext/image_pack/vendor/mozjpeg/simd/x86_64/jfdctint-avx2.asm +320 -0
  279. data/ext/image_pack/vendor/mozjpeg/simd/x86_64/jfdctint-sse2.asm +619 -0
  280. data/ext/image_pack/vendor/mozjpeg/simd/x86_64/jidctflt-sse2.asm +482 -0
  281. data/ext/image_pack/vendor/mozjpeg/simd/x86_64/jidctfst-sse2.asm +491 -0
  282. data/ext/image_pack/vendor/mozjpeg/simd/x86_64/jidctint-avx2.asm +418 -0
  283. data/ext/image_pack/vendor/mozjpeg/simd/x86_64/jidctint-sse2.asm +847 -0
  284. data/ext/image_pack/vendor/mozjpeg/simd/x86_64/jidctred-sse2.asm +574 -0
  285. data/ext/image_pack/vendor/mozjpeg/simd/x86_64/jquantf-sse2.asm +155 -0
  286. data/ext/image_pack/vendor/mozjpeg/simd/x86_64/jquanti-avx2.asm +163 -0
  287. data/ext/image_pack/vendor/mozjpeg/simd/x86_64/jquanti-sse2.asm +188 -0
  288. data/ext/image_pack/vendor/mozjpeg/simd/x86_64/jsimd.c +1110 -0
  289. data/ext/image_pack/vendor/mozjpeg/simd/x86_64/jsimdcpu.asm +86 -0
  290. data/ext/image_pack/vendor/mozjpeg/strtest.c +170 -0
  291. data/ext/image_pack/vendor/mozjpeg/structure.txt +900 -0
  292. data/ext/image_pack/vendor/mozjpeg/tjbench.c +1044 -0
  293. data/ext/image_pack/vendor/mozjpeg/tjbenchtest.in +256 -0
  294. data/ext/image_pack/vendor/mozjpeg/tjbenchtest.java.in +215 -0
  295. data/ext/image_pack/vendor/mozjpeg/tjexample.c +406 -0
  296. data/ext/image_pack/vendor/mozjpeg/tjexampletest.in +149 -0
  297. data/ext/image_pack/vendor/mozjpeg/tjexampletest.java.in +151 -0
  298. data/ext/image_pack/vendor/mozjpeg/tjunittest.c +961 -0
  299. data/ext/image_pack/vendor/mozjpeg/tjutil.c +70 -0
  300. data/ext/image_pack/vendor/mozjpeg/tjutil.h +53 -0
  301. data/ext/image_pack/vendor/mozjpeg/transupp.c +2373 -0
  302. data/ext/image_pack/vendor/mozjpeg/transupp.h +243 -0
  303. data/ext/image_pack/vendor/mozjpeg/turbojpeg-jni.c +1259 -0
  304. data/ext/image_pack/vendor/mozjpeg/turbojpeg.c +2320 -0
  305. data/ext/image_pack/vendor/mozjpeg/turbojpeg.h +1784 -0
  306. data/ext/image_pack/vendor/mozjpeg/usage.txt +679 -0
  307. data/ext/image_pack/vendor/mozjpeg/wizard.txt +220 -0
  308. data/ext/image_pack/vendor/mozjpeg/wrbmp.c +552 -0
  309. data/ext/image_pack/vendor/mozjpeg/wrgif.c +580 -0
  310. data/ext/image_pack/vendor/mozjpeg/wrjpgcom.c +577 -0
  311. data/ext/image_pack/vendor/mozjpeg/wrppm.c +366 -0
  312. data/ext/image_pack/vendor/mozjpeg/wrtarga.c +258 -0
  313. data/ext/image_pack/vendor/mozjpeg/yuvjpeg.c +268 -0
  314. data/lib/image_pack/backend.rb +8 -0
  315. data/lib/image_pack/configuration.rb +23 -0
  316. data/lib/image_pack/errors.rb +13 -0
  317. data/lib/image_pack/version.rb +5 -0
  318. data/lib/image_pack.rb +208 -0
  319. metadata +433 -0
@@ -0,0 +1,520 @@
1
+ ;
2
+ ; jsimdext.inc - common declarations
3
+ ;
4
+ ; Copyright 2009 Pierre Ossman <ossman@cendio.se> for Cendio AB
5
+ ; Copyright (C) 2010, 2016, 2018-2019, D. R. Commander.
6
+ ; Copyright (C) 2018, Matthieu Darbois.
7
+ ; Copyright (C) 2018, Matthias Räncker.
8
+ ;
9
+ ; Based on the x86 SIMD extension for IJG JPEG library - version 1.02
10
+ ;
11
+ ; Copyright (C) 1999-2006, MIYASAKA Masaru.
12
+ ;
13
+ ; This software is provided 'as-is', without any express or implied
14
+ ; warranty. In no event will the authors be held liable for any damages
15
+ ; arising from the use of this software.
16
+ ;
17
+ ; Permission is granted to anyone to use this software for any purpose,
18
+ ; including commercial applications, and to alter it and redistribute it
19
+ ; freely, subject to the following restrictions:
20
+ ;
21
+ ; 1. The origin of this software must not be misrepresented; you must not
22
+ ; claim that you wrote the original software. If you use this software
23
+ ; in a product, an acknowledgment in the product documentation would be
24
+ ; appreciated but is not required.
25
+ ; 2. Altered source versions must be plainly marked as such, and must not be
26
+ ; misrepresented as being the original software.
27
+ ; 3. This notice may not be removed or altered from any source distribution.
28
+
29
+ ; ==========================================================================
30
+ ; System-dependent configurations
31
+
32
+ %ifdef WIN32 ; ----(nasm -fwin32 -DWIN32 ...)--------
33
+ ; * Microsoft Visual C++
34
+ ; * MinGW (Minimalist GNU for Windows)
35
+ ; * CygWin
36
+ ; * LCC-Win32
37
+
38
+ ; -- segment definition --
39
+ ;
40
+ %ifdef __YASM_VER__
41
+ %define SEG_TEXT .text align=32
42
+ %define SEG_CONST .rdata align=32
43
+ %else
44
+ %define SEG_TEXT .text align=32 public use32 class=CODE
45
+ %define SEG_CONST .rdata align=32 public use32 class=CONST
46
+ %endif
47
+
48
+ %elifdef WIN64 ; ----(nasm -fwin64 -DWIN64 ...)--------
49
+ ; * Microsoft Visual C++
50
+
51
+ ; -- segment definition --
52
+ ;
53
+ %ifdef __YASM_VER__
54
+ %define SEG_TEXT .text align=32
55
+ %define SEG_CONST .rdata align=32
56
+ %else
57
+ %define SEG_TEXT .text align=32 public use64 class=CODE
58
+ %define SEG_CONST .rdata align=32 public use64 class=CONST
59
+ %endif
60
+ %define EXTN(name) name ; foo() -> foo
61
+
62
+ %elifdef OBJ32 ; ----(nasm -fobj -DOBJ32 ...)----------
63
+ ; * Borland C++ (Win32)
64
+
65
+ ; -- segment definition --
66
+ ;
67
+ %define SEG_TEXT _text align=32 public use32 class=CODE
68
+ %define SEG_CONST _data align=32 public use32 class=DATA
69
+
70
+ %elifdef ELF ; ----(nasm -felf[64] -DELF ...)------------
71
+ ; * Linux
72
+ ; * *BSD family Unix using elf format
73
+ ; * Unix System V, including Solaris x86, UnixWare and SCO Unix
74
+
75
+ ; mark stack as non-executable
76
+ section .note.GNU-stack noalloc noexec nowrite progbits
77
+
78
+ ; -- segment definition --
79
+ ;
80
+ %ifdef __x86_64__
81
+ %define SEG_TEXT .text progbits align=32
82
+ %define SEG_CONST .rodata progbits align=32
83
+ %else
84
+ %define SEG_TEXT .text progbits alloc exec nowrite align=32
85
+ %define SEG_CONST .rodata progbits alloc noexec nowrite align=32
86
+ %endif
87
+
88
+ ; To make the code position-independent, append -DPIC to the commandline
89
+ ;
90
+ %define GOT_SYMBOL _GLOBAL_OFFSET_TABLE_ ; ELF supports PIC
91
+ %define EXTN(name) name ; foo() -> foo
92
+
93
+ %elifdef AOUT ; ----(nasm -faoutb/aout -DAOUT ...)----
94
+ ; * Older Linux using a.out format (nasm -f aout -DAOUT ...)
95
+ ; * *BSD family Unix using a.out format (nasm -f aoutb -DAOUT ...)
96
+
97
+ ; -- segment definition --
98
+ ;
99
+ %define SEG_TEXT .text
100
+ %define SEG_CONST .data
101
+
102
+ ; To make the code position-independent, append -DPIC to the commandline
103
+ ;
104
+ %define GOT_SYMBOL __GLOBAL_OFFSET_TABLE_ ; BSD-style a.out supports PIC
105
+
106
+ %elifdef MACHO ; ----(nasm -fmacho -DMACHO ...)--------
107
+ ; * NeXTstep/OpenStep/Rhapsody/Darwin/MacOS X (Mach-O format)
108
+
109
+ ; -- segment definition --
110
+ ;
111
+ %define SEG_TEXT .text ;align=32 ; nasm doesn't accept align=32. why?
112
+ %define SEG_CONST .rodata align=32
113
+
114
+ ; The generation of position-independent code (PIC) is the default on Darwin.
115
+ ;
116
+ %define PIC
117
+ %define GOT_SYMBOL _MACHO_PIC_ ; Mach-O style code-relative addressing
118
+
119
+ %else ; ----(Other case)----------------------
120
+
121
+ ; -- segment definition --
122
+ ;
123
+ %define SEG_TEXT .text
124
+ %define SEG_CONST .data
125
+
126
+ %endif ; ----------------------------------------------
127
+
128
+ ; ==========================================================================
129
+
130
+ ; --------------------------------------------------------------------------
131
+ ; Common types
132
+ ;
133
+ %ifdef __x86_64__
134
+ %ifnidn __OUTPUT_FORMAT__, elfx32
135
+ %define POINTER qword ; general pointer type
136
+ %define SIZEOF_POINTER SIZEOF_QWORD ; sizeof(POINTER)
137
+ %define POINTER_BIT QWORD_BIT ; sizeof(POINTER)*BYTE_BIT
138
+ %define resp resq
139
+ %define dp dq
140
+ %define raxp rax
141
+ %define rbxp rbx
142
+ %define rcxp rcx
143
+ %define rdxp rdx
144
+ %define rsip rsi
145
+ %define rdip rdi
146
+ %define rbpp rbp
147
+ %define rspp rsp
148
+ %define r8p r8
149
+ %define r9p r9
150
+ %define r10p r10
151
+ %define r11p r11
152
+ %define r12p r12
153
+ %define r13p r13
154
+ %define r14p r14
155
+ %define r15p r15
156
+ %endif
157
+ %endif
158
+ %ifndef raxp
159
+ %define POINTER dword ; general pointer type
160
+ %define SIZEOF_POINTER SIZEOF_DWORD ; sizeof(POINTER)
161
+ %define POINTER_BIT DWORD_BIT ; sizeof(POINTER)*BYTE_BIT
162
+ %define resp resd
163
+ %define dp dd
164
+ ; x86_64 ILP32 ABI (x32)
165
+ %define raxp eax
166
+ %define rbxp ebx
167
+ %define rcxp ecx
168
+ %define rdxp edx
169
+ %define rsip esi
170
+ %define rdip edi
171
+ %define rbpp ebp
172
+ %define rspp esp
173
+ %define r8p r8d
174
+ %define r9p r9d
175
+ %define r10p r10d
176
+ %define r11p r11d
177
+ %define r12p r12d
178
+ %define r13p r13d
179
+ %define r14p r14d
180
+ %define r15p r15d
181
+ %endif
182
+
183
+ %define INT dword ; signed integer type
184
+ %define SIZEOF_INT SIZEOF_DWORD ; sizeof(INT)
185
+ %define INT_BIT DWORD_BIT ; sizeof(INT)*BYTE_BIT
186
+
187
+ %define FP32 dword ; IEEE754 single
188
+ %define SIZEOF_FP32 SIZEOF_DWORD ; sizeof(FP32)
189
+ %define FP32_BIT DWORD_BIT ; sizeof(FP32)*BYTE_BIT
190
+
191
+ %define MMWORD qword ; int64 (MMX register)
192
+ %define SIZEOF_MMWORD SIZEOF_QWORD ; sizeof(MMWORD)
193
+ %define MMWORD_BIT QWORD_BIT ; sizeof(MMWORD)*BYTE_BIT
194
+
195
+ ; NASM is buggy and doesn't properly handle operand sizes for SSE
196
+ ; instructions, so for now we have to define XMMWORD as blank.
197
+ %define XMMWORD ; int128 (SSE register)
198
+ %define SIZEOF_XMMWORD SIZEOF_OWORD ; sizeof(XMMWORD)
199
+ %define XMMWORD_BIT OWORD_BIT ; sizeof(XMMWORD)*BYTE_BIT
200
+
201
+ %define YMMWORD ; int256 (AVX register)
202
+ %define SIZEOF_YMMWORD SIZEOF_YWORD ; sizeof(YMMWORD)
203
+ %define YMMWORD_BIT YWORD_BIT ; sizeof(YMMWORD)*BYTE_BIT
204
+
205
+ ; Similar hacks for when we load a dword or MMWORD into an xmm# register
206
+ %define XMM_DWORD
207
+ %define XMM_MMWORD
208
+
209
+ %define SIZEOF_BYTE 1 ; sizeof(byte)
210
+ %define SIZEOF_WORD 2 ; sizeof(word)
211
+ %define SIZEOF_DWORD 4 ; sizeof(dword)
212
+ %define SIZEOF_QWORD 8 ; sizeof(qword)
213
+ %define SIZEOF_OWORD 16 ; sizeof(oword)
214
+ %define SIZEOF_YWORD 32 ; sizeof(yword)
215
+
216
+ %define BYTE_BIT 8 ; CHAR_BIT in C
217
+ %define WORD_BIT 16 ; sizeof(word)*BYTE_BIT
218
+ %define DWORD_BIT 32 ; sizeof(dword)*BYTE_BIT
219
+ %define QWORD_BIT 64 ; sizeof(qword)*BYTE_BIT
220
+ %define OWORD_BIT 128 ; sizeof(oword)*BYTE_BIT
221
+ %define YWORD_BIT 256 ; sizeof(yword)*BYTE_BIT
222
+
223
+ ; --------------------------------------------------------------------------
224
+ ; External Symbol Name
225
+ ;
226
+ %ifndef EXTN
227
+ %define EXTN(name) _ %+ name ; foo() -> _foo
228
+ %endif
229
+
230
+ ; --------------------------------------------------------------------------
231
+ ; Hidden symbols
232
+ ;
233
+ %ifdef ELF ; ----(nasm -felf[64] -DELF ...)--------
234
+ %define GLOBAL_FUNCTION(name) global EXTN(name):function hidden
235
+ %define GLOBAL_DATA(name) global EXTN(name):data hidden
236
+ %elifdef MACHO ; ----(nasm -fmacho -DMACHO ...)--------
237
+ %ifdef __YASM_VER__
238
+ %define GLOBAL_FUNCTION(name) global EXTN(name):private_extern
239
+ %define GLOBAL_DATA(name) global EXTN(name):private_extern
240
+ %else
241
+ %if __NASM_VERSION_ID__ >= 0x020E0000
242
+ %define GLOBAL_FUNCTION(name) global EXTN(name):private_extern
243
+ %define GLOBAL_DATA(name) global EXTN(name):private_extern
244
+ %endif
245
+ %endif
246
+ %endif
247
+
248
+ %ifndef GLOBAL_FUNCTION
249
+ %define GLOBAL_FUNCTION(name) global EXTN(name)
250
+ %endif
251
+ %ifndef GLOBAL_DATA
252
+ %define GLOBAL_DATA(name) global EXTN(name)
253
+ %endif
254
+
255
+ ; --------------------------------------------------------------------------
256
+ ; Macros for position-independent code (PIC) support
257
+ ;
258
+ %ifndef GOT_SYMBOL
259
+ %undef PIC
260
+ %endif
261
+
262
+ %ifdef PIC ; -------------------------------------------
263
+
264
+ %ifidn GOT_SYMBOL, _MACHO_PIC_ ; --------------------
265
+
266
+ ; At present, nasm doesn't seem to support PIC generation for Mach-O.
267
+ ; The PIC support code below is a little tricky.
268
+
269
+ SECTION SEG_CONST
270
+ const_base:
271
+
272
+ %define GOTOFF(got, sym) (got) + (sym) - const_base
273
+
274
+ %imacro get_GOT 1
275
+ ; NOTE: this macro destroys ecx resister.
276
+ call %%geteip
277
+ add ecx, byte (%%ref - $)
278
+ jmp short %%adjust
279
+ %%geteip:
280
+ mov ecx, POINTER [esp]
281
+ ret
282
+ %%adjust:
283
+ push ebp
284
+ xor ebp, ebp ; ebp = 0
285
+ %ifidni %1, ebx ; (%1 == ebx)
286
+ ; db 0x8D,0x9C + jmp near const_base =
287
+ ; lea ebx, [ecx+ebp*8+(const_base-%%ref)] ; 8D,9C,E9,(offset32)
288
+ db 0x8D, 0x9C ; 8D,9C
289
+ jmp near const_base ; E9,(const_base-%%ref)
290
+ %%ref:
291
+ %else ; (%1 != ebx)
292
+ ; db 0x8D,0x8C + jmp near const_base =
293
+ ; lea ecx, [ecx+ebp*8+(const_base-%%ref)] ; 8D,8C,E9,(offset32)
294
+ db 0x8D, 0x8C ; 8D,8C
295
+ jmp near const_base ; E9,(const_base-%%ref)
296
+ %%ref:
297
+ mov %1, ecx
298
+ %endif ; (%1 == ebx)
299
+ pop ebp
300
+ %endmacro
301
+
302
+ %else ; GOT_SYMBOL != _MACHO_PIC_ ----------------
303
+
304
+ %define GOTOFF(got, sym) (got) + (sym) wrt ..gotoff
305
+
306
+ %imacro get_GOT 1
307
+ extern GOT_SYMBOL
308
+ call %%geteip
309
+ add %1, GOT_SYMBOL + $$ - $ wrt ..gotpc
310
+ jmp short %%done
311
+ %%geteip:
312
+ mov %1, POINTER [esp]
313
+ ret
314
+ %%done:
315
+ %endmacro
316
+
317
+ %endif ; GOT_SYMBOL == _MACHO_PIC_ ----------------
318
+
319
+ %imacro pushpic 1.nolist
320
+ push %1
321
+ %endmacro
322
+ %imacro poppic 1.nolist
323
+ pop %1
324
+ %endmacro
325
+ %imacro movpic 2.nolist
326
+ mov %1, %2
327
+ %endmacro
328
+
329
+ %else ; !PIC -----------------------------------------
330
+
331
+ %define GOTOFF(got, sym) (sym)
332
+
333
+ %imacro get_GOT 1.nolist
334
+ %endmacro
335
+ %imacro pushpic 1.nolist
336
+ %endmacro
337
+ %imacro poppic 1.nolist
338
+ %endmacro
339
+ %imacro movpic 2.nolist
340
+ %endmacro
341
+
342
+ %endif ; PIC -----------------------------------------
343
+
344
+ ; --------------------------------------------------------------------------
345
+ ; Align the next instruction on {2,4,8,16,..}-byte boundary.
346
+ ; ".balign n,,m" in GNU as
347
+ ;
348
+ %define MSKLE(x, y) (~(((y) & 0xFFFF) - ((x) & 0xFFFF)) >> 16)
349
+ %define FILLB(b, n) (($$-(b)) & ((n)-1))
350
+
351
+ %imacro alignx 1-2.nolist 0xFFFF
352
+ %%bs: \
353
+ times MSKLE(FILLB(%%bs, %1), %2) & MSKLE(16, FILLB($, %1)) & FILLB($, %1) \
354
+ db 0x90 ; nop
355
+ times MSKLE(FILLB(%%bs, %1), %2) & FILLB($, %1) / 9 \
356
+ db 0x8D, 0x9C, 0x23, 0x00, 0x00, 0x00, 0x00 ; lea ebx,[ebx+0x00000000]
357
+ times MSKLE(FILLB(%%bs, %1), %2) & FILLB($, %1) / 7 \
358
+ db 0x8D, 0xAC, 0x25, 0x00, 0x00, 0x00, 0x00 ; lea ebp,[ebp+0x00000000]
359
+ times MSKLE(FILLB(%%bs, %1), %2) & FILLB($, %1) / 6 \
360
+ db 0x8D, 0xAD, 0x00, 0x00, 0x00, 0x00 ; lea ebp,[ebp+0x00000000]
361
+ times MSKLE(FILLB(%%bs, %1), %2) & FILLB($, %1) / 4 \
362
+ db 0x8D, 0x6C, 0x25, 0x00 ; lea ebp,[ebp+0x00]
363
+ times MSKLE(FILLB(%%bs, %1), %2) & FILLB($, %1) / 3 \
364
+ db 0x8D, 0x6D, 0x00 ; lea ebp,[ebp+0x00]
365
+ times MSKLE(FILLB(%%bs, %1), %2) & FILLB($, %1) / 2 \
366
+ db 0x8B, 0xED ; mov ebp,ebp
367
+ times MSKLE(FILLB(%%bs, %1), %2) & FILLB($, %1) / 1 \
368
+ db 0x90 ; nop
369
+ %endmacro
370
+
371
+ ; Align the next data on {2,4,8,16,..}-byte boundary.
372
+ ;
373
+ %imacro alignz 1.nolist
374
+ align %1, db 0 ; filling zeros
375
+ %endmacro
376
+
377
+ %ifdef __x86_64__
378
+
379
+ %ifdef WIN64
380
+
381
+ %imacro collect_args 1
382
+ sub rsp, SIZEOF_XMMWORD
383
+ movaps XMMWORD [rsp], xmm6
384
+ sub rsp, SIZEOF_XMMWORD
385
+ movaps XMMWORD [rsp], xmm7
386
+ mov r10, rcx
387
+ %if %1 > 1
388
+ mov r11, rdx
389
+ %endif
390
+ %if %1 > 2
391
+ push r12
392
+ mov r12, r8
393
+ %endif
394
+ %if %1 > 3
395
+ push r13
396
+ mov r13, r9
397
+ %endif
398
+ %if %1 > 4
399
+ push r14
400
+ mov r14, [rax+48]
401
+ %endif
402
+ %if %1 > 5
403
+ push r15
404
+ mov r15, [rax+56]
405
+ %endif
406
+ push rsi
407
+ push rdi
408
+ %endmacro
409
+
410
+ %imacro uncollect_args 1
411
+ pop rdi
412
+ pop rsi
413
+ %if %1 > 5
414
+ pop r15
415
+ %endif
416
+ %if %1 > 4
417
+ pop r14
418
+ %endif
419
+ %if %1 > 3
420
+ pop r13
421
+ %endif
422
+ %if %1 > 2
423
+ pop r12
424
+ %endif
425
+ movaps xmm7, XMMWORD [rsp]
426
+ add rsp, SIZEOF_XMMWORD
427
+ movaps xmm6, XMMWORD [rsp]
428
+ add rsp, SIZEOF_XMMWORD
429
+ %endmacro
430
+
431
+ %imacro push_xmm 1
432
+ sub rsp, %1 * SIZEOF_XMMWORD
433
+ movaps XMMWORD [rsp+0*SIZEOF_XMMWORD], xmm8
434
+ %if %1 > 1
435
+ movaps XMMWORD [rsp+1*SIZEOF_XMMWORD], xmm9
436
+ %endif
437
+ %if %1 > 2
438
+ movaps XMMWORD [rsp+2*SIZEOF_XMMWORD], xmm10
439
+ %endif
440
+ %if %1 > 3
441
+ movaps XMMWORD [rsp+3*SIZEOF_XMMWORD], xmm11
442
+ %endif
443
+ %endmacro
444
+
445
+ %imacro pop_xmm 1
446
+ movaps xmm8, XMMWORD [rsp+0*SIZEOF_XMMWORD]
447
+ %if %1 > 1
448
+ movaps xmm9, XMMWORD [rsp+1*SIZEOF_XMMWORD]
449
+ %endif
450
+ %if %1 > 2
451
+ movaps xmm10, XMMWORD [rsp+2*SIZEOF_XMMWORD]
452
+ %endif
453
+ %if %1 > 3
454
+ movaps xmm11, XMMWORD [rsp+3*SIZEOF_XMMWORD]
455
+ %endif
456
+ add rsp, %1 * SIZEOF_XMMWORD
457
+ %endmacro
458
+
459
+ %else
460
+
461
+ %imacro collect_args 1
462
+ push r10
463
+ mov r10, rdi
464
+ %if %1 > 1
465
+ push r11
466
+ mov r11, rsi
467
+ %endif
468
+ %if %1 > 2
469
+ push r12
470
+ mov r12, rdx
471
+ %endif
472
+ %if %1 > 3
473
+ push r13
474
+ mov r13, rcx
475
+ %endif
476
+ %if %1 > 4
477
+ push r14
478
+ mov r14, r8
479
+ %endif
480
+ %if %1 > 5
481
+ push r15
482
+ mov r15, r9
483
+ %endif
484
+ %endmacro
485
+
486
+ %imacro uncollect_args 1
487
+ %if %1 > 5
488
+ pop r15
489
+ %endif
490
+ %if %1 > 4
491
+ pop r14
492
+ %endif
493
+ %if %1 > 3
494
+ pop r13
495
+ %endif
496
+ %if %1 > 2
497
+ pop r12
498
+ %endif
499
+ %if %1 > 1
500
+ pop r11
501
+ %endif
502
+ pop r10
503
+ %endmacro
504
+
505
+ %imacro push_xmm 1
506
+ %endmacro
507
+
508
+ %imacro pop_xmm 1
509
+ %endmacro
510
+
511
+ %endif
512
+
513
+ %endif
514
+
515
+ ; --------------------------------------------------------------------------
516
+ ; Defines picked up from the C headers
517
+ ;
518
+ %include "jsimdcfg.inc"
519
+
520
+ ; --------------------------------------------------------------------------