[PATCH] D87826: [ARM] Enable multiple icmp when tail folding

Dave Green via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 21 00:22:35 PDT 2020


dmgreen added a comment.

In D87826#2281286 <https://reviews.llvm.org/D87826#2281286>, @samparker wrote:

>> original was only a single loop?
>
> Do you mean a single block loop? If so, I thought the the vectorizer would perform if-conversion after calling this? And for saturation, does the vectorizer not yet consume saturating intrinsics? Are all of ours ones that merge/retain previous values, maybe their idiom could be checked for?

Yeah sorry. Single block loops. So there should be no ifconversion, and we will only be dealing with icmp+select. That will keep things simpler - less complex loop structures to worry about.

There are many forms of saturating instructions. In this case I was just talking about something that does min(max(x, -128), 127) or an i16, for example. We turn that into a vqmovn in the backend, with some bitcasts for the types. I had presumed that the "n" in there would be a problem, but they look like they are marked as valid of tail pred, even if they do change size.

It is still probably worth checking some examples, to make sure they are still doing as well with this change.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D87826/new/

https://reviews.llvm.org/D87826



More information about the llvm-commits mailing list