Skip to content
  1. Aug 18, 2005
  2. Aug 17, 2005
  3. Aug 16, 2005
  4. Aug 15, 2005
  5. Aug 14, 2005
    • Nate Begeman's avatar
      Fix last night's PPC32 regressions by · d5e739dc
      Nate Begeman authored
      1. Not selecting the false value of a select_cc in the false arm, which
         isn't legal for nested selects.
      2. Actually returning the node we created and Legalized in the FP_TO_UINT
         Expander.
      
      llvm-svn: 22789
      d5e739dc
    • Nate Begeman's avatar
      Fix last night's X86 regressions by putting code for SSE in the if(SSE) · e5394d45
      Nate Begeman authored
      block.  nur.
      
      llvm-svn: 22788
      e5394d45
    • Nate Begeman's avatar
      Fix FP_TO_UINT with Scalar SSE2 now that the legalizer can handle it. We · 4d959f66
      Nate Begeman authored
      now generate the relatively good code sequences:
      unsigned short foo(float a) { return a; }
      _foo:
              movss 4(%esp), %xmm0
              cvttss2si %xmm0, %eax
              movzwl %ax, %eax
              ret
      
      and
      unsigned bar(float a) { return a; }
      _bar:
              movss .CPI_bar_0, %xmm0
              movss 4(%esp), %xmm1
              movapd %xmm1, %xmm2
              subss %xmm0, %xmm2
              cvttss2si %xmm2, %eax
              xorl $-2147483648, %eax
              cvttss2si %xmm1, %ecx
              ucomiss %xmm0, %xmm1
              cmovb %ecx, %eax
              ret
      
      llvm-svn: 22786
      4d959f66
    • Nate Begeman's avatar
      Make FP_TO_UINT Illegal. This allows us to generate significantly better · 83f6b98c
      Nate Begeman authored
      codegen for FP_TO_UINT by using the legalizer's SELECT variant.
      
      Implement a codegen improvement for SELECT_CC, selecting the false node in
      the MBB that feeds the phi node.  This allows us to codegen:
      void foo(int *a, int b, int c) { int d = (a < b) ? 5 : 9; *a = d; }
      as:
      _foo:
              li r2, 5
              cmpw cr0, r4, r3
              bgt .LBB_foo_2  ; entry
      .LBB_foo_1:     ; entry
              li r2, 9
      .LBB_foo_2:     ; entry
              stw r2, 0(r3)
              blr
      
      insted of:
      _foo:
              li r2, 5
              li r5, 9
              cmpw cr0, r4, r3
              bgt .LBB_foo_2  ; entry
      .LBB_foo_1:     ; entry
              or r2, r5, r5
      .LBB_foo_2:     ; entry
              stw r2, 0(r3)
              blr
      
      llvm-svn: 22784
      83f6b98c
  6. Aug 13, 2005
  7. Aug 12, 2005
  8. Aug 11, 2005
  9. Aug 10, 2005
    • Nate Begeman's avatar
      Make SELECT illegal on PPC32, switch to using SELECT_CC, which more closely · 5646b181
      Nate Begeman authored
      reflects what the hardware is capable of.  This significantly simplifies
      the CC handling logic throughout the ISel.
      
      llvm-svn: 22756
      5646b181
    • Chris Lattner's avatar
      Changes for PPC32ISelPattern.cpp · 3428b956
      Chris Lattner authored
      1. Clean up how SelectIntImmediateExpr handles use counts.
      2. "Subtract from" was not clearing hi 16 bits.
      
      Patch by Jim Laskey
      
      llvm-svn: 22754
      3428b956
    • Chris Lattner's avatar
      Changed the XOR case to use the isOprNot predicate. · aeedcc7f
      Chris Lattner authored
      Patch by Jim Laskey!
      
      llvm-svn: 22750
      aeedcc7f
    • Chris Lattner's avatar
      1. Refactored handling of integer immediate values for add, or, xor and sub. · 67d07537
      Chris Lattner authored
        New routine: ISel::SelectIntImmediateExpr
        2. Now checking use counts of large constants.  If use count is > 2 then drop
        thru so that the constant gets loaded into a register.
        Source:
      
      int %test1(int %a) {
      entry:
             %tmp.1 = add int %a,      123456789      ; <int> [#uses=1]
             %tmp.2 = or  int %tmp.1,  123456789      ; <int> [#uses=1]
             %tmp.3 = xor int %tmp.2,  123456789      ; <int> [#uses=1]
             %tmp.4 = sub int %tmp.3, -123456789      ; <int> [#uses=1]
             ret int %tmp.4
      }
      
      Did Emit:
      
             .machine ppc970
      
      
             .text
             .align  2
             .globl  _test1
      _test1:
      .LBB_test1_0:   ; entry
             addi r2, r3, -13035
             addis r2, r2, 1884
             ori r2, r2, 52501
             oris r2, r2, 1883
             xori r2, r2, 52501
             xoris r2, r2, 1883
             addi r2, r2, 52501
             addis r3, r2, 1883
             blr
      
      
      Now Emits:
      
             .machine ppc970
      
      
             .text
             .align  2
             .globl  _test1
      _test1:
      .LBB_test1_0:   ; entry
             lis r2, 1883
             ori r2, r2, 52501
             add r3, r3, r2
             or r3, r3, r2
             xor r3, r3, r2
             add r3, r3, r2
             blr
      
      Patch by Jim Laskey!
      
      llvm-svn: 22749
      67d07537
    • Duraid Madina's avatar
      sorry!! this is temporary; for some reason the nasty constmul code seems to · 1c2f9fdf
      Duraid Madina authored
      be an infinite loop when using g++-4.0.1*, this kills the ia64 nightly
      tester. A proper fix shall be forthcoming!!! thanks for not killing me. :)
      
      llvm-svn: 22748
      1c2f9fdf
Loading