Skip to content
  1. Jul 11, 2018
  2. Jul 09, 2018
  3. Jul 06, 2018
  4. Jul 05, 2018
  5. Jul 04, 2018
  6. Jul 02, 2018
    • QingShan Zhang's avatar
      [PowerPC] Don't make it as pre-inc candidate if displacement isn't 4's... · 3b2aa2b4
      QingShan Zhang authored
      [PowerPC] Don't make it as pre-inc candidate if displacement isn't 4's multiple for i64 pre-inc load/store
      
      For the below case, pre-inc prep think it's a good candidate to use pre-inc for the bucket, but 64bit integer load/store update (pre-inc) instruction on Power requires the displacement field should be DS-form (4's multiple). Since it can't satisfy the constraint, we have to do some fix ups later. As below, the original load/stores could be well-form, it makes things worse.
      
      unsigned long long result = 0;
      unsigned long long foo(char *p, unsigned long long n) {
        for (unsigned long long i = 0; i < n; i++) {
          unsigned long long x1 = *(unsigned long long *)(p - 50000 + i);
          unsigned long long x2 = *(unsigned long long *)(p - 61024 + i);
          unsigned long long x3 = *(unsigned long long *)(p - 62048 + i);
          unsigned long long x4 = *(unsigned long long *)(p - 64096 + i);
          result *= x1 * x2 * x3 * x4;
        }
        return result;
      }
      
      Patch by jedilyn(Kewen Lin).
      
      Differential Revision: https://reviews.llvm.org/D48813 
      --This line, and  those below, will be ignored--
      
      M    lib/Target/PowerPC/PPCLoopPreIncPrep.cpp
      A    test/CodeGen/PowerPC/preincprep-i64-check.ll
      
      llvm-svn: 336074
      3b2aa2b4
  7. Jun 25, 2018
  8. Jun 19, 2018
  9. Jun 15, 2018
  10. Jun 13, 2018
  11. Jun 08, 2018
  12. Jun 07, 2018
    • Hiroshi Inoue's avatar
      [PowerPC] avoid unprofitable Repl32 flag in BitPermutationSelector · 01ef4c2c
      Hiroshi Inoue authored
      BitPermutationSelector sets Repl32 flag for bit groups which can be (potentially) benefit from 32-bit rotate-and-mask instructions with bit replication, i.e. rlwinm/rlwimi copies lower 32 bits into upper 32 bits on 64-bit PowerPC before rotation.
      However, enforcing 32-bit instruction sometimes results in redundant generated code.
      For example, the following simple code is compiled into rotldi + rlwimi while it can be compiled into only rldimi instruction if Repl32 flag is not set on the bit group for (a & 0xFFFFFFFF).
      
      uint64_t func(uint64_t a, uint64_t b) {
      	return (a & 0xFFFFFFFF) | (b << 32) ;
      }
      
      To avoid such problem, this patch checks the potential benefit of Repl32 flag before setting it. If a bit group does not require rotation (i.e. RLAmt == 0) and won't be merged into another group, we do not benefit from Repl32 flag on this group.
      
      Differential Revision: https://reviews.llvm.org/D47867
      
      llvm-svn: 334195
      01ef4c2c
    • Hiroshi Inoue's avatar
      [PowerPC] fix trivial typos in comment, NFC · b5578460
      Hiroshi Inoue authored
      llvm-svn: 334191
      b5578460
  13. Jun 06, 2018
    • Peter Smith's avatar
      [MC] Pass MCSubtargetInfo to fixupNeedsRelaxation and applyFixup · 57f661bd
      Peter Smith authored
      On targets like Arm some relaxations may only be performed when certain
      architectural features are available. As functions can be compiled with
      differing levels of architectural support we must make a judgement on
      whether we can relax based on the MCSubtargetInfo for the function. This
      change passes through the MCSubtargetInfo for the function to
      fixupNeedsRelaxation so that the decision on whether to relax can be made
      per function. In this patch, only the ARM backend makes use of this
      information. We must also pass the MCSubtargetInfo to applyFixup because
      some fixups skip error checking on the assumption that relaxation has
      occurred, to prevent code-generation errors applyFixup must see the same
      MCSubtargetInfo as fixupNeedsRelaxation.
      
      Differential Revision: https://reviews.llvm.org/D44928
      
      llvm-svn: 334078
      57f661bd
  14. Jun 05, 2018
    • Hiroshi Inoue's avatar
      [PowerPC] reduce rotate in BitPermutationSelector · 955655f5
      Hiroshi Inoue authored
      BitPermutationSelector builds the output value by repeating rotate-and-mask instructions with input registers.
      Here, we may avoid one rotate instruction if we start building from an input register that does not require rotation.
      
      For example of the test case bitfieldinsert.ll, it first rotates left r4 by 8 bits and then inserts some bits from r5 without rotation.
      This can be executed by one rlwimi instruction, which rotates r4 by 8 bits and inserts its bits into r5.
      
      This patch adds a check for rotation amounts in the comparator used in sorting to process the input without rotation first.
      
      Differential Revision: https://reviews.llvm.org/D47765
      
      llvm-svn: 334011
      955655f5
  15. Jun 04, 2018
    • David Blaikie's avatar
      Move Analysis/Utils/Local.h back to Transforms · 31b98d2e
      David Blaikie authored
      Review feedback from r328165. Split out just the one function from the
      file that's used by Analysis. (As chandlerc pointed out, the original
      change only moved the header and not the implementation anyway - which
      was fine for the one function that was used (since it's a
      template/inlined in the header) but not in general)
      
      llvm-svn: 333954
      31b98d2e
  16. Jun 01, 2018
    • Hiroshi Inoue's avatar
      [NFC] Zero initialize local variables · 9796b47d
      Hiroshi Inoue authored
      This patch makes local variables zero initialized to avoid broken values in debug output.
      
      llvm-svn: 333754
      9796b47d
    • Amaury Sechet's avatar
      Set ADDE/ADDC/SUBE/SUBC to expand by default · 8467411d
      Amaury Sechet authored
      Summary:
      They've been deprecated in favor of UADDO/ADDCARRY or USUBO/SUBCARRY for a while.
      
      Target that uses these opcodes are changed in order to ensure their behavior doesn't change.
      
      Reviewers: efriedma, craig.topper, dblaikie, bkramer
      
      Subscribers: jholewinski, arsenm, jyknight, sdardis, nemanjai, nhaehnle, kbarton, fedor.sergeev, asb, rbar, johnrusso, simoncook, jordy.potman.lists, apazos, sabuasal, niosHD, jrtc27, zzheng, edward-jones, mgrang, atanasyan, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D47422
      
      llvm-svn: 333748
      8467411d
  17. May 29, 2018
  18. May 28, 2018
  19. May 24, 2018
    • Lei Huang's avatar
      [PowerPC] Remove the match pattern in the definition of LXSDX/STXSDX · f4ec6782
      Lei Huang authored
      The match pattern in the definition of LXSDX is xoaddr, so the Pseudo
      instruction XFLOADf64 never gets selected. XFLOADf64 expands to LXSDX/LFDX post
      RA based on the register pressure. To avoid ambiguity, we need to remove the
      select pattern for LXSDX, same as what was done for LXSD. STXSDX also have
      the same issue.
      
      Patch by Qing Shan Zhang (steven.zhang).
      
      Differential Revision: https://reviews.llvm.org/D47178
      
      llvm-svn: 333150
      f4ec6782
  20. May 23, 2018
  21. May 21, 2018
  22. May 18, 2018
  23. May 14, 2018
    • Zaara Syeda's avatar
      [NFC] [Power] Fix instruction format for xsrqpi · 421a5960
      Zaara Syeda authored
      xsrqpi is currently using Z23Form_1.
      The instruction format is xsrqpi R,VRT,VRB,RMC.
      Rathar than bits 11-15 being used for FRA, it should have
      bits 11-14 reserved and bit 15 for R. This patch adds a new
      class Z23Form_4 to fix the instruction format.
      
      Differential Revision: https://reviews.llvm.org/D46761
      
      llvm-svn: 332253
      421a5960
    • Nicola Zaghen's avatar
      Rename DEBUG macro to LLVM_DEBUG. · d34e60ca
      Nicola Zaghen authored
          
      The DEBUG() macro is very generic so it might clash with other projects.
      The renaming was done as follows:
      - git grep -l 'DEBUG' | xargs sed -i 's/\bDEBUG\s\?(/LLVM_DEBUG(/g'
      - git diff -U0 master | ../clang/tools/clang-format/clang-format-diff.py -i -p1 -style LLVM
      - Manual change to APInt
      - Manually chage DOCS as regex doesn't match it.
      
      In the transition period the DEBUG() macro is still present and aliased
      to the LLVM_DEBUG() one.
      
      Differential Revision: https://reviews.llvm.org/D43624
      
      llvm-svn: 332240
      d34e60ca
Loading