[PATCH] D12833: Combines pair of rotr/rotl with constant shifts into one instruction with combined shift
    Simon Pilgrim via Phabricator via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Mon Jul  3 13:36:05 PDT 2017
    
    
  
RKSimon added a reviewer: RKSimon.
RKSimon added a comment.
In https://reviews.llvm.org/D12833#798373, @delena wrote:
> I suggest to submit the test first to show the current code. It will let us to see the optimization.
+1
================
Comment at: lib/CodeGen/SelectionDAG/DAGCombiner.cpp:5280
+      return DAG.getNode(N->getOpcode(), dl, VT, N0, NewOp1);
   }
+  unsigned NextOp = N0.getOpcode();
----------------
You can do all of the above as a NFC pre-commit and simplify this patch
================
Comment at: lib/CodeGen/SelectionDAG/DAGCombiner.cpp:5284
+  // fold (rot* (rot* x, c2), c1) -> (rot* x, c1 +- c2 % bitsize)
+  if (ConstantSDNode *C1 = getAsNonOpaqueConstant(N1))
+    if (NextOp == ISD::ROTL || NextOp == ISD::ROTR)
----------------
Ideally you should replace these with isConstantOrConstantVector calls to support vector rotates.
https://reviews.llvm.org/D12833
    
    
More information about the llvm-commits
mailing list