[PATCH] D49248: [TargetLowering] Add support for non-uniform vectors to BuildUDIV

Simon Pilgrim via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Jul 19 11:00:51 PDT 2018


RKSimon added inline comments.


================
Comment at: lib/CodeGen/SelectionDAG/TargetLowering.cpp:3567
+    if (VT.isVector()) {
+      Q = DAG.getVectorShuffle(VT, dl, Q, NPQ, ShuffleMask);
+      Created->push_back(Q.getNode());
----------------
efriedma wrote:
> I'm pretty sure this isn't the most efficient way to handle this case.  Would it be more efficient to use a variable-amount shift to compute NPQ, rather than shuffle afterwards?  Or is it possible to fudge the magic number to avoid the blend?
> 
> Please make sure you have test coverage for both UseNPQ=true and UseNPQ=false.
We do have full coverage for scalars and uniform vectors only - I'll try to add all the necessary non-uniform cases as well.


================
Comment at: test/CodeGen/X86/combine-udiv.ll:383
+; SSE-NEXT:    movdqa %xmm0, %xmm1
+; SSE-NEXT:    psrlw $2, %xmm1
+; SSE-NEXT:    pblendw {{.*#+}} xmm1 = xmm0[0,1,2,3,4],xmm1[5,6],xmm0[7]
----------------
efriedma wrote:
> I guess it's sort of orthogonal to this patch, but this should probably be using pmulhuw for the shift.
I raised this on PR38151 but haven't had time to get to it.


Repository:
  rL LLVM

https://reviews.llvm.org/D49248





More information about the llvm-commits mailing list