Fix valgrind errors in the NEON loop filters.
Like the ARMv6 code, these functions were accessing values below the stack pointer, which can be corrupted by signal delivery at any time.
This commit is contained in:
Родитель
439b2ecd74
Коммит
a465076e02
|
@ -67,9 +67,10 @@
|
|||
|
||||
sub sp, sp, #32
|
||||
vld1.s8 {d4[], d5[]}, [r12] ; thresh
|
||||
vst1.u8 {q3}, [sp]!
|
||||
mov r12, sp
|
||||
vst1.u8 {q3}, [r12]!
|
||||
vst1.u8 {q10}, [r12]!
|
||||
ldr r12, _mbvlfuv_coeff_
|
||||
vst1.u8 {q10}, [sp]!
|
||||
|
||||
; vp8_filter_mask
|
||||
vabd.u8 q11, q3, q4 ; abs(p3 - p2)
|
||||
|
@ -165,8 +166,6 @@
|
|||
|
||||
vld1.u8 {d5}, [r12]! ;#27
|
||||
|
||||
sub sp, sp, #32
|
||||
|
||||
vqadd.s8 q6, q6, q13 ; ps0 = vp8_signed_char_clamp(ps0 + Filter2)
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
|
|
|
@ -63,11 +63,12 @@
|
|||
vtrn.8 q7, q8
|
||||
vtrn.8 q9, q10
|
||||
|
||||
vld1.s8 {d2[], d3[]}, [r3] ; limit
|
||||
vst1.u8 {q3}, [sp]!
|
||||
vld1.s8 {d4[], d5[]}, [r12] ; thresh
|
||||
vld1.s8 {d2[], d3[]}, [r3] ; limit
|
||||
mov r12, sp
|
||||
vst1.u8 {q3}, [r12]!
|
||||
vst1.u8 {q10}, [r12]!
|
||||
ldr r12, _mbvlfy_coeff_
|
||||
vst1.u8 {q10}, [sp]!
|
||||
|
||||
; vp8_filter_mask
|
||||
vabd.u8 q11, q3, q4 ; abs(p3 - p2)
|
||||
|
@ -150,7 +151,6 @@
|
|||
|
||||
vld1.u8 {d6}, [r12]! ;#18
|
||||
sub r0, r0, r1, lsl #4
|
||||
sub sp, sp, #32
|
||||
|
||||
add r2, r0, r1
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче