Skip to content
  1. Mar 01, 2014
  2. Feb 28, 2014
    • Reid Kleckner's avatar
      Reflow isProfitableToMakeFastCC · e6ff5c51
      Reid Kleckner authored
      llvm-svn: 202555
      e6ff5c51
    • Lang Hames's avatar
      Jumped the gun with r202551 and broke some bots that weren't yet C++11ified. · c083578a
      Lang Hames authored
      Reverting until the C++11 switch is complete.
      
      llvm-svn: 202554
      c083578a
    • Lang Hames's avatar
      New PBQP solver, and updates to the PBQP graph. · 525a2123
      Lang Hames authored
      The previous PBQP solver was very robust but consumed a lot of memory,
      performed a lot of redundant computation, and contained some unnecessarily tight
      coupling that prevented experimentation with novel solution techniques. This new
      solver is an attempt to address these shortcomings.
      
      Important/interesting changes:
      
      1) The domain-independent PBQP solver class, HeuristicSolverImpl, is gone.
      It is replaced by a register allocation specific solver, PBQP::RegAlloc::Solver
      (see RegAllocSolver.h).
      
      The optimal reduction rules and the backpropagation algorithm have been extracted
      into stand-alone functions (see ReductionRules.h), which can be used to build
      domain specific PBQP solvers. This provides many more opportunities for
      domain-specific knowledge to inform the PBQP solvers' decisions. In theory this
      should allow us to generate better solutions. In practice, we can at least test
      out ideas now.
      
      As a side benefit, I believe the new solver is more readable than the old one.
      
      2) The solver type is now a template parameter of the PBQP graph.
      
      This allows the graph to notify the solver of any modifications made (e.g. by
      domain independent rules) without the overhead of a virtual call. It also allows
      the solver to supply policy information to the graph (see below).
      
      3) Significantly reduced memory overhead.
      
      Memory management policy is now an explicit property of the PBQP graph (via
      the CostAllocator typedef on the graph's solver template argument). Because PBQP
      graphs for register allocation tend to contain many redundant instances of
      single values (E.g. the value representing an interference constraint between
      GPRs), the new RASolver class uses a uniquing scheme. This massively reduces
      memory consumption for large register allocation problems. For example, looking
      at the largest interference graph in each of the SPEC2006 benchmarks (the
      largest graph will always set the memory consumption high-water mark for PBQP),
      the average memory reduction for the PBQP costs was 400x. That's times, not
      percent. The highest was 1400x. Yikes. So - this is fixed.
      
      "PBQP: No longer feasting upon every last byte of your RAM".
      
      Minor details:
      
      - Fully C++11'd. Never copy-construct another vector/matrix!
      
      - Cute tricks with cost metadata: Metadata that is derived solely from cost
      matrices/vectors is attached directly to the cost instances themselves. That way
      if you unique the costs you never have to recompute the metadata. 400x less
      memory means 400x less cost metadata (re)computation.
      
      Special thanks to Arnaud de Grandmaison, who has been the source of much
      encouragement, and of many very useful test cases.
      
      This new solver forms the basis for future work, of which there's plenty to do.
      I will be adding TODO notes shortly.
      
      - Lang.
      
      llvm-svn: 202551
      525a2123
    • Eric Christopher's avatar
      Fix >> to be > > for non-c++11. · e587c085
      Eric Christopher authored
      llvm-svn: 202545
      e587c085
    • Tom Stellard's avatar
      R600: Verify all instructions in the AsmPrinter on debug builds · 9b9e9264
      Tom Stellard authored
      Make a call to R600's implementation of verifyInstruction() to
      check that instructions are only using legal operands.
      
      llvm-svn: 202544
      9b9e9264
    • Tom Stellard's avatar
      R600/SI: Expand all v16[if]32 operations · d61a1c33
      Tom Stellard authored
      llvm-svn: 202543
      d61a1c33
    • Eric Christopher's avatar
      80-col. · 961959fa
      Eric Christopher authored
      llvm-svn: 202541
      961959fa
    • Eric Christopher's avatar
      Fix a crasher where when we're attempting to replace a type · 2c3a6dce
      Eric Christopher authored
      during the finalization for CGDebugInfo in clang we would RAUW
      a type and it would result in a corrupted MDNode for an
      imported declaration.
      
      Testcase pending as reducing has been difficult.
      
      llvm-svn: 202540
      2c3a6dce
    • Justin Bogner's avatar
      CommandLine: Exit successfully for -version and -help · 02b95842
      Justin Bogner authored
      Tools that use the CommandLine library currently exit with an error
      when invoked with -version or -help. This is unusual and non-standard,
      so we'll fix them to exit successfully instead.
      
      I don't expect that anyone relies on the current behaviour, so this
      should be a fairly safe change.
      
      llvm-svn: 202530
      02b95842
    • Zoran Jovanovic's avatar
      Fixed operand of SC microMIPS instruction. · 285cc289
      Zoran Jovanovic authored
      llvm-svn: 202526
      285cc289
    • Zoran Jovanovic's avatar
      Fixed encoding of SYSCALL microMIPS instruction. · 7c6c36d9
      Zoran Jovanovic authored
      llvm-svn: 202523
      7c6c36d9
    • Zoran Jovanovic's avatar
      Revert revision 202518 because of wrong commit message. · d0a28900
      Zoran Jovanovic authored
      llvm-svn: 202521
      d0a28900
    • Zoran Jovanovic's avatar
      Fix operand of SC instruction. · 9874a2b1
      Zoran Jovanovic authored
      llvm-svn: 202518
      9874a2b1
    • Evgeniy Stepanov's avatar
      X86Operand is extracted into individual header. · e3804d48
      Evgeniy Stepanov authored
      X86Operand is extracted into individual header, because it allows to create an
      arbitrary memory operand and append it to MCInst. It'll be reused in X86 inline
      assembly instrumentation.
      
      Patch by Yuri Gorshenin.
      
      llvm-svn: 202496
      e3804d48
    • NAKAMURA Takumi's avatar
      Reorder Mips/MCTargetDesc/CMakeLists.txt. · cdb9fafa
      NAKAMURA Takumi authored
      llvm-svn: 202483
      cdb9fafa
    • Sasa Stankovic's avatar
      [mips] Add MipsNaClELFStreamer.cpp to CMakeLists.txt. · 441880f7
      Sasa Stankovic authored
      llvm-svn: 202482
      441880f7
    • Sasa Stankovic's avatar
      [mips] Implement NaCl sandboxing of indirect jumps: · 8c5736b9
      Sasa Stankovic authored
        * Align targets of indirect jumps to instruction bundle boundaries (in MI layer).
        * Add masking instructions before indirect jumps (in MC layer).
      
      Differential Revision: http://llvm-reviews.chandlerc.com/D2847
      
      llvm-svn: 202479
      8c5736b9
    • Tobias Grosser's avatar
      Add 'remark' diagnostic type in LLVM · e8d4c9a2
      Tobias Grosser authored
      A 'remark' is information that is not an error or a warning, but rather some
      additional information provided to the user. In contrast to a 'note' a 'remark'
      is an independent diagnostic, whereas a 'note' always depends on another
      diagnostic.
      
      A typical use case for remark nodes is information provided to the user, e.g.
      information provided by the vectorizer about loops that have been vectorized.
      
      llvm-svn: 202474
      e8d4c9a2
    • Hal Finkel's avatar
      Swap PPC isel operands to allow for 0-folding · b998915e
      Hal Finkel authored
      The PPC isel instruction can fold 0 into the first operand (thus eliminating
      the need to materialize a zero-containing register when the 'true' result of
      the isel is 0). When the isel is fed by a bit register operation that we can
      invert, do so as part of the bit-register-operation peephole routine.
      
      llvm-svn: 202469
      b998915e
    • Rafael Espindola's avatar
      Now that it is possible, use the mangler in IRObjectFile. · a51f0f83
      Rafael Espindola authored
      A really simple patch marks the end of a lot of yak shaving :-)
      
      llvm-svn: 202463
      a51f0f83
    • Hal Finkel's avatar
      Trying to unbreak the darwin11 builder · 5cae2168
      Hal Finkel authored
      The CR bit tracking code broke PPC/Darwin; trying to get it working again...
      
      (the darwin11 builder, which defaults to the darwin ABI when running PPC tests,
      asserted when running test/CodeGen/PowerPC/inverted-bool-compares.ll)
      
      llvm-svn: 202459
      5cae2168
Loading