From 36c5155d0f1d37b62e2782d89c084e1d5d9d0270 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Tue, 10 Jul 2007 20:03:50 +0000 Subject: [PATCH] add a note git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@38507 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/X86/README-SSE.txt | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/lib/Target/X86/README-SSE.txt b/lib/Target/X86/README-SSE.txt index 08dcc278a1b..20e6a53267e 100644 --- a/lib/Target/X86/README-SSE.txt +++ b/lib/Target/X86/README-SSE.txt @@ -572,3 +572,29 @@ swizzle: ret //===---------------------------------------------------------------------===// + +This code: + +#include +__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 +} + +//===---------------------------------------------------------------------===// -- 2.34.1