Skip to content
  1. May 20, 2016
    • Quentin Colombet's avatar
      [RegBankSelect] Get rid of a now dead method: setSafeInsertPoint. · 4f147a54
      Quentin Colombet authored
      This is now encapsulated in the RepairingPlacement class.
      
      llvm-svn: 270247
      4f147a54
    • Quentin Colombet's avatar
      [RegBankSelect] Take advantage of a potential best cost information in · 6e80dbcd
      Quentin Colombet authored
      computeMapping.
      
      Computing the cost of a mapping takes some time.
      Since in Fast mode, the cost is irrelevant, just spare some cycles by not
      computing it.
      In Greedy mode, we need to choose the best cost, that means that when
      the local cost gets more expensive than the best cost, we can stop
      computing the repairing and cost for the current mapping.
      
      llvm-svn: 270245
      6e80dbcd
    • Quentin Colombet's avatar
      [RegBankSelect] Use frequency and probability information to compute · 25fcef73
      Quentin Colombet authored
      more precise cost in Greedy mode.
      
      In Fast mode the cost is irrelevant so do not bother requiring that
      those passes get scheduled.
      
      llvm-svn: 270244
      25fcef73
    • Quentin Colombet's avatar
      a5530128
    • Quentin Colombet's avatar
      [RegBankSelect] Specify different optimization mode for the pass. · 46df722e
      Quentin Colombet authored
      The mode should be choose by the target when instantiating the pass.
      
      llvm-svn: 270235
      46df722e
    • Quentin Colombet's avatar
      [RegBankSelect] Add a method to avoid splitting while repairing. · f75c2bfc
      Quentin Colombet authored
      The previous choice of the insertion points for repairing was
      straightfoward but may introduce some basic block or edge splitting. In
      some situation this is something we can avoid.
      For instance, when repairing a phi argument, instead of placing the
      repairing on the related incoming edge, we may move it to the previous
      block, before the terminators. This is only possible when the argument
      is not defined by one of the terminator.
      
      llvm-svn: 270232
      f75c2bfc
    • Quentin Colombet's avatar
      [RegBankSelect] Refactor the code to split the repairing and mapping of · d84d00ba
      Quentin Colombet authored
      an instruction.
      
      Use the previously introduced RepairingPlacement class to split the code
      computing the repairing placement from the code doing the actual
      placement. That way, we will be able to consider different placement and
      then, only apply the best one.
      
      llvm-svn: 270168
      d84d00ba
    • Quentin Colombet's avatar
      [RegBankSelect] Add helper class for repairing code placement. · 55650754
      Quentin Colombet authored
      When assigning the register banks we may have to insert repairing code
      to move already assigned values accross register banks.
      
      Introduce a few helper classes to keep track of what is involved in the
      repairing of an operand:
      - InsertPoint and its derived classes record the positions, in the CFG,
        where repairing has to be inserted.
      - RepairingPlacement holds all the insert points for the repairing of an
        operand plus the kind of action that is required to do the repairing.
      
      This is going to be used to keep track of how the repairing should be
      done, while comparing different solutions for an instruction. Indeed, we
      will need the repairing placement to capture the cost of a solution and
      we do not want to compute it a second time when we do the actual
      repairing.
      
      llvm-svn: 270167
      55650754
    • Quentin Colombet's avatar
      [RegBankSelect] Refactor assignmentMatch to avoid testing the current · 0d77da4e
      Quentin Colombet authored
      register bank twice.
      
      Prior to this change, we were checking if the assignment for the current
      machine operand was matching, then we would check if the mismatch
      requires to insert repair code.
      We actually already have this information from the first check, so just
      pass it along.
      
      NFCI.
      
      llvm-svn: 270166
      0d77da4e
    • Quentin Colombet's avatar
      [RegBankSelect] Introduce MappingCost helper class. · cfd97b93
      Quentin Colombet authored
      This helper class will be used to represent the cost of mapping an
      instruction to a specific register bank.
      The particularity of these costs is that they are mostly local, thus the
      frequency of the basic block is irrelevant. However, for few
      instructions (e.g., phis and terminators), the cost may be non-local and
      then, we need to account for the frequency of the involved basic blocks.
      
      This will be used by the greedy mode I am working on.
      
      llvm-svn: 270163
      cfd97b93
  2. Apr 22, 2016
  3. Apr 21, 2016
  4. Apr 14, 2016
  5. Apr 12, 2016
  6. Apr 08, 2016
  7. Apr 07, 2016
  8. Apr 06, 2016
    • Quentin Colombet's avatar
      [RegisterBankInfo] Add methods to get the possible mapping of an instruction on a register bank. · c916204a
      Quentin Colombet authored
      This will be used by the register bank select pass to assign register banks
      for generic virtual registers.
      
      This was originally committed as r265573 but broke at least one windows bot.
      The problem with the windows bot was that it was using a copy constructor for
      the InstructionMappings class and could not synthesize it. Actually, the fact
      that this class is not copy constructable is expected and the compiler should
      use the move assignment constructor. Marking the problematic assignment
      explicitly as using the move constructor has its own problems.
      
      Indeed, with recent clang we get a warning that we may prevent the elision of
      the copy by the compiler. A proper fix for both compilers would be to change the
      API of getPossibleInstrMapping to take a InstructionMappings as input/output
      parameter. This does not feel natural and since GISel is not used on windows
      yet, I chose to workaround the problem by not compiling the problematic code on
      windows.
      
      llvm-svn: 265604
      c916204a
    • Quentin Colombet's avatar
      Revert "[RegisterBankInfo] Add methods to get the possible mapping of an · fb000583
      Quentin Colombet authored
      instruction on a register bank. This will be used by the register bank select
      pass to assign register banks for generic virtual registers." and the follow-on
      commits while I find out a way to fix the win7 bot:
      http://lab.llvm.org:8011/builders/sanitizer-windows/builds/19882
      
      This reverts commit r265578, r265581, r265584, and r265585.
      
      llvm-svn: 265587
      fb000583
Loading