Skip to content
  1. Jul 12, 2010
  2. Jul 11, 2010
  3. Jul 10, 2010
    • Duncan Sands's avatar
      The accumulator tail recursion transform claims to work for any associative · 82b21c08
      Duncan Sands authored
      operation, but the way it's implemented requires the operation to also be
      commutative.  So add a check for commutativity (and tweak the corresponding
      comments).  This makes no difference in practice since every associative
      LLVM instruction is also commutative!  Here's an example to show the need
      for commutativity: the accum_recursion.ll testcase calculates the factorial
      function.  Before the transformation the result of a call is
        ((((1*1)*2)*3)...)*x
      while afterwards it is
        (((1*x)*(x-1))...*2)*1
      which clearly requires both associativity and commutativity of * to be equal
      to the original.
      
      llvm-svn: 108056
      82b21c08
    • Jakob Stoklund Olesen's avatar
      Emit COPY instructions instead of using copyRegToReg in InstrEmitter, · e50d30d5
      Jakob Stoklund Olesen authored
      ScheduleDAGEmit, TwoAddressLowering, and PHIElimination.
      
      This switches the bulk of register copies to using COPY, but many less used
      copyRegToReg calls remain.
      
      llvm-svn: 108050
      e50d30d5
    • Jakob Stoklund Olesen's avatar
      Don't emit st(0)/st(1) copies as FpMOV instructions. Use FpSET_ST? instead. · de457896
      Jakob Stoklund Olesen authored
      Based on a patch by Rafael Espíndola.
      
      Attempt to make the FpSET_ST1 hack more robust, but we are still relying on
      FpSET_ST0 preceeding it. This is only for supporting really weird x87 inline
      asm.
      
      We support:
      
        FpSET_ST0
        INLINEASM
      
        FpSET_ST0
        FpSET_ST1
        INLINEASM
      
      with and without kills on the arguments. We don't support:
      
        FpSET_ST1
        FpSET_ST0
        INLINEASM
      
      nor
      
        FpSET_ST1
        INLINEASM
      
      Just Don't Do It!
      
      llvm-svn: 108047
      de457896
Loading