History

lavc/x86/hevc_add_res: Fix overflow in ADD_RES_MMX_4_8

Fix overflow for coeff -32768 in function ADD_RES_MMX_4_8 with no performance drop. ./checkasm --test=hevc_add_res --bench Mainline: - hevc_add_res.add_residual [OK] hevc_add_res_4x4_8_mmxext: 15.5 Add overflow test case: - hevc_add_res.add_residual [FAILED] After: - hevc_add_res.add_residual [OK] hevc_add_res_4x4_8_mmxext: 15.0

Linjie Fu committed 6 years ago

Commit 0da14ed1 parent 091341f1 file · +11 −12Browse files

Showing the changes to libavcodec (1 of 1 file). Show all

Unified · Split

libavcodec/x86/hevc_add_res.asm+11−12
@@ -30,27 +30,26 @@ cextern pw_1023 · 29 unmodified lines
3030 %macro ADD_RES_MMX_4_8 0
3131 mova m0, [r1]
3232 mova m2, [r1+8]
33− pxor m1, m1
34− pxor m3, m3
35− psubw m1, m0
36− psubw m3, m2
37− packuswb m0, m2
38− packuswb m1, m3
3933
40− movd m2, [r0]
34+ movd m1, [r0]
4135 movd m3, [r0+r2]
42− punpckldq m2, m3
43− paddusb m0, m2
44− psubusb m0, m1
36+ punpcklbw m1, m4
37+ punpcklbw m3, m4
38+
39+ paddsw m0, m1
40+ paddsw m2, m3
41+ packuswb m0, m4
42+ packuswb m2, m4
43+
4544 movd [r0], m0
46− psrlq m0, 32
47− movd [r0+r2], m0
45+ movd [r0+r2], m2
4846 %endmacro
4947
5048
5149 INIT_MMX mmxext
5250 ; void ff_hevc_add_residual_4_8_mmxext(uint8_t *dst, int16_t *res, ptrdiff_t stride)
5351 cglobal hevc_add_residual_4_8, 3, 3, 6
52+ pxor m4, m4
5453 ADD_RES_MMX_4_8
5554 add r1, 16
5655 lea r0, [r0+r2*2]

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