http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50969
Bug #: 50969 Summary: 17% degradation in 168.wupwise for interleave via permutation Classification: Unclassified Product: gcc Version: 4.7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassig...@gcc.gnu.org ReportedBy: pthau...@gcc.gnu.org CC: berg...@gcc.gnu.org, r...@gcc.gnu.org Host: powerpc64-linux Target: powerpc64-linux Build: powerpc64-linux Created attachment 25694 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=25694 benchmark file Revision 180450 (along with 180567 to fix the ICE) causes a large degradation in cpu2000 benchmark wupwise. Additional loops are now being vectorized but result in worse performance, not sure it that means a cost issue or what. Based on prior observations the degradation is most likely due to the permute instructions being used which are restricted to a single VSU pipe, so two of them can't be executed in parallel. Attatched file zaxpy.f is just one of the files containing a function that degraded (zscal.f is another). The second loop is where the time is spent in the function. Following degradations (compared to revision 180449) were observed with oprofile. -m64 -O3 -mcpu=power7 zaxpy : -24% zscal : -79% -m64 -O3 -mcpu=power7 -funroll-loops zaxpy : -65% zscal : -61%