Skip to content
  1. Apr 09, 2005
  2. Apr 07, 2005
    • Chris Lattner's avatar
      If a target zero or sign extends the result of its setcc, allow folding of · b32d9318
      Chris Lattner authored
      this into sign/zero extension instructions later.
      
      On PPC, for example, this testcase:
      
      %G = external global sbyte
      implementation
      void %test(int %X, int %Y) {
        %C = setlt int %X, %Y
        %D = cast bool %C to sbyte
        store sbyte %D, sbyte* %G
        ret void
      }
      
      Now codegens to:
      
              cmpw cr0, r3, r4
              li r3, 1
              li r4, 0
              blt .LBB_test_2 ;
      .LBB_test_1:    ;
              or r3, r4, r4
      .LBB_test_2:    ;
              addis r2, r2, ha16(L_G$non_lazy_ptr-"L00000$pb")
              lwz r2, lo16(L_G$non_lazy_ptr-"L00000$pb")(r2)
              stb r3, 0(r2)
      
      instead of:
      
              cmpw cr0, r3, r4
              li r3, 1
              li r4, 0
              blt .LBB_test_2 ;
      .LBB_test_1:    ;
              or r3, r4, r4
      .LBB_test_2:    ;
      ***     rlwinm r3, r3, 0, 31, 31
              addis r2, r2, ha16(L_G$non_lazy_ptr-"L00000$pb")
              lwz r2, lo16(L_G$non_lazy_ptr-"L00000$pb")(r2)
              stb r3, 0(r2)
      
      llvm-svn: 21148
      b32d9318
    • Chris Lattner's avatar
      Remove somethign I had for testing · dfed7355
      Chris Lattner authored
      llvm-svn: 21144
      dfed7355
    • Chris Lattner's avatar
      This patch does two things. First, it canonicalizes 'X >= C' -> 'X > C-1' · 6b03a0cb
      Chris Lattner authored
      (likewise for <= >=u >=u).
      
      Second, it implements a special case hack to turn 'X gtu SINTMAX' -> 'X lt 0'
      
      On powerpc, for example, this changes this:
      
              lis r2, 32767
              ori r2, r2, 65535
              cmplw cr0, r3, r2
              bgt .LBB_test_2
      
      into:
      
              cmpwi cr0, r3, 0
              blt .LBB_test_2
      
      llvm-svn: 21142
      6b03a0cb
    • Chris Lattner's avatar
      Fix a really scary bug that Nate found where we weren't deleting the right · 7d13eae2
      Chris Lattner authored
      elements auto of the autoCSE maps.
      
      llvm-svn: 21128
      7d13eae2
  3. Apr 06, 2005
  4. Apr 04, 2005
  5. Apr 02, 2005
  6. Apr 01, 2005
  7. Mar 31, 2005
  8. Mar 30, 2005
  9. Mar 29, 2005
  10. Mar 28, 2005
  11. Mar 26, 2005
  12. Mar 17, 2005
  13. Mar 15, 2005
  14. Mar 10, 2005
    • Chris Lattner's avatar
      I didn't mean to check this in. :( · 6f6ecad9
      Chris Lattner authored
      llvm-svn: 20555
      6f6ecad9
    • Chris Lattner's avatar
      Fix a bug where we would incorrectly do a sign ext instead of a zero ext · 85e71639
      Chris Lattner authored
      because we were checking the wrong thing.  Thanks to andrew for pointing
      this out!
      
      llvm-svn: 20554
      85e71639
    • Chris Lattner's avatar
      Allow the live interval analysis pass to be a bit more aggressive about · 76aa8e07
      Chris Lattner authored
      numbering values in live ranges for physical registers.
      
      The alpha backend currently generates code that looks like this:
      
        vreg = preg
      ...
        preg = vreg
        use preg
      ...
        preg = vreg
        use preg
      
      etc.  Because vreg contains the value of preg coming in, each of the
      copies back into preg contain that initial value as well.
      
      In the case of the Alpha, this allows this testcase:
      
      void "foo"(int %blah) {
              store int 5, int *%MyVar
              store int 12, int* %MyVar2
              ret void
      }
      
      to compile to:
      
      foo:
              ldgp $29, 0($27)
              ldiq $0,5
              stl $0,MyVar
              ldiq $0,12
              stl $0,MyVar2
              ret $31,($26),1
      
      instead of:
      
      foo:
              ldgp $29, 0($27)
              bis $29,$29,$0
              ldiq $1,5
              bis $0,$0,$29
              stl $1,MyVar
              ldiq $1,12
              bis $0,$0,$29
              stl $1,MyVar2
              ret $31,($26),1
      
      This does not seem to have any noticable effect on X86 code.
      
      This fixes PR535.
      
      llvm-svn: 20536
      76aa8e07
  15. Mar 09, 2005
    • Chris Lattner's avatar
      constant fold FP_ROUND_INREG, ZERO_EXTEND_INREG, and SIGN_EXTEND_INREG · 7f269467
      Chris Lattner authored
      This allows the alpha backend to compile:
      
      bool %test(uint %P) {
              %c = seteq uint %P, 0
              ret bool %c
      }
      
      into:
      
      test:
              ldgp $29, 0($27)
              ZAP $16,240,$0
              CMPEQ $0,0,$0
              AND $0,1,$0
              ret $31,($26),1
      
      instead of:
      
      test:
              ldgp $29, 0($27)
              ZAP $16,240,$0
              ldiq $1,0
              ZAP $1,240,$1
              CMPEQ $0,$1,$0
              AND $0,1,$0
              ret $31,($26),1
      
      ... and fixes PR534.
      
      llvm-svn: 20534
      7f269467
Loading