efriedma added inline comments.

================
Comment at: clang/lib/CodeGen/CGBuiltin.cpp:8047
+    Value *PFalse = Constant::getNullValue(PTrue->getType());
+    Value *Sel = Builder.CreateSelect(CmpNE, PTrue, PFalse);
+    return EmitSVEPredicateCast(Sel, cast<llvm::ScalableVectorType>(Ty));
----------------
sdesmalen wrote:
> efriedma wrote:
> > The select might not be the best approach. I mean, it's semantically 
> > correct, but the backend currently doesn't know how to lower a select like 
> > that.  And even if it did, it's probably better to avoid generating it for 
> > now.
> > 
> > Maybe this should use whilelo directly, since that's what the backend would 
> > eventually use anyway.
> > but the backend currently doesn't know how to lower a select like that
> Yes I noticed, that was the reason for D79356 (added as parent revision)
> 
> > And even if it did, it's probably better to avoid generating it for now.
> Is that because there are common optimisations on the select? I thought it 
> would be safe to use the 'full vector' form of `select` where the predicate 
> is a scalar (and both operands are splats)
Yes, the idea would just be to avoid common optimizations.  Maybe there aren't 
that many vector optimizations on a select with a scalar condition, though.  If 
it isn't blowing up, I guess it's fine.


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

https://reviews.llvm.org/D79357



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to