Skip to content
  1. Jun 30, 2008
    • Evan Cheng's avatar
      Split scheduling from instruction selection. · 0711d68f
      Evan Cheng authored
      llvm-svn: 52923
      0711d68f
    • Duncan Sands's avatar
      Revert the SelectionDAG optimization that makes · 1ae6ef83
      Duncan Sands authored
      it impossible to create a MERGE_VALUES node with
      only one result: sometimes it is useful to be able
      to create a node with only one result out of one of
      the results of a node with more than one result, for
      example because the new node will eventually be used
      to replace a one-result node using ReplaceAllUsesWith,
      cf X86TargetLowering::ExpandFP_TO_SINT.  On the other
      hand, most users of MERGE_VALUES don't need this and
      for them the optimization was valuable.  So add a new
      utility method getMergeValues for creating MERGE_VALUES
      nodes which by default performs the optimization.
      Change almost everywhere to use getMergeValues (and
      tidy some stuff up at the same time).
      
      llvm-svn: 52893
      1ae6ef83
  2. Jun 19, 2008
  3. Jun 08, 2008
  4. Jun 07, 2008
  5. 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
    • Bruno Cardoso Lopes's avatar
      Added custom isel for MUL, SDIVREM, UDIVREM, SMUL_LOHI and UMUL_LOHI nodes · 1a6e0d61
      Bruno Cardoso Lopes authored
      MUL is not anymore directly matched because its a pseudoinstruction.
      LogicI class fixed to zero-extend immediates. 
      
      llvm-svn: 52036
      1a6e0d61
    • Bruno Cardoso Lopes's avatar
      Added custom SELECT_CC lowering · 4eed3afd
      Bruno Cardoso Lopes authored
      Added special isel for ADDE,SUBE and new patterns to match SUBC,ADDC
      
      llvm-svn: 52031
      4eed3afd
  6. Jun 04, 2008
  7. Jun 01, 2008
  8. May 14, 2008
  9. May 13, 2008
  10. Apr 12, 2008
    • Dan Gohman's avatar
      Drop ISD::MEMSET, ISD::MEMMOVE, and ISD::MEMCPY, which are not Legal · 544ab2c5
      Dan Gohman authored
      on any current target and aren't optimized in DAGCombiner. Instead
      of using intermediate nodes, expand the operations, choosing between
      simple loads/stores, target-specific code, and library calls,
      immediately.
      
      Previously, the code to emit optimized code for these operations
      was only used at initial SelectionDAG construction time; now it is
      used at all times. This fixes some cases where rep;movs was being
      used for small copies where simple loads/stores would be better.
      
      This also cleans up code that checks for alignments less than 4;
      let the targets make that decision instead of doing it in
      target-independent code. This allows x86 to use rep;movs in
      low-alignment cases.
      
      Also, this fixes a bug that resulted in the use of rep;stos for
      memsets of 0 with non-constant memory size when the alignment was
      at least 4. It's better to use the library in this case, which
      can be significantly faster when the size is large.
      
      This also preserves more SourceValue information when memory
      intrinsics are lowered into simple loads/stores.
      
      llvm-svn: 49572
      544ab2c5
  11. Mar 31, 2008
  12. Mar 30, 2008
  13. Mar 25, 2008
  14. Mar 17, 2008
  15. Mar 15, 2008
  16. Mar 11, 2008
  17. Mar 10, 2008
  18. Mar 08, 2008
  19. Feb 28, 2008
  20. Feb 27, 2008
  21. Feb 26, 2008
  22. Feb 16, 2008
  23. Feb 10, 2008
  24. Feb 08, 2008
  25. Feb 05, 2008
  26. Feb 02, 2008
    • Evan Cheng's avatar
      Get rid of the annoying blank lines before labels. · 32e5347e
      Evan Cheng authored
      llvm-svn: 46667
      32e5347e
    • Evan Cheng's avatar
      SDIsel processes llvm.dbg.declare by recording the variable debug information... · efd142a9
      Evan Cheng authored
      SDIsel processes llvm.dbg.declare by recording the variable debug information descriptor and its corresponding stack frame index in MachineModuleInfo. This only works if the local variable is "homed" in the stack frame. It does not work for byval parameter, etc.
      Added ISD::DECLARE node type to represent llvm.dbg.declare intrinsic. Now the intrinsic calls are lowered into a SDNode and lives on through out the codegen passes.
      For now, since all the debugging information recording is done at isel time, when a ISD::DECLARE node is selected, it has the side effect of also recording the variable. This is a short term solution that should be fixed in time.
      
      llvm-svn: 46659
      efd142a9
  27. Jan 22, 2008
  28. Jan 17, 2008
    • Chris Lattner's avatar
      This commit changes: · 1ea55cf8
      Chris Lattner authored
      1. Legalize now always promotes truncstore of i1 to i8. 
      2. Remove patterns and gunk related to truncstore i1 from targets.
      3. Rename the StoreXAction stuff to TruncStoreAction in TLI.
      4. Make the TLI TruncStoreAction table a 2d table to handle from/to conversions.
      5. Mark a wide variety of invalid truncstores as such in various targets, e.g.
         X86 currently doesn't support truncstore of any of its integer types.
      6. Add legalize support for truncstores with invalid value input types.
      7. Add a dag combine transform to turn store(truncate) into truncstore when
         safe.
      
      The later allows us to compile CodeGen/X86/storetrunc-fp.ll to:
      
      _foo:
      	fldt	20(%esp)
      	fldt	4(%esp)
      	faddp	%st(1)
      	movl	36(%esp), %eax
      	fstps	(%eax)
      	ret
      
      instead of:
      
      _foo:
      	subl	$4, %esp
      	fldt	24(%esp)
      	fldt	8(%esp)
      	faddp	%st(1)
      	fstps	(%esp)
      	movl	40(%esp), %eax
      	movss	(%esp), %xmm0
      	movss	%xmm0, (%eax)
      	addl	$4, %esp
      	ret
      
      llvm-svn: 46140
      1ea55cf8
  29. Jan 07, 2008
  30. Jan 06, 2008
    • Chris Lattner's avatar
      Change the 'isStore' inferrer to look for 'SDNPMayStore' · a348f55e
      Chris Lattner authored
      instead of "ISD::STORE".  This allows us to mark target-specific dag
      nodes as storing (such as ppc byteswap stores).  This allows us to remove
      more explicit isStore flags from the .td files.
      
      Finally, add a warning for when a .td file contains an explicit 
      isStore and tblgen is able to infer it.
      
      llvm-svn: 45654
      a348f55e
Loading