[all-commits] [llvm/llvm-project] 069081: [ValueTracking] Add tests for more `isKnownToBeAPo...

goldsteinn via All-commits all-commits at lists.llvm.org
Wed Aug 9 12:45:49 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 0690817bccf6ea7b435bcc3e2cb08cfc56ae2823
      https://github.com/llvm/llvm-project/commit/0690817bccf6ea7b435bcc3e2cb08cfc56ae2823
  Author: Noah Goldstein <goldstein.w.n at gmail.com>
  Date:   2023-08-09 (Wed, 09 Aug 2023)

  Changed paths:
    M llvm/test/Analysis/ValueTracking/known-power-of-two.ll

  Log Message:
  -----------
  [ValueTracking] Add tests for more `isKnownToBeAPowerOfTwo` cases; NFC

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


  Commit: bab8058d3b00b341e74ce91dc84c2c73b0ceb261
      https://github.com/llvm/llvm-project/commit/bab8058d3b00b341e74ce91dc84c2c73b0ceb261
  Author: Noah Goldstein <goldstein.w.n at gmail.com>
  Date:   2023-08-09 (Wed, 09 Aug 2023)

  Changed paths:
    M llvm/lib/Analysis/ValueTracking.cpp
    M llvm/test/Analysis/ValueTracking/known-power-of-two.ll

  Log Message:
  -----------
  [ValueTracking] If `OrZero` is set, look through `trunc` in `isKnownToBePowerOfTwo`

Just move coverage.

Proof: https://alive2.llvm.org/ce/z/H37tVX

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


  Commit: 03b529a2a6ca685be6244b52232d1dae4f02c6a5
      https://github.com/llvm/llvm-project/commit/03b529a2a6ca685be6244b52232d1dae4f02c6a5
  Author: Noah Goldstein <goldstein.w.n at gmail.com>
  Date:   2023-08-09 (Wed, 09 Aug 2023)

  Changed paths:
    M llvm/lib/Analysis/ValueTracking.cpp

  Log Message:
  -----------
  [ValueTracking] Use switch for Intrinsics in `isKnownToBePowerOfTwo`; NFC

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


  Commit: 6f4d660d7faa8772bb6d6ad7329c6d6e305a6c4b
      https://github.com/llvm/llvm-project/commit/6f4d660d7faa8772bb6d6ad7329c6d6e305a6c4b
  Author: Noah Goldstein <goldstein.w.n at gmail.com>
  Date:   2023-08-09 (Wed, 09 Aug 2023)

  Changed paths:
    M llvm/lib/Analysis/ValueTracking.cpp
    M llvm/test/Analysis/ValueTracking/known-power-of-two.ll

  Log Message:
  -----------
  [ValueTracking] Add support for `bswap` and `bitreverse` in `isKnownToBeAPowerOfTwo`

Both of these intrinsics don't change the number of 1s/0s so we can
look directly through them.

Proofs: https://alive2.llvm.org/ce/z/gnZuwC

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


  Commit: 4f818daca64ccec5557c10a05186837cf9fcd0f7
      https://github.com/llvm/llvm-project/commit/4f818daca64ccec5557c10a05186837cf9fcd0f7
  Author: Noah Goldstein <goldstein.w.n at gmail.com>
  Date:   2023-08-09 (Wed, 09 Aug 2023)

  Changed paths:
    M llvm/lib/Analysis/ValueTracking.cpp
    M llvm/test/Analysis/ValueTracking/known-power-of-two.ll

  Log Message:
  -----------
  [ValueTracking] Add support for `fshl`/`fshr` in `isKnownToBeAPowerOfTwo`

If the funnel shifts are rotates (op0 == op1) then the number of 1s/0s
don't change so we can just look through op0/op1.

Proofs: https://alive2.llvm.org/ce/z/Pja5yu

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


  Commit: dff3d8a279c660694b50271523edbc98c3eb2ab6
      https://github.com/llvm/llvm-project/commit/dff3d8a279c660694b50271523edbc98c3eb2ab6
  Author: Noah Goldstein <goldstein.w.n at gmail.com>
  Date:   2023-08-09 (Wed, 09 Aug 2023)

  Changed paths:
    M llvm/lib/Analysis/ValueTracking.cpp
    M llvm/test/Analysis/ValueTracking/known-power-of-two.ll

  Log Message:
  -----------
  [ValueTracking] Add support for `mul` in `isKnownToBeAPowerOfTwo`

pow2 * pow2 is a power of 2 or zero.

Proof: https://alive2.llvm.org/ce/z/FNiiXd

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


  Commit: fbb40df2bff00f6653b087fa2fe25e0d60de2389
      https://github.com/llvm/llvm-project/commit/fbb40df2bff00f6653b087fa2fe25e0d60de2389
  Author: Noah Goldstein <goldstein.w.n at gmail.com>
  Date:   2023-08-09 (Wed, 09 Aug 2023)

  Changed paths:
    M llvm/lib/Analysis/ValueTracking.cpp
    M llvm/test/Analysis/ValueTracking/known-power-of-two.ll

  Log Message:
  -----------
  [ValueTracking] In `isKnownToBeAPowerOfTwo` an `i1` value is always true if `OrZero` is set

This is trivially true.

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


  Commit: 035aaae45cf42ed469e4cb60001307ecbeebd947
      https://github.com/llvm/llvm-project/commit/035aaae45cf42ed469e4cb60001307ecbeebd947
  Author: Noah Goldstein <goldstein.w.n at gmail.com>
  Date:   2023-08-09 (Wed, 09 Aug 2023)

  Changed paths:
    M llvm/lib/Analysis/ValueTracking.cpp

  Log Message:
  -----------
  [ValueTracking] Check likely to be canonicalized constant operands first in ; NFC

Checking operands that a likely to be canonicalized constants first makes sense
from a compile time perspective as it puts whats expected to be a cheaper check first.

Reviewed By: nikic

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


Compare: https://github.com/llvm/llvm-project/compare/d04494ccc913...035aaae45cf4


More information about the All-commits mailing list