Date: Wed, 23 Oct 2013 19:42:46 +0200 From: Torbjorn Granlund <tg@gmplib.org> To: freebsd-questions@freebsd.org Subject: Re: MULX on haswell triggers ILLOP Message-ID: <867gd3lw89.fsf@shell.gmplib.org> In-Reply-To: <86wql4onvy.fsf@shell.gmplib.org> (Torbjorn Granlund's message of "Wed\, 23 Oct 2013 02\:02\:25 %2B0200") References: <86wql4onvy.fsf@shell.gmplib.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Torbjorn Granlund <tg@gmplib.org> writes: I have an Intel Haswell system which runs Xen/NetBSD with Debian 7.2, NetBSD 6.1.2 and FreeBSD 9.2 guests. =20=20 The FreeBSD guest casts an ILLOP when fed with the new MULX instruction. This is a plain integer register based instruction which should require zero kernel support. =20=20 MULX is part of the BMI2 extensions. =20=20 The instruction works fine in the other guest systems. =20=20 What is going on? How can FreeBSD reject this instruction? =20=20 I have not tried to run FreeBSD on the bare metal, so I cannot tell if BMI2 works as expected there. It turns out to be another strike of an FreeBSD m4 eval bug. http://www.freebsd.org/cgi/query-pr.cgi?pr=3D166994 Unfortunately, this means that GMP will not work on Haswell CPUs running FreeBSD, where we assemble unsupported instructions using m4 macros. That is a workaround for FreeBSD's seriously outdated binutils. Of course, we could implement a workaround for the m4 bug, but that workaround would be more complex than a bugfix for m4. My hopes that FreeBSD will fix this bug are not high, given that it has been known for 1.5 years. --=20 Torbj=C3=B6rn
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?867gd3lw89.fsf>