[PATCH] D83153: [DAGCombiner] Prevent regression in isMulAddWithConstProfitable
    Ben Shi via Phabricator via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Fri Jul  3 21:41:26 PDT 2020
    
    
  
benshi001 added a comment.
My patch at least generate better code x86, aarch64 and riscv.
For x86's test urem-seteq-nonzero.ll, less instructions are emitted.
For aarch64's test urem-seteq-nonzero.ll,
1. 2 cases have one more instruction emitted,
2. other 2 cases have one less instruction emitted,
3. other 9 cases have no change in instruction amount, but have madd replaced by mul.
Since madd has larger latency than mul, I think my change also makes aarch64 optimized.
There is not previous case for RISCV, but my changes also does  optimization for RISCV.
For example,
  %tmp0 = add i32 %x, 1971
  %tmp1 = mul i32 %tmp0, 19
The origin llvm generates,
  addi    a1, zero, 19
  mul     a0, a0, a1
  lui     a1, 9
  addi    a1, a1, 585
  add     a0, a0, a1
And my patch optimizes it to
  addi    a0, a0, 1971
  addi    a1, zero, 19
  mul     a0, a0, a1
Repository:
  rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D83153/new/
https://reviews.llvm.org/D83153
    
    
More information about the llvm-commits
mailing list