[C++] Use 'nullptr'. Target edition.
[oota-llvm.git] / lib / Target / PowerPC / README_ALTIVEC.txt
index 143804da07fccb65b75952ea2dbe2b08f99c3339..1e4c6fb9844052a31a8b88e6cdb837f7b65d3aeb 100644 (file)
@@ -177,3 +177,35 @@ which prevents the vnot pattern from matching.
 
 
 //===----------------------------------------------------------------------===//
+
+An alternative to the store/store/load approach for illegal insert element 
+lowering would be:
+
+1. store element to any ol' slot
+2. lvx the slot
+3. lvsl 0; splat index; vcmpeq to generate a select mask
+4. lvsl slot + x; vperm to rotate result into correct slot
+5. vsel result together.
+
+//===----------------------------------------------------------------------===//
+
+Should codegen branches on vec_any/vec_all to avoid mfcr.  Two examples:
+
+#include <altivec.h>
+ int f(vector float a, vector float b)
+ {
+  int aa = 0;
+  if (vec_all_ge(a, b))
+    aa |= 0x1;
+  if (vec_any_ge(a,b))
+    aa |= 0x2;
+  return aa;
+}
+
+vector float f(vector float a, vector float b) { 
+  if (vec_any_eq(a, b)) 
+    return a; 
+  else 
+    return b; 
+}
+