This is an archive of the discontinued LLVM Phabricator instance.

[ARM] Sink splat to ICmp
ClosedPublic

Authored by dmgreen on Dec 4 2019, 12:46 AM.

Details

Summary

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.

Diff Detail

Event Timeline

dmgreen created this revision.Dec 4 2019, 12:46 AM
Herald added a project: Restricted Project. · View Herald TranscriptDec 4 2019, 12:46 AM
This revision is now accepted and ready to land.Dec 4 2019, 2:29 AM

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.

dmgreen updated this revision to Diff 232737.Dec 8 2019, 8:51 AM
This revision was automatically updated to reflect the committed changes.