[Bug 1449116] [NEW] [Ubuntu 15.10] gcc 4.9: Improve vector performance by removing unnecessary swap operations
Launchpad Bug Tracker
1449116 at bugs.launchpad.net
Sat May 23 01:23:09 UTC 2015
You have been subscribed to a public bug:
For vector memory operations, GCC generates less efficient code for
little endian POWER than for big endian POWER. This is because the VSX
vector loads and stores (lxvd2x, stxvd2x, lxvw4x, stxvw4x) assume a
vector register element ordering where the lowest-numbered element
resides in the most significant portion of the register. That is, they
operate according to a big-endian element ordering no matter what endian
mode the machine is running in. To generate correct code regardless of
this, GCC will generate a lxvd2x/xxswapd pair of instructions for each
load, and an xxswapd/stxvd2x pair of instructions for each store. The
extra xxswapd instructions force the vector elements into the proper
lanes, but at a cost in performance.
In August 2014, I added a pass to GCC that removes the extra swap
operations when they are not necessary for correctness. This greatly
improves vector performance for ppc64el. This optimization can be done
for computations where all of the vector operations are "lane-
insenstive"; that is, they don't care which lanes the computations are
performed in, so long as values are stored back to memory in the correct
order.
To take advantage of this improved performance, I've backported the swap
optimization pass to GCC 4.9 in revision r221691. I would like to
request that this patch be applied to the next service pack for each
Ubuntu release that uses GCC 4.9. (I believe this includes 14.10 and
15.04.) I realize it is too late to get this into the 15.04 base
release.
** Affects: gcc-4.9 (Ubuntu)
Importance: Undecided
Status: New
** Tags: architecture-ppc64le bot-comment bugnameltc-123272 severity-medium targetmilestone-inin1510
--
[Ubuntu 15.10] gcc 4.9: Improve vector performance by removing unnecessary swap operations
https://bugs.launchpad.net/bugs/1449116
You received this bug notification because you are a member of Ubuntu Foundations Bugs, which is subscribed to gcc-4.9 in Ubuntu.
More information about the foundations-bugs
mailing list