[all-commits] [llvm/llvm-project] 9d720d: [LoadStoreVectorizer] Make aliasing check more pre...

Nikita Popov via All-commits all-commits at lists.llvm.org
Wed Sep 1 09:10:26 PDT 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 9d720dcb89e8da4d12aa1832d74614adc6aa2c82
      https://github.com/llvm/llvm-project/commit/9d720dcb89e8da4d12aa1832d74614adc6aa2c82
  Author: Nikita Popov <nikita.ppv at gmail.com>
  Date:   2021-09-01 (Wed, 01 Sep 2021)

  Changed paths:
    M llvm/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp
    M llvm/test/Transforms/LoadStoreVectorizer/int_sideeffect.ll

  Log Message:
  -----------
  [LoadStoreVectorizer] Make aliasing check more precise

The load store vectorizer currently uses isNoAlias() to determine
whether memory-accessing instructions should prevent vectorization.
However, this only works for loads and stores. Additionally, a
couple of intrinsics like assume are special-cased to be ignored.

Instead use getModRefInfo() to generically determine whether the
instruction accesses/modifies the relevant location. This will
automatically handle all inaccessiblememonly intrinsics correctly
(as well as other calls that don't modref for other reasons).
This requires generalizing the code a bit, as it was previously
only considering loads and stored in particular.

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




More information about the All-commits mailing list