Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/libavfilter/x86/vf_removegrain.asm b/libavfilter/x86/vf_removegrain.asm
- index bf2142d..489fafc 100644
- --- a/libavfilter/x86/vf_removegrain.asm
- +++ b/libavfilter/x86/vf_removegrain.asm
- @@ -129,13 +129,18 @@ SECTION_TEXT
- por %1, %3
- %endmacro
- -; %1 simd register that hold the mask and will hold the result
- +; %1 location of the "false" values (simd register/memory) and will hold the result
- ; %2 simd register that holds the "true" values
- -; %3 location of the "false" values (simd register/memory)
- -%macro BLEND 3 ; mask, true, false
- - pand %2, %1
- - pandn %1, %3
- - por %1, %2
- +; %3 simd register that hold the mask
- +%macro BLEND 3 ; false, true, mask
- +%if cpuflag(avx2)
- + vpblendvb %1, %1, %2, %3
- +%else
- + pand %2, %3
- + pandn %3, %1
- + por %3, %2
- + SWAP %1, %3
- +%endif
- %endmacro
- ;*** Function macros
- @@ -327,11 +332,11 @@ cglobal rg_fl_mode_5, 4, 5, 13, 0, dst, src, stride, pixels
- pcmpeqb m12, m9
- ; Notice the order here: c1, c3, c2, c4
- - BLEND m11, m6, m8
- - BLEND m10, m7, m11
- - BLEND m12, m5, m10
- + BLEND m8, m6, m11
- + BLEND m8, m7, m10
- + BLEND m8, m5, m12
- - movu [dstq], m12
- + movu [dstq], m8
- add srcq, mmsize
- add dstq, mmsize
- sub pixelsd, mmsize
- @@ -393,12 +398,12 @@ cglobal rg_fl_mode_6, 4, 5, 16, 0, dst, src, stride, pixels
- pcmpeqw m3, m1
- pcmpeqw m4, m1
- - BLEND m3, m11, m9
- - BLEND m2, m10, m3
- - BLEND m4, m12, m2
- - packuswb m4, m4
- + BLEND m9, m11, m3
- + BLEND m9, m10, m2
- + BLEND m9, m12, m4
- + packuswb m9, m9
- - movh [dstq], m4
- + movh [dstq], m9
- add srcq, mmsize/2
- add dstq, mmsize/2
- sub pixelsd, mmsize/2
- @@ -454,12 +459,12 @@ cglobal rg_fl_mode_7, 4, 5, 16, 0, dst, src, stride, pixels
- pcmpeqw m3, m1
- pcmpeqw m4, m1
- - BLEND m3, m11, m9
- - BLEND m2, m10, m3
- - BLEND m4, m12, m2
- - packuswb m4, m4
- + BLEND m9, m11, m3
- + BLEND m9, m10, m2
- + BLEND m9, m12, m4
- + packuswb m9, m9
- - movh [dstq], m4
- + movh [dstq], m9
- add srcq, mmsize/2
- add dstq, mmsize/2
- sub pixelsd, mmsize/2
- @@ -519,12 +524,12 @@ cglobal rg_fl_mode_8, 4, 5, 16, 0, dst, src, stride, pixels
- pcmpeqw m3, m1
- pcmpeqw m4, m1
- - BLEND m3, m11, m9
- - BLEND m2, m10, m3
- - BLEND m4, m12, m2
- - packuswb m4, m4
- + BLEND m9, m11, m3
- + BLEND m9, m10, m2
- + BLEND m9, m12, m4
- + packuswb m9, m9
- - movh [dstq], m4
- + movh [dstq], m9
- add srcq, mmsize/2
- add dstq, mmsize/2
- sub pixelsd, mmsize/2
- @@ -563,11 +568,11 @@ cglobal rg_fl_mode_9, 4, 5, 13, 0, dst, src, stride, pixels
- pcmpeqb m6, m8
- pcmpeqb m5, m8
- - BLEND m6, m11, m9
- - BLEND m7, m10, m6
- - BLEND m5, m12, m7
- + BLEND m9, m11, m6
- + BLEND m9, m10, m7
- + BLEND m9, m12, m5
- - movu [dstq], m5
- + movu [dstq], m9
- add srcq, mmsize
- add dstq, mmsize
- sub pixelsd, mmsize
- @@ -592,51 +597,51 @@ cglobal rg_fl_mode_10, 4, 5, 8, 0, dst, src, stride, pixels
- ABS_DIFF m4, m0, m7 ; absolute difference from center
- pminub m1, m4 ; mindiff
- pcmpeqb m4, m1 ; if (difference == mindiff)
- - BLEND m4, m3, m2 ; return pixel
- + BLEND m2, m3, m4 ; return pixel
- movu m5, [a1]
- mova m6, m5
- ABS_DIFF m6, m0, m7
- pminub m1, m6
- pcmpeqb m6, m1
- - BLEND m6, m5, m4
- + BLEND m2, m5, m6
- movu m3, [a3]
- mova m4, m3
- ABS_DIFF m4, m0, m7
- pminub m1, m4
- pcmpeqb m4, m1
- - BLEND m4, m3, m6
- + BLEND m2, m3, m4
- movu m5, [a2]
- mova m6, m5
- ABS_DIFF m6, m0, m7
- pminub m1, m6
- pcmpeqb m6, m1
- - BLEND m6, m5, m4
- + BLEND m2, m5, m6
- movu m3, [a6]
- mova m4, m3
- ABS_DIFF m4, m0, m7
- pminub m1, m4
- pcmpeqb m4, m1
- - BLEND m4, m3, m6
- + BLEND m2, m3, m4
- movu m5, [a8]
- mova m6, m5
- ABS_DIFF m6, m0, m7
- pminub m1, m6
- pcmpeqb m6, m1
- - BLEND m6, m5, m4
- + BLEND m2, m5, m6
- movu m3, [a7]
- mova m4, m3
- ABS_DIFF m4, m0, m7
- pminub m1, m4
- pcmpeqb m4, m1
- - BLEND m4, m3, m6
- + BLEND m2, m3, m4
- - movu [dstq], m4
- + movu [dstq], m2
- add srcq, mmsize
- add dstq, mmsize
- sub pixelsd, mmsize
- @@ -705,7 +710,7 @@ cglobal rg_fl_mode_13_14, 4, 5, 8, 0, dst, src, stride, pixels
- ABS_DIFF m5, m4, m7
- pminub m0, m5
- pcmpeqb m5, m0
- - BLEND m5, m3, m1
- + BLEND m1, m3, m5
- movu m2, [a2]
- movu m3, [a7]
- @@ -714,9 +719,9 @@ cglobal rg_fl_mode_13_14, 4, 5, 8, 0, dst, src, stride, pixels
- ABS_DIFF m4, m3, m6
- pminub m0, m4
- pcmpeqb m4, m0
- - BLEND m4, m2, m5
- + BLEND m1, m2, m4
- - movu [dstq], m4
- + movu [dstq], m1
- add srcq, mmsize
- add dstq, mmsize
- sub pixelsd, mmsize
- @@ -765,11 +770,11 @@ cglobal rg_fl_mode_15_16, 4, 5, 16, 0, dst, src, stride, pixels
- CLIPW m5, m2, m7
- CLIPW m12, m3, m6
- - BLEND m11, m12, m4
- - BLEND m10, m5, m11
- - packuswb m10, m10
- + BLEND m4, m12, m11
- + BLEND m4, m5, m10
- + packuswb m4, m4
- - movh [dstq], m10
- + movh [dstq], m4
- add srcq, mmsize/2
- add dstq, mmsize/2
- sub pixelsd, mmsize/2
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement