Skip to content
  • Chris Lattner's avatar
    fix the buildvector->insertp[sd] logic to not always create a redundant · 94656b1c
    Chris Lattner authored
    insertp[sd] $0, which is a noop.  Before:
    
    _f32:                                   ## @f32
    	pshufd	$1, %xmm1, %xmm2
    	pshufd	$1, %xmm0, %xmm3
    	addss	%xmm2, %xmm3
    	addss	%xmm1, %xmm0
                                            ## kill: XMM0<def> XMM0<kill> XMM0<def>
    	insertps	$0, %xmm0, %xmm0
    	insertps	$16, %xmm3, %xmm0
    	ret
    
    after:
    
    _f32:                                   ## @f32
    	movdqa	%xmm0, %xmm2
    	addss	%xmm1, %xmm2
    	pshufd	$1, %xmm1, %xmm1
    	pshufd	$1, %xmm0, %xmm3
    	addss	%xmm1, %xmm3
    	movdqa	%xmm2, %xmm0
    	insertps	$16, %xmm3, %xmm0
    	ret
    
    The extra movs are due to a random (poor) scheduling decision.
    
    llvm-svn: 112379
    94656b1c
Loading