Skip to content
  1. Jun 17, 2020
  2. Jun 16, 2020
  3. Jun 15, 2020
  4. Jun 14, 2020
    • Whitney Tsang's avatar
      [LoopUnroll] Allow loops with multiple exiting blocks where loop latch · 5225cd43
      Whitney Tsang authored
      is not necessary one of them.
      
      Summary: Currently LoopUnrollPass already allow loops with multiple
      exiting blocks, but it is only allowed when the loop latch is one of the
      exiting blocks.
      When the loop latch is not an exiting block, then only single exiting
      block is supported.
      When possible, the single loop latch or the single exiting block
      terminator is optimized to an unconditional branch in the unrolled loop.
      
      This patch allows loops with multiple exiting blocks even if the loop
      latch is not one of them. However, the optimization of exiting block
      terminator to unconditional branch is not done when there exists more
      than one exiting block.
      Reviewer: dmgreen, Meinersbur, etiotto, fhahn, efriedma, bmahjour
      Reviewed By: efriedma
      Subscribers: hiraditya, zzheng, llvm-commits
      Tag: LLVM
      Differential Revision: https://reviews.llvm.org/D81053
      5225cd43
    • Sanjay Patel's avatar
      [PassManager] restore early-cse to vector cleanup · 098e48a6
      Sanjay Patel authored
      As noted in D80236 - the early-cse pass was included here before:
      D75145 / rG71a316883d50
      But it got moved outside of the "extra" option there, then it
      got dropped while adjusting -vector-combine:
      rG6438ea45e053
      rG57bb4787d72f
      
      So this is restoring the behavior and adding a test to prevent
      accidental changes again. I don't see an equivalent option for
      the new pass manager.
      098e48a6
    • Sanjay Patel's avatar
      [InstCombine] reassociate FP diff of sums into sum of diffs · b5fb2695
      Sanjay Patel authored
      (a[0] + a[1] + a[2] + a[3]) - (b[0] + b[1] + b[2] +b[3]) -->
      (a[0] - b[0]) + (a[1] - b[1]) + (a[2] - b[2]) + (a[3] - b[3])
      
      This should be the last step in solving PR43953:
      https://bugs.llvm.org/show_bug.cgi?id=43953
      
      We started emitting reduction intrinsics with:
      D80867/ rGe50059f6b6b3
      So it's a relatively easy pattern match now to re-order those ops.
      Also, I have not seen any complaints for the switch to intrinsics
      yet, so I'll propose to remove the "experimental" tag from the
      intrinsics soon.
      
      Differential Revision: https://reviews.llvm.org/D81491
      b5fb2695
    • Sanjay Patel's avatar
      [InstCombine] allow undef elements when comparing vector constants for min/max bailout · aeb50448
      Sanjay Patel authored
      This is a hacky, but low-risk fix to avoid the infinite loop in PR46271:
      https://bugs.llvm.org/show_bug.cgi?id=46271
      
      As discussed there, the problem is that FoldOpIntoSelect() can get into a conflict
      with a transform that wants to pull a 'not' op through min/max via
      SimplifyDemandedVectorElts(). We need to relax our matching of min/max to include
      undefined elements in vector constants to avoid that. Alternatively, we could
      improve or cripple the demanded elements analysis, but that could create even
      more problems.
      
      The likely better, safer alternative will be to create min/max intrinsics, so
      we can remove all of the hacks related to min/max matching in instcombine.
      
      Differential Revision: https://reviews.llvm.org/D81698
      aeb50448
  5. Jun 13, 2020
  6. Jun 12, 2020
Loading