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 */