https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77438
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |missed-optimization Status|UNCONFIRMED |NEW Last reconfirmed| |2016-09-01 Version|4.8.4 |6.2.1 Ever confirmed|0 |1 --- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- For using the vector extension vector lowering is faced with the backend claiming that v8qi is not supported thus it uses generic integers to implement vector support (better than doing it component-wise). Note that the args are still passed in SSE registers (or MMX regs with SSE disabled but MMX enabled). I belive that's on purpose because the compiler cannot introduce MMX usage because of the overlap with the x87 register stack. Thus indeed - do not use MMX. I believe there is no attempt being made to improve code generation for the (obsolete) MMX CPU feature. For vector lowering instead of falling back to integer ops support we can also fall back to using a larger vector size (maybe controlled by a target hook). Vector lowering would need to fill the excess elements with proper values of course (not zero in case it is used in a division for example).