Advertisement
Guest User

Untitled

a guest
Jul 11th, 2015
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 5.83 KB | None | 0 0
  1. diff --git a/libavfilter/x86/vf_removegrain.asm b/libavfilter/x86/vf_removegrain.asm
  2. index bf2142d..489fafc 100644
  3. --- a/libavfilter/x86/vf_removegrain.asm
  4. +++ b/libavfilter/x86/vf_removegrain.asm
  5. @@ -129,13 +129,18 @@ SECTION_TEXT
  6.      por %1, %3
  7.  %endmacro
  8.  
  9. -; %1 simd register that hold the mask and will hold the result
  10. +; %1 location of the "false" values (simd register/memory) and will hold the result
  11.  ; %2 simd register that holds the "true" values
  12. -; %3 location of the "false" values (simd register/memory)
  13. -%macro BLEND 3 ; mask, true, false
  14. -    pand %2, %1
  15. -    pandn %1, %3
  16. -    por %1, %2
  17. +; %3 simd register that hold the mask
  18. +%macro BLEND 3 ; false, true, mask
  19. +%if cpuflag(avx2)
  20. +    vpblendvb %1, %1, %2, %3
  21. +%else
  22. +    pand      %2, %3
  23. +    pandn     %3, %1
  24. +    por       %3, %2
  25. +    SWAP      %1, %3
  26. +%endif
  27.  %endmacro
  28.  
  29.  ;*** Function macros
  30. @@ -327,11 +332,11 @@ cglobal rg_fl_mode_5, 4, 5, 13, 0, dst, src, stride, pixels
  31.          pcmpeqb m12, m9
  32.  
  33.          ; Notice the order here: c1, c3, c2, c4
  34. -        BLEND m11, m6, m8
  35. -        BLEND m10, m7, m11
  36. -        BLEND m12, m5, m10
  37. +        BLEND m8, m6, m11
  38. +        BLEND m8, m7, m10
  39. +        BLEND m8, m5, m12
  40.  
  41. -        movu [dstq], m12
  42. +        movu [dstq], m8
  43.          add srcq, mmsize
  44.          add dstq, mmsize
  45.          sub pixelsd, mmsize
  46. @@ -393,12 +398,12 @@ cglobal rg_fl_mode_6, 4, 5, 16, 0, dst, src, stride, pixels
  47.          pcmpeqw m3, m1
  48.          pcmpeqw m4, m1
  49.  
  50. -        BLEND m3, m11, m9
  51. -        BLEND m2, m10, m3
  52. -        BLEND m4, m12, m2
  53. -        packuswb m4, m4
  54. +        BLEND m9, m11, m3
  55. +        BLEND m9, m10, m2
  56. +        BLEND m9, m12, m4
  57. +        packuswb m9, m9
  58.  
  59. -        movh [dstq], m4
  60. +        movh [dstq], m9
  61.          add srcq, mmsize/2
  62.          add dstq, mmsize/2
  63.          sub pixelsd, mmsize/2
  64. @@ -454,12 +459,12 @@ cglobal rg_fl_mode_7, 4, 5, 16, 0, dst, src, stride, pixels
  65.          pcmpeqw m3, m1
  66.          pcmpeqw m4, m1
  67.  
  68. -        BLEND m3, m11, m9
  69. -        BLEND m2, m10, m3
  70. -        BLEND m4, m12, m2
  71. -        packuswb m4, m4
  72. +        BLEND m9, m11, m3
  73. +        BLEND m9, m10, m2
  74. +        BLEND m9, m12, m4
  75. +        packuswb m9, m9
  76.  
  77. -        movh [dstq], m4
  78. +        movh [dstq], m9
  79.          add srcq, mmsize/2
  80.          add dstq, mmsize/2
  81.          sub pixelsd, mmsize/2
  82. @@ -519,12 +524,12 @@ cglobal rg_fl_mode_8, 4, 5, 16, 0, dst, src, stride, pixels
  83.          pcmpeqw m3, m1
  84.          pcmpeqw m4, m1
  85.  
  86. -        BLEND m3, m11, m9
  87. -        BLEND m2, m10, m3
  88. -        BLEND m4, m12, m2
  89. -        packuswb m4, m4
  90. +        BLEND m9, m11, m3
  91. +        BLEND m9, m10, m2
  92. +        BLEND m9, m12, m4
  93. +        packuswb m9, m9
  94.  
  95. -        movh [dstq], m4
  96. +        movh [dstq], m9
  97.          add srcq, mmsize/2
  98.          add dstq, mmsize/2
  99.          sub pixelsd, mmsize/2
  100. @@ -563,11 +568,11 @@ cglobal rg_fl_mode_9, 4, 5, 13, 0, dst, src, stride, pixels
  101.          pcmpeqb m6, m8
  102.          pcmpeqb m5, m8
  103.  
  104. -        BLEND m6, m11, m9
  105. -        BLEND m7, m10, m6
  106. -        BLEND m5, m12, m7
  107. +        BLEND m9, m11, m6
  108. +        BLEND m9, m10, m7
  109. +        BLEND m9, m12, m5
  110.  
  111. -        movu [dstq], m5
  112. +        movu [dstq], m9
  113.          add srcq, mmsize
  114.          add dstq, mmsize
  115.          sub pixelsd, mmsize
  116. @@ -592,51 +597,51 @@ cglobal rg_fl_mode_10, 4, 5, 8, 0, dst, src, stride, pixels
  117.          ABS_DIFF m4, m0, m7 ; absolute difference from center
  118.          pminub m1, m4       ; mindiff
  119.          pcmpeqb m4, m1      ; if (difference == mindiff)
  120. -        BLEND m4, m3, m2    ;     return pixel
  121. +        BLEND m2, m3, m4    ;     return pixel
  122.  
  123.          movu m5, [a1]
  124.          mova m6, m5
  125.          ABS_DIFF m6, m0, m7
  126.          pminub m1, m6
  127.          pcmpeqb m6, m1
  128. -        BLEND m6, m5, m4
  129. +        BLEND m2, m5, m6
  130.  
  131.          movu m3, [a3]
  132.          mova m4, m3
  133.          ABS_DIFF m4, m0, m7
  134.          pminub m1, m4
  135.          pcmpeqb m4, m1
  136. -        BLEND m4, m3, m6
  137. +        BLEND m2, m3, m4
  138.  
  139.          movu m5, [a2]
  140.          mova m6, m5
  141.          ABS_DIFF m6, m0, m7
  142.          pminub m1, m6
  143.          pcmpeqb m6, m1
  144. -        BLEND m6, m5, m4
  145. +        BLEND m2, m5, m6
  146.  
  147.          movu m3, [a6]
  148.          mova m4, m3
  149.          ABS_DIFF m4, m0, m7
  150.          pminub m1, m4
  151.          pcmpeqb m4, m1
  152. -        BLEND m4, m3, m6
  153. +        BLEND m2, m3, m4
  154.  
  155.          movu m5, [a8]
  156.          mova m6, m5
  157.          ABS_DIFF m6, m0, m7
  158.          pminub m1, m6
  159.          pcmpeqb m6, m1
  160. -        BLEND m6, m5, m4
  161. +        BLEND m2, m5, m6
  162.  
  163.          movu m3, [a7]
  164.          mova m4, m3
  165.          ABS_DIFF m4, m0, m7
  166.          pminub m1, m4
  167.          pcmpeqb m4, m1
  168. -        BLEND m4, m3, m6
  169. +        BLEND m2, m3, m4
  170.  
  171. -        movu [dstq], m4
  172. +        movu [dstq], m2
  173.          add srcq, mmsize
  174.          add dstq, mmsize
  175.          sub pixelsd, mmsize
  176. @@ -705,7 +710,7 @@ cglobal rg_fl_mode_13_14, 4, 5, 8, 0, dst, src, stride, pixels
  177.          ABS_DIFF m5, m4, m7
  178.          pminub m0, m5
  179.          pcmpeqb m5, m0
  180. -        BLEND m5, m3, m1
  181. +        BLEND m1, m3, m5
  182.  
  183.          movu m2, [a2]
  184.          movu m3, [a7]
  185. @@ -714,9 +719,9 @@ cglobal rg_fl_mode_13_14, 4, 5, 8, 0, dst, src, stride, pixels
  186.          ABS_DIFF m4, m3, m6
  187.          pminub m0, m4
  188.          pcmpeqb m4, m0
  189. -        BLEND m4, m2, m5
  190. +        BLEND m1, m2, m4
  191.  
  192. -        movu [dstq], m4
  193. +        movu [dstq], m1
  194.          add srcq, mmsize
  195.          add dstq, mmsize
  196.          sub pixelsd, mmsize
  197. @@ -765,11 +770,11 @@ cglobal rg_fl_mode_15_16, 4, 5, 16, 0, dst, src, stride, pixels
  198.          CLIPW m5, m2, m7
  199.          CLIPW m12, m3, m6
  200.  
  201. -        BLEND m11, m12, m4
  202. -        BLEND m10, m5, m11
  203. -        packuswb m10, m10
  204. +        BLEND m4, m12, m11
  205. +        BLEND m4,  m5, m10
  206. +        packuswb m4, m4
  207.  
  208. -        movh [dstq], m10
  209. +        movh [dstq], m4
  210.          add srcq, mmsize/2
  211.          add dstq, mmsize/2
  212.          sub pixelsd, mmsize/2
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement