[all-commits] [llvm/llvm-project] 44977a: Add tests for binops with conditions/assume constr...

goldsteinn via All-commits all-commits at lists.llvm.org
Fri Jan 27 15:50:42 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 44977a155f24be3cdbcd2a57acbfd6da2529abde
      https://github.com/llvm/llvm-project/commit/44977a155f24be3cdbcd2a57acbfd6da2529abde
  Author: Noah Goldstein <goldstein.w.n at gmail.com>
  Date:   2023-01-27 (Fri, 27 Jan 2023)

  Changed paths:
    A llvm/test/Transforms/InstCombine/icmp-binop.ll

  Log Message:
  -----------
  Add tests for binops with conditions/assume constraints

Reviewed By: nikic

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


  Commit: aa250ceb3ff15d55bb506b4bc8196f143133d8b5
      https://github.com/llvm/llvm-project/commit/aa250ceb3ff15d55bb506b4bc8196f143133d8b5
  Author: Noah Goldstein <goldstein.w.n at gmail.com>
  Date:   2023-01-27 (Fri, 27 Jan 2023)

  Changed paths:
    M llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
    M llvm/test/Transforms/InstCombine/icmp-binop.ll
    M llvm/test/Transforms/InstCombine/pr38677.ll

  Log Message:
  -----------
  Add optimizations for icmp eq/ne (mul(X, Y), 0)

1. Add checks if X and/or Y are odd. The Odd values are unnecessary to
   the icmp: isZero(Odd * N) == isZero(N)

2. If neither X nor Y is known odd, then if X * Y cannot overflow AND
   if X and/or Y is non-zero, the non-zero values are unnecessary to the
   icmp.

Reviewed By: nikic

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


  Commit: 8c884655862ed2e4ca0f00de349387db77294c8b
      https://github.com/llvm/llvm-project/commit/8c884655862ed2e4ca0f00de349387db77294c8b
  Author: Noah Goldstein <goldstein.w.n at gmail.com>
  Date:   2023-01-27 (Fri, 27 Jan 2023)

  Changed paths:
    M llvm/test/Transforms/InstCombine/shift-logic.ll

  Log Message:
  -----------
  Add tests for reoredering (shift (add (shift x, C0), y), C1); NFC

Reviewed By: spatel

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


  Commit: edd80befeeb92000800ded2a6f3dcdfd672d95ea
      https://github.com/llvm/llvm-project/commit/edd80befeeb92000800ded2a6f3dcdfd672d95ea
  Author: Noah Goldstein <goldstein.w.n at gmail.com>
  Date:   2023-01-27 (Fri, 27 Jan 2023)

  Changed paths:
    M llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp
    M llvm/test/Transforms/InstCombine/shift-logic.ll

  Log Message:
  -----------
  Reorder (shl (add/sub (shl x, C0), y), C1) -> (add/sub (shl x, C0 + C1), (shl y, C1))

This is just expanding the existing pattern that exists for AND/XOR/OR
and gets a bit more parallelism in from the instruction sequence.

Alive2:
Add  - https://alive2.llvm.org/ce/z/dSmPkV
Sub1 - https://alive2.llvm.org/ce/z/6rpi5V
Sub2 - https://alive2.llvm.org/ce/z/UfYeUd

Reviewed By: spatel

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


Compare: https://github.com/llvm/llvm-project/compare/03d136cf5f3f...edd80befeeb9


More information about the All-commits mailing list