Skip to content
  1. May 03, 2008
  2. May 02, 2008
  3. May 01, 2008
  4. Apr 30, 2008
  5. Apr 29, 2008
  6. Apr 28, 2008
  7. Apr 27, 2008
    • Chris Lattner's avatar
      Implement a signficant optimization for inline asm: · 22379734
      Chris Lattner authored
      When choosing between constraints with multiple options,
      like "ir", test to see if we can use the 'i' constraint and
      go with that if possible.  This produces more optimal ASM in
      all cases (sparing a register and an instruction to load it),
      and fixes inline asm like this:
      
      void test () {
        asm volatile (" %c0 %1 " : : "imr" (42), "imr"(14));
      }
      
      Previously we would dump "42" into a memory location (which
      is ok for the 'm' constraint) which would cause a problem
      because the 'c' modifier is not valid on memory operands.
      
      Isn't it great how inline asm turns 'missed optimization'
      into 'compile failed'??
      
      Incidentally, this was the todo in 
      PowerPC/2007-04-24-InlineAsm-I-Modifier.ll
      
      Please do NOT pull this into Tak.
      
      llvm-svn: 50315
      22379734
    • Chris Lattner's avatar
      Move a bunch of inline asm code out of line. · 4793515a
      Chris Lattner authored
      llvm-svn: 50313
      4793515a
  8. Apr 25, 2008
  9. Apr 24, 2008
  10. Apr 23, 2008
  11. Apr 22, 2008
    • Chris Lattner's avatar
      Start doing the significantly useful part of jump threading: handle cases · 37e9c187
      Chris Lattner authored
      where a comparison has a phi input and that phi is a constant.  For example,
      stuff like:
      
        Threading edge through bool from 'bb2149' to 'bb2231' with cost: 1, across block:
      bb2237:		; preds = %bb2231, %bb2149
      	%tmp2328.rle = phi i32 [ %tmp2232, %bb2231 ], [ %tmp2232439, %bb2149 ]		; <i32> [#uses=2]
      	%done.0 = phi i32 [ %done.2, %bb2231 ], [ 0, %bb2149 ]		; <i32> [#uses=1]
      	%tmp2239 = icmp eq i32 %done.0, 0		; <i1> [#uses=1]
      	br i1 %tmp2239, label %bb2231, label %bb2327
      
      or
      
      bb38.i298:		; preds = %bb33.i295, %bb1693
      	%tmp39.i296.rle = phi %struct.ibox* [ null, %bb1693 ], [ %tmp39.i296.rle1109, %bb33.i295 ]		; <%struct.ibox*> [#uses=2]
      	%minspan.1.i291.reg2mem.1 = phi i32 [ 32000, %bb1693 ], [ %minspan.0.i288, %bb33.i295 ]		; <i32> [#uses=1]
      	%tmp40.i297 = icmp eq %struct.ibox* %tmp39.i296.rle, null		; <i1> [#uses=1]
      	br i1 %tmp40.i297, label %implfeeds.exit311, label %bb43.i301
      
      This triggers thousands of times in spec.
      
      llvm-svn: 50110
      37e9c187
Loading