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

Dave Green via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 17 10:10:19 PDT 2020


dmgreen added a comment.

I have the feeling that this was protecting us from more than just things that would become vpt blocks. I think we have a check that the original was only a single loop? That would keep things simpler at least, to mostly icmp + select (and maybe zext(icmp), but as far as I understand that should be fine). Things like min/max/abs should all work OK, and select on their own. But what about the saturating intrinsics we have? vqmovn for example.



================
Comment at: llvm/lib/Target/ARM/ARMTargetTransformInfo.cpp:1592
+static bool canTailPredicateInstruction(Instruction &I) {
   if (isa<FCmpInst>(&I))
     return false;
----------------
Fcmp too, I would expect could be treated the same way as icmp.


================
Comment at: llvm/test/Transforms/LoopVectorize/ARM/tail-folding-not-allowed.ll:572
 
 define i32 @i32_smin_reduction(i32* nocapture readonly %x, i32 %n) #0 {
 ; CHECK-LABEL: @i32_smin_reduction(
----------------
Apparently we have two files for these, and they should now maybe belong in tail-folding-allowed.ll


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