[all-commits] [llvm/llvm-project] fd2737: [ARM] MVE VPT block tests with debug info. NFC

David Green via All-commits all-commits at lists.llvm.org
Fri Jun 25 20:21:00 PDT 2021


  Branch: refs/heads/release/12.x
  Home:   https://github.com/llvm/llvm-project
  Commit: fd27379463917761a5e6135cfdb0b2d163a72ee3
      https://github.com/llvm/llvm-project/commit/fd27379463917761a5e6135cfdb0b2d163a72ee3
  Author: David Green <david.green at arm.com>
  Date:   2021-06-25 (Fri, 25 Jun 2021)

  Changed paths:
    A llvm/test/CodeGen/Thumb2/mve-vpt-block-debug.mir

  Log Message:
  -----------
  [ARM] MVE VPT block tests with debug info. NFC


  Commit: c7381b628d63b4423617163ee1116e64f49d2265
      https://github.com/llvm/llvm-project/commit/c7381b628d63b4423617163ee1116e64f49d2265
  Author: David Green <david.green at arm.com>
  Date:   2021-06-25 (Fri, 25 Jun 2021)

  Changed paths:
    M llvm/lib/Target/ARM/MVEVPTBlockPass.cpp
    M llvm/test/CodeGen/Thumb2/mve-vpt-block-debug.mir

  Log Message:
  -----------
  [ARM] Skip debug during vpt block creation

Debug info is currently preventing VPT block creation, leading to
different codegen. This patch attempts to skip any debug instructions
during vpt block creation, making sure they do not interfere.

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


  Commit: a3543fd9d47054596fed913b8ddc68285200c821
      https://github.com/llvm/llvm-project/commit/a3543fd9d47054596fed913b8ddc68285200c821
  Author: Victor Campos <victor.campos at arm.com>
  Date:   2021-06-25 (Fri, 25 Jun 2021)

  Changed paths:
    M llvm/lib/Target/ARM/ARMLowOverheadLoops.cpp
    A llvm/test/CodeGen/Thumb2/LowOverheadLoops/skip-vpt-debug.mir

  Log Message:
  -----------
  [ARM] Handle debug instrs in ARM Low Overhead Loop pass

In function ConvertVPTBlocks(), it is assumed that every instruction
within a vector-predicated block is predicated. This is false for debug
instructions, used by LLVM.

Because of this, an assertion failure is reached when an input contains
debug instructions inside VPT blocks. In non-assert builds, an out of
bounds memory access took place.

The present patch properly covers the case of debug instructions.

Reviewed By: dmgreen

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


  Commit: 0f3fec4618e40f54ec2a042cb603cdedd253312c
      https://github.com/llvm/llvm-project/commit/0f3fec4618e40f54ec2a042cb603cdedd253312c
  Author: David Green <david.green at arm.com>
  Date:   2021-06-25 (Fri, 25 Jun 2021)

  Changed paths:
    M llvm/lib/Target/ARM/MVEGatherScatterLowering.cpp
    M llvm/test/CodeGen/Thumb2/mve-gather-optimisation-deep.ll

  Log Message:
  -----------
  [ARM] Guard against loop variant gather ptr operands

This ensures that the operands of any gather/scatter instructions that
we attempt to push out of the loop are invariant, preventing invalid IR
from being generated.


  Commit: e2e2057132c1360d014235a087d4f678efc56420
      https://github.com/llvm/llvm-project/commit/e2e2057132c1360d014235a087d4f678efc56420
  Author: David Green <david.green at arm.com>
  Date:   2021-06-25 (Fri, 25 Jun 2021)

  Changed paths:
    M llvm/lib/Target/ARM/MVETailPredication.cpp
    A llvm/test/CodeGen/Thumb2/mve-tailpred-loopinvariant.ll

  Log Message:
  -----------
  [ARM] Ensure loop invariant active.lane.mask operands

