Skip to content
  1. May 22, 2010
  2. May 20, 2010
  3. May 19, 2010
  4. May 14, 2010
  5. May 13, 2010
  6. May 07, 2010
  7. May 06, 2010
  8. May 03, 2010
    • Kevin Enderby's avatar
      Fixed the encoding of the x86 push instructions. Using a 32-bit immediate value · 1a51d4ce
      Kevin Enderby authored
      caused the a pushl instruction to be incorrectly encoding using only two bytes
      of immediate, causing the following 2 instruction bytes to be part of the 32-bit
      immediate value.  Also fixed the one byte form of push to be used when the
      immediate would fit in a signed extended byte.  Lastly changed the names to not
      include the 32 of PUSH32 since they actually push the size of the stack pointer.
      
      llvm-svn: 102951
      1a51d4ce
  9. Apr 30, 2010
  10. Apr 29, 2010
  11. Apr 28, 2010
  12. Apr 27, 2010
  13. Apr 21, 2010
  14. Apr 17, 2010
  15. Apr 06, 2010
  16. Apr 02, 2010
  17. Mar 28, 2010
  18. Mar 27, 2010
  19. Mar 25, 2010
    • Jakob Stoklund Olesen's avatar
      Teach TableGen to understand X.Y notation in the TSFlagsFields strings. · f8d7eda6
      Jakob Stoklund Olesen authored
      Remove much horribleness from X86InstrFormats as a result. Similar
      simplifications are probably possible for other targets.
      
      llvm-svn: 99539
      f8d7eda6
    • Chris Lattner's avatar
      eliminate a bunch more parallels now that scheduling · 23bf99a9
      Chris Lattner authored
      handles dead implicit results more aggressively.  More
      to come, I think this is now just a data entry problem.
      
      llvm-svn: 99486
      23bf99a9
    • Evan Cheng's avatar
      Disable folding loads into tail call in 32-bit PIC mode. It can introduce illegal code like this: · b07a29ec
      Evan Cheng authored
              addl    $12, %esp
              popl    %esi
              popl    %edi
              popl    %ebx
              popl    %ebp
              jmpl    *__Block_deallocator-L1$pb(%esi)  # TAILCALL
      
      The problem is the global base register is assigned GR32 register class. TCRETURNmi needs the registers making up the address mode to have the GR32_TC register class.
      
      The *proper* fix is for X86DAGToDAGISel::getGlobalBaseReg() to return a copy from the global base register of the machine function rather than returning the register itself. But that has the potential of causing it to be coalesced to a more restrictive register class: GR32_TC. It can introduce additional copies and spills. For something as important the PIC base, it's not worth it especially since this is not an issue on 64-bit.
      
      llvm-svn: 99455
      b07a29ec
  20. Mar 24, 2010
  21. Mar 19, 2010
    • Chris Lattner's avatar
      remove the patterns that I commented out in r98930, Dan verified · 8352941b
      Chris Lattner authored
      that they are dead.
      
      llvm-svn: 99000
      8352941b
    • Chris Lattner's avatar
      add a new SDNPVariadic SDNP node flag, and use it in · 83aeaab4
      Chris Lattner authored
      dag isel gen instead of instruction properties.  This
      allows the oh-so-useful behavior of matching a variadic
      non-root node.
      
      llvm-svn: 98934
      83aeaab4
    • Chris Lattner's avatar
      comment out a bunch of parallel store patterns that apparently · 607795f9
      Chris Lattner authored
      can't match or just have no testcases.  Will remove after 
      confirmation from dan that they really are dead.
      
      llvm-svn: 98930
      607795f9
    • Chris Lattner's avatar
      Now that tblgen can handle matching implicit defs of instructions · 83facb08
      Chris Lattner authored
      to input patterns, we can fix X86ISD::CMP and X86ISD::BT as taking
      two inputs (which have to be the same type) and *returning an i32*.
      This is how the SDNodes get made in the graph, but we weren't able
      to model it this way due to deficiencies in the pattern language.
      
      Now we can change things like this:
      
       def UCOM_FpIr80: FpI_<(outs), (ins RFP80:$lhs, RFP80:$rhs), CompareFP,
      -                  [(X86cmp RFP80:$lhs, RFP80:$rhs),
      -                   (implicit EFLAGS)]>; // CC = ST(0) cmp ST(i)
      +                  [(set EFLAGS, (X86cmp RFP80:$lhs, RFP80:$rhs))]>;
      
      and fix terrible crimes like this:
      
      -def : Pat<(parallel (X86cmp GR8:$src1, 0), (implicit EFLAGS)),
      +def : Pat<(X86cmp GR8:$src1, 0),
                 (TEST8rr GR8:$src1, GR8:$src1)>;
      
      This relies on matching the result of TEST8rr (which is EFLAGS, which is
      an implicit def) to the result of X86cmp, an i32.
      
      llvm-svn: 98903
      83facb08
Loading