Hi there, TL;DR:
Lots of compile errors when building FFmpeg 4.2 ARM/NEON Code through gas-preprocessor and armasm(64). Build target is Windows (UWP) ARM and ARM64. X86 and X64 targets are building fine. Long Version: I am building FFmpeg with an MSYS2 environment where ARM/NEON assembly code is compiled through gas-preprocessor and armasm/armasm64, similar to how it is described in this compilation guide: https://trac.ffmpeg.org/wiki/CompilationGuide/WinRT. This has worked very well for quite a long time. But after upgrading to FFmpeg 4.2, the build fails. A lot of changes and additions have been done for ARM/NEON 64-bit, and it looks like many of them are not compatible with armasm64. First I had to fix gas-preprocessor, a patch has been submitted today. But now, many other errors occur, which have to do with the ARM64 assembly code itself. I don’t have any knowledge of ARM/NEON assembly code, so I cannot help much with the investigation or fixes. It would be great if ARM/NEON experts here (possibly those who submitted the changes) could check the new assembly codes and fix them, so that also armasm64 will eat it. On ARM platform, I also see build errors. Interestingly, those files have not even changed. Only the referenced file libavutil/arm/asm.S has changed. Even when I undo the last changes there, the build still fails, so I am out of ideas here right now. When I switch back to FFmpeg 4.1.4, everything builds fine. Maybe there is a config change which causes those errors? Below I will post build errors that I see on ARM and ARM64 builds. Other files could be affected as well (build cancels out after a few errors). Thank you for your help. Best Regards Lukas Errors with ARM64 target: C:\Source\FFmpegInterop-lukasf\ffmpeg\Output\Windows10\ARM64\libavcodec\aarch64\vp8dsp_neon.o.asm(29) : error A2523: operand 5: Wrong size operand ld1 {v0.4h - v3.4h}, [x1] CC libavcodec/aasc.o C:\Source\FFmpegInterop-lukasf\ffmpeg\Output\Windows10\ARM64\libavcodec\aarch64\vp8dsp_neon.o.asm(97) : error A2523: operand 5: Wrong size operand ld1 {v0.8b - v3.8b}, [x1] C:\Source\FFmpegInterop-lukasf\ffmpeg\Output\Windows10\ARM64\libavcodec\aarch64\vp8dsp_neon.o.asm(1972) : error A2509: operand 3: Illegal reg field ld1 {v1.1d - v2.1d}, [x2], x3 C:\Source\FFmpegInterop-lukasf\ffmpeg\Output\Windows10\ARM64\libavcodec\aarch64\vp8dsp_neon.o.asm(1973) : error A2509: operand 3: Illegal reg field ld1 {v3.1d - v4.1d}, [x2], x3 C:\Source\FFmpegInterop-lukasf\ffmpeg\Output\Windows10\ARM64\libavcodec\aarch64\vp8dsp_neon.o.asm(1974) : error A2509: operand 3: Illegal reg field ld1 {v16.1d - v17.1d}, [x2], x3 C:\Source\FFmpegInterop-lukasf\ffmpeg\Output\Windows10\ARM64\libavcodec\aarch64\vp8dsp_neon.o.asm(1975) : error A2509: operand 3: Illegal reg field ld1 {v18.1d - v19.1d}, [x2], x3 C:\Source\FFmpegInterop-lukasf\ffmpeg\Output\Windows10\ARM64\libavcodec\aarch64\vp8dsp_neon.o.asm(1976) : error A2509: operand 3: Illegal reg field ld1 {v20.1d - v21.1d}, [x2], x3 C:\Source\FFmpegInterop-lukasf\ffmpeg\Output\Windows10\ARM64\libavcodec\aarch64\vp8dsp_neon.o.asm(1977) : error A2509: operand 3: Illegal reg field ld1 {v22.1d - v23.1d}, [x2], x3 C:\Source\FFmpegInterop-lukasf\ffmpeg\Output\Windows10\ARM64\libavcodec\aarch64\vp8dsp_neon.o.asm(1978) : error A2509: operand 3: Illegal reg field ld1 {v24.1d - v25.1d}, [x2] C:\Source\FFmpegInterop-lukasf\ffmpeg\Output\Windows10\ARM64\libavcodec\aarch64\vp8dsp_neon.o.asm(2032) : error A2509: operand 3: Illegal reg field st1 {v1.1d - v2.1d}, [x0], x1 C:\Source\FFmpegInterop-lukasf\ffmpeg\Output\Windows10\ARM64\libavcodec\aarch64\vp8dsp_neon.o.asm(2033) : error A2509: aasc.c operand 3: Illegal reg field st1 {v3.1d - v4.1d}, [x0], x1 C:\Source\FFmpegInterop-lukasf\ffmpeg\Output\Windows10\ARM64\libavcodec\aarch64\vp8dsp_neon.o.asm(2183) : error A2506: operand 6: Not enough operands ld1 {v1.8b - v4.8b}, [x7], #32 C:\Source\FFmpegInterop-lukasf\ffmpeg\Output\Windows10\ARM64\libavcodec\aarch64\vp8dsp_neon.o.asm(2184) : error A2506: operand 6: Not enough operands ld1 {v16.8b - v19.8b}, [x7], #32 C:\Source\FFmpegInterop-lukasf\ffmpeg\Output\Windows10\ARM64\libavcodec\aarch64\vp8dsp_neon.o.asm(2185) : error A2506: operand 6: Not enough operands ld1 {v20.8b - v23.8b}, [x7], #32 C:\Source\FFmpegInterop-lukasf\ffmpeg\Output\Windows10\ARM64\libavcodec\aarch64\vp8dsp_neon.o.asm(2186) : error A2509: operand 3: Illegal reg field ld1 {v24.8b - v25.8b}, [x7] C:\Source\FFmpegInterop-lukasf\ffmpeg\Output\Windows10\ARM64\libavcodec\aarch64\vp8dsp_neon.o.asm(2432) : error A2506: operand 6: Not enough operands ld1 {v1.8b - v4.8b}, [x7], #32 C:\Source\FFmpegInterop-lukasf\ffmpeg\Output\Windows10\ARM64\libavcodec\aarch64\vp8dsp_neon.o.asm(2433) : error A2509: operand 4: Illegal reg field ld1 {v5.8b - v7.8b}, [x7] C:\Source\FFmpegInterop-lukasf\ffmpeg\Output\Windows10\ARM64\libavcodec\aarch64\vp8dsp_neon.o.asm(2630) : error A2506: operand 6: Not enough operands ld1 {v1.8b - v4.8b}, [x7], #32 C:\Source\FFmpegInterop-lukasf\ffmpeg\Output\Windows10\ARM64\libavcodec\aarch64\vp8dsp_neon.o.asm(2631) : error A2509: operand 4: Illegal reg field ld1 {v5.8b - v7.8b}, [x7] C:\Source\FFmpegInterop-lukasf\ffmpeg\Output\Windows10\ARM64\libavcodec\aarch64\vp8dsp_neon.o.asm(2729) : error A2509: operand 3: Illegal reg field ld1 {v1.8b - v2.8b}, [x7], #16 C:\Source\FFmpegInterop-lukasf\ffmpeg\Output\Windows10\ARM64\libavcodec\aarch64\vp8dsp_neon.o.asm(2730) : error A2509: operand 4: Illegal reg field ld1 {v3.8b - v5.8b}, [x7] C:\Source\FFmpegInterop-lukasf\ffmpeg\Output\Windows10\ARM64\libavcodec\aarch64\vp8dsp_neon.o.asm(2824) : error A2509: operand 3: Illegal reg field ld1 {v1.8b - v2.8b}, [x7], #16 C:\Source\FFmpegInterop-lukasf\ffmpeg\Output\Windows10\ARM64\libavcodec\aarch64\vp8dsp_neon.o.asm(2825) : error A2509: operand 4: Illegal reg field ld1 {v3.8b - v5.8b}, [x7] Error running assembler at /usr/bin/gas-preprocessor.pl line 1175. Errors with ARM target (32 bit): C:\Source\FFmpegInterop-lukasf\ffmpeg\Output\Windows10\ARM\libavcodec\arm\ac3dsp_arm.o.asm(72) : error A2173: syntax error in expression it gt C:\Source\FFmpegInterop-lukasf\ffmpeg\Output\Windows10\ARM\libavcodec\arm\ac3dsp_arm.o.asm(72) : error A2212: The given operands are invalid for this instruction it gt C:\Source\FFmpegInterop-lukasf\ffmpeg\Output\Windows10\ARM\libavcodec\arm\ac3dsp_armv6.o.asm(103) : error A2173: syntax error in expression it lt C:\Source\FFmpegInterop-lukasf\ffmpeg\Output\Windows10\ARM\libavcodec\arm\ac3dsp_armv6.o.asm(103) : error A2212: Error running assembler at /usr/bin/gas-preprocessor.pl line 1175.The given operands are invalid for this instruction it lt ite gt C:\Source\FFmpegInterop-lukasf\ffmpeg\Output\Windows10\ARM\libavcodec\arm\ac3dsp_armv6.o.asm(107) : error A2212: The given operands are invalid for this instruction ite gt C:\Source\FFmpegInterop-lukasf\ffmpeg\Output\Windows10\ARM\libavcodec\arm\aacpsdsp_neon.o.asm(341) : error A2173: syntax error in expression it lt C:\Source\FFmpegInterop-lukasf\ffmpeg\Output\Windows10\ARM\libavcodec\arm\aacpsdsp_neon.o.asm(341) : error A2212: The given operands are invalid for this instruction it lt CC libavcodec/arbc.o Error running assembler at /usr/bin/gas-preprocessor.pl line 1175. make: *** [/c/Source/FFmpegInterop-lukasf/ffmpeg/ffbuild/common.mak:71: libavcodec/arm/ac3dsp_arm.o] Fehler 1 make: *** Es wird auf noch nicht beendete Prozesse gewartet.... Error running assembler at /usr/bin/gas-preprocessor.pl line 1175. make: *** [/c/Source/FFmpegInterop-lukasf/ffmpeg/ffbuild/common.mak:71: libavcodec/arm/ac3dsp_armv6.o] Fehler 1 make: *** [/c/Source/FFmpegInterop-lukasf/ffmpeg/ffbuild/common.mak:71: libavcodec/arm/aacpsdsp_neon.o] Fehler 1 arbc.c CC libavcodec/arm/ac3dsp_init_arm.o ac3dsp_init_arm.c AS libavcodec/arm/ac3dsp_neon.o C:\Source\FFmpegInterop-lukasf\ffmpeg\Output\Windows10\ARM\libavcodec\arm\ac3dsp_neon.o.asm(92) : error A2173: syntax error in expression it eq C:\Source\FFmpegInterop-lukasf\ffmpeg\Output\Windows10\ARM\libavcodec\arm\ac3dsp_neon.o.asm(92) : error A2212: The given operands are invalid for this instruction it eq Error running assembler at /usr/bin/gas-preprocessor.pl line 1175. make: *** [/c/Source/FFmpegInterop-lukasf/ffmpeg/ffbuild/common.mak:71: libavcodec/arm/ac3dsp_neon.o] Fehler 1 AS libavcodec/arm/aacpsdsp_neon.o C:\Source\FFmpegInterop-lukasf\ffmpeg\Output\Windows10\ARM\libavcodec\arm\aacpsdsp_neon.o.asm(341) : error A2173: syntax error in expression it lt C:\Source\FFmpegInterop-lukasf\ffmpeg\Output\Windows10\ARM\libavcodec\arm\aacpsdsp_neon.o.asm(341) : error A2212: The given operands are invalid for this instruction it lt Error running assembler at /usr/bin/gas-preprocessor.pl line 1175. make: *** [/c/Source/FFmpegInterop-lukasf/ffmpeg/ffbuild/common.mak:71: libavcodec/arm/aacpsdsp_neon.o] Fehler 1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".