a904fb2ac4
Support for the AVX512FP16 instructions was added in binutils 2.38. See the binutils 2.38 releases notes [0] that state: X86: [...] * Add support for Intel AVX512_FP16 instructions. [0] https://sourceware.org/pipermail/binutils/2022-February/119721.html It turns out that when building GCC 12.x, some of these AVX512FP16 instructions are now used, and therefore when binutils < 2.38 is used, the build fails as the assembler does not recognize those instructions: /tmp/ccChzL2g.s: Assembler messages: /tmp/ccChzL2g.s:20: Error: no such instruction: `vmovw 24(%esp),%xmm2' /tmp/ccChzL2g.s:21: Error: no such instruction: `vmovw 28(%esp),%xmm3' /tmp/ccChzL2g.s:22: Error: no such instruction: `vmovw 32(%esp),%xmm4' /tmp/ccChzL2g.s:23: Error: no such instruction: `vmovw 36(%esp),%xmm5' /tmp/ccChzL2g.s:30: Error: no such instruction: `vcvtsh2ss %xmm2,%xmm6,%xmm6' /tmp/ccChzL2g.s:36: Error: no such instruction: `vcvtsh2ss %xmm3,%xmm6,%xmm6' /tmp/ccChzL2g.s:42: Error: no such instruction: `vcvtsh2ss %xmm4,%xmm7,%xmm7' /tmp/ccChzL2g.s:48: Error: no such instruction: `vcvtsh2ss %xmm5,%xmm1,%xmm1' /tmp/ccChzL2g.s:80: Error: no such instruction: `vcvtss2sh (%esp),%xmm1,%xmm1' /tmp/ccChzL2g.s:96: Error: no such instruction: `vcvtss2sh (%esp),%xmm0,%xmm0' /tmp/ccChzL2g.s💯 Error: no such instruction: `vucomish %xmm1,%xmm1' /tmp/ccChzL2g.s:103: Error: no such instruction: `vucomish %xmm0,%xmm0' /tmp/ccChzL2g.s:122: Error: no such instruction: `vucomish %xmm2,%xmm2' The same issue does not occur with GCC 11.x, but nothing prevents other packages than GCC to use those instructions, so the problem really lies on the binutils side missing the support for those instructions. Also, in Buildroot, we do not distinguish AVX512 in general from AVX512FP16 specifically, so our only option is to make binutils 2.37 unavailable for AVX512 systems even if some of them perhaps don't support AVX512FP16 anyway. This seems like a reasonable trade-off, as binutils 2.38 is anyway already the default in Buildroot, and AVX512-capable systems are fairly recent, and therefore using a recent binutils version should not be a problem on these platforms. Fixes: http://autobuild.buildroot.net/results/eb6e28c934654e6d714973415a2fb452f9580279/ Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> |
||
---|---|---|
arch | ||
board | ||
boot | ||
configs | ||
docs | ||
fs | ||
linux | ||
package | ||
support | ||
system | ||
toolchain | ||
utils | ||
.clang-format | ||
.defconfig | ||
.flake8 | ||
.gitignore | ||
.gitlab-ci.yml | ||
.shellcheckrc | ||
CHANGES | ||
Config.in | ||
Config.in.legacy | ||
COPYING | ||
DEVELOPERS | ||
Makefile | ||
Makefile.legacy | ||
README |
Buildroot is a simple, efficient and easy-to-use tool to generate embedded Linux systems through cross-compilation. The documentation can be found in docs/manual. You can generate a text document with 'make manual-text' and read output/docs/manual/manual.text. Online documentation can be found at http://buildroot.org/docs.html To build and use the buildroot stuff, do the following: 1) run 'make menuconfig' 2) select the target architecture and the packages you wish to compile 3) run 'make' 4) wait while it compiles 5) find the kernel, bootloader, root filesystem, etc. in output/images You do not need to be root to build or run buildroot. Have fun! Buildroot comes with a basic configuration for a number of boards. Run 'make list-defconfigs' to view the list of provided configurations. Please feed suggestions, bug reports, insults, and bribes back to the buildroot mailing list: buildroot@buildroot.org You can also find us on #buildroot on OFTC IRC. If you would like to contribute patches, please read https://buildroot.org/manual.html#submitting-patches