CGP can move instructions like a ptrtoint into a loop, but the
MVETailPredication when converting them will currently assume invariant
trip counts. This tries to ensure the operands are loop invariant, and
bails if not.

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


  Commit: 1a8f0b969c4e77e32fe88b9e5de257fe96a3307d
      https://github.com/llvm/llvm-project/commit/1a8f0b969c4e77e32fe88b9e5de257fe96a3307d
  Author: David Green <david.green at arm.com>
  Date:   2021-06-25 (Fri, 25 Jun 2021)

  Changed paths:
    M llvm/test/CodeGen/Thumb2/LowOverheadLoops/cond-vector-reduce-mve-codegen.ll
    M llvm/test/CodeGen/Thumb2/LowOverheadLoops/extending-loads.ll
    M llvm/test/CodeGen/Thumb2/LowOverheadLoops/fast-fp-loops.ll
    M llvm/test/CodeGen/Thumb2/LowOverheadLoops/mve-tail-data-types.ll
    M llvm/test/CodeGen/Thumb2/LowOverheadLoops/nested.ll
    M llvm/test/CodeGen/Thumb2/LowOverheadLoops/reductions.ll
    M llvm/test/CodeGen/Thumb2/LowOverheadLoops/tail-pred-basic.ll
    M llvm/test/CodeGen/Thumb2/LowOverheadLoops/tail-pred-const.ll
    M llvm/test/CodeGen/Thumb2/LowOverheadLoops/tail-pred-disabled-in-loloops.ll
    M llvm/test/CodeGen/Thumb2/LowOverheadLoops/tail-pred-intrinsic-add-sat.ll
    M llvm/test/CodeGen/Thumb2/LowOverheadLoops/tail-pred-intrinsic-fabs.ll
    M llvm/test/CodeGen/Thumb2/LowOverheadLoops/tail-pred-intrinsic-round.ll
    M llvm/test/CodeGen/Thumb2/LowOverheadLoops/tail-pred-intrinsic-sub-sat.ll
    M llvm/test/CodeGen/Thumb2/LowOverheadLoops/tail-pred-reduce.ll
    M llvm/test/CodeGen/Thumb2/LowOverheadLoops/tail-pred-widen.ll
    M llvm/test/CodeGen/Thumb2/LowOverheadLoops/varying-outer-2d-reduction.ll
    M llvm/test/CodeGen/Thumb2/LowOverheadLoops/vector-arith-codegen.ll
    M llvm/test/CodeGen/Thumb2/LowOverheadLoops/vector-reduce-mve-tail.ll
    M llvm/test/CodeGen/Thumb2/mve-fma-loops.ll
    M llvm/test/CodeGen/Thumb2/mve-gather-increment.ll
    M llvm/test/CodeGen/Thumb2/mve-gather-optimisation-deep.ll
    M llvm/test/CodeGen/Thumb2/mve-gather-scatter-optimisation.ll
    M llvm/test/CodeGen/Thumb2/mve-vecreduce-loops.ll

  Log Message:
  -----------
  [ARM] Clean up some tests, removing dead instructions. NFC


  Commit: f83afe6ae9613512bd8f30090d8c287292b55dcd
      https://github.com/llvm/llvm-project/commit/f83afe6ae9613512bd8f30090d8c287292b55dcd
  Author: David Green <david.green at arm.com>
  Date:   2021-06-25 (Fri, 25 Jun 2021)

  Changed paths:
    M llvm/lib/Target/ARM/MVEGatherScatterLowering.cpp
    M llvm/test/CodeGen/Thumb2/LowOverheadLoops/remat-vctp.ll
    M llvm/test/CodeGen/Thumb2/lsll0.ll
    M llvm/test/CodeGen/Thumb2/mve-gather-scatter-optimisation.ll
    A llvm/test/CodeGen/Thumb2/mve-gather-unused.ll
    M llvm/test/CodeGen/Thumb2/mve-phireg.ll
    M llvm/test/CodeGen/Thumb2/mve-pred-xor.ll
    M llvm/test/CodeGen/Thumb2/mve-selectcc.ll
    M llvm/test/CodeGen/Thumb2/mve-vqdmulh.ll

  Log Message:
  -----------
  [ARM] Ensure instructions are simplified prior to GatherScatter lowering.

Surprisingly, not all instructions are always simplified after unrolling
and before MVE gather/scatter lowering. Notably dead gather operations
can be left around which cause the gather/scatter lowering pass to crash
if there are multiple gathers, some of which are dead.

This patch ensures they are simplified before we modify anything, which
can change some of the existing tests, including making them no-longer
test what they originally tested. This uses a combination of disabling
the gather/scatter lowering pass and adjusting the test to keep them as
before.

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


  Commit: d29ae443aa4028ca9cc274cd1496f7d80f34a38a
      https://github.com/llvm/llvm-project/commit/d29ae443aa4028ca9cc274cd1496f7d80f34a38a
  Author: David Green <david.green at arm.com>
  Date:   2021-06-25 (Fri, 25 Jun 2021)

  Changed paths:
    M llvm/lib/Target/ARM/MVEGatherScatterLowering.cpp

  Log Message:
  -----------
  [ARM] Fix Changed status in MVEGatherScatterLoweringPass.

Now that we are calling SimplifyInstructionsInBlock, make sure we update
Changed when it reports alterations.


  Commit: b7c7b42db1d16c4cab595bf53c62a70a6a505e0e
      https://github.com/llvm/llvm-project/commit/b7c7b42db1d16c4cab595bf53c62a70a6a505e0e
  Author: David Green <david.green at arm.com>
  Date:   2021-06-25 (Fri, 25 Jun 2021)

  Changed paths:
    M llvm/lib/Target/ARM/ARMBlockPlacement.cpp
    M llvm/test/CodeGen/Thumb2/block-placement.mir

  Log Message:
  -----------
  [ARM] Use just ARM::t2B in ARMBlockPlacementPass

The ARMConstantIsland pass will convert any t2B to tB if they are within
range after it has added or moved any constant pools. They don't need to
be deliberately converted beforehand, and it doesn't deal with needing
to convert tB to t2B very well.


Compare: https://github.com/llvm/llvm-project/compare/07234c7d6bc2...b7c7b42db1d1


More information about the All-commits mailing list