Skip to content
  1. 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
  2. Mar 01, 2005
  3. Feb 28, 2005
  4. Feb 22, 2005
    • Chris Lattner's avatar
      Fix a bug in the 'store fpimm, ptr' -> 'store intimm, ptr' handling code. · a4743139
      Chris Lattner authored
      Changing 'op' here caused us to not enter the store into a map, causing
      reemission of the code!!  In practice, a simple loop like this:
      
      no_exit:                ; preds = %no_exit, %entry
              %indvar = phi uint [ %indvar.next, %no_exit ], [ 0, %entry ]            ; <uint> [#uses=3]
              %tmp.4 = getelementptr "complex long double"* %P, uint %indvar, uint 0          ; <double*> [#uses=1]
              store double 0.000000e+00, double* %tmp.4
              %indvar.next = add uint %indvar, 1              ; <uint> [#uses=2]
              %exitcond = seteq uint %indvar.next, %N         ; <bool> [#uses=1]
              br bool %exitcond, label %return, label %no_exit
      
      was being code gen'd to:
      
      .LBBtest_1:     # no_exit
              movl %edx, %esi
              shll $4, %esi
              movl $0, 4(%eax,%esi)
              movl $0, (%eax,%esi)
              incl %edx
              movl $0, (%eax,%esi)
              movl $0, 4(%eax,%esi)
              cmpl %ecx, %edx
              jne .LBBtest_1  # no_exit
      
      Note that we are doing 4 32-bit stores instead of 2.  Now we generate:
      
      .LBBtest_1:     # no_exit
              movl %edx, %esi
              incl %esi
              shll $4, %edx
              movl $0, (%eax,%edx)
              movl $0, 4(%eax,%edx)
              cmpl %ecx, %esi
              movl %esi, %edx
              jne .LBBtest_1  # no_exit
      
      This is much happier, though it would be even better if the increment of ESI
      was scheduled after the compare :-/
      
      llvm-svn: 20265
      a4743139
  5. Feb 17, 2005
  6. Feb 14, 2005
  7. Feb 04, 2005
  8. Feb 02, 2005
  9. Feb 01, 2005
  10. Jan 30, 2005
  11. Jan 29, 2005
  12. Jan 28, 2005
  13. Jan 24, 2005
  14. Jan 23, 2005
  15. Jan 22, 2005
  16. Jan 21, 2005
  17. Jan 20, 2005
Loading