On 2017-10-31 04:30, Michael Niedermayer wrote: > On Mon, Oct 30, 2017 at 02:08:33PM +0100, James Darnley wrote: >> These changes were commited to x264 in b568a256 "Experimental nasm >> support" >> --- >> libavutil/x86/x86inc.asm | 16 ++++++++++++++-- >> 1 file changed, 14 insertions(+), 2 deletions(-) > > breaks build: > > libavcodec/x86/rv34dsp.asm:211: error: parser: instruction expected > libavcodec/x86/rv34dsp.asm:211: error: label or instruction expected at start > of line > libavcodec/x86/rv34dsp.asm:213: error: parser: instruction expected > libavcodec/x86/rv34dsp.asm:213: error: label or instruction expected at start > of line > make: *** [libavcodec/x86/rv34dsp.o] Error 1 > make: *** Waiting for unfinished jobs.... > > NASM version 2.10.09 compiled on Dec 29 2013
This is very weird. I have reproduced it on 2.13.01 on my server but I couldn't on my laptop. After a `make distclean` I can. I think that is the bug with nasm not listing includes as dependencies so I wasn't rebuilding those objects. > libavcodec/x86/rv34dsp.asm:211: error: parser: instruction expected > libavcodec/x86/rv34dsp.asm:173: ... from macro `RV34_IDCT_DC_ADD' defined here > libavutil/x86/x86inc.asm:707: ... from macro `cglobal' defined here > libavutil/x86/x86inc.asm:733: ... from macro `cglobal_internal' defined here > libavcodec/x86/rv34dsp.asm:211: error: label or instruction expected at start > of line > libavcodec/x86/rv34dsp.asm:173: ... from macro `RV34_IDCT_DC_ADD' defined here > libavutil/x86/x86inc.asm:707: ... from macro `cglobal' defined here > libavutil/x86/x86inc.asm:733: ... from macro `cglobal_internal' defined here > libavcodec/x86/rv34dsp.asm:213: error: parser: instruction expected > libavcodec/x86/rv34dsp.asm:173: ... from macro `RV34_IDCT_DC_ADD' defined here > libavutil/x86/x86inc.asm:707: ... from macro `cglobal' defined here > libavutil/x86/x86inc.asm:733: ... from macro `cglobal_internal' defined here > libavcodec/x86/rv34dsp.asm:213: error: label or instruction expected at start > of line > libavcodec/x86/rv34dsp.asm:173: ... from macro `RV34_IDCT_DC_ADD' defined here > libavutil/x86/x86inc.asm:707: ... from macro `cglobal' defined here > libavutil/x86/x86inc.asm:733: ... from macro `cglobal_internal' defined here Line 733 is the align command to align the start of the function. I can't see why it fails here but not on any other function in that file or any other file. After some cutting and pasting there is something about the mmxext function on line 159. Cutting it out with the following diff, and building it will succeed. > diff --git a/libavcodec/x86/rv34dsp.asm b/libavcodec/x86/rv34dsp.asm > index 692b4acfcd..3448f82e75 100644 > --- a/libavcodec/x86/rv34dsp.asm > +++ b/libavcodec/x86/rv34dsp.asm > @@ -156,17 +156,6 @@ cglobal rv34_idct_dc_add, 3, 3 > packuswb %2, %2 > movd %1, %2 > %endmacro > -INIT_MMX mmxext > -cglobal rv34_idct_add, 3,3,0, d, s, b > - ROW_TRANSFORM bq > - COL_TRANSFORM [dq], mm0, [pw_col_coeffs+ 0], [pw_col_coeffs+ 8] > - mova mm0, [pw_col_coeffs+ 0] > - COL_TRANSFORM [dq+sq], mm4, mm0, [pw_col_coeffs+ 8] > - mova mm4, [pw_col_coeffs+ 8] > - lea dq, [dq + 2*sq] > - COL_TRANSFORM [dq], mm6, mm0, mm4 > - COL_TRANSFORM [dq+sq], mm7, mm0, mm4 > - ret > > ; ff_rv34_idct_dc_add_sse4(uint8_t *dst, int stride, int dc); > %macro RV34_IDCT_DC_ADD 0 I honestly have no idea why that causes a problem for the following function. I thought it might be the lower-case ret rather than the upper-case RET macro but changing it doesn't change the error. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel