aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/altivec-7.C
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/g++.dg/altivec-7.C')
-rw-r--r--gcc/testsuite/g++.dg/altivec-7.C66
1 files changed, 66 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/altivec-7.C b/gcc/testsuite/g++.dg/altivec-7.C
new file mode 100644
index 00000000000..74467361dd9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/altivec-7.C
@@ -0,0 +1,66 @@
+/* APPLE LOCAL file AltiVec */
+/* { dg-do run { target powerpc*-*-* } } */
+/* { dg-options "-faltivec" } */
+
+
+extern "C" void abort(void);
+
+void CMP (vector unsigned char v, vector unsigned char v1)
+{
+ union {
+ vector unsigned char vv;
+ unsigned char s[16];
+ } r, r1;
+ r.vv = v;
+ r1.vv = v1;
+
+ for (int i=0; i < 16; i++)
+ if (r.s[i] != r1.s[i])
+ abort();
+ return;
+}
+
+#define TEST_FUNCTION_TEMPLATE
+
+#ifdef TEST_FUNCTION_TEMPLATE
+template <int I>
+#endif
+void vectorTest()
+{
+ typedef vector unsigned char VUC;
+
+ // Multiple initializers with expressions
+ const unsigned char kFoo = 0;
+ enum { kBar = 1 };
+ VUC v1 = {kFoo,kBar,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
+ VUC v3 = (VUC)(kFoo,kBar,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
+ CMP (v1, v3);
+
+ VUC v2 = {kBar*kFoo,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
+ VUC v4 = (VUC)(kBar*kFoo,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
+ CMP (v2, v4);
+
+ // Single initializers
+ VUC v5 = {42};
+ VUC v7 = (VUC)(42);
+ CMP (v5, v7);
+
+ VUC v6 = {40+2};
+ VUC v8 = (VUC)(40+2);
+ CMP (v6, v8);
+
+ VUC v9 = {I+5};
+ VUC v11 = (VUC)(I+5);
+ CMP (v9, v11);
+}
+
+
+int main (int argc, char * const argv[])
+{
+#ifdef TEST_FUNCTION_TEMPLATE
+ vectorTest<0>();
+#else
+ vectorTest();
+#endif
+ return 0;
+}