Skip to content
  1. Nov 28, 2012
    • Jakob Stoklund Olesen's avatar
      Move Target{Instr,Register}Info.cpp into lib/CodeGen. · fcf14e84
      Jakob Stoklund Olesen authored
      The Target library is not allowed to depend on the large CodeGen
      library, but the TRI and TII classes provide abstract interfaces that
      require both caller and callee to link to CodeGen.
      
      The implementation files for these classes provide default
      implementations of some of the hooks. These methods may need to
      reference CodeGen, so they belong in that library.
      
      We already have a number of methods implemented in the
      TargetInstrInfoImpl sub-class because of that. I will merge that class
      into the parent next.
      
      llvm-svn: 168758
      fcf14e84
  2. Jun 08, 2012
    • Andrew Trick's avatar
      Fix Target->Codegen dependence. · 596af1b0
      Andrew Trick authored
      Bulk move of TargetInstrInfo implementation into
      TargetInstrInfoImpl. This is dirty because the code isn't part of
      TargetInstrInfoImpl class, nor should it be, because the methods are
      not target hooks. However, it's the current mechanism for keeping
      libTarget useful outside the backend. You'll get a not-so-nice link
      error if you invoke a TargetInstrInfo method that depends on CodeGen.
      
      The TargetInstrInfoImpl class should probably be removed since it
      doesn't really solve this problem.
      
      To really fix this, we probably need separate interfaces for the
      CodeGen/nonCodeGen sides of TargetInstrInfo.
      
      llvm-svn: 158212
      596af1b0
  3. Jun 07, 2012
  4. Jun 05, 2012
  5. 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
  6. Dec 15, 2011
  7. Dec 09, 2011
  8. 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
  9. Jul 01, 2011
  10. Jun 29, 2011
  11. Jun 28, 2011
  12. Jun 27, 2011
  13. Mar 24, 2011
  14. Dec 24, 2010
  15. Dec 19, 2010
  16. 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
  17. Oct 26, 2010
  18. 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
  19. Sep 15, 2010
  20. 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
  21. Sep 09, 2010
  22. Jun 18, 2010
  23. Aug 22, 2009
  24. Aug 02, 2009
  25. Jul 29, 2009
  26. May 05, 2009
  27. 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
  28. Jan 07, 2008
  29. 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
  30. 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
  31. Dec 30, 2007
  32. Dec 29, 2007
Loading