nikic added a comment.

Can you please drop all wasm related tests and instead add an InstCombine test 
for the fsh+and pattern?

It would also be good to have a test where we can fold one side to a constant, 
but that constant is not zero. We should then consider whether that is 
profitable or not. (In that case we can't reduce to a simple shift and will 
reduce to a shift and or with constant instead -- is that better or worse than 
a rotate?)



================
Comment at: llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp:933
+                                    Depth + 1)))
+            return I;
+        }
----------------
Calling SimplifyDemandedBits() for the case of known demanded bits is a bit 
odd, I'd probably write something like this instead:
```
KnownBits LHSKnown = computeKnownBits(I->getOperand(0), Depth + 1, I);
if (DemandedMaskLHS.isSubsetOf(LHSKnown.Zero | LHSKnown.One)) {
  replaceOperand(I, 0, Constant::getIntegerValue(VTy, LHSKnown.One);
  return &I;
}
KnownBits RHSKnown = computeKnownBits(I->getOperand(1), Depth + 1, I);
if (DemandedMaskRHS.isSubsetOf(LHSKnown.Zero | RHSKnown.One)) {
  replaceOperand(I, 1, Constant::getIntegerValue(VTy, RHSKnown.One);
  return &I;
}
```


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D150670

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to