http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56873
Bug #: 56873 Summary: vector shift lowered to scalars Classification: Unclassified Product: gcc Version: 4.9.0 Status: UNCONFIRMED Keywords: missed-optimization Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassig...@gcc.gnu.org ReportedBy: gli...@gcc.gnu.org Target: x86_64-linux-gnu #define SIZE 32 typedef long long veci __attribute__((vector_size(SIZE))); veci f(veci a, veci b){ return a>>b; } Compiling this with -O3 -mxop, the vector lowering pass gives scalar operations. However, if SIZE is either 16 or 64, I get vector shifts of size 16.