Skip to content
  1. Aug 15, 2009
  2. Aug 14, 2009
  3. Aug 13, 2009
  4. Aug 11, 2009
  5. Aug 07, 2009
    • Evan Cheng's avatar
      It turns out most of the thumb2 instructions are not allowed to touch SP. The... · b972e563
      Evan Cheng authored
      It turns out most of the thumb2 instructions are not allowed to touch SP. The semantics of such instructions are unpredictable. We have just been lucky that tests have been passing.
      
      This patch takes pain to ensure all the PEI lowering code does the right thing when lowering frame indices, insert code to manipulate stack pointers, etc. It's also custom lowering dynamic stack alloc into pseudo instructions so we can insert the right instructions at scheduling time.
      
      This fixes PR4659 and PR4682.
      
      llvm-svn: 78361
      b972e563
  6. Aug 06, 2009
  7. Aug 05, 2009
    • Anton Korobeynikov's avatar
      Missed pieces for ARM HardFP ABI. · 22ef7515
      Anton Korobeynikov authored
      Patch by Sandeep Patel!
      
      llvm-svn: 78225
      22ef7515
    • Dan Gohman's avatar
      Major calling convention code refactoring. · f9bbcd1a
      Dan Gohman authored
      Instead of awkwardly encoding calling-convention information with ISD::CALL,
      ISD::FORMAL_ARGUMENTS, ISD::RET, and ISD::ARG_FLAGS nodes, TargetLowering
      provides three virtual functions for targets to override:
      LowerFormalArguments, LowerCall, and LowerRet, which replace the custom
      lowering done on the special nodes. They provide the same information, but
      in a more immediately usable format.
      
      This also reworks much of the target-independent tail call logic. The
      decision of whether or not to perform a tail call is now cleanly split
      between target-independent portions, and the target dependent portion
      in IsEligibleForTailCallOptimization.
      
      This also synchronizes all in-tree targets, to help enable future
      refactoring and feature work.
      
      llvm-svn: 78142
      f9bbcd1a
  8. Aug 04, 2009
  9. Jul 29, 2009
  10. Jul 28, 2009
  11. Jul 26, 2009
  12. Jul 25, 2009
    • Evan Cheng's avatar
      Change Thumb2 jumptable codegen to one that uses two level jumps: · f3a1fce8
      Evan Cheng authored
      Before:
            adr r12, #LJTI3_0_0
            ldr pc, [r12, +r0, lsl #2]
      LJTI3_0_0:
            .long    LBB3_24
            .long    LBB3_30
            .long    LBB3_31
            .long    LBB3_32
      
      After:
            adr r12, #LJTI3_0_0
            add pc, r12, +r0, lsl #2
      LJTI3_0_0:
            b.w    LBB3_24
            b.w    LBB3_30
            b.w    LBB3_31
            b.w    LBB3_32
      
      This has several advantages.
      1. This will make it easier to optimize this to a TBB / TBH instruction +
         (smaller) table.
      2. This eliminate the need for ugly asm printer hack to force the address
         into thumb addresses (bit 0 is one).
      3. Same codegen for pic and non-pic.
      4. This eliminate the need to align the table so constantpool island pass
         won't have to over-estimate the size.
      
      Based on my calculation, the later is probably slightly faster as well since
      ldr pc with shifter address is very slow. That is, it should be a win as long
      as the HW implementation can do a reasonable job of branch predict the second
      branch.
      
      llvm-svn: 77024
      f3a1fce8
  13. Jul 13, 2009
  14. Jul 01, 2009
  15. Jun 29, 2009
  16. Jun 23, 2009
  17. Jun 16, 2009
  18. May 20, 2009
  19. May 14, 2009
  20. May 13, 2009
  21. Apr 17, 2009
  22. Apr 01, 2009
  23. Feb 07, 2009
  24. Feb 03, 2009
  25. Jan 15, 2009
  26. Dec 01, 2008
    • Duncan Sands's avatar
      Change the interface to the type legalization method · 6ed40141
      Duncan Sands authored
      ReplaceNodeResults: rather than returning a node which
      must have the same number of results as the original
      node (which means mucking around with MERGE_VALUES,
      and which is also easy to get wrong since SelectionDAG
      folding may mean you don't get the node you expect),
      return the results in a vector.
      
      llvm-svn: 60348
      6ed40141
  27. Sep 23, 2008
  28. Jul 27, 2008
  29. Jul 04, 2008
    • Duncan Sands's avatar
      Rather than having a different custom legalization · 93e18034
      Duncan Sands authored
      hook for each way in which a result type can be
      legalized (promotion, expansion, softening etc),
      just use one: ReplaceNodeResults, which returns
      a node with exactly the same result types as the
      node passed to it, but presumably with a bunch of
      custom code behind the scenes.  No change if the
      new LegalizeTypes infrastructure is not turned on.
      
      llvm-svn: 53137
      93e18034
  30. Jun 06, 2008
    • Duncan Sands's avatar
      Wrap MVT::ValueType in a struct to get type safety · 13237ac3
      Duncan Sands authored
      and better control the abstraction.  Rename the type
      to MVT.  To update out-of-tree patches, the main
      thing to do is to rename MVT::ValueType to MVT, and
      rewrite expressions like MVT::getSizeInBits(VT) in
      the form VT.getSizeInBits().  Use VT.getSimpleVT()
      to extract a MVT::SimpleValueType for use in switch
      statements (you will get an assert failure if VT is
      an extended value type - these shouldn't exist after
      type legalization).
      This results in a small speedup of codegen and no
      new testsuite failures (x86-64 linux).
      
      llvm-svn: 52044
      13237ac3
Loading