add a note
authorChris Lattner <sabre@nondot.org>
Sun, 9 Mar 2008 01:08:22 +0000 (01:08 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 9 Mar 2008 01:08:22 +0000 (01:08 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48064 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/README-SSE.txt

index 4ec5a5ac4b90ea3a7f4eb937e38a0d3be94c9fa4..7087c681737998785baa774763cbcaf0b3a20e57 100644 (file)
@@ -782,3 +782,40 @@ just a matter of matching (scalar_to_vector (load x)) to movd.
 
 //===---------------------------------------------------------------------===//
 
+These two functions should compile to identical code on x86-32:
+
+define <2 x i64> @test2(i64 %arg) {
+entry:
+       %A = and i64 %arg, 1234567
+       %B = insertelement <2 x i64> undef, i64 %A, i32 0
+       ret <2 x i64> %B
+}
+
+define <2 x i64> @test2(i64 %arg) {
+entry:
+        %A = and i64 %arg, 1234567
+        %B = insertelement <2 x i64> zeroinitializer, i64 %A, i32 0
+        ret <2 x i64> %B
+}
+
+The later compiles to:
+
+_test2:
+       movl    $1234567, %eax
+       andl    4(%esp), %eax
+       movd    %eax, %xmm0
+       ret
+
+the former compiles to:
+
+_test2:
+       subl    $28, %esp
+       movl    $1234567, %eax
+       andl    32(%esp), %eax
+       movl    %eax, (%esp)
+       movl    $0, 4(%esp)
+       movaps  (%esp), %xmm0
+       addl    $28, %esp
+       ret
+
+//===---------------------------------------------------------------------===//