History

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

Evgeny Pavlov committed 3 years ago

Commit cb1479f1 parent f0b1cab1 file · +11 −14Browse files

Unified · Split

libavfilter/x86/vf_ssim.asm+11−14
@@ -228,25 +228,22 @@ cglobal ssim_end_line, 3, 3, 7, sum0, sum1, w · 227 unmodified lines
228 228
229 ; subpd the ones we added too much229 ; subpd the ones we added too much
230 test wd, wd230 test wd, wd
231 jz .end231 jz .end
232 add wd, 4232 add wd, 4
233 test wd, 3233 cmp wd, 1
234 jz .skip3234 jz .skip3
235 test wd, 2235 cmp wd, 2
236 jz .skip2236 jz .skip2
237 test wd, 1237.skip1: ; 3 valid => skip 1 invalid
238 jz .skip1
239.skip3:
240 psrldq m5, 8238 psrldq m5, 8
241 subpd m6, m5239 subpd m6, m5
242 jmp .end240 jmp .end
243.skip2:241.skip2: ; 2 valid => skip 2 invalid
244 psrldq m5, 8
245 subpd m6, m5242 subpd m6, m5
243 jmp .end
244.skip3: ; 1 valid => skip 3 invalid
245 psrldq m3, 8
246 subpd m0, m3246 subpd m0, m3
247 jmp .end
248.skip1:
249 psrldq m3, 16
250 subpd m6, m5247 subpd m6, m5
251 248
252.end:249.end:

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t