Skip to content
  1. Jun 21, 2006
    • Chris Lattner's avatar
      Add some more immediate patterns. This allows us to compile: · d881f825
      Chris Lattner authored
      void test6() {
        Y = 0xABCD0123BCDE4567;
      }
      
      into:
      
      _test6:
              lis r2, -21555
              lis r3, ha16(_Y)
              ori r2, r2, 291
              rldicr r2, r2, 32, 31
              oris r2, r2, 48350
              ori r2, r2, 17767
              std r2, lo16(_Y)(r3)
              blr
      
      llvm-svn: 28885
      d881f825
    • Chris Lattner's avatar
      Instead of li/xoris use li/oris. Note that this doesn't work if bit 15 is · 9834ad2f
      Chris Lattner authored
      set, so disable the pattern in that case.
      
      llvm-svn: 28884
      9834ad2f
    • Chris Lattner's avatar
      Add some 64-bit logical ops. · 7e742e46
      Chris Lattner authored
      Split imm16Shifted into a sext/zext form for 64-bit support.
      Add some patterns for immediate formation.  For example, we now compile this:
      
      static unsigned long long Y;
      void test3() {
        Y = 0xF0F00F00;
      }
      
      into:
      
      _test3:
              li r2, 3840
              lis r3, ha16(_Y)
              xoris r2, r2, 61680
              std r2, lo16(_Y)(r3)
              blr
      
      GCC produces:
      
      _test3:
              li r0,0
              lis r2,ha16(_Y)
              ori r0,r0,61680
              sldi r0,r0,16
              ori r0,r0,3840
              std r0,lo16(_Y)(r2)
              blr
      
      llvm-svn: 28883
      7e742e46
  2. Jun 20, 2006
  3. Jun 16, 2006
Loading