[PATCH] D106261: [ARM][LowOverheadLoops] Allow unpredicated VORRs if the operand def produces zeroed false lanes

Sam Tebbs via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Jul 19 03:44:30 PDT 2021


samtebbs created this revision.
samtebbs added reviewers: dmgreen, SjoerdMeijer, NickGuy.
Herald added subscribers: danielkiss, hiraditya, kristof.beyls.
samtebbs requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

  A VORR of the form $qX = VORR $qY, $qY essentially just moves $qY into
  $qX but is currently not allowed in a tail-predicated loop.
  
  If the definition of $qY produces zeroed false lanes then we now
  consider the VORR to produce zeroed false lanes as well, since it
  doesn't modify the incoming lane values.
  
  This required modifying some existing tests that used a VORR of this
  format to test unpredicated instructions that defined a live-out.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D106261

Files:
  llvm/lib/Target/ARM/ARMLowOverheadLoops.cpp
  llvm/test/CodeGen/Thumb2/LowOverheadLoops/matrix.mir
  llvm/test/CodeGen/Thumb2/LowOverheadLoops/vctp-add-operand-liveout.mir
  llvm/test/CodeGen/Thumb2/LowOverheadLoops/vctp16-reduce.mir
  llvm/test/CodeGen/Thumb2/LowOverheadLoops/vorr-false-lanes-zero.mir
  llvm/test/CodeGen/Thumb2/LowOverheadLoops/wlstp.mir
  llvm/test/CodeGen/Thumb2/LowOverheadLoops/wrong-liveout-lsr-shift.mir
  llvm/test/CodeGen/Thumb2/LowOverheadLoops/wrong-vctp-opcode-liveout.mir
  llvm/test/CodeGen/Thumb2/LowOverheadLoops/wrong-vctp-operand-liveout.mir

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D106261.359733.patch
Type: text/x-patch
Size: 46197 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210719/e9c9ffe0/attachment-0001.bin>


More information about the llvm-commits mailing list