[PATCH] D51167: [Pipeliner] Fix incorrect phi values in the epilog and kernel

Brendon Cahoon via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Aug 23 08:49:26 PDT 2018


bcahoon created this revision.
bcahoon added reviewers: sgundapa, pranavb.
Herald added subscribers: llvm-commits, hiraditya.

The code that generates the loop definition operand for phis in the epilog and kernel is incorrect in some cases.

In the kernel, when a phi refers to another phi, the code that updates PhiOp2 needs to include the stage difference between the two phis.

In the epilog, the check for using the loop definition instead of the phi definition uses the StageDiffAdj value (the difference between the phi stage and the loop definition stage), but the adjustment is not needed to determine if the current stage contains an iteration with the loop definition.


Repository:
  rL LLVM

https://reviews.llvm.org/D51167

Files:
  llvm/lib/CodeGen/MachinePipeliner.cpp
  llvm/test/CodeGen/Hexagon/swp-epilog-phi11.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D51167.162191.patch
Type: text/x-patch
Size: 5348 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180823/9b9c840b/attachment.bin>


More information about the llvm-commits mailing list