Skip to content
  1. Apr 15, 2007
    • Chris Lattner's avatar
      fix long lines · 28d921d0
      Chris Lattner authored
      llvm-svn: 36031
      28d921d0
    • Chris Lattner's avatar
      add a note · e275463e
      Chris Lattner authored
      llvm-svn: 36028
      e275463e
    • Chris Lattner's avatar
      Implement Transforms/InstCombine/vec_extract_elt.ll, transforming: · 7bfdd0ab
      Chris Lattner authored
      define i32 @test(float %f) {
              %tmp7 = insertelement <4 x float> undef, float %f, i32 0
              %tmp17 = bitcast <4 x float> %tmp7 to <4 x i32>
              %tmp19 = extractelement <4 x i32> %tmp17, i32 0
              ret i32 %tmp19
      }
      
      into:
      
      define i32 @test(float %f) {
              %tmp19 = bitcast float %f to i32                ; <i32> [#uses=1]
              ret i32 %tmp19
      }
      
      On PPC, this is the difference between:
      
      _test:
              mfspr r2, 256
              oris r3, r2, 8192
              mtspr 256, r3
              stfs f1, -16(r1)
              addi r3, r1, -16
              addi r4, r1, -32
              lvx v2, 0, r3
              stvx v2, 0, r4
              lwz r3, -32(r1)
              mtspr 256, r2
              blr
      
      and:
      
      _test:
              stfs f1, -4(r1)
              nop
              nop
              nop
              lwz r3, -4(r1)
              blr
      
      llvm-svn: 36025
      7bfdd0ab
    • Chris Lattner's avatar
      Implement InstCombine/vec_demanded_elts.ll:test2. This allows us to turn · b37fb6a0
      Chris Lattner authored
      unsigned test(float f) {
       return _mm_cvtsi128_si32( (__m128i) _mm_set_ss( f*f ));
      }
      
      into:
      
      _test:
              movss 4(%esp), %xmm0
              mulss %xmm0, %xmm0
              movd %xmm0, %eax
              ret
      
      instead of:
      
      _test:
              movss 4(%esp), %xmm0
              mulss %xmm0, %xmm0
              xorps %xmm1, %xmm1
              movss %xmm0, %xmm1
              movd %xmm1, %eax
              ret
      
      GCC gets:
      
      _test:
              subl    $28, %esp
              movss   32(%esp), %xmm0
              mulss   %xmm0, %xmm0
              xorps   %xmm1, %xmm1
              movss   %xmm0, %xmm1
              movaps  %xmm1, %xmm0
              movd    %xmm0, 12(%esp)
              movl    12(%esp), %eax
              addl    $28, %esp
              ret
      
      llvm-svn: 36020
      b37fb6a0
    • Chris Lattner's avatar
      avoid copying sets and vectors around. · a6b56602
      Chris Lattner authored
      llvm-svn: 36017
      a6b56602
  2. Apr 14, 2007
  3. Apr 13, 2007
  4. Apr 12, 2007
Loading