Add a new entry.
authorEvan Cheng <evan.cheng@apple.com>
Mon, 24 Apr 2006 23:30:10 +0000 (23:30 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Mon, 24 Apr 2006 23:30:10 +0000 (23:30 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27963 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/README.txt

index 2ce31d2224ddabfc114dd0f92c552ff71f66a30f..4016e4ee7a28ecb9ddc3b345cfcb4b9ae7e0988a 100644 (file)
@@ -1075,3 +1075,35 @@ http://gcc.gnu.org/bugzilla/attachment.cgi?id=8701
 There is also one case we do worse on PPC.
 
 //===---------------------------------------------------------------------===//
+
+For this:
+
+#include <emmintrin.h>
+void test(__m128d *r, __m128d *A, double B) {
+  *r = _mm_loadl_pd(*A, &B);
+}
+
+We generates:
+
+       subl $12, %esp
+       movsd 24(%esp), %xmm0
+       movsd %xmm0, (%esp)
+       movl 20(%esp), %eax
+       movapd (%eax), %xmm0
+       movlpd (%esp), %xmm0
+       movl 16(%esp), %eax
+       movapd %xmm0, (%eax)
+       addl $12, %esp
+       ret
+
+icc generates:
+
+        movl      4(%esp), %edx                                 #3.6
+        movl      8(%esp), %eax                                 #3.6
+        movapd    (%eax), %xmm0                                 #4.22
+        movlpd    12(%esp), %xmm0                               #4.8
+        movapd    %xmm0, (%edx)                                 #4.3
+        ret                                                     #5.1
+
+So icc is smart enough to know that B is in memory so it doesn't load it and
+store it back to stack.