[PATCH] D104612: [CGP][RISCV] Teach CodeGenPrepare::optimizeSwitchInst to honor isSExtCheaperThanZExt.

Jessica Clarke via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Jun 23 12:00:32 PDT 2021


jrtc27 added inline comments.


================
Comment at: llvm/lib/CodeGen/CodeGenPrepare.cpp:7014-7016
+  // Some targets prefer SExt over ZExt, honor that.
+  if (TLI->isSExtCheaperThanZExt(OldVT, RegType))
+    ExtType = Instruction::SExt;
----------------
craig.topper wrote:
> jrtc27 wrote:
> > jrtc27 wrote:
> > > Do we not want to avoid this in the case this is a function argument that is already being zero-extended? i.e. something like:
> > > 
> > > ```
> > >   Instruction::CastOps ExtType = Instruction::CastOpsEnd;
> > >   if (auto *Arg = dyn_cast<Argument>(Cond)) {
> > >     if (Arg->hasSExtAttr())
> > >       ExtType = Instruction::SExt;
> > >     else if (Arg->hasZExtAttr())
> > >       ExtType = Instruction::ZExt;
> > >   }
> > >   if (ExtType == Instruction::CastOpsEnd) {
> > >     if (TLI->isSExtCheaperThanZExt(OldVT, RegType))
> > >       ExtType = Instruction::SExt;
> > >     else
> > >       ExtType = Instruction::ZExt;
> > >   }
> > > ```
> > > (slightly abusing CastOpsEnd as being one past the last valid op, and thus a sentinel, though you could write it in other ways too if you wanted)
> > > 
> > Or maybe the fact that sext is cheaper means the saving for each case's extending to match outweighs the cost of having to also extend the argument?
> It's a non-issue for RISCV since I don't think we ever create i32 zext arguments, but it would be more consistent. Could probably just do the isSExtCheaperThanZExt first and then check if it is an Argument after.
True, only i16 and i8, and those aren't so cheap to sext. Your suggestion is indeed the cleaner way to express the same thing, not sure how I missed that...


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D104612



More information about the llvm-commits mailing list