Skip to content
  1. Mar 09, 2010
  2. Mar 08, 2010
  3. Mar 06, 2010
  4. Mar 05, 2010
    • Evan Cheng's avatar
      Fix typo. · 27494232
      Evan Cheng authored
      llvm-svn: 97818
      27494232
    • Evan Cheng's avatar
      Fix an oops in x86 sibcall optimization. If the ByVal callee argument is... · 654ec2a6
      Evan Cheng authored
      Fix an oops in x86 sibcall optimization. If the ByVal callee argument is itself passed as a pointer, then it's obviously not safe to do a tail call.
      
      llvm-svn: 97797
      654ec2a6
    • Evan Cheng's avatar
    • Bill Wendling's avatar
      Revert r97766. It's deleting a tag. · 543ce1f6
      Bill Wendling authored
      llvm-svn: 97768
      543ce1f6
    • Bill Wendling's avatar
      Micro-optimization: · 6517f88f
      Bill Wendling authored
      This code:
      
      float floatingPointComparison(float x, float y) {
          double product = (double)x * y;
          if (product == 0.0)
              return product;
          return product - 1.0;
      }
      
      produces this:
      
      _floatingPointComparison:
      0000000000000000        cvtss2sd        %xmm1,%xmm1
      0000000000000004        cvtss2sd        %xmm0,%xmm0
      0000000000000008        mulsd           %xmm1,%xmm0
      000000000000000c        pxor            %xmm1,%xmm1
      0000000000000010        ucomisd         %xmm1,%xmm0
      0000000000000014        jne             0x00000004
      0000000000000016        jp              0x00000002
      0000000000000018        jmp             0x00000008
      000000000000001a        addsd           0x00000006(%rip),%xmm0
      0000000000000022        cvtsd2ss        %xmm0,%xmm0
      0000000000000026        ret
      
      The "jne/jp/jmp" sequence can be reduced to this instead:
      
      _floatingPointComparison:
      0000000000000000        cvtss2sd        %xmm1,%xmm1
      0000000000000004        cvtss2sd        %xmm0,%xmm0
      0000000000000008        mulsd           %xmm1,%xmm0
      000000000000000c        pxor            %xmm1,%xmm1
      0000000000000010        ucomisd         %xmm1,%xmm0
      0000000000000014        jp              0x00000002
      0000000000000016        je              0x00000008
      0000000000000018        addsd           0x00000006(%rip),%xmm0
      0000000000000020        cvtsd2ss        %xmm0,%xmm0
      0000000000000024        ret
      
      for a savings of 2 bytes.
      
      This xform can happen when we recognize that jne and jp jump to the same "true"
      MBB, the unconditional jump would jump to the "false" MBB, and the "true" branch
      is the fall-through MBB.
      
      llvm-svn: 97766
      6517f88f
  5. Mar 04, 2010
  6. Mar 03, 2010
  7. Mar 02, 2010
    • Chris Lattner's avatar
      eliminate PreprocessForRMW now that isel handles it. · 1eb6eb05
      Chris Lattner authored
      We still preprocess calls and fp return stuff.
      
      llvm-svn: 97598
      1eb6eb05
    • Chris Lattner's avatar
      Fix some issues in WalkChainUsers dealing with · dd030701
      Chris Lattner authored
      CopyToReg/CopyFromReg/INLINEASM.  These are annoying because
      they have the same opcode before an after isel.  Fix this by
      setting their NodeID to -1 to indicate that they are selected,
      just like what automatically happens when selecting things that
      end up being machine nodes.
      
      With that done, give IsLegalToFold a new flag that causes it to
      ignore chains.  This lets the HandleMergeInputChains routine be
      the one place that validates chains after a match is successful,
      enabling the new hotness in chain processing.  This smarter
      chain processing eliminates the need for "PreprocessRMW" in the
      X86 and MSP430 backends and enables MSP to start matching it's
      multiple mem operand instructions more aggressively.
      
      I currently #if out the dead code in the X86 backend and MSP 
      backend, I'll remove it for real in a follow-on patch.
      
      The testcase changes are:
        test/CodeGen/X86/sse3.ll: we generate better code
        test/CodeGen/X86/store_op_load_fold2.ll: PreprocessRMW was 
            miscompiling this before, we now generate correct code
            Convert it to filecheck while I'm at it.
        test/CodeGen/MSP430/Inst16mm.ll: Add a testcase for mem/mem
            folding to make anton happy. :)
      
      llvm-svn: 97596
      dd030701
    • Chris Lattner's avatar
      Sink InstructionSelect() out of each target into SDISel, and rename it · f98f124a
      Chris Lattner authored
      DoInstructionSelection.  Inline "SelectRoot" into it from DAGISelHeader.
      Sink some other stuff out of DAGISelHeader into SDISel.
      
      Eliminate the various 'Indent' stuff from various targets, which dates
      to when isel was recursive.
      
       17 files changed, 114 insertions(+), 430 deletions(-)
      
      llvm-svn: 97555
      f98f124a
    • Bill Wendling's avatar
      Remove dead parameter passing. · 78c5b7a7
      Bill Wendling authored
      llvm-svn: 97536
      78c5b7a7
    • Dan Gohman's avatar
      Floating-point add, sub, and mul are now spelled fadd, fsub, and fmul, · 6f34abd0
      Dan Gohman authored
      respectively.
      
      llvm-svn: 97531
      6f34abd0
  8. Mar 01, 2010
  9. Feb 28, 2010
  10. Feb 27, 2010
  11. Feb 26, 2010
Loading