Skip to content
  1. Apr 20, 2005
  2. Apr 19, 2005
  3. Apr 18, 2005
    • Nate Begeman's avatar
      Next round of PPC CR optimizations. For the following code: · 2331c061
      Nate Begeman authored
      int %bar(float %a, float %b, float %c, float %d) {
      entry:
          %tmp.1 = setlt float %a, %d
          %tmp.2 = setlt float %b, %d
          %or = or bool %tmp.1, %tmp.2
          %tmp.3 = setgt float %c, %d
          %tmp.4 = or bool %or, %tmp.3
          %tmp.5 = and bool %tmp.4, true
          %retval = cast bool %tmp.5 to int
          ret int %retval
      }
      
      We now emit:
      
      _bar:
      .LBB_bar_0:     ; entry
              fcmpu cr0, f1, f4
              fcmpu cr1, f2, f4
              cror 0, 0, 4
              fcmpu cr1, f3, f4
              cror 28, 0, 5
              mfcr r2
              rlwinm r3, r2, 29, 31, 31
              blr
      
      Instead of:
      
      _bar:
      .LBB_bar_0:     ; entry
              fcmpu cr7, f1, f4
              mfcr r2
              rlwinm r2, r2, 29, 31, 31
              fcmpu cr7, f2, f4
              mfcr r3
              rlwinm r3, r3, 29, 31, 31
              or r2, r2, r3
              fcmpu cr7, f3, f4
              mfcr r3
              rlwinm r3, r3, 30, 31, 31
              or r3, r2, r3
              blr
      
      llvm-svn: 21321
      2331c061
    • Chris Lattner's avatar
      silence a bogus warning · ee844137
      Chris Lattner authored
      llvm-svn: 21320
      ee844137
    • Chris Lattner's avatar
      Fold setcc of MVT::i1 operands into logical operations · b61ecb58
      Chris Lattner authored
      llvm-svn: 21319
      b61ecb58
    • Chris Lattner's avatar
      6d40fd01
    • Chris Lattner's avatar
      Another simple xform · 868d4730
      Chris Lattner authored
      llvm-svn: 21317
      868d4730
    • Chris Lattner's avatar
      Fold: · bd22d83d
      Chris Lattner authored
              // (X != 0) | (Y != 0) -> (X|Y != 0)
              // (X == 0) & (Y == 0) -> (X|Y == 0)
      
      Compiling this:
      
      int %bar(int %a, int %b) {
              entry:
              %tmp.1 = setne int %a, 0
              %tmp.2 = setne int %b, 0
              %tmp.3 = or bool %tmp.1, %tmp.2
              %retval = cast bool %tmp.3 to int
              ret int %retval
              }
      
      to this:
      
      _bar:
              or r2, r3, r4
              addic r3, r2, -1
              subfe r3, r3, r2
              blr
      
      instead of:
      
      _bar:
              addic r2, r3, -1
              subfe r2, r2, r3
              addic r3, r4, -1
              subfe r3, r3, r4
              or r3, r2, r3
              blr
      
      llvm-svn: 21316
      bd22d83d
Loading