pixel.h 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623
  1. /*****************************************************************************
  2. * pixel.h: x86 pixel metrics
  3. *****************************************************************************
  4. * Copyright (C) 2003-2018 x264 project
  5. *
  6. * Authors: Laurent Aimar <fenrir@via.ecp.fr>
  7. * Loren Merritt <lorenm@u.washington.edu>
  8. * Fiona Glaser <fiona@x264.com>
  9. *
  10. * This program is free software; you can redistribute it and/or modify
  11. * it under the terms of the GNU General Public License as published by
  12. * the Free Software Foundation; either version 2 of the License, or
  13. * (at your option) any later version.
  14. *
  15. * This program is distributed in the hope that it will be useful,
  16. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  17. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  18. * GNU General Public License for more details.
  19. *
  20. * You should have received a copy of the GNU General Public License
  21. * along with this program; if not, write to the Free Software
  22. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111, USA.
  23. *
  24. * This program is also available under a commercial proprietary license.
  25. * For more information, contact us at licensing@x264.com.
  26. *****************************************************************************/
  27. #ifndef X264_X86_PIXEL_H
  28. #define X264_X86_PIXEL_H
  29. #define x264_pixel_ads1_avx x264_template(pixel_ads1_avx)
  30. #define x264_pixel_ads1_avx2 x264_template(pixel_ads1_avx2)
  31. #define x264_pixel_ads1_mmx2 x264_template(pixel_ads1_mmx2)
  32. #define x264_pixel_ads1_sse2 x264_template(pixel_ads1_sse2)
  33. #define x264_pixel_ads1_ssse3 x264_template(pixel_ads1_ssse3)
  34. #define x264_pixel_ads2_avx x264_template(pixel_ads2_avx)
  35. #define x264_pixel_ads2_avx2 x264_template(pixel_ads2_avx2)
  36. #define x264_pixel_ads2_mmx2 x264_template(pixel_ads2_mmx2)
  37. #define x264_pixel_ads2_sse2 x264_template(pixel_ads2_sse2)
  38. #define x264_pixel_ads2_ssse3 x264_template(pixel_ads2_ssse3)
  39. #define x264_pixel_ads4_avx x264_template(pixel_ads4_avx)
  40. #define x264_pixel_ads4_avx2 x264_template(pixel_ads4_avx2)
  41. #define x264_pixel_ads4_mmx2 x264_template(pixel_ads4_mmx2)
  42. #define x264_pixel_ads4_sse2 x264_template(pixel_ads4_sse2)
  43. #define x264_pixel_ads4_ssse3 x264_template(pixel_ads4_ssse3)
  44. #define x264_pixel_hadamard_ac_16x16_avx x264_template(pixel_hadamard_ac_16x16_avx)
  45. #define x264_pixel_hadamard_ac_16x16_avx2 x264_template(pixel_hadamard_ac_16x16_avx2)
  46. #define x264_pixel_hadamard_ac_16x16_mmx2 x264_template(pixel_hadamard_ac_16x16_mmx2)
  47. #define x264_pixel_hadamard_ac_16x16_sse2 x264_template(pixel_hadamard_ac_16x16_sse2)
  48. #define x264_pixel_hadamard_ac_16x16_sse4 x264_template(pixel_hadamard_ac_16x16_sse4)
  49. #define x264_pixel_hadamard_ac_16x16_ssse3 x264_template(pixel_hadamard_ac_16x16_ssse3)
  50. #define x264_pixel_hadamard_ac_16x16_ssse3_atom x264_template(pixel_hadamard_ac_16x16_ssse3_atom)
  51. #define x264_pixel_hadamard_ac_16x16_xop x264_template(pixel_hadamard_ac_16x16_xop)
  52. #define x264_pixel_hadamard_ac_16x8_avx x264_template(pixel_hadamard_ac_16x8_avx)
  53. #define x264_pixel_hadamard_ac_16x8_avx2 x264_template(pixel_hadamard_ac_16x8_avx2)
  54. #define x264_pixel_hadamard_ac_16x8_mmx2 x264_template(pixel_hadamard_ac_16x8_mmx2)
  55. #define x264_pixel_hadamard_ac_16x8_sse2 x264_template(pixel_hadamard_ac_16x8_sse2)
  56. #define x264_pixel_hadamard_ac_16x8_sse4 x264_template(pixel_hadamard_ac_16x8_sse4)
  57. #define x264_pixel_hadamard_ac_16x8_ssse3 x264_template(pixel_hadamard_ac_16x8_ssse3)
  58. #define x264_pixel_hadamard_ac_16x8_ssse3_atom x264_template(pixel_hadamard_ac_16x8_ssse3_atom)
  59. #define x264_pixel_hadamard_ac_16x8_xop x264_template(pixel_hadamard_ac_16x8_xop)
  60. #define x264_pixel_hadamard_ac_8x16_avx x264_template(pixel_hadamard_ac_8x16_avx)
  61. #define x264_pixel_hadamard_ac_8x16_mmx2 x264_template(pixel_hadamard_ac_8x16_mmx2)
  62. #define x264_pixel_hadamard_ac_8x16_sse2 x264_template(pixel_hadamard_ac_8x16_sse2)
  63. #define x264_pixel_hadamard_ac_8x16_sse4 x264_template(pixel_hadamard_ac_8x16_sse4)
  64. #define x264_pixel_hadamard_ac_8x16_ssse3 x264_template(pixel_hadamard_ac_8x16_ssse3)
  65. #define x264_pixel_hadamard_ac_8x16_ssse3_atom x264_template(pixel_hadamard_ac_8x16_ssse3_atom)
  66. #define x264_pixel_hadamard_ac_8x16_xop x264_template(pixel_hadamard_ac_8x16_xop)
  67. #define x264_pixel_hadamard_ac_8x8_avx x264_template(pixel_hadamard_ac_8x8_avx)
  68. #define x264_pixel_hadamard_ac_8x8_mmx2 x264_template(pixel_hadamard_ac_8x8_mmx2)
  69. #define x264_pixel_hadamard_ac_8x8_sse2 x264_template(pixel_hadamard_ac_8x8_sse2)
  70. #define x264_pixel_hadamard_ac_8x8_sse4 x264_template(pixel_hadamard_ac_8x8_sse4)
  71. #define x264_pixel_hadamard_ac_8x8_ssse3 x264_template(pixel_hadamard_ac_8x8_ssse3)
  72. #define x264_pixel_hadamard_ac_8x8_ssse3_atom x264_template(pixel_hadamard_ac_8x8_ssse3_atom)
  73. #define x264_pixel_hadamard_ac_8x8_xop x264_template(pixel_hadamard_ac_8x8_xop)
  74. #define x264_pixel_sa8d_16x16_mmx2 x264_template(pixel_sa8d_16x16_mmx2)
  75. #define x264_pixel_sa8d_16x16_avx x264_template(pixel_sa8d_16x16_avx)
  76. #define x264_pixel_sa8d_16x16_sse2 x264_template(pixel_sa8d_16x16_sse2)
  77. #define x264_pixel_sa8d_16x16_sse4 x264_template(pixel_sa8d_16x16_sse4)
  78. #define x264_pixel_sa8d_16x16_ssse3 x264_template(pixel_sa8d_16x16_ssse3)
  79. #define x264_pixel_sa8d_16x16_ssse3_atom x264_template(pixel_sa8d_16x16_ssse3_atom)
  80. #define x264_pixel_sa8d_16x16_xop x264_template(pixel_sa8d_16x16_xop)
  81. #define x264_pixel_sa8d_8x8_mmx2 x264_template(pixel_sa8d_8x8_mmx2)
  82. #define x264_pixel_sa8d_8x8_avx x264_template(pixel_sa8d_8x8_avx)
  83. #define x264_pixel_sa8d_8x8_avx2 x264_template(pixel_sa8d_8x8_avx2)
  84. #define x264_pixel_sa8d_8x8_avx512 x264_template(pixel_sa8d_8x8_avx512)
  85. #define x264_pixel_sa8d_8x8_sse2 x264_template(pixel_sa8d_8x8_sse2)
  86. #define x264_pixel_sa8d_8x8_sse4 x264_template(pixel_sa8d_8x8_sse4)
  87. #define x264_pixel_sa8d_8x8_ssse3 x264_template(pixel_sa8d_8x8_ssse3)
  88. #define x264_pixel_sa8d_8x8_ssse3_atom x264_template(pixel_sa8d_8x8_ssse3_atom)
  89. #define x264_pixel_sa8d_8x8_xop x264_template(pixel_sa8d_8x8_xop)
  90. #define x264_pixel_sad_16x16_avx2 x264_template(pixel_sad_16x16_avx2)
  91. #define x264_pixel_sad_16x16_avx512 x264_template(pixel_sad_16x16_avx512)
  92. #define x264_pixel_sad_16x16_cache32_mmx2 x264_template(pixel_sad_16x16_cache32_mmx2)
  93. #define x264_pixel_sad_16x16_cache64_mmx2 x264_template(pixel_sad_16x16_cache64_mmx2)
  94. #define x264_pixel_sad_16x16_cache64_sse2 x264_template(pixel_sad_16x16_cache64_sse2)
  95. #define x264_pixel_sad_16x16_cache64_ssse3 x264_template(pixel_sad_16x16_cache64_ssse3)
  96. #define x264_pixel_sad_16x16_mmx2 x264_template(pixel_sad_16x16_mmx2)
  97. #define x264_pixel_sad_16x16_sse2 x264_template(pixel_sad_16x16_sse2)
  98. #define x264_pixel_sad_16x16_sse2_aligned x264_template(pixel_sad_16x16_sse2_aligned)
  99. #define x264_pixel_sad_16x16_sse3 x264_template(pixel_sad_16x16_sse3)
  100. #define x264_pixel_sad_16x16_ssse3 x264_template(pixel_sad_16x16_ssse3)
  101. #define x264_pixel_sad_16x16_ssse3_aligned x264_template(pixel_sad_16x16_ssse3_aligned)
  102. #define x264_pixel_sad_16x8_avx2 x264_template(pixel_sad_16x8_avx2)
  103. #define x264_pixel_sad_16x8_avx512 x264_template(pixel_sad_16x8_avx512)
  104. #define x264_pixel_sad_16x8_cache32_mmx2 x264_template(pixel_sad_16x8_cache32_mmx2)
  105. #define x264_pixel_sad_16x8_cache64_mmx2 x264_template(pixel_sad_16x8_cache64_mmx2)
  106. #define x264_pixel_sad_16x8_cache64_sse2 x264_template(pixel_sad_16x8_cache64_sse2)
  107. #define x264_pixel_sad_16x8_cache64_ssse3 x264_template(pixel_sad_16x8_cache64_ssse3)
  108. #define x264_pixel_sad_16x8_mmx2 x264_template(pixel_sad_16x8_mmx2)
  109. #define x264_pixel_sad_16x8_sse2 x264_template(pixel_sad_16x8_sse2)
  110. #define x264_pixel_sad_16x8_sse2_aligned x264_template(pixel_sad_16x8_sse2_aligned)
  111. #define x264_pixel_sad_16x8_sse3 x264_template(pixel_sad_16x8_sse3)
  112. #define x264_pixel_sad_16x8_ssse3 x264_template(pixel_sad_16x8_ssse3)
  113. #define x264_pixel_sad_16x8_ssse3_aligned x264_template(pixel_sad_16x8_ssse3_aligned)
  114. #define x264_pixel_sad_4x16_avx512 x264_template(pixel_sad_4x16_avx512)
  115. #define x264_pixel_sad_4x16_mmx2 x264_template(pixel_sad_4x16_mmx2)
  116. #define x264_pixel_sad_4x4_avx512 x264_template(pixel_sad_4x4_avx512)
  117. #define x264_pixel_sad_4x4_mmx2 x264_template(pixel_sad_4x4_mmx2)
  118. #define x264_pixel_sad_4x4_ssse3 x264_template(pixel_sad_4x4_ssse3)
  119. #define x264_pixel_sad_4x8_avx512 x264_template(pixel_sad_4x8_avx512)
  120. #define x264_pixel_sad_4x8_mmx2 x264_template(pixel_sad_4x8_mmx2)
  121. #define x264_pixel_sad_4x8_ssse3 x264_template(pixel_sad_4x8_ssse3)
  122. #define x264_pixel_sad_8x16_avx512 x264_template(pixel_sad_8x16_avx512)
  123. #define x264_pixel_sad_8x16_cache32_mmx2 x264_template(pixel_sad_8x16_cache32_mmx2)
  124. #define x264_pixel_sad_8x16_cache64_mmx2 x264_template(pixel_sad_8x16_cache64_mmx2)
  125. #define x264_pixel_sad_8x16_mmx2 x264_template(pixel_sad_8x16_mmx2)
  126. #define x264_pixel_sad_8x16_sse2 x264_template(pixel_sad_8x16_sse2)
  127. #define x264_pixel_sad_8x16_sse2_aligned x264_template(pixel_sad_8x16_sse2_aligned)
  128. #define x264_pixel_sad_8x16_ssse3 x264_template(pixel_sad_8x16_ssse3)
  129. #define x264_pixel_sad_8x16_ssse3_aligned x264_template(pixel_sad_8x16_ssse3_aligned)
  130. #define x264_pixel_sad_8x4_avx512 x264_template(pixel_sad_8x4_avx512)
  131. #define x264_pixel_sad_8x4_cache32_mmx2 x264_template(pixel_sad_8x4_cache32_mmx2)
  132. #define x264_pixel_sad_8x4_cache64_mmx2 x264_template(pixel_sad_8x4_cache64_mmx2)
  133. #define x264_pixel_sad_8x4_mmx2 x264_template(pixel_sad_8x4_mmx2)
  134. #define x264_pixel_sad_8x4_sse2 x264_template(pixel_sad_8x4_sse2)
  135. #define x264_pixel_sad_8x4_ssse3 x264_template(pixel_sad_8x4_ssse3)
  136. #define x264_pixel_sad_8x8_avx512 x264_template(pixel_sad_8x8_avx512)
  137. #define x264_pixel_sad_8x8_cache32_mmx2 x264_template(pixel_sad_8x8_cache32_mmx2)
  138. #define x264_pixel_sad_8x8_cache64_mmx2 x264_template(pixel_sad_8x8_cache64_mmx2)
  139. #define x264_pixel_sad_8x8_mmx2 x264_template(pixel_sad_8x8_mmx2)
  140. #define x264_pixel_sad_8x8_sse2 x264_template(pixel_sad_8x8_sse2)
  141. #define x264_pixel_sad_8x8_sse2_aligned x264_template(pixel_sad_8x8_sse2_aligned)
  142. #define x264_pixel_sad_8x8_ssse3 x264_template(pixel_sad_8x8_ssse3)
  143. #define x264_pixel_sad_8x8_ssse3_aligned x264_template(pixel_sad_8x8_ssse3_aligned)
  144. #define x264_pixel_sad_x3_16x16_avx x264_template(pixel_sad_x3_16x16_avx)
  145. #define x264_pixel_sad_x3_16x16_avx2 x264_template(pixel_sad_x3_16x16_avx2)
  146. #define x264_pixel_sad_x3_16x16_avx512 x264_template(pixel_sad_x3_16x16_avx512)
  147. #define x264_pixel_sad_x3_16x16_cache32_mmx2 x264_template(pixel_sad_x3_16x16_cache32_mmx2)
  148. #define x264_pixel_sad_x3_16x16_cache64_mmx2 x264_template(pixel_sad_x3_16x16_cache64_mmx2)
  149. #define x264_pixel_sad_x3_16x16_cache64_sse2 x264_template(pixel_sad_x3_16x16_cache64_sse2)
  150. #define x264_pixel_sad_x3_16x16_cache64_ssse3 x264_template(pixel_sad_x3_16x16_cache64_ssse3)
  151. #define x264_pixel_sad_x3_16x16_mmx2 x264_template(pixel_sad_x3_16x16_mmx2)
  152. #define x264_pixel_sad_x3_16x16_sse2 x264_template(pixel_sad_x3_16x16_sse2)
  153. #define x264_pixel_sad_x3_16x16_sse3 x264_template(pixel_sad_x3_16x16_sse3)
  154. #define x264_pixel_sad_x3_16x16_ssse3 x264_template(pixel_sad_x3_16x16_ssse3)
  155. #define x264_pixel_sad_x3_16x16_xop x264_template(pixel_sad_x3_16x16_xop)
  156. #define x264_pixel_sad_x3_16x8_avx x264_template(pixel_sad_x3_16x8_avx)
  157. #define x264_pixel_sad_x3_16x8_avx2 x264_template(pixel_sad_x3_16x8_avx2)
  158. #define x264_pixel_sad_x3_16x8_avx512 x264_template(pixel_sad_x3_16x8_avx512)
  159. #define x264_pixel_sad_x3_16x8_cache32_mmx2 x264_template(pixel_sad_x3_16x8_cache32_mmx2)
  160. #define x264_pixel_sad_x3_16x8_cache64_mmx2 x264_template(pixel_sad_x3_16x8_cache64_mmx2)
  161. #define x264_pixel_sad_x3_16x8_cache64_sse2 x264_template(pixel_sad_x3_16x8_cache64_sse2)
  162. #define x264_pixel_sad_x3_16x8_cache64_ssse3 x264_template(pixel_sad_x3_16x8_cache64_ssse3)
  163. #define x264_pixel_sad_x3_16x8_mmx2 x264_template(pixel_sad_x3_16x8_mmx2)
  164. #define x264_pixel_sad_x3_16x8_sse2 x264_template(pixel_sad_x3_16x8_sse2)
  165. #define x264_pixel_sad_x3_16x8_sse3 x264_template(pixel_sad_x3_16x8_sse3)
  166. #define x264_pixel_sad_x3_16x8_ssse3 x264_template(pixel_sad_x3_16x8_ssse3)
  167. #define x264_pixel_sad_x3_16x8_xop x264_template(pixel_sad_x3_16x8_xop)
  168. #define x264_pixel_sad_x3_4x4_avx512 x264_template(pixel_sad_x3_4x4_avx512)
  169. #define x264_pixel_sad_x3_4x4_mmx2 x264_template(pixel_sad_x3_4x4_mmx2)
  170. #define x264_pixel_sad_x3_4x4_ssse3 x264_template(pixel_sad_x3_4x4_ssse3)
  171. #define x264_pixel_sad_x3_4x8_avx512 x264_template(pixel_sad_x3_4x8_avx512)
  172. #define x264_pixel_sad_x3_4x8_mmx2 x264_template(pixel_sad_x3_4x8_mmx2)
  173. #define x264_pixel_sad_x3_4x8_ssse3 x264_template(pixel_sad_x3_4x8_ssse3)
  174. #define x264_pixel_sad_x3_8x16_avx512 x264_template(pixel_sad_x3_8x16_avx512)
  175. #define x264_pixel_sad_x3_8x16_cache32_mmx2 x264_template(pixel_sad_x3_8x16_cache32_mmx2)
  176. #define x264_pixel_sad_x3_8x16_cache64_mmx2 x264_template(pixel_sad_x3_8x16_cache64_mmx2)
  177. #define x264_pixel_sad_x3_8x16_cache64_sse2 x264_template(pixel_sad_x3_8x16_cache64_sse2)
  178. #define x264_pixel_sad_x3_8x16_mmx2 x264_template(pixel_sad_x3_8x16_mmx2)
  179. #define x264_pixel_sad_x3_8x16_sse2 x264_template(pixel_sad_x3_8x16_sse2)
  180. #define x264_pixel_sad_x3_8x16_ssse3 x264_template(pixel_sad_x3_8x16_ssse3)
  181. #define x264_pixel_sad_x3_8x16_xop x264_template(pixel_sad_x3_8x16_xop)
  182. #define x264_pixel_sad_x3_8x4_avx512 x264_template(pixel_sad_x3_8x4_avx512)
  183. #define x264_pixel_sad_x3_8x4_mmx2 x264_template(pixel_sad_x3_8x4_mmx2)
  184. #define x264_pixel_sad_x3_8x4_sse2 x264_template(pixel_sad_x3_8x4_sse2)
  185. #define x264_pixel_sad_x3_8x4_ssse3 x264_template(pixel_sad_x3_8x4_ssse3)
  186. #define x264_pixel_sad_x3_8x4_xop x264_template(pixel_sad_x3_8x4_xop)
  187. #define x264_pixel_sad_x3_8x8_avx512 x264_template(pixel_sad_x3_8x8_avx512)
  188. #define x264_pixel_sad_x3_8x8_cache32_mmx2 x264_template(pixel_sad_x3_8x8_cache32_mmx2)
  189. #define x264_pixel_sad_x3_8x8_cache64_mmx2 x264_template(pixel_sad_x3_8x8_cache64_mmx2)
  190. #define x264_pixel_sad_x3_8x8_mmx2 x264_template(pixel_sad_x3_8x8_mmx2)
  191. #define x264_pixel_sad_x3_8x8_sse2 x264_template(pixel_sad_x3_8x8_sse2)
  192. #define x264_pixel_sad_x3_8x8_ssse3 x264_template(pixel_sad_x3_8x8_ssse3)
  193. #define x264_pixel_sad_x3_8x8_xop x264_template(pixel_sad_x3_8x8_xop)
  194. #define x264_pixel_sad_x4_16x16_avx x264_template(pixel_sad_x4_16x16_avx)
  195. #define x264_pixel_sad_x4_16x16_avx2 x264_template(pixel_sad_x4_16x16_avx2)
  196. #define x264_pixel_sad_x4_16x16_avx512 x264_template(pixel_sad_x4_16x16_avx512)
  197. #define x264_pixel_sad_x4_16x16_cache32_mmx2 x264_template(pixel_sad_x4_16x16_cache32_mmx2)
  198. #define x264_pixel_sad_x4_16x16_cache64_mmx2 x264_template(pixel_sad_x4_16x16_cache64_mmx2)
  199. #define x264_pixel_sad_x4_16x16_cache64_sse2 x264_template(pixel_sad_x4_16x16_cache64_sse2)
  200. #define x264_pixel_sad_x4_16x16_cache64_ssse3 x264_template(pixel_sad_x4_16x16_cache64_ssse3)
  201. #define x264_pixel_sad_x4_16x16_mmx2 x264_template(pixel_sad_x4_16x16_mmx2)
  202. #define x264_pixel_sad_x4_16x16_sse2 x264_template(pixel_sad_x4_16x16_sse2)
  203. #define x264_pixel_sad_x4_16x16_sse3 x264_template(pixel_sad_x4_16x16_sse3)
  204. #define x264_pixel_sad_x4_16x16_ssse3 x264_template(pixel_sad_x4_16x16_ssse3)
  205. #define x264_pixel_sad_x4_16x16_xop x264_template(pixel_sad_x4_16x16_xop)
  206. #define x264_pixel_sad_x4_16x8_avx x264_template(pixel_sad_x4_16x8_avx)
  207. #define x264_pixel_sad_x4_16x8_avx2 x264_template(pixel_sad_x4_16x8_avx2)
  208. #define x264_pixel_sad_x4_16x8_avx512 x264_template(pixel_sad_x4_16x8_avx512)
  209. #define x264_pixel_sad_x4_16x8_cache32_mmx2 x264_template(pixel_sad_x4_16x8_cache32_mmx2)
  210. #define x264_pixel_sad_x4_16x8_cache64_mmx2 x264_template(pixel_sad_x4_16x8_cache64_mmx2)
  211. #define x264_pixel_sad_x4_16x8_cache64_sse2 x264_template(pixel_sad_x4_16x8_cache64_sse2)
  212. #define x264_pixel_sad_x4_16x8_cache64_ssse3 x264_template(pixel_sad_x4_16x8_cache64_ssse3)
  213. #define x264_pixel_sad_x4_16x8_mmx2 x264_template(pixel_sad_x4_16x8_mmx2)
  214. #define x264_pixel_sad_x4_16x8_sse2 x264_template(pixel_sad_x4_16x8_sse2)
  215. #define x264_pixel_sad_x4_16x8_sse3 x264_template(pixel_sad_x4_16x8_sse3)
  216. #define x264_pixel_sad_x4_16x8_ssse3 x264_template(pixel_sad_x4_16x8_ssse3)
  217. #define x264_pixel_sad_x4_16x8_xop x264_template(pixel_sad_x4_16x8_xop)
  218. #define x264_pixel_sad_x4_4x4_avx512 x264_template(pixel_sad_x4_4x4_avx512)
  219. #define x264_pixel_sad_x4_4x4_mmx2 x264_template(pixel_sad_x4_4x4_mmx2)
  220. #define x264_pixel_sad_x4_4x4_ssse3 x264_template(pixel_sad_x4_4x4_ssse3)
  221. #define x264_pixel_sad_x4_4x8_avx512 x264_template(pixel_sad_x4_4x8_avx512)
  222. #define x264_pixel_sad_x4_4x8_mmx2 x264_template(pixel_sad_x4_4x8_mmx2)
  223. #define x264_pixel_sad_x4_4x8_ssse3 x264_template(pixel_sad_x4_4x8_ssse3)
  224. #define x264_pixel_sad_x4_8x16_avx512 x264_template(pixel_sad_x4_8x16_avx512)
  225. #define x264_pixel_sad_x4_8x16_cache32_mmx2 x264_template(pixel_sad_x4_8x16_cache32_mmx2)
  226. #define x264_pixel_sad_x4_8x16_cache64_mmx2 x264_template(pixel_sad_x4_8x16_cache64_mmx2)
  227. #define x264_pixel_sad_x4_8x16_cache64_sse2 x264_template(pixel_sad_x4_8x16_cache64_sse2)
  228. #define x264_pixel_sad_x4_8x16_mmx2 x264_template(pixel_sad_x4_8x16_mmx2)
  229. #define x264_pixel_sad_x4_8x16_sse2 x264_template(pixel_sad_x4_8x16_sse2)
  230. #define x264_pixel_sad_x4_8x16_ssse3 x264_template(pixel_sad_x4_8x16_ssse3)
  231. #define x264_pixel_sad_x4_8x16_xop x264_template(pixel_sad_x4_8x16_xop)
  232. #define x264_pixel_sad_x4_8x4_avx512 x264_template(pixel_sad_x4_8x4_avx512)
  233. #define x264_pixel_sad_x4_8x4_mmx2 x264_template(pixel_sad_x4_8x4_mmx2)
  234. #define x264_pixel_sad_x4_8x4_sse2 x264_template(pixel_sad_x4_8x4_sse2)
  235. #define x264_pixel_sad_x4_8x4_ssse3 x264_template(pixel_sad_x4_8x4_ssse3)
  236. #define x264_pixel_sad_x4_8x4_xop x264_template(pixel_sad_x4_8x4_xop)
  237. #define x264_pixel_sad_x4_8x8_avx512 x264_template(pixel_sad_x4_8x8_avx512)
  238. #define x264_pixel_sad_x4_8x8_cache32_mmx2 x264_template(pixel_sad_x4_8x8_cache32_mmx2)
  239. #define x264_pixel_sad_x4_8x8_cache64_mmx2 x264_template(pixel_sad_x4_8x8_cache64_mmx2)
  240. #define x264_pixel_sad_x4_8x8_mmx2 x264_template(pixel_sad_x4_8x8_mmx2)
  241. #define x264_pixel_sad_x4_8x8_sse2 x264_template(pixel_sad_x4_8x8_sse2)
  242. #define x264_pixel_sad_x4_8x8_ssse3 x264_template(pixel_sad_x4_8x8_ssse3)
  243. #define x264_pixel_sad_x4_8x8_xop x264_template(pixel_sad_x4_8x8_xop)
  244. #define x264_pixel_satd_16x16_avx x264_template(pixel_satd_16x16_avx)
  245. #define x264_pixel_satd_16x16_avx2 x264_template(pixel_satd_16x16_avx2)
  246. #define x264_pixel_satd_16x16_avx512 x264_template(pixel_satd_16x16_avx512)
  247. #define x264_pixel_satd_16x16_mmx2 x264_template(pixel_satd_16x16_mmx2)
  248. #define x264_pixel_satd_16x16_sse2 x264_template(pixel_satd_16x16_sse2)
  249. #define x264_pixel_satd_16x16_sse4 x264_template(pixel_satd_16x16_sse4)
  250. #define x264_pixel_satd_16x16_ssse3 x264_template(pixel_satd_16x16_ssse3)
  251. #define x264_pixel_satd_16x16_ssse3_atom x264_template(pixel_satd_16x16_ssse3_atom)
  252. #define x264_pixel_satd_16x16_xop x264_template(pixel_satd_16x16_xop)
  253. #define x264_pixel_satd_16x8_avx x264_template(pixel_satd_16x8_avx)
  254. #define x264_pixel_satd_16x8_avx2 x264_template(pixel_satd_16x8_avx2)
  255. #define x264_pixel_satd_16x8_avx512 x264_template(pixel_satd_16x8_avx512)
  256. #define x264_pixel_satd_16x8_mmx2 x264_template(pixel_satd_16x8_mmx2)
  257. #define x264_pixel_satd_16x8_sse2 x264_template(pixel_satd_16x8_sse2)
  258. #define x264_pixel_satd_16x8_sse4 x264_template(pixel_satd_16x8_sse4)
  259. #define x264_pixel_satd_16x8_ssse3 x264_template(pixel_satd_16x8_ssse3)
  260. #define x264_pixel_satd_16x8_ssse3_atom x264_template(pixel_satd_16x8_ssse3_atom)
  261. #define x264_pixel_satd_16x8_xop x264_template(pixel_satd_16x8_xop)
  262. #define x264_pixel_satd_4x16_avx x264_template(pixel_satd_4x16_avx)
  263. #define x264_pixel_satd_4x16_avx512 x264_template(pixel_satd_4x16_avx512)
  264. #define x264_pixel_satd_4x16_mmx2 x264_template(pixel_satd_4x16_mmx2)
  265. #define x264_pixel_satd_4x16_sse2 x264_template(pixel_satd_4x16_sse2)
  266. #define x264_pixel_satd_4x16_sse4 x264_template(pixel_satd_4x16_sse4)
  267. #define x264_pixel_satd_4x16_ssse3 x264_template(pixel_satd_4x16_ssse3)
  268. #define x264_pixel_satd_4x16_ssse3_atom x264_template(pixel_satd_4x16_ssse3_atom)
  269. #define x264_pixel_satd_4x4_avx x264_template(pixel_satd_4x4_avx)
  270. #define x264_pixel_satd_4x4_avx512 x264_template(pixel_satd_4x4_avx512)
  271. #define x264_pixel_satd_4x4_mmx2 x264_template(pixel_satd_4x4_mmx2)
  272. #define x264_pixel_satd_4x4_sse4 x264_template(pixel_satd_4x4_sse4)
  273. #define x264_pixel_satd_4x4_ssse3 x264_template(pixel_satd_4x4_ssse3)
  274. #define x264_pixel_satd_4x4_xop x264_template(pixel_satd_4x4_xop)
  275. #define x264_pixel_satd_4x8_avx x264_template(pixel_satd_4x8_avx)
  276. #define x264_pixel_satd_4x8_avx512 x264_template(pixel_satd_4x8_avx512)
  277. #define x264_pixel_satd_4x8_mmx2 x264_template(pixel_satd_4x8_mmx2)
  278. #define x264_pixel_satd_4x8_sse2 x264_template(pixel_satd_4x8_sse2)
  279. #define x264_pixel_satd_4x8_sse4 x264_template(pixel_satd_4x8_sse4)
  280. #define x264_pixel_satd_4x8_ssse3 x264_template(pixel_satd_4x8_ssse3)
  281. #define x264_pixel_satd_4x8_ssse3_atom x264_template(pixel_satd_4x8_ssse3_atom)
  282. #define x264_pixel_satd_4x8_xop x264_template(pixel_satd_4x8_xop)
  283. #define x264_pixel_satd_8x16_avx x264_template(pixel_satd_8x16_avx)
  284. #define x264_pixel_satd_8x16_avx2 x264_template(pixel_satd_8x16_avx2)
  285. #define x264_pixel_satd_8x16_avx512 x264_template(pixel_satd_8x16_avx512)
  286. #define x264_pixel_satd_8x16_mmx2 x264_template(pixel_satd_8x16_mmx2)
  287. #define x264_pixel_satd_8x16_sse2 x264_template(pixel_satd_8x16_sse2)
  288. #define x264_pixel_satd_8x16_sse4 x264_template(pixel_satd_8x16_sse4)
  289. #define x264_pixel_satd_8x16_ssse3 x264_template(pixel_satd_8x16_ssse3)
  290. #define x264_pixel_satd_8x16_ssse3_atom x264_template(pixel_satd_8x16_ssse3_atom)
  291. #define x264_pixel_satd_8x16_xop x264_template(pixel_satd_8x16_xop)
  292. #define x264_pixel_satd_8x4_avx x264_template(pixel_satd_8x4_avx)
  293. #define x264_pixel_satd_8x4_avx512 x264_template(pixel_satd_8x4_avx512)
  294. #define x264_pixel_satd_8x4_mmx2 x264_template(pixel_satd_8x4_mmx2)
  295. #define x264_pixel_satd_8x4_sse2 x264_template(pixel_satd_8x4_sse2)
  296. #define x264_pixel_satd_8x4_sse4 x264_template(pixel_satd_8x4_sse4)
  297. #define x264_pixel_satd_8x4_ssse3 x264_template(pixel_satd_8x4_ssse3)
  298. #define x264_pixel_satd_8x4_ssse3_atom x264_template(pixel_satd_8x4_ssse3_atom)
  299. #define x264_pixel_satd_8x4_xop x264_template(pixel_satd_8x4_xop)
  300. #define x264_pixel_satd_8x8_avx x264_template(pixel_satd_8x8_avx)
  301. #define x264_pixel_satd_8x8_avx2 x264_template(pixel_satd_8x8_avx2)
  302. #define x264_pixel_satd_8x8_avx512 x264_template(pixel_satd_8x8_avx512)
  303. #define x264_pixel_satd_8x8_mmx2 x264_template(pixel_satd_8x8_mmx2)
  304. #define x264_pixel_satd_8x8_sse2 x264_template(pixel_satd_8x8_sse2)
  305. #define x264_pixel_satd_8x8_sse4 x264_template(pixel_satd_8x8_sse4)
  306. #define x264_pixel_satd_8x8_ssse3 x264_template(pixel_satd_8x8_ssse3)
  307. #define x264_pixel_satd_8x8_ssse3_atom x264_template(pixel_satd_8x8_ssse3_atom)
  308. #define x264_pixel_satd_8x8_xop x264_template(pixel_satd_8x8_xop)
  309. #define x264_pixel_ssd_16x16_avx x264_template(pixel_ssd_16x16_avx)
  310. #define x264_pixel_ssd_16x16_avx2 x264_template(pixel_ssd_16x16_avx2)
  311. #define x264_pixel_ssd_16x16_mmx x264_template(pixel_ssd_16x16_mmx)
  312. #define x264_pixel_ssd_16x16_mmx2 x264_template(pixel_ssd_16x16_mmx2)
  313. #define x264_pixel_ssd_16x16_sse2 x264_template(pixel_ssd_16x16_sse2)
  314. #define x264_pixel_ssd_16x16_sse2slow x264_template(pixel_ssd_16x16_sse2slow)
  315. #define x264_pixel_ssd_16x16_ssse3 x264_template(pixel_ssd_16x16_ssse3)
  316. #define x264_pixel_ssd_16x16_xop x264_template(pixel_ssd_16x16_xop)
  317. #define x264_pixel_ssd_16x8_avx x264_template(pixel_ssd_16x8_avx)
  318. #define x264_pixel_ssd_16x8_avx2 x264_template(pixel_ssd_16x8_avx2)
  319. #define x264_pixel_ssd_16x8_mmx x264_template(pixel_ssd_16x8_mmx)
  320. #define x264_pixel_ssd_16x8_mmx2 x264_template(pixel_ssd_16x8_mmx2)
  321. #define x264_pixel_ssd_16x8_sse2 x264_template(pixel_ssd_16x8_sse2)
  322. #define x264_pixel_ssd_16x8_sse2slow x264_template(pixel_ssd_16x8_sse2slow)
  323. #define x264_pixel_ssd_16x8_ssse3 x264_template(pixel_ssd_16x8_ssse3)
  324. #define x264_pixel_ssd_16x8_xop x264_template(pixel_ssd_16x8_xop)
  325. #define x264_pixel_ssd_4x16_mmx x264_template(pixel_ssd_4x16_mmx)
  326. #define x264_pixel_ssd_4x16_mmx2 x264_template(pixel_ssd_4x16_mmx2)
  327. #define x264_pixel_ssd_4x16_ssse3 x264_template(pixel_ssd_4x16_ssse3)
  328. #define x264_pixel_ssd_4x4_mmx x264_template(pixel_ssd_4x4_mmx)
  329. #define x264_pixel_ssd_4x4_mmx2 x264_template(pixel_ssd_4x4_mmx2)
  330. #define x264_pixel_ssd_4x4_ssse3 x264_template(pixel_ssd_4x4_ssse3)
  331. #define x264_pixel_ssd_4x8_mmx x264_template(pixel_ssd_4x8_mmx)
  332. #define x264_pixel_ssd_4x8_mmx2 x264_template(pixel_ssd_4x8_mmx2)
  333. #define x264_pixel_ssd_4x8_ssse3 x264_template(pixel_ssd_4x8_ssse3)
  334. #define x264_pixel_ssd_8x16_avx x264_template(pixel_ssd_8x16_avx)
  335. #define x264_pixel_ssd_8x16_mmx x264_template(pixel_ssd_8x16_mmx)
  336. #define x264_pixel_ssd_8x16_mmx2 x264_template(pixel_ssd_8x16_mmx2)
  337. #define x264_pixel_ssd_8x16_sse2 x264_template(pixel_ssd_8x16_sse2)
  338. #define x264_pixel_ssd_8x16_sse2slow x264_template(pixel_ssd_8x16_sse2slow)
  339. #define x264_pixel_ssd_8x16_ssse3 x264_template(pixel_ssd_8x16_ssse3)
  340. #define x264_pixel_ssd_8x16_xop x264_template(pixel_ssd_8x16_xop)
  341. #define x264_pixel_ssd_8x4_avx x264_template(pixel_ssd_8x4_avx)
  342. #define x264_pixel_ssd_8x4_mmx x264_template(pixel_ssd_8x4_mmx)
  343. #define x264_pixel_ssd_8x4_mmx2 x264_template(pixel_ssd_8x4_mmx2)
  344. #define x264_pixel_ssd_8x4_sse2 x264_template(pixel_ssd_8x4_sse2)
  345. #define x264_pixel_ssd_8x4_sse2slow x264_template(pixel_ssd_8x4_sse2slow)
  346. #define x264_pixel_ssd_8x4_ssse3 x264_template(pixel_ssd_8x4_ssse3)
  347. #define x264_pixel_ssd_8x4_xop x264_template(pixel_ssd_8x4_xop)
  348. #define x264_pixel_ssd_8x8_avx x264_template(pixel_ssd_8x8_avx)
  349. #define x264_pixel_ssd_8x8_mmx x264_template(pixel_ssd_8x8_mmx)
  350. #define x264_pixel_ssd_8x8_mmx2 x264_template(pixel_ssd_8x8_mmx2)
  351. #define x264_pixel_ssd_8x8_sse2 x264_template(pixel_ssd_8x8_sse2)
  352. #define x264_pixel_ssd_8x8_sse2slow x264_template(pixel_ssd_8x8_sse2slow)
  353. #define x264_pixel_ssd_8x8_ssse3 x264_template(pixel_ssd_8x8_ssse3)
  354. #define x264_pixel_ssd_8x8_xop x264_template(pixel_ssd_8x8_xop)
  355. #define x264_pixel_var_16x16_avx x264_template(pixel_var_16x16_avx)
  356. #define x264_pixel_var_16x16_avx2 x264_template(pixel_var_16x16_avx2)
  357. #define x264_pixel_var_16x16_avx512 x264_template(pixel_var_16x16_avx512)
  358. #define x264_pixel_var_16x16_sse2 x264_template(pixel_var_16x16_sse2)
  359. #define x264_pixel_var_8x16_avx x264_template(pixel_var_8x16_avx)
  360. #define x264_pixel_var_8x16_avx512 x264_template(pixel_var_8x16_avx512)
  361. #define x264_pixel_var_8x16_sse2 x264_template(pixel_var_8x16_sse2)
  362. #define x264_pixel_var_8x8_avx x264_template(pixel_var_8x8_avx)
  363. #define x264_pixel_var_8x8_avx512 x264_template(pixel_var_8x8_avx512)
  364. #define x264_pixel_var_8x8_sse2 x264_template(pixel_var_8x8_sse2)
  365. #define DECL_PIXELS( ret, name, suffix, args ) \
  366. ret x264_pixel_##name##_16x16_##suffix args;\
  367. ret x264_pixel_##name##_16x8_##suffix args;\
  368. ret x264_pixel_##name##_8x16_##suffix args;\
  369. ret x264_pixel_##name##_8x8_##suffix args;\
  370. ret x264_pixel_##name##_8x4_##suffix args;\
  371. ret x264_pixel_##name##_4x16_##suffix args;\
  372. ret x264_pixel_##name##_4x8_##suffix args;\
  373. ret x264_pixel_##name##_4x4_##suffix args;\
  374. #define DECL_X1( name, suffix ) \
  375. DECL_PIXELS( int, name, suffix, ( pixel *, intptr_t, pixel *, intptr_t ) )
  376. #define DECL_X4( name, suffix ) \
  377. DECL_PIXELS( void, name##_x3, suffix, ( pixel *, pixel *, pixel *, pixel *, intptr_t, int * ) )\
  378. DECL_PIXELS( void, name##_x4, suffix, ( pixel *, pixel *, pixel *, pixel *, pixel *, intptr_t, int * ) )
  379. DECL_X1( sad, mmx2 )
  380. DECL_X1( sad, sse2 )
  381. DECL_X1( sad, sse3 )
  382. DECL_X1( sad, sse2_aligned )
  383. DECL_X1( sad, ssse3 )
  384. DECL_X1( sad, ssse3_aligned )
  385. DECL_X1( sad, avx2 )
  386. DECL_X1( sad, avx512 )
  387. DECL_X4( sad, mmx2 )
  388. DECL_X4( sad, sse2 )
  389. DECL_X4( sad, sse3 )
  390. DECL_X4( sad, ssse3 )
  391. DECL_X4( sad, xop )
  392. DECL_X4( sad, avx )
  393. DECL_X4( sad, avx2 )
  394. DECL_X4( sad, avx512 )
  395. DECL_X1( ssd, mmx )
  396. DECL_X1( ssd, mmx2 )
  397. DECL_X1( ssd, sse2slow )
  398. DECL_X1( ssd, sse2 )
  399. DECL_X1( ssd, ssse3 )
  400. DECL_X1( ssd, avx )
  401. DECL_X1( ssd, xop )
  402. DECL_X1( ssd, avx2 )
  403. DECL_X1( satd, mmx2 )
  404. DECL_X1( satd, sse2 )
  405. DECL_X1( satd, ssse3 )
  406. DECL_X1( satd, ssse3_atom )
  407. DECL_X1( satd, sse4 )
  408. DECL_X1( satd, avx )
  409. DECL_X1( satd, xop )
  410. DECL_X1( satd, avx2 )
  411. DECL_X1( satd, avx512 )
  412. DECL_X1( sa8d, mmx2 )
  413. DECL_X1( sa8d, sse2 )
  414. DECL_X1( sa8d, ssse3 )
  415. DECL_X1( sa8d, ssse3_atom )
  416. DECL_X1( sa8d, sse4 )
  417. DECL_X1( sa8d, avx )
  418. DECL_X1( sa8d, xop )
  419. DECL_X1( sa8d, avx2 )
  420. DECL_X1( sa8d, avx512 )
  421. DECL_X1( sad, cache32_mmx2 );
  422. DECL_X1( sad, cache64_mmx2 );
  423. DECL_X1( sad, cache64_sse2 );
  424. DECL_X1( sad, cache64_ssse3 );
  425. DECL_X4( sad, cache32_mmx2 );
  426. DECL_X4( sad, cache64_mmx2 );
  427. DECL_X4( sad, cache64_sse2 );
  428. DECL_X4( sad, cache64_ssse3 );
  429. DECL_PIXELS( uint64_t, var, sse2, ( pixel *pix, intptr_t i_stride ))
  430. DECL_PIXELS( uint64_t, var, avx, ( pixel *pix, intptr_t i_stride ))
  431. DECL_PIXELS( uint64_t, var, avx2, ( pixel *pix, intptr_t i_stride ))
  432. DECL_PIXELS( uint64_t, var, avx512, ( pixel *pix, intptr_t i_stride ))
  433. DECL_PIXELS( uint64_t, hadamard_ac, mmx2, ( pixel *pix, intptr_t i_stride ))
  434. DECL_PIXELS( uint64_t, hadamard_ac, sse2, ( pixel *pix, intptr_t i_stride ))
  435. DECL_PIXELS( uint64_t, hadamard_ac, ssse3, ( pixel *pix, intptr_t i_stride ))
  436. DECL_PIXELS( uint64_t, hadamard_ac, ssse3_atom, ( pixel *pix, intptr_t i_stride ))
  437. DECL_PIXELS( uint64_t, hadamard_ac, sse4, ( pixel *pix, intptr_t i_stride ))
  438. DECL_PIXELS( uint64_t, hadamard_ac, avx, ( pixel *pix, intptr_t i_stride ))
  439. DECL_PIXELS( uint64_t, hadamard_ac, xop, ( pixel *pix, intptr_t i_stride ))
  440. DECL_PIXELS( uint64_t, hadamard_ac, avx2, ( pixel *pix, intptr_t i_stride ))
  441. #define x264_intra_satd_x3_4x4_mmx2 x264_template(intra_satd_x3_4x4_mmx2)
  442. void x264_intra_satd_x3_4x4_mmx2 ( pixel *, pixel *, int * );
  443. #define x264_intra_sad_x3_4x4_mmx2 x264_template(intra_sad_x3_4x4_mmx2)
  444. void x264_intra_sad_x3_4x4_mmx2 ( uint8_t *, uint8_t *, int * );
  445. #define x264_intra_sad_x3_4x4_sse2 x264_template(intra_sad_x3_4x4_sse2)
  446. void x264_intra_sad_x3_4x4_sse2 ( uint16_t*, uint16_t*, int * );
  447. #define x264_intra_sad_x3_4x4_ssse3 x264_template(intra_sad_x3_4x4_ssse3)
  448. void x264_intra_sad_x3_4x4_ssse3 ( uint16_t*, uint16_t*, int * );
  449. #define x264_intra_sad_x3_4x4_avx x264_template(intra_sad_x3_4x4_avx)
  450. void x264_intra_sad_x3_4x4_avx ( uint16_t*, uint16_t*, int * );
  451. #define x264_intra_satd_x3_8x8c_mmx2 x264_template(intra_satd_x3_8x8c_mmx2)
  452. void x264_intra_satd_x3_8x8c_mmx2 ( pixel *, pixel *, int * );
  453. #define x264_intra_satd_x3_8x8c_ssse3 x264_template(intra_satd_x3_8x8c_ssse3)
  454. void x264_intra_satd_x3_8x8c_ssse3 ( uint8_t *, uint8_t *, int * );
  455. #define x264_intra_sad_x3_8x8c_mmx2 x264_template(intra_sad_x3_8x8c_mmx2)
  456. void x264_intra_sad_x3_8x8c_mmx2 ( uint8_t *, uint8_t *, int * );
  457. #define x264_intra_sad_x3_8x8c_ssse3 x264_template(intra_sad_x3_8x8c_ssse3)
  458. void x264_intra_sad_x3_8x8c_ssse3 ( uint8_t *, uint8_t *, int * );
  459. #define x264_intra_sad_x3_8x8c_avx2 x264_template(intra_sad_x3_8x8c_avx2)
  460. void x264_intra_sad_x3_8x8c_avx2 ( uint8_t *, uint8_t *, int * );
  461. #define x264_intra_satd_x3_16x16_mmx2 x264_template(intra_satd_x3_16x16_mmx2)
  462. void x264_intra_satd_x3_16x16_mmx2 ( pixel *, pixel *, int * );
  463. #define x264_intra_satd_x3_16x16_ssse3 x264_template(intra_satd_x3_16x16_ssse3)
  464. void x264_intra_satd_x3_16x16_ssse3( uint8_t *, uint8_t *, int * );
  465. #define x264_intra_sad_x3_16x16_mmx2 x264_template(intra_sad_x3_16x16_mmx2)
  466. void x264_intra_sad_x3_16x16_mmx2 ( uint8_t *, uint8_t *, int * );
  467. #define x264_intra_sad_x3_16x16_sse2 x264_template(intra_sad_x3_16x16_sse2)
  468. void x264_intra_sad_x3_16x16_sse2 ( uint8_t *, uint8_t *, int * );
  469. #define x264_intra_sad_x3_16x16_ssse3 x264_template(intra_sad_x3_16x16_ssse3)
  470. void x264_intra_sad_x3_16x16_ssse3 ( uint8_t *, uint8_t *, int * );
  471. #define x264_intra_sad_x3_16x16_avx2 x264_template(intra_sad_x3_16x16_avx2)
  472. void x264_intra_sad_x3_16x16_avx2 ( uint8_t *, uint8_t *, int * );
  473. #define x264_intra_sa8d_x3_8x8_mmx2 x264_template(intra_sa8d_x3_8x8_mmx2)
  474. void x264_intra_sa8d_x3_8x8_mmx2 ( uint8_t *, uint8_t *, int * );
  475. #define x264_intra_sa8d_x3_8x8_sse2 x264_template(intra_sa8d_x3_8x8_sse2)
  476. void x264_intra_sa8d_x3_8x8_sse2 ( uint8_t *, uint8_t *, int * );
  477. #define x264_intra_sad_x3_8x8_mmx2 x264_template(intra_sad_x3_8x8_mmx2)
  478. void x264_intra_sad_x3_8x8_mmx2 ( uint8_t *, uint8_t *, int * );
  479. #define x264_intra_sad_x3_8x8_sse2 x264_template(intra_sad_x3_8x8_sse2)
  480. void x264_intra_sad_x3_8x8_sse2 ( uint16_t*, uint16_t*, int * );
  481. #define x264_intra_sad_x3_8x8_ssse3 x264_template(intra_sad_x3_8x8_ssse3)
  482. void x264_intra_sad_x3_8x8_ssse3 ( uint16_t*, uint16_t*, int * );
  483. #define x264_intra_sad_x3_8x8_avx2 x264_template(intra_sad_x3_8x8_avx2)
  484. void x264_intra_sad_x3_8x8_avx2 ( uint16_t*, uint16_t*, int * );
  485. #define x264_intra_satd_x9_4x4_ssse3 x264_template(intra_satd_x9_4x4_ssse3)
  486. int x264_intra_satd_x9_4x4_ssse3( uint8_t *, uint8_t *, uint16_t * );
  487. #define x264_intra_satd_x9_4x4_sse4 x264_template(intra_satd_x9_4x4_sse4)
  488. int x264_intra_satd_x9_4x4_sse4 ( uint8_t *, uint8_t *, uint16_t * );
  489. #define x264_intra_satd_x9_4x4_avx x264_template(intra_satd_x9_4x4_avx)
  490. int x264_intra_satd_x9_4x4_avx ( uint8_t *, uint8_t *, uint16_t * );
  491. #define x264_intra_satd_x9_4x4_xop x264_template(intra_satd_x9_4x4_xop)
  492. int x264_intra_satd_x9_4x4_xop ( uint8_t *, uint8_t *, uint16_t * );
  493. #define x264_intra_sad_x9_4x4_ssse3 x264_template(intra_sad_x9_4x4_ssse3)
  494. int x264_intra_sad_x9_4x4_ssse3 ( uint8_t *, uint8_t *, uint16_t * );
  495. #define x264_intra_sad_x9_4x4_sse4 x264_template(intra_sad_x9_4x4_sse4)
  496. int x264_intra_sad_x9_4x4_sse4 ( uint8_t *, uint8_t *, uint16_t * );
  497. #define x264_intra_sad_x9_4x4_avx x264_template(intra_sad_x9_4x4_avx)
  498. int x264_intra_sad_x9_4x4_avx ( uint8_t *, uint8_t *, uint16_t * );
  499. #define x264_intra_sa8d_x9_8x8_ssse3 x264_template(intra_sa8d_x9_8x8_ssse3)
  500. int x264_intra_sa8d_x9_8x8_ssse3( uint8_t *, uint8_t *, uint8_t *, uint16_t *, uint16_t * );
  501. #define x264_intra_sa8d_x9_8x8_sse4 x264_template(intra_sa8d_x9_8x8_sse4)
  502. int x264_intra_sa8d_x9_8x8_sse4 ( uint8_t *, uint8_t *, uint8_t *, uint16_t *, uint16_t * );
  503. #define x264_intra_sa8d_x9_8x8_avx x264_template(intra_sa8d_x9_8x8_avx)
  504. int x264_intra_sa8d_x9_8x8_avx ( uint8_t *, uint8_t *, uint8_t *, uint16_t *, uint16_t * );
  505. #define x264_intra_sad_x9_8x8_ssse3 x264_template(intra_sad_x9_8x8_ssse3)
  506. int x264_intra_sad_x9_8x8_ssse3 ( uint8_t *, uint8_t *, uint8_t *, uint16_t *, uint16_t * );
  507. #define x264_intra_sad_x9_8x8_sse4 x264_template(intra_sad_x9_8x8_sse4)
  508. int x264_intra_sad_x9_8x8_sse4 ( uint8_t *, uint8_t *, uint8_t *, uint16_t *, uint16_t * );
  509. #define x264_intra_sad_x9_8x8_avx x264_template(intra_sad_x9_8x8_avx)
  510. int x264_intra_sad_x9_8x8_avx ( uint8_t *, uint8_t *, uint8_t *, uint16_t *, uint16_t * );
  511. #define x264_intra_sad_x9_8x8_avx2 x264_template(intra_sad_x9_8x8_avx2)
  512. int x264_intra_sad_x9_8x8_avx2 ( uint8_t *, uint8_t *, uint8_t *, uint16_t *, uint16_t * );
  513. #define x264_pixel_ssd_nv12_core_sse2 x264_template(pixel_ssd_nv12_core_sse2)
  514. void x264_pixel_ssd_nv12_core_sse2( pixel *pixuv1, intptr_t stride1,
  515. pixel *pixuv2, intptr_t stride2, int width,
  516. int height, uint64_t *ssd_u, uint64_t *ssd_v );
  517. #define x264_pixel_ssd_nv12_core_avx x264_template(pixel_ssd_nv12_core_avx)
  518. void x264_pixel_ssd_nv12_core_avx ( pixel *pixuv1, intptr_t stride1,
  519. pixel *pixuv2, intptr_t stride2, int width,
  520. int height, uint64_t *ssd_u, uint64_t *ssd_v );
  521. #define x264_pixel_ssd_nv12_core_xop x264_template(pixel_ssd_nv12_core_xop)
  522. void x264_pixel_ssd_nv12_core_xop ( pixel *pixuv1, intptr_t stride1,
  523. pixel *pixuv2, intptr_t stride2, int width,
  524. int height, uint64_t *ssd_u, uint64_t *ssd_v );
  525. #define x264_pixel_ssd_nv12_core_avx2 x264_template(pixel_ssd_nv12_core_avx2)
  526. void x264_pixel_ssd_nv12_core_avx2( pixel *pixuv1, intptr_t stride1,
  527. pixel *pixuv2, intptr_t stride2, int width,
  528. int height, uint64_t *ssd_u, uint64_t *ssd_v );
  529. #define x264_pixel_ssim_4x4x2_core_mmx2 x264_template(pixel_ssim_4x4x2_core_mmx2)
  530. void x264_pixel_ssim_4x4x2_core_mmx2( const uint8_t *pix1, intptr_t stride1,
  531. const uint8_t *pix2, intptr_t stride2, int sums[2][4] );
  532. #define x264_pixel_ssim_4x4x2_core_sse2 x264_template(pixel_ssim_4x4x2_core_sse2)
  533. void x264_pixel_ssim_4x4x2_core_sse2( const pixel *pix1, intptr_t stride1,
  534. const pixel *pix2, intptr_t stride2, int sums[2][4] );
  535. #define x264_pixel_ssim_4x4x2_core_avx x264_template(pixel_ssim_4x4x2_core_avx)
  536. void x264_pixel_ssim_4x4x2_core_avx ( const pixel *pix1, intptr_t stride1,
  537. const pixel *pix2, intptr_t stride2, int sums[2][4] );
  538. #define x264_pixel_ssim_end4_sse2 x264_template(pixel_ssim_end4_sse2)
  539. float x264_pixel_ssim_end4_sse2( int sum0[5][4], int sum1[5][4], int width );
  540. #define x264_pixel_ssim_end4_avx x264_template(pixel_ssim_end4_avx)
  541. float x264_pixel_ssim_end4_avx ( int sum0[5][4], int sum1[5][4], int width );
  542. #define x264_pixel_var2_8x8_sse2 x264_template(pixel_var2_8x8_sse2)
  543. int x264_pixel_var2_8x8_sse2 ( pixel *fenc, pixel *fdec, int ssd[2] );
  544. #define x264_pixel_var2_8x8_ssse3 x264_template(pixel_var2_8x8_ssse3)
  545. int x264_pixel_var2_8x8_ssse3 ( uint8_t *fenc, uint8_t *fdec, int ssd[2] );
  546. #define x264_pixel_var2_8x8_avx2 x264_template(pixel_var2_8x8_avx2)
  547. int x264_pixel_var2_8x8_avx2 ( pixel *fenc, pixel *fdec, int ssd[2] );
  548. #define x264_pixel_var2_8x8_avx512 x264_template(pixel_var2_8x8_avx512)
  549. int x264_pixel_var2_8x8_avx512 ( pixel *fenc, pixel *fdec, int ssd[2] );
  550. #define x264_pixel_var2_8x16_sse2 x264_template(pixel_var2_8x16_sse2)
  551. int x264_pixel_var2_8x16_sse2 ( pixel *fenc, pixel *fdec, int ssd[2] );
  552. #define x264_pixel_var2_8x16_ssse3 x264_template(pixel_var2_8x16_ssse3)
  553. int x264_pixel_var2_8x16_ssse3 ( uint8_t *fenc, uint8_t *fdec, int ssd[2] );
  554. #define x264_pixel_var2_8x16_avx2 x264_template(pixel_var2_8x16_avx2)
  555. int x264_pixel_var2_8x16_avx2 ( pixel *fenc, pixel *fdec, int ssd[2] );
  556. #define x264_pixel_var2_8x16_avx512 x264_template(pixel_var2_8x16_avx512)
  557. int x264_pixel_var2_8x16_avx512( pixel *fenc, pixel *fdec, int ssd[2] );
  558. #define x264_pixel_vsad_mmx2 x264_template(pixel_vsad_mmx2)
  559. int x264_pixel_vsad_mmx2 ( pixel *src, intptr_t stride, int height );
  560. #define x264_pixel_vsad_sse2 x264_template(pixel_vsad_sse2)
  561. int x264_pixel_vsad_sse2 ( pixel *src, intptr_t stride, int height );
  562. #define x264_pixel_vsad_ssse3 x264_template(pixel_vsad_ssse3)
  563. int x264_pixel_vsad_ssse3( pixel *src, intptr_t stride, int height );
  564. #define x264_pixel_vsad_xop x264_template(pixel_vsad_xop)
  565. int x264_pixel_vsad_xop ( pixel *src, intptr_t stride, int height );
  566. #define x264_pixel_vsad_avx2 x264_template(pixel_vsad_avx2)
  567. int x264_pixel_vsad_avx2 ( uint16_t *src, intptr_t stride, int height );
  568. #define x264_pixel_asd8_sse2 x264_template(pixel_asd8_sse2)
  569. int x264_pixel_asd8_sse2 ( pixel *pix1, intptr_t stride1, pixel *pix2, intptr_t stride2, int height );
  570. #define x264_pixel_asd8_ssse3 x264_template(pixel_asd8_ssse3)
  571. int x264_pixel_asd8_ssse3( pixel *pix1, intptr_t stride1, pixel *pix2, intptr_t stride2, int height );
  572. #define x264_pixel_asd8_xop x264_template(pixel_asd8_xop)
  573. int x264_pixel_asd8_xop ( pixel *pix1, intptr_t stride1, pixel *pix2, intptr_t stride2, int height );
  574. #define x264_pixel_sa8d_satd_16x16_sse2 x264_template(pixel_sa8d_satd_16x16_sse2)
  575. uint64_t x264_pixel_sa8d_satd_16x16_sse2 ( pixel *pix1, intptr_t stride1, pixel *pix2, intptr_t stride2 );
  576. #define x264_pixel_sa8d_satd_16x16_ssse3 x264_template(pixel_sa8d_satd_16x16_ssse3)
  577. uint64_t x264_pixel_sa8d_satd_16x16_ssse3 ( pixel *pix1, intptr_t stride1, pixel *pix2, intptr_t stride2 );
  578. #define x264_pixel_sa8d_satd_16x16_ssse3_atom x264_template(pixel_sa8d_satd_16x16_ssse3_atom)
  579. uint64_t x264_pixel_sa8d_satd_16x16_ssse3_atom( pixel *pix1, intptr_t stride1, pixel *pix2, intptr_t stride2 );
  580. #define x264_pixel_sa8d_satd_16x16_sse4 x264_template(pixel_sa8d_satd_16x16_sse4)
  581. uint64_t x264_pixel_sa8d_satd_16x16_sse4 ( pixel *pix1, intptr_t stride1, pixel *pix2, intptr_t stride2 );
  582. #define x264_pixel_sa8d_satd_16x16_avx x264_template(pixel_sa8d_satd_16x16_avx)
  583. uint64_t x264_pixel_sa8d_satd_16x16_avx ( pixel *pix1, intptr_t stride1, pixel *pix2, intptr_t stride2 );
  584. #define x264_pixel_sa8d_satd_16x16_xop x264_template(pixel_sa8d_satd_16x16_xop)
  585. uint64_t x264_pixel_sa8d_satd_16x16_xop ( pixel *pix1, intptr_t stride1, pixel *pix2, intptr_t stride2 );
  586. #define x264_pixel_sa8d_satd_16x16_avx2 x264_template(pixel_sa8d_satd_16x16_avx2)
  587. uint64_t x264_pixel_sa8d_satd_16x16_avx2 ( pixel *pix1, intptr_t stride1, pixel *pix2, intptr_t stride2 );
  588. #define DECL_ADS( size, suffix ) \
  589. int x264_pixel_ads##size##_##suffix( int enc_dc[size], uint16_t *sums, int delta,\
  590. uint16_t *cost_mvx, int16_t *mvs, int width, int thresh );
  591. DECL_ADS( 4, mmx2 )
  592. DECL_ADS( 2, mmx2 )
  593. DECL_ADS( 1, mmx2 )
  594. DECL_ADS( 4, sse2 )
  595. DECL_ADS( 2, sse2 )
  596. DECL_ADS( 1, sse2 )
  597. DECL_ADS( 4, ssse3 )
  598. DECL_ADS( 2, ssse3 )
  599. DECL_ADS( 1, ssse3 )
  600. DECL_ADS( 4, avx )
  601. DECL_ADS( 2, avx )
  602. DECL_ADS( 1, avx )
  603. DECL_ADS( 4, avx2 )
  604. DECL_ADS( 2, avx2 )
  605. DECL_ADS( 1, avx2 )
  606. #undef DECL_PIXELS
  607. #undef DECL_X1
  608. #undef DECL_X4
  609. #undef DECL_ADS
  610. #endif