[llvm-commits] [llvm] r38507 - /llvm/trunk/lib/Target/X86/README-SSE.txt

Chris Lattner sabre at nondot.org
Tue Jul 10 13:03:50 PDT 2007


Author: lattner
Date: Tue Jul 10 15:03:50 2007
New Revision: 38507

URL: http://llvm.org/viewvc/llvm-project?rev=38507&view=rev
Log:
add a note

Modified:
    llvm/trunk/lib/Target/X86/README-SSE.txt

Modified: llvm/trunk/lib/Target/X86/README-SSE.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/README-SSE.txt?rev=38507&r1=38506&r2=38507&view=diff

==============================================================================
--- llvm/trunk/lib/Target/X86/README-SSE.txt (original)
+++ llvm/trunk/lib/Target/X86/README-SSE.txt Tue Jul 10 15:03:50 2007
@@ -572,3 +572,29 @@
         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
+}
+
+//===---------------------------------------------------------------------===//





More information about the llvm-commits mailing list