[all-commits] [llvm/llvm-project] 995d40: [InstCombine] reduce mul operands based on undeman...

Sanjay Patel via All-commits all-commits at lists.llvm.org
Thu Feb 10 05:11:56 PST 2022

  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 995d400f3a3c3d47bad95551dad104f686c46305
  Author: Sanjay Patel <spatel at rotateright.com>
  Date:   2022-02-10 (Thu, 10 Feb 2022)

  Changed paths:
    M llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp
    M llvm/test/Transforms/InstCombine/and-or.ll
    M llvm/test/Transforms/InstCombine/icmp-mul-and.ll
    M llvm/test/Transforms/InstCombine/mul-inseltpoison.ll
    M llvm/test/Transforms/InstCombine/mul.ll

  Log Message:
  [InstCombine] reduce mul operands based on undemanded high bits

We already do this in SDAG, but mul was left out of the fold
for unused high bits in IR.

The high bits of a mul's operands do not change the low bits
of the result:

Verify some test diffs to confirm that they are correct:

This gets a fold that was presumed not possible in D114272:

Removing nsw/nuw is needed for general correctness (and is
also done in the codegen version), but we might be able to
recover more of those with better analysis.

Differential Revision: https://reviews.llvm.org/D119369

More information about the All-commits mailing list