Skip to content
  1. Jun 04, 2019
  2. Jun 03, 2019
    • Cameron McInally's avatar
      [SCCP] Add UnaryOperator visitor to SCCP for unary FNeg · 89f9af54
      Cameron McInally authored
      Differential Revision: https://reviews.llvm.org/D62819
      
      llvm-svn: 362449
      89f9af54
    • Michael Berg's avatar
      Propagate fmf for setcc in SDAG for select folds · 6ff978ee
      Michael Berg authored
      llvm-svn: 362448
      6ff978ee
    • Matt Arsenault's avatar
      AMDGPU: Disable stack realignment for kernels · 0ceda9fb
      Matt Arsenault authored
      This is something of a workaround, and the state of stack realignment
      controls is kind of a mess. Ideally, we would be able to specify the
      stack is infinitely aligned on entry to a kernel.
      
      TargetFrameLowering provides multiple controls which apply at
      different points. The StackRealignable field is used during
      SelectionDAG, and for some reason distinct from this
      hook. StackAlignment is a single field not dependent on the
      function. It would probably be better to make that dependent on the
      calling convention, and the maximum value for kernels.
      
      Currently this doesn't really change anything, since the frame
      lowering mostly does its own thing. This helps avoid regressions in a
      future change which will rely more heavily on hasFP.
      
      llvm-svn: 362447
      0ceda9fb
    • Jessica Paquette's avatar
      [AArch64][GlobalISel] Optimize G_FCMP + G_SELECT pairs when G_SELECT is fp · 7500c97c
      Jessica Paquette authored
      Instead of emitting all of the test stuff for a compare when it's only used by
      a select, instead, just emit the compare + select. The select will use the
      value of NZCV correctly, so we don't need to emit all of the test instructions
      etc.
      
      For now, only support fp selects which use G_FCMP. Also only support condition
      codes which will only require one select to represent.
      
      Also add a test.
      
      Differential Revision: https://reviews.llvm.org/D62695
      
      llvm-svn: 362446
      7500c97c
    • Peter Collingbourne's avatar
      gn build: Merge r361896. · bddab42f
      Peter Collingbourne authored
      llvm-svn: 362445
      bddab42f
    • George Burgess IV's avatar
      CFLAA: reflow comments; NFC · c24a2f4a
      George Burgess IV authored
      llvm-svn: 362442
      c24a2f4a
    • Craig Topper's avatar
      [CFLGraph] Add FAdd to visitConstantExpr. · 7a4eabef
      Craig Topper authored
      This looks like an oversight as all the other binary operators are present.
      
      Accidentally noticed while auditing places that need FNeg handling.
      
      No test because as noted in the review it would be contrived and amount to "don't crash"
      
      Differential Revision: https://reviews.llvm.org/D62790
      
      llvm-svn: 362441
      7a4eabef
    • Craig Topper's avatar
      [X86] Fix the pattern for merge masked vcvtps2pd. · dcf865f0
      Craig Topper authored
      r362199 fixed it for zero masking, but not zero masking. The load
      folding in the peephole pass hid the bug. This patch turns off
      the peephole pass on the relevant test to ensure coverage.
      
      llvm-svn: 362440
      dcf865f0
    • Michael Berg's avatar
      Propagate fmf for setcc/select folds · 0b7f98da
      Michael Berg authored
      Summary: This change facilitates propagating fmf which was placed on setcc from fcmp through folds with selects so that back ends can model this path for arithmetic folds on selects in SDAG.
      
      Reviewers: qcolombet, spatel
      
      Reviewed By: qcolombet
      
      Subscribers: nemanjai, jsji
      
      Differential Revision: https://reviews.llvm.org/D62552
      
      llvm-svn: 362439
      0b7f98da
    • Nemanja Ivanovic's avatar
      [PowerPC] Look through copies for compare elimination · bad43d8f
      Nemanja Ivanovic authored
      We currently miss the opportunities for optmizing comparisons in the peephole
      optimizer if the input is the result of a COPY since we look for record-form
      versions of the producing instruction.
      
      This patch simply lets the optimization peek through copies.
      
      Differential revision: https://reviews.llvm.org/D59633
      
      llvm-svn: 362438
      bad43d8f
    • Matt Arsenault's avatar
      TTI: Improve default costs for addrspacecast · 8dbeb925
      Matt Arsenault authored
      For some reason multiple places need to do this, and the variant the
      loop unroller and inliner use was not handling it.
      
      Also, introduce a new wrapper to be slightly more precise, since on
      AMDGPU some addrspacecasts are free, but not no-ops.
      
      llvm-svn: 362436
      8dbeb925
    • Nico Weber's avatar
      gn build: Merge r362371 · 6f83c75d
      Nico Weber authored
      llvm-svn: 362433
      6f83c75d
    • Artur Pilipenko's avatar
      Add ScalarEvolutionsTest::SCEVExpandInsertCanonicalIV tests · 786a85dc
      Artur Pilipenko authored
      Test insertion of canonical IV in canonical expansion mode.
      
      llvm-svn: 362432
      786a85dc
    • Nikita Popov's avatar
      [ConstantRange] Add sdiv() support · c061b99c
      Nikita Popov authored
      The implementation is conceptually simple: We separate the LHS and
      RHS into positive and negative components and then also compute the
      positive and negative components of the result, taking into account
      that e.g. only pos/pos and neg/neg will give a positive result.
      
      However, there's one significant complication: SignedMin / -1 is UB
      for sdiv, and we can't just ignore it, because the APInt result of
      SignedMin would break the sign segregation. Instead we drop SignedMin
      or -1 from the corresponding ranges, taking into account some edge
      cases with wrapped ranges.
      
      Because of the sign segregation, the implementation ends up being
      nearly fully precise even for wrapped ranges (the remaining
      imprecision is due to ranges that are both signed and unsigned
      wrapping and are divided by a trivial divisor like 1). This means
      that the testing cannot just check the signed envelope as we
      usually do. Instead we collect all possible results in a bitvector
      and construct a better sign wrapped range (than the full envelope).
      
      Differential Revision: https://reviews.llvm.org/D61238
      
      llvm-svn: 362430
      c061b99c
Loading