[PATCH] D63829: [InstCombine] Shift amount reassociation in bittest (PR42399)

Sanjay Patel via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sun Jun 30 07:09:39 PDT 2019


spatel added inline comments.


================
Comment at: lib/Transforms/InstCombine/InstCombineCompares.cpp:3267-3277
+  if (!match(
+          &I,
+          m_ICmp(Pred,
+                 m_OneUse(m_c_And(
+                     m_OneUse(m_CombineAnd(
+                         m_LogicalShift(m_Value(X), m_Value(XShAmt)),
+                         m_Value(XShift))),
----------------
spatel wrote:
> This would be easier to read for me if we did the simple icmp checks first:
>   if (!I.isEquality() || !match(I.getOperand(1), m_Zero()))
>     return nullptr;
> 
> And then do a mega-match on only I.getOperand(0).
> 
> ...although that match raises a question if the one-use checks are balanced:
> Do we prefer to shift left or right?
> https://rise4fun.com/Alive/
>   %t0 = lshr i32 %x, 2
>   %t1 = and i32 %t0, %y
>   %t3 = icmp ne i32 %t1, 0
>     =>
>   %v0 = shl i32 %y, 2
>   %v1 = and i32 %v0, %x
>   %t3 = icmp ne i32 %v1, 0
Incomplete Alive link in previous comment:
https://rise4fun.com/Alive/9Kp


Repository:
  rL LLVM

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

https://reviews.llvm.org/D63829





More information about the llvm-commits mailing list