avfilter/vf_ssim: Fix x86 assembly code for SSIM calculation
This commit fixes bug #10495 The code had several bugs related to post-loop compensation code: - test assembly instruction performs bitwise AND operation and generate flags used by jz branch instruction. Wrong test condition leads to incorrect branching - Incorrect compensation code for some branches Signed-off-by: Evgeny Pavlov <lucenticus@gmail.com>
This commit is contained in:
parent
f0b1cab538
commit
cb1479faca
@ -228,25 +228,22 @@ cglobal ssim_end_line, 3, 3, 7, sum0, sum1, w
|
|||||||
|
|
||||||
; subpd the ones we added too much
|
; subpd the ones we added too much
|
||||||
test wd, wd
|
test wd, wd
|
||||||
jz .end
|
jz .end
|
||||||
add wd, 4
|
add wd, 4
|
||||||
test wd, 3
|
cmp wd, 1
|
||||||
jz .skip3
|
jz .skip3
|
||||||
test wd, 2
|
cmp wd, 2
|
||||||
jz .skip2
|
jz .skip2
|
||||||
test wd, 1
|
.skip1: ; 3 valid => skip 1 invalid
|
||||||
jz .skip1
|
|
||||||
.skip3:
|
|
||||||
psrldq m5, 8
|
psrldq m5, 8
|
||||||
subpd m6, m5
|
subpd m6, m5
|
||||||
jmp .end
|
jmp .end
|
||||||
.skip2:
|
.skip2: ; 2 valid => skip 2 invalid
|
||||||
psrldq m5, 8
|
|
||||||
subpd m6, m5
|
subpd m6, m5
|
||||||
|
jmp .end
|
||||||
|
.skip3: ; 1 valid => skip 3 invalid
|
||||||
|
psrldq m3, 8
|
||||||
subpd m0, m3
|
subpd m0, m3
|
||||||
jmp .end
|
|
||||||
.skip1:
|
|
||||||
psrldq m3, 16
|
|
||||||
subpd m6, m5
|
subpd m6, m5
|
||||||
|
|
||||||
.end:
|
.end:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user