Skip to content
  1. Nov 28, 2007
  2. Nov 27, 2007
  3. Nov 24, 2007
    • Chris Lattner's avatar
      cab915f9
    • Chris Lattner's avatar
      Implement support for custom legalization in DAGTypeLegalizer::ExpandOperand. · 6e364189
      Chris Lattner authored
      Improve a comment.
      Unbreak Duncan's carefully written path compression where I didn't realize
      what was happening!
      
      llvm-svn: 44301
      6e364189
    • Chris Lattner's avatar
      Several changes: · f81d5886
      Chris Lattner authored
      1) Change the interface to TargetLowering::ExpandOperationResult to 
         take and return entire NODES that need a result expanded, not just
         the value.  This allows us to handle things like READCYCLECOUNTER,
         which returns two values.
      2) Implement (extremely limited) support in LegalizeDAG::ExpandOp for MERGE_VALUES.
      3) Reimplement custom lowering in LegalizeDAGTypes in terms of the new
         ExpandOperationResult.  This makes the result simpler and fully 
         general.
      4) Implement (fully general) expand support for MERGE_VALUES in LegalizeDAGTypes.
      5) Implement ExpandOperationResult support for ARM f64->i64 bitconvert and ARM
         i64 shifts, allowing them to work with LegalizeDAGTypes.
      6) Implement ExpandOperationResult support for X86 READCYCLECOUNTER and FP_TO_SINT,
         allowing them to work with LegalizeDAGTypes.
      
      LegalizeDAGTypes now passes several more X86 codegen tests when enabled and when
      type legalization in LegalizeDAG is ifdef'd out.
      
      llvm-svn: 44300
      f81d5886
  4. Nov 21, 2007
  5. Nov 19, 2007
  6. Nov 17, 2007
    • Nate Begeman's avatar
      Add support for vectors to int <-> float casts. · d4d45c26
      Nate Begeman authored
      llvm-svn: 44204
      d4d45c26
    • Evan Cheng's avatar
      Live interval splitting: · 8e223793
      Evan Cheng authored
      When a live interval is being spilled, rather than creating short, non-spillable
      intervals for every def / use, split the interval at BB boundaries. That is, for
      every BB where the live interval is defined or used, create a new interval that
      covers all the defs and uses in the BB.
      
      This is designed to eliminate one common problem: multiple reloads of the same
      value in a single basic block. Note, it does *not* decrease the number of spills
      since no copies are inserted so the split intervals are *connected* through
      spill and reloads (or rematerialization). The newly created intervals can be
      spilled again, in that case, since it does not span multiple basic blocks, it's
      spilled in the usual manner. However, it can reuse the same stack slot as the
      previously split interval.
      
      This is currently controlled by -split-intervals-at-bb.
      
      llvm-svn: 44198
      8e223793
  7. Nov 16, 2007
  8. Nov 15, 2007
  9. Nov 14, 2007
  10. Nov 13, 2007
  11. Nov 12, 2007
  12. Nov 09, 2007
    • Hartmut Kaiser's avatar
      Fixed a strange construct. Please review. · 67297144
      Hartmut Kaiser authored
      llvm-svn: 43960
      67297144
    • Duncan Sands's avatar
      Move MinAlign to MathExtras.h. · e795efea
      Duncan Sands authored
      llvm-svn: 43944
      e795efea
    • Duncan Sands's avatar
      Fix some load/store logic that would be wrong for · e7a9ac92
      Duncan Sands authored
      apints on big-endian machines if the bitwidth is
      not a multiple of 8.  Introduce a new helper,
      MVT::getStoreSizeInBits, and use it.
      
      llvm-svn: 43934
      e7a9ac92
    • Duncan Sands's avatar
      Add terminating newline. · bab9dc94
      Duncan Sands authored
      llvm-svn: 43933
      bab9dc94
    • Evan Cheng's avatar
      Much improved pic jumptable codegen: · 797d56ff
      Evan Cheng authored
      Then:
              call    "L1$pb"
      "L1$pb":
              popl    %eax
      		...
      LBB1_1: # entry
              imull   $4, %ecx, %ecx
              leal    LJTI1_0-"L1$pb"(%eax), %edx
              addl    LJTI1_0-"L1$pb"(%ecx,%eax), %edx
              jmpl    *%edx
      
              .align  2
              .set L1_0_set_3,LBB1_3-LJTI1_0
              .set L1_0_set_2,LBB1_2-LJTI1_0
              .set L1_0_set_5,LBB1_5-LJTI1_0
              .set L1_0_set_4,LBB1_4-LJTI1_0
      LJTI1_0:
              .long    L1_0_set_3
              .long    L1_0_set_2
      
      Now:
              call    "L1$pb"
      "L1$pb":
              popl    %eax
      		...
      LBB1_1: # entry
              addl    LJTI1_0-"L1$pb"(%eax,%ecx,4), %eax
              jmpl    *%eax
      
      		.align  2
      		.set L1_0_set_3,LBB1_3-"L1$pb"
      		.set L1_0_set_2,LBB1_2-"L1$pb"
      		.set L1_0_set_5,LBB1_5-"L1$pb"
      		.set L1_0_set_4,LBB1_4-"L1$pb"
      LJTI1_0:
              .long    L1_0_set_3
              .long    L1_0_set_2
      
      llvm-svn: 43924
      797d56ff
Loading