[all-commits] [llvm/llvm-project] 1a3428: [NFC][Reassociate] Add patterns where `or` is part...

Roman Lebedev via All-commits all-commits at lists.llvm.org
Wed Nov 18 06:55:48 PST 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 1a3428163d97d7322e330d518d017fee80240e69
      https://github.com/llvm/llvm-project/commit/1a3428163d97d7322e330d518d017fee80240e69
  Author: Roman Lebedev <lebedev.ri at gmail.com>
  Date:   2020-11-18 (Wed, 18 Nov 2020)

  Changed paths:
    A llvm/test/Transforms/Reassociate/load-combine-like-or.ll

  Log Message:
  -----------
  [NFC][Reassociate] Add patterns where `or` is part of load reduction idiom

As Wei Mi is reporting in post-commit review:
  https://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20201116/853479.html
teaching -reassociate about add-like-or's (70472f3) results in breaking apart
load widening patterns, and reassociating them.

While that's great, it prevents the actual load widening in backend,
and that is not good. We should have load widening in middle-end,
but for now we should at least not regress the naive patterns..


  Commit: 34ff90ad5d7d17a464bff9abbad70229c693a551
      https://github.com/llvm/llvm-project/commit/34ff90ad5d7d17a464bff9abbad70229c693a551
  Author: Roman Lebedev <lebedev.ri at gmail.com>
  Date:   2020-11-18 (Wed, 18 Nov 2020)

  Changed paths:
    M llvm/lib/Transforms/Scalar/Reassociate.cpp
    M llvm/test/Transforms/Reassociate/load-combine-like-or.ll

  Log Message:
  -----------
  [Reassociate] Don't convert add-like-or's into add's if they appear to be part of load-combining idiom

As Wei Mi is reporting in post-commit review
  https://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20201116/853479.html
teaching -reassociate about add-like-or's (70472f3) results in breaking apart
load widening patterns, and reassociating them.

For now, simply exclude any such `or` that appears to be a root of
load widening idiom from the or->add transformation.

Note that the heuristic is greedy, it doesn't ensure that loads
can *actually* be widened into a single load.


Compare: https://github.com/llvm/llvm-project/compare/bd4662cd3f37...34ff90ad5d7d


More information about the All-commits mailing list