Skip to content
  1. Jun 07, 2012
  2. Jun 05, 2012
  3. May 08, 2012
    • Jakob Stoklund Olesen's avatar
      Add an MF argument to TRI::getPointerRegClass() and TII::getRegClass(). · 3c52f028
      Jakob Stoklund Olesen authored
      The getPointerRegClass() hook can return register classes that depend on
      the calling convention of the current function (ptr_rc_tailcall).
      
      So far, we have been able to infer the calling convention from the
      subtarget alone, but as we add support for multiple calling conventions
      per target, that no longer works.
      
      Patch by Yiannis Tsiouris!
      
      llvm-svn: 156328
      3c52f028
  4. Dec 15, 2011
  5. Dec 09, 2011
  6. Dec 07, 2011
    • Evan Cheng's avatar
      Add bundle aware API for querying instruction properties and switch the code · 7f8e563a
      Evan Cheng authored
      generator to it. For non-bundle instructions, these behave exactly the same
      as the MC layer API.
      
      For properties like mayLoad / mayStore, look into the bundle and if any of the
      bundled instructions has the property it would return true.
      For properties like isPredicable, only return true if *all* of the bundled
      instructions have the property.
      For properties like canFoldAsLoad, isCompare, conservatively return false for
      bundles.
      
      llvm-svn: 146026
      7f8e563a
  7. Jul 01, 2011
  8. Jun 29, 2011
  9. Jun 28, 2011
  10. Jun 27, 2011
  11. Mar 24, 2011
  12. Dec 24, 2010
  13. Dec 19, 2010
  14. Nov 03, 2010
    • Evan Cheng's avatar
      Two sets of changes. Sorry they are intermingled. · debf9c50
      Evan Cheng authored
      1. Fix pre-ra scheduler so it doesn't try to push instructions above calls to
         "optimize for latency". Call instructions don't have the right latency and
         this is more likely to use introduce spills.
      2. Fix if-converter cost function. For ARM, it should use instruction latencies,
         not # of micro-ops since multi-latency instructions is completely executed
         even when the predicate is false. Also, some instruction will be "slower"
         when they are predicated due to the register def becoming implicit input.
         rdar://8598427
      
      llvm-svn: 118135
      debf9c50
  15. Oct 26, 2010
  16. Oct 06, 2010
    • Evan Cheng's avatar
      - Add TargetInstrInfo::getOperandLatency() to compute operand latencies. This · 49d4c0bd
      Evan Cheng authored
        allow target to correctly compute latency for cases where static scheduling
        itineraries isn't sufficient. e.g. variable_ops instructions such as
        ARM::ldm.
        This also allows target without scheduling itineraries to compute operand
        latencies. e.g. X86 can return (approximated) latencies for high latency
        instructions such as division.
      - Compute operand latencies for those defined by load multiple instructions,
        e.g. ldm and those used by store multiple instructions, e.g. stm.
      
      llvm-svn: 115755
      49d4c0bd
  17. Sep 15, 2010
  18. Sep 10, 2010
    • Evan Cheng's avatar
      Teach if-converter to be more careful with predicating instructions that would · bf407075
      Evan Cheng authored
      take multiple cycles to decode.
      For the current if-converter clients (actually only ARM), the instructions that
      are predicated on false are not nops. They would still take machine cycles to
      decode. Micro-coded instructions such as LDM / STM can potentially take multiple
      cycles to decode. If-converter should take treat them as non-micro-coded
      simple instructions.
      
      llvm-svn: 113570
      bf407075
  19. Sep 09, 2010
  20. Jun 18, 2010
  21. Aug 22, 2009
  22. Aug 02, 2009
  23. Jul 29, 2009
  24. May 05, 2009
  25. Apr 09, 2009
    • Bob Wilson's avatar
      Fix pr3954. The register scavenger asserts for inline assembly with · 51856173
      Bob Wilson authored
      register destinations that are tied to source operands.  The
      TargetInstrDescr::findTiedToSrcOperand method silently fails for inline
      assembly.  The existing MachineInstr::isRegReDefinedByTwoAddr was very
      close to doing what is needed, so this revision makes a few changes to
      that method and also renames it to isRegTiedToUseOperand (for consistency
      with the very similar isRegTiedToDefOperand and because it handles both
      two-address instructions and inline assembly with tied registers).
      
      llvm-svn: 68714
      51856173
  26. Jan 07, 2008
  27. Jan 01, 2008
    • Chris Lattner's avatar
      Fix a problem where lib/Target/TargetInstrInfo.h would include and use · 25568e4c
      Chris Lattner authored
      a header file from libcodegen.  This violates a layering order: codegen
      depends on target, not the other way around.  The fix to this is to 
      split TII into two classes, TII and TargetInstrInfoImpl, which defines
      stuff that depends on libcodegen.  It is defined in libcodegen, where 
      the base is not.
      
      llvm-svn: 45475
      25568e4c
  28. Dec 31, 2007
    • Chris Lattner's avatar
      Add new shorter predicates for testing machine operands for various types: · a5bb370a
      Chris Lattner authored
      e.g. MO.isMBB() instead of MO.isMachineBasicBlock().  I don't plan on 
      switching everything over, so new clients should just start using the 
      shorter names.
      
      Remove old long accessors, switching everything over to use the short
      accessor: getMachineBasicBlock() -> getMBB(), 
      getConstantPoolIndex() -> getIndex(), setMachineBasicBlock -> setMBB(), etc.
      
      llvm-svn: 45464
      a5bb370a
  29. Dec 30, 2007
  30. Dec 29, 2007
  31. Sep 14, 2007
  32. Jul 07, 2007
Loading