Skip site navigation (1)Skip section navigation (2)
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>