Skip to content
  1. Apr 30, 2005
  2. Apr 29, 2005
  3. Apr 28, 2005
  4. Apr 27, 2005
  5. Apr 26, 2005
    • Duraid Madina's avatar
      constmul bugfix: multiply by 27611 was broken · e06ef802
      Duraid Madina authored
      llvm-svn: 21564
      e06ef802
    • Duraid Madina's avatar
      clean up the code! (oops) lots more cleaning left, however. · bbd0cd71
      Duraid Madina authored
      llvm-svn: 21563
      bbd0cd71
    • Duraid Madina's avatar
      * Add code to reduce multiplies by constant integers to shifts, adds and · 81ebb577
      Duraid Madina authored
        subtracts. This is a very rough and nasty implementation of Lefevre's
        "pattern finding" algorithm. With a few small changes though, it should
        end up beating most other methods in common use, regardless of the size
        of the constant (currently, it's often one or two shifts worse)
      
        TODO: rewrite it so it's not hideously ugly (this is a translation from
              perl, which doesn't help ;)
              bypass most of it for multiplies by 2^n+1
      	(eventually) teach it that some combinations of shift+add are
      	cheaper than others (e.g. shladd on ia64, scaled adds on alpha)
      	get it to try multiple booth encodings in search of the cheapest
      	routine
      	make it work for negative constants
      
        This is hacked up as a DAG->DAG transform, so once I clean it up I hope
        it'll be pulled out of here and put somewhere else. The only thing backends
        should really have to worry about for now is where to draw the line
        between using this code vs. going ahead and doing an integer multiply
        anyway.
      
      llvm-svn: 21560
      81ebb577
  6. Apr 25, 2005
  7. Apr 22, 2005
  8. Apr 21, 2005
  9. Apr 20, 2005
  10. Apr 19, 2005
  11. 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
    • Nate Begeman's avatar
      Change codegen for setcc to read the bit directly out of the condition · 602a45f4
      Nate Begeman authored
        register.  Added support in the .td file for the g5-specific variant
        of cr -> gpr moves that executes faster, but we currently don't
        generate it.
      
      llvm-svn: 21314
      602a45f4
    • Chris Lattner's avatar
      Handle ExternalSymbol operands in the PPC JIT · f281f791
      Chris Lattner authored
      llvm-svn: 21312
      f281f791
  12. Apr 16, 2005
    • Nate Begeman's avatar
      Make pattern isel default for ppc · 779c5cbb
      Nate Begeman authored
      Add new ppc beta option related to using condition registers
      Make pattern isel control flag (-enable-pattern-isel) global and tristate
        0 == off
        1 == on
        2 == target default
      
      llvm-svn: 21309
      779c5cbb
  13. Apr 14, 2005
Loading