[PATCH] D121771: [RISCV] Add basic cost model for vector casting

Yeting Kuo via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 16 20:29:31 PDT 2022


fakepaper56 added inline comments.


================
Comment at: llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp:246
+      case ISD::UINT_TO_FP: {
+        auto Cost =
+            getCastInstrCost(Opcode, DstVTy->getElementType(),
----------------
craig.topper wrote:
> Is there any point in getting the scalar cost? Seems like its always 1 and doesn't have a real connection to how the vector ISA works.
> 
> I'm also questioning the accuracy of some of the scalar numbers. i8->float requires a pair of shifts to clear the upper bits before doing an iXLen->float conversion for example. So if we were to fix that, it would be wrong for vectors.
My point to use scalar cost is just it is simple to implement and enough to make vectorizer think vectorizing casting instructions is profitable in most cases.

I had written a version by vector instruction count. The logic is a little complex and I am not sure when to consider vsetvli and even lmul. I think maybe we should refine it to a table having some magic number like X86 and Arm, so I just provide the simple design now.  


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D121771



More information about the llvm-commits mailing list