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: [email protected]
ReportedBy: [email protected]
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.