Skip to content
  1. Dec 11, 2019
  2. Dec 10, 2019
  3. Dec 09, 2019
    • Jinsong Ji's avatar
      [PowerPC][NFC] Rename ANDI(S)o8 to ANDI(S)8o · 3d41a58e
      Jinsong Ji authored
      Summary:
      This is found during https://reviews.llvm.org/D70758
      All the other record forms are having suffix o at the end.
      ANDIo8 and ANDISo8 are the only two that put o before 8.
      
      This patch rename them to be consistent with others.
      
      Reviewers: #powerpc, hfinkel, nemanjai, lei, steven.zhang, echristo, jhibbits, joerg
      
      Reviewed By: jhibbits
      
      Subscribers: wuzish, hiraditya, kbarton, shchenz, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D70928
      3d41a58e
    • Sean Fertile's avatar
      [PowerPC] Refactor FinishCall. [NFC] · c78726fa
      Sean Fertile authored
      Refactor FinishCall to be more easily understandable as a precursor to
      implementing indirect calls for AIX. The refactor tries to group similar
      code together at the cost of some code duplication. The high level
      overview of the refactor:
      
      - Adds a number of helper functions for things like:
        * Determining if a call is indirect.
        * What the Opcode for a call is.
        * Transforming the callee for a direct function call.
        * Extracting the Chain operand from a CallSeqStart node.
        * Building the operands of the call.
      
      - Adds helpers for building the indirect call DAG nodes
        (excluding the call instruction itself which is created in
        `FinishCall`).
      
      - Removes PrepareCall, which has been subsumed by the
        helpers.
      
      - Rename 'InFlag' to 'Glue'.
      
      - FinishCall has been refactored to:
        1) Set TOC pointer usage on the DAG for the TOC based
           subtargets.
        2) Calculate if a call is indirect.
        3) Determine the Opcode to use for the call
           instruction.
        4) Transform the Callee for direct calls, or build
           the DAG nodes for indirect calls.
        5) Buildup the call operands.
        6) Emit the call instruction.
        7) If needed, emit the callSeqEnd Node and
           finish lowering by calling `LowerCallResult`
      
      Differential Revision: https://reviews.llvm.org/D70126
      c78726fa
  4. Nov 29, 2019
  5. Nov 27, 2019
  6. Nov 26, 2019
  7. Nov 25, 2019
    • Kit Barton's avatar
      [PowerPC] Rename DarwinDirective to CPUDirective (NFC) · 85e4f5bc
      Kit Barton authored
      Summary:
      This patch renames the DarwinDirective (used to identify which CPU was defined)
      to CPUDirective. It also adds the getCPUDirective() method and replaces all uses
      of getDarwinDirective() with getCPUDirective().
      
      Once this patch lands and downstream users of the getDarwinDirective() method
      have switched to the getCPUDirective() method, the old getDarwinDirective()
      method will be removed.
      
      Reviewers: nemanjai, hfinkel, power-llvm-team, jsji, echristo, #powerpc, jhibbits
      
      Reviewed By: hfinkel, jsji, jhibbits
      
      Subscribers: hiraditya, shchenz, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D70352
      85e4f5bc
    • Nemanja Ivanovic's avatar
      [PowerPC] Fix VSX clobbers of CSR registers · 7fbaa809
      Nemanja Ivanovic authored
      If an inline asm statement clobbers a VSX register that overlaps with a
      callee-saved Altivec register or FPR, we will not record the clobber and will
      therefore violate the ABI. This is clearly a bug so this patch fixes it.
      
      Differential revision: https://reviews.llvm.org/D68576
      7fbaa809
    • jasonliu's avatar
      [AIX][XCOFF] Generate undefined symbol in symbol table for external function call · 906ecae2
      jasonliu authored
      Summary:
      This patch sets up the infrastructure for
      
       1. Associate MCSymbolXCOFF with an MCSectionXCOFF when it could not
          get implicitly associated.
       2. Generate undefined symbols. The patch itself generates undefined symbol
          for external function call only. Generate undefined symbol for external
          global variable and external function descriptors will be handled in
          separate patch(s) after this is land.
      
      Differential Revision: https://reviews.llvm.org/D70443
      906ecae2
  8. Nov 22, 2019
  9. Nov 20, 2019
  10. Nov 19, 2019
  11. Nov 08, 2019
  12. Oct 30, 2019
  13. Oct 29, 2019
    • Nemanja Ivanovic's avatar
      [PowerPC] Emit scalar fp min/max instructions · 25a41ad2
      Nemanja Ivanovic authored
      VSX provides floating point minimum and maximum instructions that conform
      to IEEE semantics. This legalizes the respective nodes and emits VSX code
      for them. Furthermore, on Power9 cores we have xsmaxcdp and xsmincdp
      instructions that conform to language semantics for the conditional operator
      even in the presence of NaNs.
      
      Differential revision: https://reviews.llvm.org/D62993
      25a41ad2
  14. Oct 28, 2019
    • Sean Fertile's avatar
      [AIX] Refactor AIX Call Lowering to use CCState. NFCI. · 582e3c09
      Sean Fertile authored
      This patch reworks the AIX call lowering to use CCState. Some defensive errors
      are added in this patch to protect from emitting bad code for calling convention
      logic that has not been implemented by design. The use of CCState follows the
      precedent of other targets and enables the reuse of calling convention logic in
      LowerFormalArguments, which will be rewritten to also use CCState in a late
      patch.
      
      Patch by Chris Bowler.
      
      Differential Revision: https://reviews.llvm.org/D69101
      582e3c09
  15. Oct 06, 2019
  16. Oct 01, 2019
    • Matt Arsenault's avatar
      TLI: Remove DAG argument from getRegisterByName · f24ac13a
      Matt Arsenault authored
      Replace with the MachineFunction. X86 is the only user, and only uses
      it for the function. This removes one obstacle from using this in
      GlobalISel. The other is the more tolerable EVT argument.
      
      The X86 use of the function seems questionable to me. It checks hasFP,
      before frame lowering.
      
      llvm-svn: 373292
      f24ac13a
  17. Sep 27, 2019
  18. Sep 22, 2019
  19. Sep 20, 2019
  20. Sep 18, 2019
  21. Sep 17, 2019
  22. Sep 13, 2019
    • Craig Topper's avatar
      [PowerPC] Remove the SPE4RC register class and instead add f32 to the GPRC register class. · 36e04d14
      Craig Topper authored
      Summary:
      Since the SPE4RC register class contains an identical set of registers
      and an identical spill size to the GPRC class its slightly confusing
      the tablegen emitter. It's preventing the GPRC_and_GPRC_NOR0 synthesized
      register class from inheriting VTs and AltOrders from GPRC or GPRC_NOR0.
      This is because SPE4C is found first in the super register class list
      when inheriting these properties and it doesn't set the VTs or
      AltOrders the same way as GPRC or GPRC_NOR0.
      
      This patch replaces all uses of GPE4RC with GPRC and allows GPRC and
      GPRC_NOR0 to contain f32.
      
      The test changes here are because the AltOrders are being inherited
      to GPRC_NOR0 now.
      
      Found while trying to determine if getCommonSubClass needs to take
      a VT argument. It was originally added to support fp128 on x86-64,
      I've changed some things about that so that it might be needed
      anymore. But a PowerPC test crashed without it and I think its
      due to this subclass issue.
      
      Reviewers: jhibbits, nemanjai, kbarton, hfinkel
      
      Subscribers: wuzish, nemanjai, mehdi_amini, hiraditya, kbarton, MaskRay, dexonsmith, jsji, shchenz, steven.zhang, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D67513
      
      llvm-svn: 371779
      36e04d14
  23. Sep 10, 2019
  24. Sep 09, 2019
  25. Sep 06, 2019
  26. Sep 05, 2019
    • Guillaume Chatelet's avatar
      [LLVM][Alignment] Make functions using log of alignment explicit · aff45e4b
      Guillaume Chatelet authored
      Summary:
      This patch renames functions that takes or returns alignment as log2, this patch will help with the transition to llvm::Align.
      The renaming makes it explicit that we deal with log(alignment) instead of a power of two alignment.
      A few renames uncovered dubious assignments:
      
       - `MirParser`/`MirPrinter` was expecting powers of two but `MachineFunction` and `MachineBasicBlock` were using deal with log2(align). This patch fixes it and updates the documentation.
       - `MachineBlockPlacement` exposes two flags (`align-all-blocks` and `align-all-nofallthru-blocks`) supposedly interpreted as power of two alignments, internally these values are interpreted as log2(align). This patch updates the documentation,
       - `MachineFunctionexposes` exposes `align-all-functions` also interpreted as power of two alignment, internally this value is interpreted as log2(align). This patch updates the documentation,
      
      Reviewers: lattner, thegameg, courbet
      
      Subscribers: dschuff, arsenm, jyknight, dylanmckay, sdardis, nemanjai, jvesely, nhaehnle, javed.absar, hiraditya, kbarton, fedor.sergeev, asb, rbar, johnrusso, simoncook, apazos, sabuasal, niosHD, jrtc27, MaskRay, zzheng, edward-jones, atanasyan, rogfer01, MartinMosbeck, brucehoult, the_o, dexonsmith, PkmX, jocewei, jsji, Jim, s.egerton, llvm-commits, courbet
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D65945
      
      llvm-svn: 371045
      aff45e4b
  27. Aug 23, 2019
  28. Aug 22, 2019
  29. Aug 15, 2019
    • Daniel Sanders's avatar
      Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM · 0c476111
      Daniel Sanders authored
      Summary:
      This clang-tidy check is looking for unsigned integer variables whose initializer
      starts with an implicit cast from llvm::Register and changes the type of the
      variable to llvm::Register (dropping the llvm:: where possible).
      
      Partial reverts in:
      X86FrameLowering.cpp - Some functions return unsigned and arguably should be MCRegister
      X86FixupLEAs.cpp - Some functions return unsigned and arguably should be MCRegister
      X86FrameLowering.cpp - Some functions return unsigned and arguably should be MCRegister
      HexagonBitSimplify.cpp - Function takes BitTracker::RegisterRef which appears to be unsigned&
      MachineVerifier.cpp - Ambiguous operator==() given MCRegister and const Register
      PPCFastISel.cpp - No Register::operator-=()
      PeepholeOptimizer.cpp - TargetInstrInfo::optimizeLoadInstr() takes an unsigned&
      MachineTraceMetrics.cpp - MachineTraceMetrics lacks a suitable constructor
      
      Manual fixups in:
      ARMFastISel.cpp - ARMEmitLoad() now takes a Register& instead of unsigned&
      HexagonSplitDouble.cpp - Ternary operator was ambiguous between unsigned/Register
      HexagonConstExtenders.cpp - Has a local class named Register, used llvm::Register instead of Register.
      PPCFastISel.cpp - PPCEmitLoad() now takes a Register& instead of unsigned&
      
      Depends on D65919
      
      Reviewers: arsenm, bogner, craig.topper, RKSimon
      
      Reviewed By: arsenm
      
      Subscribers: RKSimon, craig.topper, lenary, aemerson, wuzish, jholewinski, MatzeB, qcolombet, dschuff, jyknight, dylanmckay, sdardis, nemanjai, jvesely, wdng, nhaehnle, sbc100, jgravelle-google, kristof.beyls, hiraditya, aheejin, kbarton, fedor.sergeev, javed.absar, asb, rbar, johnrusso, simoncook, apazos, sabuasal, niosHD, jrtc27, MaskRay, zzheng, edward-jones, atanasyan, rogfer01, MartinMosbeck, brucehoult, the_o, tpr, PkmX, jocewei, jsji, Petar.Avramovic, asbirlea, Jim, s.egerton, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D65962
      
      llvm-svn: 369041
      0c476111
  30. Aug 14, 2019
  31. Aug 13, 2019
    • Xiangling Liao's avatar
      [AIX]Lowering global address for 32/64bit small/large code models · a8c624a1
      Xiangling Liao authored
          This patch implements global address lowering for 32/64 bit with small/large code models.
          1.For 32bit large code model on AIX, there are newly added pseudo opcode LWZtocL & ADDIStocHA32, the support of which on MC layer will be
             provided by future patches.
          2.The default code model on AIX should be small code model.
          3.Since AIX does not have medium code model, "report_fatal_error" when users specify it.
      
          Differential Revision: https://reviews.llvm.org/D63547
      
      llvm-svn: 368744
      a8c624a1
    • Qiu Chaofan's avatar
      [PowerPC] Fix ICE when truncating some vectors · 4fb99a33
      Qiu Chaofan authored
      The legalizer would hit an assertion on PowerPC platform when truncating
      a vector whose size is not power of 2.  This patch is to add a check to
      prevent vectors with such odd-size elements from being custom lowered.
      
      Reviewed By: Hal Finkel
      
      Differential Revision: https://reviews.llvm.org/D65261
      
      llvm-svn: 368654
      4fb99a33
Loading