Added a couple of entries about movhps and movlhps.
authorEvan Cheng <evan.cheng@apple.com>
Tue, 28 Mar 2006 02:49:12 +0000 (02:49 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Tue, 28 Mar 2006 02:49:12 +0000 (02:49 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27212 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/README.txt

index 79f8e6431afcef1dc3a36d35314adf8f7960bc6a..9618d9cb65c751d21d38bb5ebca554d3d3474c2c 100644 (file)
@@ -662,3 +662,29 @@ call _foo
 
 Obviously it would have been better for the first mov (or any op) to store
 directly %esp[0] if there are no other uses.
+
+//===---------------------------------------------------------------------===//
+
+Is it really a good idea to use movlhps to move 1 double-precision FP value from
+low quadword of source to high quadword of destination?
+
+e.g.
+
+void test2 (v2sd *b, double X, double Y) {
+  v2sd a = (v2sd) {X, X*Y};
+  *b = a;
+}
+
+       movsd 8(%esp), %xmm0
+       movapd %xmm0, %xmm1
+       mulsd 16(%esp), %xmm1
+       movlhps %xmm1, %xmm0
+       movl 4(%esp), %eax
+       movapd %xmm0, (%eax)
+       ret
+
+icc uses unpcklpd instead.
+
+//===---------------------------------------------------------------------===//
+
+Use movhps and movlhps to update upper 64-bits of a v4sf value.