Skip to content
  • Chris Lattner's avatar
    Just rip v2f32 support completely out of the X86 backend. In · 45cc4d74
    Chris Lattner authored
    the example in the testcase, we now generate:
    
    _test1:                                 ## @test1
    	movss	4(%esp), %xmm0
    	addss	8(%esp), %xmm0
    	movl	12(%esp), %eax
    	movss	%xmm0, (%eax)
    	ret
    
    instead of:
    
    _test1:                                                     ## @test1
    	subl	$20, %esp
    	movl	24(%esp), %eax
    	movq	%mm0, (%esp)
    	movq	%mm0, 8(%esp)
    	movss	(%esp), %xmm0
    	addss	12(%esp), %xmm0
    	movss	%xmm0, (%eax)
    	addl	$20, %esp
    	ret
    
    v2f32 support did not work reliably because most of the X86
    backend didn't know it was legal.  It was apparently only added
    to support returning source-level v2f32 values in MMX registers
    in x86-32 mode.  If ABI compatibility is important on this
    GCC-extended-vector type for some reason, then the frontend
    should generate IR that returns v2i32 instead of v2f32.  However,
    we generally don't try very hard to be abi compatible on gcc
    extended vectors. 
    
    llvm-svn: 107601
    45cc4d74
Loading