[Bug target/57623] BEXTR intrinsic has memory operands switched around (fails to compile code)

sgunderson at bigfoot dot com gcc-bugzilla@gcc.gnu.org
Sat Jun 15 17:01:00 GMT 2013


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57623

--- Comment #2 from sgunderson at bigfoot dot com ---
On Sat, Jun 15, 2013 at 04:33:14PM +0000, jakub at gcc dot gnu.org wrote:
> The fix for the compiler is easy, but at least the AVX2 spec documents that
> _bextr_u{32,64} intrinsics actually take 3 arguments (source, start and
> length),
> with the latter two always unsigned int, while our intrinsic has only two
> arguments (where the latter is expected to be (start & 255) | (length << 8)).
> Not sure if we want to change this, and if so, just for 4.9+, or also for
> 4.8.2+ and 4.7.4+?

If you decide to change it, at least consider keeping the old version around;
for instance, the start/length combination could come from a table. In
general, if you actually have to do shifting and stuff to create this
operand, the gain of the instruction is already lost.

/* Steinar */



More information about the Gcc-bugs mailing list