[FFmpeg-devel] [PATCH] vp9: 16bpp tm/dc/h/v intra pred simd (mostly sse2) functions.

Henrik Gramner henrik at gramner.com
Mon Oct 5 11:54:10 CEST 2015

On Mon, Oct 5, 2015 at 10:55 AM, Matt Oliver <protogonoi at gmail.com> wrote:
> This patch has broken the 32bit msvc builds:
> http://fate.ffmpeg.org/report.cgi?time=20151005065109&slot=x86_32-msvc12-windows-native
> I had a look through the code but couldnt find the cause. The error message
> just points to the code line for a macro instantiation and I'm not familiar
> enough with the code to be able to work out where within the macro the
> error is actually occurring and why. So ill leave this one to someone more
> familiar with the code.

I see where the problem is.

Using stack space in cglobal requires an extra register if the stack
alignment is less than mmsize (32-bit msvc only has 4-byte stack
alignment), and if the function already utilizes all available
registers that will result in failure.

The fix is either to reduce the number of registers used by the
function or to only enable the function on x86-32 if the stack is at
least 16-byte aligned. x86inc has the variable STACK_ALIGNMENT which
can be tested for this, in C there's the HAVE_ALIGNED_STACK define
which is set if the stack is 16-byte aligned.

More information about the ffmpeg-devel mailing list