Skip to content
  1. Oct 13, 2006
  2. Sep 08, 2006
  3. May 30, 2006
  4. May 24, 2006
  5. May 18, 2006
  6. Feb 02, 2006
  7. 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
  8. Jul 27, 2005
  9. 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
  10. Apr 22, 2005
  11. 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
  12. Jan 02, 2005
  13. Aug 11, 2004
  14. Aug 01, 2004
  15. Jul 31, 2004
  16. Jun 11, 2004
  17. Apr 13, 2004
  18. 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
  19. Apr 01, 2004
  20. Feb 29, 2004
  21. Feb 28, 2004
  22. Feb 27, 2004
  23. Feb 12, 2004
  24. Jan 30, 2004
  25. Dec 28, 2003
  26. Dec 20, 2003
  27. Nov 11, 2003
  28. Oct 21, 2003
  29. Aug 06, 2003
  30. Aug 03, 2003
  31. Jun 27, 2003
    • Brian Gaeke's avatar
      Nice tasty llc fixes. These should fix LLC for x86 for everything in · c1e4ee0f
      Brian Gaeke authored
      SingleSource except oopack and Oscar.  (Sorry, Oscar.)
      
      include/llvm/Target/TargetInstrInfo.h: Remove virtual print method. Add
       accessors for ImplicitUses/Defs.
      lib/Target/TargetInstrInfo.cpp: Remove virtual print method. If you
       really wanted this, just use MI->print(O, TM); instead...
      lib/Target/X86:
      FloatingPoint.cpp: ...like this.
      X86InstrInfo.h: Remove virtual print method. Define the PrintImplUses
       target-specific flag bit.
      X86InstrInfo.def: Add the PrintImplUses flag to all the instructions
       which implicitly use CL, because the assembler needs to see the CL in
       order to generate the right instruction.
      Printer.cpp: Ditch fnIndex at Chris's request. Now we use CurrentFnName
        to name constants in the constant pool for each function instead. This
        avoids keeping state between runOnMachineFunction() invocations, which
        is a no-no. Having MangledGlobals be global is a bogon I'd like to get
        rid of too, but making it a static member of Printer causes link errors
        (why???).
       Make NumberForBB into a member of Printer instead of a global, too.
       Make printOp and printMemReference into methods of Printer.
       X86InstrInfo::print is now Printer::printMachineInstruction, because
        TargetInstrInfo::print is history. (Because of this, we have to qualify
        the names of some TargetInstrInfo methods we call.)
       Print out the ImplicitUses field of any instruction we print that has
        the PrintImplUses bit set.
      
      llvm-svn: 6924
      c1e4ee0f
  32. May 24, 2003
  33. Jan 14, 2003
  34. Jan 13, 2003
  35. Dec 28, 2002
  36. Dec 25, 2002
  37. Dec 13, 2002
  38. Dec 05, 2002
    • Brian Gaeke's avatar
      Target/X86/Printer.cpp: Add sizePtr function, and use it instead of · a4a10fe8
      Brian Gaeke authored
       " <SIZE> PTR " string when emitting assembly.
      
      Target/X86/X86InstrInfo.def: Tidy up a bit:
       Squashed everything down to 118 chars wide, wrapping lines so that
       comment is at the same point on each line. Rename "NoImpRegs" as
       "NoIR". (most instructions have NoImpRegs twice on a line, so this
       saves 10 columns).
      
       Also, annotate various instructions with flags for size of memory operand.
        (MemArg16, MemArg32, MemArg64, etc.)
      
      Target/X86/X86InstrInfo.h: Define flags for size of memory operand.
       (MemArg16, MemArg32, MemArg64, etc.)
      
      llvm-svn: 4932
      a4a10fe8
Loading