add a note

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38507 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2007-07-10 20:03:50 +00:00
parent b91025b619
commit 36c5155d0f

View File

@ -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
}
//===---------------------------------------------------------------------===//