[PATCH] D77202: [Target][ARM] Fold or(A, B) more aggressively for I1 Vectors

Dave Green via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 1 03:54:01 PDT 2020


dmgreen added a comment.

The code that already exists in the function you are changing is essentially already doing the same thing as you add here, just in a more constrained set of circumstances. It is saying that if the operands are obviously invertable, then the VPNOT will be really free and we can go ahead and invert the and to an or. The question is if that is true for all cases or not. For the test cases you have here it is true that the operands are easily invertable, but that won't be true for everything.

With VPT blocks the NOT's will also be free in a lot of cases, but again not all and it's difficult to see where in practice it would be better.

I think that we should either always be doing this, or doing this when the operands are (recursively) freely invertable. I'm not sure which will be better in practice.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D77202





More information about the llvm-commits mailing list