Nice and simple, this adds ICmp to the list of instructions that we sink a splat to in a loop, allowing the register forms of instructions to be selected more. I have not handled FCmp yet as the results look a little odd, trying to keep the register in an float reg and having to move it to a GPR.
Details
Details
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
Comment Actions
Thanks. Turned out this wasn't quite as simple as I was thinking. First it broke tail predication, the new version here should fix that, it's just a case of what is considered "loop invariant".
The other thing is I still had D66580 applied when making this patch, and the tests don't look as good with it applied. Still fine in comparison, but we should really get back to that one.