diff options
| author | Chris Lattner <sabre@nondot.org> | 2007-07-10 20:03:50 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2007-07-10 20:03:50 +0000 |
| commit | f51bd666d9caaa56ce63ea5ce2d4a66cb7566369 (patch) | |
| tree | 8a29b7d149b8fa548da6f252320da9a907f4ea30 /llvm/lib | |
| parent | 9521a564fbd0fbb4be0e023ffa9c274eae20b340 (diff) | |
| download | bcm5719-llvm-f51bd666d9caaa56ce63ea5ce2d4a66cb7566369.tar.gz bcm5719-llvm-f51bd666d9caaa56ce63ea5ce2d4a66cb7566369.zip | |
add a note
llvm-svn: 38507
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/X86/README-SSE.txt | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/README-SSE.txt b/llvm/lib/Target/X86/README-SSE.txt index 08dcc278a1b..20e6a53267e 100644 --- a/llvm/lib/Target/X86/README-SSE.txt +++ b/llvm/lib/Target/X86/README-SSE.txt @@ -572,3 +572,29 @@ swizzle: ret //===---------------------------------------------------------------------===// + +This code: + +#include <emmintrin.h> +__m128i test(long long i) { return _mm_cvtsi64x_si128(i); } + +Should turn into a single 'movq %rdi, %xmm0' instruction. Instead, we +get this (on x86-64): + +_test: + movd %rdi, %xmm1 + xorps %xmm0, %xmm0 + movsd %xmm1, %xmm0 + ret + +The LLVM IR is: + +target triple = "x86_64-apple-darwin8" +define <2 x i64> @test(i64 %i) { +entry: + %tmp10 = insertelement <2 x i64> undef, i64 %i, i32 0 + %tmp11 = insertelement <2 x i64> %tmp10, i64 0, i32 1 + ret <2 x i64> %tmp11 +} + +//===---------------------------------------------------------------------===// |

