Skip to content
  1. Jan 01, 2008
    • Chris Lattner's avatar
      Fix a problem where lib/Target/TargetInstrInfo.h would include and use · 25568e4c
      Chris Lattner authored
      a header file from libcodegen.  This violates a layering order: codegen
      depends on target, not the other way around.  The fix to this is to 
      split TII into two classes, TII and TargetInstrInfoImpl, which defines
      stuff that depends on libcodegen.  It is defined in libcodegen, where 
      the base is not.
      
      llvm-svn: 45475
      25568e4c
  2. Dec 31, 2007
  3. Dec 30, 2007
    • Bill Wendling's avatar
      If we have a load of a global address that's not modified during the · 7749a901
      Bill Wendling authored
      function, then go ahead and hoist it out of the loop. This is the result:
      
      $ cat a.c
      volatile int G;
      
      int A(int N) {
        for (; N > 0; --N)
          G++;
      }
      $ llc -o - -relocation-model=pic
      _A:
      ...
      LBB1_2: # bb
              movl    L_G$non_lazy_ptr-"L1$pb"(%eax), %esi
              incl    (%esi)
              incl    %edx
              cmpl    %ecx, %edx
              jne     LBB1_2  # bb
      ...
      $ llc -o - -relocation-model=pic -machine-licm
      _A:
      ...
              movl    L_G$non_lazy_ptr-"L1$pb"(%eax), %eax
      LBB1_2: # bb
              incl    (%eax)
              incl    %edx
              cmpl    %ecx, %edx
              jne     LBB1_2  # bb
      ...
      
      I'm limiting this to the MOV32rm x86 instruction for now.
      
      llvm-svn: 45444
      7749a901
  4. Dec 29, 2007
  5. Dec 18, 2007
  6. Dec 09, 2007
  7. Dec 08, 2007
    • Bill Wendling's avatar
      Renaming: · 2b07d8c5
      Bill Wendling authored
        isTriviallyReMaterializable -> hasNoSideEffects
        isReallyTriviallyReMaterializable -> isTriviallyReMaterializable
      
      llvm-svn: 44702
      2b07d8c5
  8. Aug 29, 2007
  9. Jun 26, 2007
  10. Jun 19, 2007
    • Dan Gohman's avatar
      Replace M_REMATERIALIZIBLE and the newly-added isOtherReMaterializableLoad · 9e820649
      Dan Gohman authored
      with a general target hook to identify rematerializable instructions. Some
      instructions are only rematerializable with specific operands, such as loads
      from constant pools, while others are always rematerializable. This hook
      allows both to be identified as being rematerializable with the same
      mechanism.
      
      llvm-svn: 37644
      9e820649
  11. Jun 15, 2007
  12. Jun 14, 2007
  13. May 18, 2007
  14. Apr 11, 2007
  15. Jan 26, 2007
  16. Dec 05, 2006
  17. Dec 01, 2006
  18. Oct 28, 2006
  19. Oct 21, 2006
  20. Oct 20, 2006
  21. Oct 18, 2006
  22. Oct 13, 2006
  23. Sep 08, 2006
  24. May 30, 2006
  25. May 24, 2006
  26. May 18, 2006
  27. Feb 02, 2006
  28. Feb 01, 2006
    • Evan Cheng's avatar
      - Use xor to clear integer registers (set R, 0). · 9e350cd6
      Evan Cheng authored
      - Added a new format for instructions where the source register is implied
        and it is same as the destination register. Used for pseudo instructions
        that clear the destination register.
      
      llvm-svn: 25872
      9e350cd6
  29. Jul 27, 2005
  30. Jul 06, 2005
    • Nate Begeman's avatar
      First round of support for doing scalar FP using the SSE2 ISA extension and · 8a093360
      Nate Begeman authored
      XMM registers.  There are many known deficiencies and fixmes, which will be
      addressed ASAP.  The major benefit of this work is that it will allow the
      LLVM register allocator to allocate FP registers across basic blocks.
      
      The x86 backend will still default to x87 style FP.  To enable this work,
      you must pass -enable-sse-scalar-fp and either -sse2 or -sse3 to llc.
      
      An example before and after would be for:
      double foo(double *P) { double Sum = 0; int i; for (i = 0; i < 1000; ++i)
                              Sum += P[i]; return Sum; }
      
      The inner loop looks like the following:
      x87:
      .LBB_foo_1:     # no_exit
              fldl (%esp)
              faddl (%eax,%ecx,8)
              fstpl (%esp)
              incl %ecx
              cmpl $1000, %ecx
              #FP_REG_KILL
              jne .LBB_foo_1  # no_exit
      
      SSE2:
              addsd (%eax,%ecx,8), %xmm0
              incl %ecx
              cmpl $1000, %ecx
              #FP_REG_KILL
              jne .LBB_foo_1  # no_exit
      
      llvm-svn: 22340
      8a093360
  31. Apr 22, 2005
  32. Jan 19, 2005
    • Chris Lattner's avatar
      Teach the code generator that shrd/shld is commutable if it has an immediate. · 29478017
      Chris Lattner authored
      This allows us to generate this:
      
      foo:
              mov %EAX, DWORD PTR [%ESP + 4]
              mov %EDX, DWORD PTR [%ESP + 8]
              shld %EDX, %EDX, 2
              shl %EAX, 2
              ret
      
      instead of this:
      
      foo:
              mov %EAX, DWORD PTR [%ESP + 4]
              mov %ECX, DWORD PTR [%ESP + 8]
              mov %EDX, %EAX
              shrd %EDX, %ECX, 30
              shl %EAX, 2
              ret
      
      Note the magically transmogrifying immediate.
      
      llvm-svn: 19686
      29478017
  33. Jan 02, 2005
  34. Aug 11, 2004
  35. Aug 01, 2004
  36. Jul 31, 2004
  37. Jun 11, 2004
  38. Apr 13, 2004
  39. Apr 08, 2004
    • John Criswell's avatar
      Added the llvm.readport and llvm.writeport intrinsics for x86. These do · 10db062d
      John Criswell authored
      I/O port instructions on x86.  The specific code sequence is tailored to
      the parameters and return value of the intrinsic call.
      Added the ability for implicit defintions to be printed in the Instruction
      Printer.
      Added the ability for RawFrm instruction to print implict uses and
      defintions with correct comma output.  This required adjustment to some
      methods so that a leading comma would or would not be printed.
      
      llvm-svn: 12782
      10db062d
  40. Apr 01, 2004
Loading