Skip to content
  1. Mar 06, 2010
  2. Mar 05, 2010
    • Evan Cheng's avatar
      Fix typo. · 27494232
      Evan Cheng authored
      llvm-svn: 97818
      27494232
    • Chris Lattner's avatar
      fix bss section printing for cell, patch by Kalle Raiskila! · f0692603
      Chris Lattner authored
      llvm-svn: 97814
      f0692603
    • Wesley Peck's avatar
      Reworking the stack layout that the MicroBlaze backend generates. · 34004170
      Wesley Peck authored
      The MicroBlaze backend was generating stack layouts that did not
      conform correctly to the ABI. This update generates stack layouts
      which are closer to what GCC does.
      
      Variable arguments support was added as well but the stack layout
      for varargs has not been finalized.
      
      llvm-svn: 97807
      34004170
    • 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
    • Johnny Chen's avatar
      Trivial comment change. · 70e01cd0
      Johnny Chen authored
      llvm-svn: 97776
      70e01cd0
    • 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
  3. Mar 04, 2010
  4. Mar 03, 2010
  5. 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
      remove 300 lines of code that is now dead in the MSP430 backend · 71ddd8e2
      Chris Lattner authored
      now that isel handles chains more aggressively.  This also
      allows us to make isLegalToFold non-virtual.
      
      llvm-svn: 97597
      71ddd8e2
    • 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
    • Johnny Chen's avatar
      7041f2ce
    • Johnny Chen's avatar
      Removed the extra S from the multiclass def T2I_adde_sube_s_irs as well as from · 9dc21054
      Johnny Chen authored
      the opc string passed in, since it's a given from the class inheritance of T2sI.
      The fixed the extra 's' in adcss & sbcss when disassembly printing.
      
      llvm-svn: 97582
      9dc21054
Loading