Commit 5f74bd31 authored by Janne Grunau's avatar Janne Grunau

vp8/armv6: mc: avoid boolean expression in calculation

GNU as evaluates true as '-1' while Apple's variant and llvm's internal
assembler evaluate it as '1'. The best way to avoid this madness is to
eliminate boolean expressions instead of trying to fix it with
preprocessor directives. Use a direct formula to calculate the
required temporary space on the stack in
ff_put_vp8_{epel,bilin}{4,8,16}_h[246]v[246]_armv6().

Fixes a checkasm segfault in vp8dsp.mc when using llvm's internal
assembler for a non-Apple target.
parent fc5cdc0d
...@@ -1226,13 +1226,8 @@ vp8_mc_1 bilin, 8, v ...@@ -1226,13 +1226,8 @@ vp8_mc_1 bilin, 8, v
vp8_mc_1 bilin, 4, h vp8_mc_1 bilin, 4, h
vp8_mc_1 bilin, 4, v vp8_mc_1 bilin, 4, v
/* True relational expressions have the value -1 in the GNU assembler, @ 4 and 8 pixel wide mc blocks might have height of 8 or 16 lines
+1 in Apple's. */ #define TMPSIZE \size * (16 / ((16 / \size + 1) / 2) + \ytaps - 1)
#ifdef __APPLE__
# define TMPSIZE \size * (8 + 8*(\size > 4) + \ytaps - 1)
#else
# define TMPSIZE \size * (8 - 8*(\size > 4) + \ytaps - 1)
#endif
.macro vp8_mc_hv name, size, h, v, ytaps .macro vp8_mc_hv name, size, h, v, ytaps
function ff_put_vp8_\name\size\()_\h\v\()_armv6, export=1 function ff_put_vp8_\name\size\()_\h\v\()_armv6, export=1
......
Markdown is supported
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