[all-commits] [llvm/llvm-project] b75f9c: [FLANG] Support all arrays for LoopVersioning

Mats Petersson via All-commits all-commits at lists.llvm.org
Tue May 30 10:55:04 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: b75f9ce3fe861473e36ea6715d82b6954ea2b815
      https://github.com/llvm/llvm-project/commit/b75f9ce3fe861473e36ea6715d82b6954ea2b815
  Author: Mats Petersson <mats.petersson at arm.com>
  Date:   2023-05-30 (Tue, 30 May 2023)

  Changed paths:
    M flang/lib/Optimizer/Transforms/LoopVersioning.cpp
    M flang/test/Transforms/loop-versioning.fir

  Log Message:
  -----------
  [FLANG] Support all arrays for LoopVersioning

This patch makes more than 2D arrays work, with a fix for the way that
loop index is calculated. Removing the restriction of number of
dimensions.

This also changes the way that the actual index is calculated, such that
the stride is used rather than the extent of the previous dimension. Some
tests failed without fixing this - this was likely a latent bug in the
2D version too, but found in a test using 3D arrays, so wouldn't
have been found with 2D only. This introduces a division on the index
calculation - however it should be a nice and constant value allowing
a shift to be used to actually divide - or otherwise removed by using
other methods to calculate the result. In analysing code generated with
optimisation at -O3, there are no divides produced.

Some minor refactoring to avoid repeatedly asking for the "rank" of the
array being worked on.

This improves some of the SPEC-2017 ROMS code, in the same way as the
limited 2D array improvements - less overhead spent calculating array
indices in the inner-most loop and better use of vector-instructions.

Reviewed By: kiranchandramohan

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




More information about the All-commits mailing list