[all-commits] [llvm/llvm-project] 282939: [ARM] Revert WLSTP to DLSTP if the target block is...

David Green via All-commits all-commits at lists.llvm.org
Mon Aug 2 03:00:15 PDT 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 28293918409dd3a5aa1aefa3342e50e099814cab
      https://github.com/llvm/llvm-project/commit/28293918409dd3a5aa1aefa3342e50e099814cab
  Author: David Green <david.green at arm.com>
  Date:   2021-08-02 (Mon, 02 Aug 2021)

  Changed paths:
    M llvm/lib/Target/ARM/ARMBlockPlacement.cpp
    M llvm/test/CodeGen/Thumb2/mve-memtp-branch.ll
    M llvm/test/CodeGen/Thumb2/mve-memtp-loop.ll
    M llvm/test/CodeGen/Thumb2/mve-wls-block-placement.mir

  Log Message:
  -----------
  [ARM] Revert WLSTP to DLSTP if the target block is out of range

If the block target for a WLSTP instruction is known to be out of range,
and cannot be fixed by the ARMBlockPlacementPass, we can relax it to a
DLSTP (and cmp/branch) to still allow the creation of tail predicated
loops. That is what this patch does, adding extra revert code to the
fallback path of ARMBlockPlacementPass.

Due to the code produced when reverting, this creates a DLSTP between a
Bcc and a Br. As a DLS isn't necessarily a terminator we need to split
the block to move the DLS/Br into.

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




More information about the All-commits mailing list