Skip to content
  1. 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
  2. Apr 01, 2008
  3. Mar 31, 2008
  4. Mar 30, 2008
  5. Mar 25, 2008
  6. Mar 21, 2008
    • Duncan Sands's avatar
      Introduce a new node for holding call argument · d97eea37
      Duncan Sands authored
      flags.  This is needed by the new legalize types
      infrastructure which wants to expand the 64 bit
      constants previously used to hold the flags on
      32 bit machines.  There are two functional changes:
      (1) in LowerArguments, if a parameter has the zext
      attribute set then that is marked in the flags;
      before it was being ignored; (2) PPC had some bogus
      code for handling two word arguments when using the
      ELF 32 ABI, which was hard to convert because of
      the bogusness.  As suggested by the original author
      (Nicolas Geoffray), I've disabled it for the moment.
      Tested with "make check" and the Ada ACATS testsuite.
      
      llvm-svn: 48640
      d97eea37
  7. Mar 15, 2008
  8. Mar 11, 2008
  9. Mar 10, 2008
  10. Mar 08, 2008
  11. Mar 05, 2008
  12. Feb 28, 2008
  13. Feb 27, 2008
  14. Feb 26, 2008
  15. Feb 20, 2008
  16. Feb 16, 2008
  17. Feb 15, 2008
  18. Feb 14, 2008
    • Duncan Sands's avatar
      In TargetLowering::LowerCallTo, don't assert that · 4c95dbd6
      Duncan Sands authored
      the return value is zero-extended if it isn't
      sign-extended.  It may also be any-extended.
      Also, if a floating point value was returned
      in a larger floating point type, pass 1 as the
      second operand to FP_ROUND, which tells it
      that all the precision is in the original type.
      I think this is right but I could be wrong.
      Finally, when doing libcalls, set isZExt on
      a parameter if it is "unsigned".  Currently
      isSExt is set when signed, and nothing is
      set otherwise.  This should be right for all
      calls to standard library routines.
      
      llvm-svn: 47122
      4c95dbd6
    • Nate Begeman's avatar
      Change how FP immediates are handled. · 53e1b3f9
      Nate Begeman authored
      1) ConstantFP is now expand by default
      2) ConstantFP is not turned into TargetConstantFP during Legalize
         if it is legal.
      
      This allows ConstantFP to be handled like Constant, allowing for 
      targets that can encode FP immediates as MachineOperands.
      
      As a bonus, fix up Itanium FP constants, which now correctly match,
      and match more constants!  Hooray.
      
      llvm-svn: 47121
      53e1b3f9
  19. Feb 13, 2008
  20. Feb 12, 2008
  21. Feb 10, 2008
  22. Feb 08, 2008
  23. Feb 06, 2008
  24. Feb 05, 2008
  25. Feb 04, 2008
  26. Feb 03, 2008
  27. 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
  28. Jan 31, 2008
Loading