aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2006-03-28 02:49:12 +0000
committerEvan Cheng <evan.cheng@apple.com>2006-03-28 02:49:12 +0000
commit4c4a2e2a0debd0cf32146e441f95c3d7eae879d7 (patch)
treeb56235ae2af33892d00c0d495980b8d9fd7ef895
parent000e4dd54bf4f37c61f2f2d8329811c9741ed0ac (diff)
Added a couple of entries about movhps and movlhps.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27212 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Target/X86/README.txt26
1 files changed, 26 insertions, 0 deletions
diff --git a/lib/Target/X86/README.txt b/lib/Target/X86/README.txt
index 79f8e6431a..9618d9cb65 100644
--- a/lib/Target/X86/README.txt
+++ b/lib/Target/X86/README.txt
@@ -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.