Skip to content
  1. May 14, 2008
  2. Apr 20, 2008
  3. Apr 16, 2008
  4. Apr 15, 2008
    • Dan Gohman's avatar
      Treat EntryToken nodes as "passive" so that they aren't added to the · 4370f267
      Dan Gohman authored
      ScheduleDAG; they don't correspond to any actual instructions so they
      don't need to be scheduled.
      
      This fixes a bug where the EntryToken was being scheduled multiple
      times in some cases, though it ended up not causing any trouble because 
      EntryToken doesn't expand into anything. With this fixed the schedulers
      reliably schedule the expected number of units, so we can check this
      with an assertion.
      
      This requires a tweak to test/CodeGen/X86/loop-hoist.ll because it
      ends up getting scheduled differently in a trivial way, though it was
      enough to fool the prcontext+grep that the test does.
      
      llvm-svn: 49701
      4370f267
  5. Apr 07, 2008
  6. Apr 03, 2008
    • Evan Cheng's avatar
      Start of a series of patches related to implicit_def. · 916802a7
      Evan Cheng authored
      There is no point in creating a long live range defined by an implicit_def. Scheduler now duplicates implicit_def instruction for each of its uses. Therefore, if an implicit_def node has multiple uses, it will become a number of very short live ranges, rather than a long one. This will make coalescer's job easier.
      
      llvm-svn: 49164
      916802a7
    • Evan Cheng's avatar
      Backing out 48222 temporarily. · 025cea11
      Evan Cheng authored
      llvm-svn: 49124
      025cea11
  7. Mar 26, 2008
    • Roman Levenstein's avatar
      Use a linked data structure for the uses lists of an SDNode, just like · 358e04a1
      Roman Levenstein authored
      LLVM Value/Use does and MachineRegisterInfo/MachineOperand does.
      This allows constant time for all uses list maintenance operations.
      
      The idea was suggested by Chris. Reviewed by Evan and Dan.
      Patch is tested and approved by Dan.
      
      On normal use-cases compilation speed is not affected. On very big basic
      blocks there are compilation speedups in the range of 15-20% or even better. 
      
      llvm-svn: 48822
      358e04a1
  8. Mar 25, 2008
  9. Mar 16, 2008
  10. Mar 15, 2008
  11. Mar 14, 2008
  12. Mar 12, 2008
    • Evan Cheng's avatar
      Experimental scheduler change to schedule / coalesce the copies added for... · 65e9d5f1
      Evan Cheng authored
      Experimental scheduler change to schedule / coalesce the copies added for function livein's. Take 2008-03-10-RegAllocInfLoop.ll, the schedule looks like this after these copies are inserted:
      
      entry: 0x12049d0, LLVM BB @0x1201fd0, ID#0:
      Live Ins: %EAX %EDX %ECX
              %reg1031<def> = MOVPC32r 0
              %reg1032<def> = ADD32ri %reg1031, <es:_GLOBAL_OFFSET_TABLE_>, %EFLAGS<imp-def>
              %reg1028<def> = MOV32rr %EAX
              %reg1029<def> = MOV32rr %EDX
              %reg1030<def> = MOV32rr %ECX
              %reg1027<def> = MOV8rm %reg0, 1, %reg0, 0, Mem:LD(1,1) [0x1201910 + 0]
              %reg1025<def> = MOV32rr %reg1029
              %reg1026<def> = MOV32rr %reg1030
              %reg1024<def> = MOV32rr %reg1028
      
      The copies unnecessarily increase register pressure and it will end up requiring a physical register to be spilled.
      
      With -schedule-livein-copies:
      entry: 0x12049d0, LLVM BB @0x1201fa0, ID#0:
      Live Ins: %EAX %EDX %ECX
              %reg1031<def> = MOVPC32r 0
              %reg1032<def> = ADD32ri %reg1031, <es:_GLOBAL_OFFSET_TABLE_>, %EFLAGS<imp-def>
              %reg1024<def> = MOV32rr %EAX
              %reg1025<def> = MOV32rr %EDX
              %reg1026<def> = MOV32rr %ECX
              %reg1027<def> = MOV8rm %reg0, 1, %reg0, 0, Mem:LD(1,1) [0x12018e0 + 0]
      
      Much better!
      
      llvm-svn: 48307
      65e9d5f1
  13. Mar 11, 2008
  14. Mar 10, 2008
  15. Mar 09, 2008
  16. Mar 04, 2008
  17. Feb 28, 2008
  18. Feb 16, 2008
  19. Feb 14, 2008
    • 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
  20. Feb 11, 2008
  21. Feb 10, 2008
  22. Feb 06, 2008
  23. Feb 02, 2008
    • 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
  24. Feb 01, 2008
  25. Jan 31, 2008
Loading