1. Jan 21, 2021
    • Diego Caballero's avatar
      [mlir][Affine] Add support for multi-store producer fusion · 7dd19885
      Diego Caballero authored
      This patch adds support for producer-consumer fusion scenarios with
      multiple producer stores to the AffineLoopFusion pass. The patch
      introduces some changes to the producer-consumer algorithm, including:
      
      * For a given consumer loop, producer-consumer fusion iterates over its
      producer candidates until a fixed point is reached.
      
      * Producer candidates are gathered beforehand for each iteration of the
      consumer loop and visited in reverse program order (not strictly guaranteed)
      to maximize the number of loops fused per iteration.
      
      In general, these changes were needed to simplify the multi-store producer
      support and remove some of the workarounds that were introduced in the past
      to support more fusion cases under the single-store producer limitation.
      
      This patch also preserves the existing functionality of AffineLoopFusion with
      one minor change in behavior. Producer-consumer fusion didn't fuse scenarios
      with escaping memrefs and multiple outgoing edges (from a single store).
      Multi-store producer scenarios will usually (always?) have multiple outgoing
      edges so we couldn't fuse any with escaping memrefs, which would greatly limit
      the applicability of this new feature. Therefore, the patch enables fusion for
      these scenarios. Please, see modified tests for specific details.
      
      Reviewed By: andydavis1, bondhugula
      
      Differential Revision: https://reviews.llvm.org/D92876
      7dd19885
    • Shilei Tian's avatar
      [OpenMP][NVPTX] Replaced CUDA builtin vars with LLVM intrinsics · fd70f70d
      Shilei Tian authored
      Replaced CUDA builtin vars with LLVM intrinsics such that we don't need
      definitions of those intrinsics.
      
      Reviewed By: JonChesterfield
      
      Differential Revision: https://reviews.llvm.org/D95013
      fd70f70d
    • Sameer Sahasrabuddhe's avatar
      [AMDGPU] pin lit test divergent-unswitch.ll to the old pass manager · c540ce99
      Sameer Sahasrabuddhe authored
      The loop-unswitch transform should not be performed on a loop whose
      condition is divergent. For this to happen correctly, divergence
      analysis must be available. The existing divergence analysis has not
      been ported to the new pass manager yet. As a result, loop unswitching
      on the new pass manager is currently unsafe on targets that care about
      divergence.
      
      This test is temporarily disabled to unblock work on the new pass
      manager. The issue is now tracked in bug 48819.
      
      Reviewed By: foad
      
      Differential Revision: https://reviews.llvm.org/D95051
      c540ce99
    • Sanjay Patel's avatar
      [SLP] reduce reduction code for checking vectorizable ops; NFC · c09be0d2
      Sanjay Patel authored
      This is another step towards removing `OperationData` and
      fixing FMF matching/propagation bugs when forming reductions.
      c09be0d2
    • Sanjay Patel's avatar
      [SLP] refactor more reduction functions; NFC · 1c54112a
      Sanjay Patel authored
      We were able to remove almost all of the state from
      OperationData, so these don't make sense as members
      of that class - just pass the RecurKind in as a param.
      
      More streamlining is possible, but I'm trying to avoid
      logic/typo bugs while fixing this. Eventually, we should
      not need the `OperationData` class.
      1c54112a
    • Sanjay Patel's avatar
      [SLP] move reduction createOp functions; NFC · 8590d245
      Sanjay Patel authored
      We were able to remove almost all of the state from
      OperationData, so these don't make sense as members
      of that class - just pass the RecurKind in as a param.
      8590d245
    • Louis Dionne's avatar
      [docs] Fix overly specific link to uploading patches on Phabricator · 6c1bc0d2
      Louis Dionne authored
      The documentation for contributing to LLVM currently links to the section
      explaining how to submit a Phabricator review using the web interface.
      I believe it would be better to link to the general page for using
      Phabricator instead, which explains how to sign up with Phabricator,
      and also how to submit patches using either the web interface or the
      command-line.
      
      I think this is worth changing because what currently *appears* to be our
      preferred way of submitting a patch (through the web interface) isn't
      actually what we prefer. Indeed, patches submitted from the command-line
      have more meta-data available (such as which repository the patch targets),
      and also can't suffer from missing context.
      
      Differential Revision: https://reviews.llvm.org/D94929
      6c1bc0d2
    • Joseph Tremoulet's avatar
      Loop peeling: check that latch is conditional branch · 40cd262c
      Joseph Tremoulet authored
      Loop peeling assumes that the loop's latch is a conditional branch.  Add
      a check to canPeel that explicitly checks for this, and testcases that
      otherwise fail an assertion when trying to peel a loop whose back-edge
      is a switch case or the non-unwind edge of an invoke.
      
      Reviewed By: skatkov, fhahn
      
      Differential Revision: https://reviews.llvm.org/D94995
      40cd262c
  2. Jan 20, 2021