[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