On Sat, Oct 8, 2016 at 5:20 PM, Rostislav Pehlivanov <atomnu...@gmail.com> wrote: > +cglobal aac_quantize_bands, 8, 8, 7, out, in, scaled, size, Q34, is_signed, > maxval, rounding [...] > + movd m4, is_signedd
movd is SSE2. Can be worked around by moving it through the stack though. [...] > + /* Can't pass floats to external assembly directly */ > \ > + ff_aac_quantize_bands_ ## SET(out, in, scaled, size, (const float > [RSIZE_BYTES]){Q34}, \ > + is_signed, (const float > [RSIZE_BYTES]){(float)maxval}, \ > + (const float [RSIZE_BYTES]){rounding}); > \ If you reorder the function arguments so that the floating-point ones are at the end (should preferably be done as a separate patch though) it'd be fairly easy to handle it directly in assembly instead with something like this (untested): ;void ff_aac_quantize_bands_sse(int *out, const float *in, const float *scaled, ; int size, int is_signed, int maxval, ; float Q34, float rounding) ;******************************************************************* INIT_XMM sse cglobal aac_quantize_bands, 5, 5, 7, out, in, scaled, size, is_signed, maxval, Q34, rounding %if WIN64 || ARCH_X86_32 movss m0, Q34m movss m1, roundingm %endif cvtsi2ss m2, dword maxvalm _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel