Skip to content
  1. Jul 07, 2010
  2. Jul 03, 2010
  3. Jul 02, 2010
    • Evan Cheng's avatar
      - Two-address pass should not assume unfolding is always successful. · 0ce84486
      Evan Cheng authored
      - X86 unfolding should check if the instructions being unfolded has memoperands.
        If there is no memoperands, then it must assume conservative alignment. If this
        would introduce an expensive sse unaligned load / store, then unfoldMemoryOperand
        etc. should not unfold the instruction.
      
      llvm-svn: 107509
      0ce84486
  4. Jun 22, 2010
  5. Jun 19, 2010
  6. Jun 15, 2010
  7. Jun 09, 2010
  8. Jun 08, 2010
  9. Jun 04, 2010
    • Bob Wilson's avatar
      Add some missing checks in TwoAddressInstructionPass::CoalesceExtSubRegs. · a733daf1
      Bob Wilson authored
      Check that all the instructions are in the same basic block, that the
      EXTRACT_SUBREGs write to the same subregs that are being extracted, and that
      the source and destination registers are in the same regclass.  Some of
      these constraints can be relaxed with a bit more work.  Jakob suggested
      that the loop that checks for subregs when NewSubIdx != 0 should use the
      "nodbg" iterator, so I made that change here, too.
      
      llvm-svn: 105437
      a733daf1
  10. Jun 03, 2010
    • Jakob Stoklund Olesen's avatar
      Slightly change the meaning of the reMaterialize target hook when the original · a8ad9774
      Jakob Stoklund Olesen authored
      instruction defines subregisters.
      
      Any existing subreg indices on the original instruction are preserved or
      composed with the new subreg index.
      
      Also substitute multiple operands mentioning the original register by using the
      new MachineInstr::substituteRegister() function. This is necessary because there
      will soon be <imp-def> operands added to non read-modify-write partial
      definitions. This instruction:
      
        %reg1234:foo = FLAP %reg1234<imp-def>
      
      will reMaterialize(%reg3333, bar) like this:
      
        %reg3333:bar-foo = FLAP %reg333:bar<imp-def>
      
      Finally, replace the TargetRegisterInfo pointer argument with a reference to
      indicate that it cannot be NULL.
      
      llvm-svn: 105358
      a8ad9774
  11. Jun 02, 2010
  12. May 29, 2010
  13. May 21, 2010
    • Evan Cheng's avatar
      - Change MachineInstr::findRegisterDefOperandIdx so it can also look for defs · 3858451e
      Evan Cheng authored
      that are aliases of the specified register.
      - Rename modifiesRegister to definesRegister since it's looking a def of the
      specific register or one of its super-registers. It's not looking for def of a
      sub-register or alias that could change the specified register.
      - Added modifiesRegister to look for defs of aliases.
      
      llvm-svn: 104377
      3858451e
  14. May 19, 2010
  15. May 18, 2010
  16. May 17, 2010
  17. May 15, 2010
    • Evan Cheng's avatar
      Teach two-address pass to do some coalescing while eliminating REG_SEQUENCE · 8c2d062e
      Evan Cheng authored
      instructions.
      
      e.g.
      %reg1026<def> = VLDMQ %reg1025<kill>, 260, pred:14, pred:%reg0
      %reg1027<def> = EXTRACT_SUBREG %reg1026, 6
      %reg1028<def> = EXTRACT_SUBREG %reg1026<kill>, 5
      ...
      %reg1029<def> = REG_SEQUENCE %reg1028<kill>, 5, %reg1027<kill>, 6, %reg1028, 7, %reg1027, 8, %reg1028, 9, %reg1027, 10, %reg1030<kill>, 11, %reg1032<kill>, 12
      
      After REG_SEQUENCE is eliminated, we are left with:
      
      %reg1026<def> = VLDMQ %reg1025<kill>, 260, pred:14, pred:%reg0
      %reg1029:6<def> = EXTRACT_SUBREG %reg1026, 6
      %reg1029:5<def> = EXTRACT_SUBREG %reg1026<kill>, 5
      
      The regular coalescer will not be able to coalesce reg1026 and reg1029 because it doesn't
      know how to combine sub-register indices 5 and 6. Now 2-address pass will consult the
      target whether sub-registers 5 and 6 of reg1026 can be combined to into a larger
      sub-register (or combined to be reg1026 itself as is the case here). If it is possible, 
      it will be able to replace references of reg1026 with reg1029 + the larger sub-register
      index.
      
      llvm-svn: 103835
      8c2d062e
  18. May 13, 2010
  19. May 12, 2010
  20. May 11, 2010
  21. May 10, 2010
  22. May 06, 2010
  23. May 05, 2010
  24. Mar 23, 2010
  25. Mar 03, 2010
  26. Mar 02, 2010
  27. Feb 11, 2010
  28. Feb 10, 2010
  29. Feb 09, 2010
  30. Jan 05, 2010
  31. Dec 03, 2009
  32. Nov 18, 2009
    • Jakob Stoklund Olesen's avatar
      Fix PR5300. · 575c3f3d
      Jakob Stoklund Olesen authored
      When TwoAddressInstructionPass deletes a dead instruction, make sure that all
      register kills are accounted for. The 2-addr register does not get special
      treatment.
      
      llvm-svn: 89246
      575c3f3d
  33. Nov 14, 2009
Loading