Instead of a vector load, shuffle and then extract an element. Load the element from address with an offset.

pshufd $1, (%rdi), %xmm0
        movd %xmm0, %eax
=>
        movl 4(%rdi), %eax


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51026 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Evan Cheng
2008-05-13 08:35:03 +00:00
parent 6513c1bf90
commit 77f0b7a50a
9 changed files with 115 additions and 97 deletions

View File

@@ -1,6 +1,6 @@
; RUN: llvm-as %s -o - | llc -march=x86-64
; RUN: llvm-as %s -o - | llc -march=x86-64 -mattr=+sse2
define void @test(float* %R, <4 x float> %X) {
define void @test(float* %R, <4 x float> %X) nounwind {
%tmp = extractelement <4 x float> %X, i32 3
store float %tmp, float* %R
ret void