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:
Timothy B. Terriberry 2010-09-30 20:40:45 -07:00
Родитель 439b2ecd74
Коммит a465076e02
2 изменённых файлов: 7 добавлений и 8 удалений

Просмотреть файл

@ -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