[PATCH] D97160: [DAGCombiner] Optimize SMULO/UMULO if we can prove that overflow is impossible.

Simon Pilgrim via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 24 03:14:32 PST 2021


RKSimon added inline comments.


================
Comment at: llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:4672
+      bool Overflow;
+      (void)N0Known.getMaxValue().umul_ov(N1Known.getMaxValue(), Overflow);
+      if (!Overflow)
----------------
Is it worth moving this to something like:
```
KnownBits KnownBits::umul_ov(const KnownBits &LHS,const KnownBits &RHS,llvm:Optional<bool> &Overflow)
```


================
Comment at: llvm/test/CodeGen/X86/xmulo.ll:11
+; CHECK-NEXT:    xorl %edx, %edx
 ; CHECK-NEXT:    retq
   %1 = call {i64, i1} @llvm.umul.with.overflow.i64(i64 9, i64 8)
----------------
craig.topper wrote:
> craig.topper wrote:
> > RKSimon wrote:
> > > Are we missing constant folding?
> > Looks like it. Doesn't look like we have it for ADDO either.
> Is that a blocker for this patch?
I've put very basic constant folding support in rG8082bfe7e58d89f6f065fab101db3481516afdbe


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D97160



More information about the llvm-commits mailing list