This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RFA: vectorizer patches 2/2: reduction splitting


It's nice to use the processors vector arithmetic to good effect, but it's all for naught when there are too many moves from/to general registers cluttering up the loop. With a double-vector reduction variable, the standard final reduction code got so awkward that the register allocator decided that the reduction variable must live in general purpose
registers, not only after the loop, but across the loop patch.
Splitting the reduction to force the first step to be done as a vector operation
seemed the obvious solution. The hook was called, but the vectorizer still
generated the vanilla final reduction code. It turns out that the reduction splitting
was calculated, but the result not used, and the calculation started anew.

The attached patch fixes this.

bootstrapped and regression tested on x86_64-pc-linux-gnu .

Attachment: reduction-split-patch-266008.txt
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]