add a note
authorChris Lattner <sabre@nondot.org>
Tue, 18 Apr 2006 18:30:19 +0000 (18:30 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 18 Apr 2006 18:30:19 +0000 (18:30 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27809 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/PowerPC/README_ALTIVEC.txt

index ad315bde88a7972b73098a55b2f5894435c283e9..886723d5bf9caea629c751c758ae8be22860b4fb 100644 (file)
@@ -85,3 +85,26 @@ This is probably only reasonable for a post-pass scheduler.
 
 //===----------------------------------------------------------------------===//
 
+For this function:
+
+void test(vector float *A, vector float *B) {
+  vector float C = (vector float)vec_cmpeq(*A, *B);
+  if (!vec_any_eq(*A, *B))
+    *B = (vector float){0,0,0,0};
+  *A = C;
+}
+
+we get the following basic block:
+
+       ...
+        lvx v2, 0, r4
+        lvx v3, 0, r3
+        vcmpeqfp v4, v3, v2
+        vcmpeqfp. v2, v3, v2
+        bne cr6, LBB1_2 ; cond_next
+
+The vcmpeqfp/vcmpeqfp. instructions currently cannot be merged when the
+vcmpeqfp. result is used by a branch.  This can be improved.
+
+//===----------------------------------------------------------------------===//
+