Commit a465076e authored by Timothy B. Terriberry's avatar Timothy B. Terriberry
Browse files

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.
parent 439b2ecd
...@@ -67,9 +67,10 @@ ...@@ -67,9 +67,10 @@
sub sp, sp, #32 sub sp, sp, #32
vld1.s8 {d4[], d5[]}, [r12] ; thresh 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_ ldr r12, _mbvlfuv_coeff_
vst1.u8 {q10}, [sp]!
; vp8_filter_mask ; vp8_filter_mask
vabd.u8 q11, q3, q4 ; abs(p3 - p2) vabd.u8 q11, q3, q4 ; abs(p3 - p2)
...@@ -165,8 +166,6 @@ ...@@ -165,8 +166,6 @@
vld1.u8 {d5}, [r12]! ;#27 vld1.u8 {d5}, [r12]! ;#27
sub sp, sp, #32
vqadd.s8 q6, q6, q13 ; ps0 = vp8_signed_char_clamp(ps0 + Filter2) vqadd.s8 q6, q6, q13 ; ps0 = vp8_signed_char_clamp(ps0 + Filter2)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
......
...@@ -63,11 +63,12 @@ ...@@ -63,11 +63,12 @@
vtrn.8 q7, q8 vtrn.8 q7, q8
vtrn.8 q9, q10 vtrn.8 q9, q10
vld1.s8 {d2[], d3[]}, [r3] ; limit
vst1.u8 {q3}, [sp]!
vld1.s8 {d4[], d5[]}, [r12] ; thresh 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_ ldr r12, _mbvlfy_coeff_
vst1.u8 {q10}, [sp]!
; vp8_filter_mask ; vp8_filter_mask
vabd.u8 q11, q3, q4 ; abs(p3 - p2) vabd.u8 q11, q3, q4 ; abs(p3 - p2)
...@@ -150,7 +151,6 @@ ...@@ -150,7 +151,6 @@
vld1.u8 {d6}, [r12]! ;#18 vld1.u8 {d6}, [r12]! ;#18
sub r0, r0, r1, lsl #4 sub r0, r0, r1, lsl #4
sub sp, sp, #32
add r2, r0, r1 add r2, r0, r1
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment