[PATCH] D46018: [GlobalISel][IRTranslator] Split aggregates during IR translation

Amara Emerson via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu May 10 16:35:27 PDT 2018


aemerson added a comment.

In https://reviews.llvm.org/D46018#1095200, @rtereshin wrote:

> Also, I looked briefly into https://bugs.llvm.org/show_bug.cgi?id=37397 recently, and I tried to apply this patch and see what it would do. It generated considerably more code (final assembly) comparing to itself and FastISel both (I'd eyeball the difference as 3x) and didn't seem to fix the issue with initializing upper bits of a boolean value.
>
> Generally, I feel concerned about the quality (runtime performance) of generated code with this approach.


My thoughts were that we'd take a compile time hit with this, although in the end it was mostly neutral, but the code size would regress as you saw. The idea was to have a pre-legalizer combiner (Aditya had a prototype demo of one to show how the combiner API would work). Either that, or we have a clean up phase at the end of IRTranslator where we eliminate G_INSERT and G_EXTRACT pairs, perhaps with some caching of potentially redundant sets of these instructions due to pack/unpack regs as translation is happening, and then a quick pass to eliminate them without searching the whole function.


Repository:
  rL LLVM

https://reviews.llvm.org/D46018





More information about the llvm-commits mailing list