aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gcc.dg/compat/vector-check.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.9/gcc/testsuite/gcc.dg/compat/vector-check.h')
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.dg/compat/vector-check.h64
1 files changed, 64 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/gcc.dg/compat/vector-check.h b/gcc-4.9/gcc/testsuite/gcc.dg/compat/vector-check.h
new file mode 100644
index 000000000..2d586d287
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.dg/compat/vector-check.h
@@ -0,0 +1,64 @@
+#define TEST(NUM,TMODE,VAL) \
+extern v##NUM##TMODE g_v##NUM##TMODE; \
+extern TMODE g_##TMODE; \
+ \
+extern void pass_v##NUM##TMODE (v##NUM##TMODE); \
+extern v##NUM##TMODE return_v##NUM##TMODE (void); \
+ \
+void \
+checkp_##NUM##TMODE (TMODE *p) \
+{ \
+ int i; \
+ for (i = 0; i < NUM; i++) \
+ { \
+ if (p[i] != g_##TMODE + i) \
+ DEBUG_CHECK; \
+ } \
+} \
+ \
+void \
+checkg_##NUM##TMODE (void) \
+{ \
+ u##NUM##TMODE u; \
+ TMODE *p = u.a; \
+ \
+ u.v = g_v##NUM##TMODE; \
+ checkp_##NUM##TMODE (p); \
+} \
+ \
+void \
+init_##NUM##TMODE (void) \
+{ \
+ int i; \
+ u##NUM##TMODE u; \
+ g_##TMODE = VAL; \
+ for (i = 0; i < NUM; i++) \
+ u.a[i] = VAL + i; \
+ g_v##NUM##TMODE = u.v; \
+} \
+ \
+void \
+test_v##NUM##TMODE (void) \
+{ \
+ v##NUM##TMODE v; \
+ u##NUM##TMODE u; \
+ TMODE *p = u.a; \
+ \
+ DEBUG_FPUTS ("v" #NUM #TMODE); \
+ DEBUG_NL; \
+ DEBUG_FPUTS (" global variable:"); \
+ init_##NUM##TMODE (); \
+ checkg_##NUM##TMODE (); \
+ DEBUG_NL; \
+ DEBUG_FPUTS (" pass global variable:"); \
+ pass_v##NUM##TMODE (g_v##NUM##TMODE); \
+ DEBUG_NL; \
+ DEBUG_FPUTS (" pass local variable:"); \
+ v = g_v##NUM##TMODE; \
+ pass_v##NUM##TMODE (v); \
+ DEBUG_NL; \
+ DEBUG_FPUTS (" function return:"); \
+ u.v = return_v##NUM##TMODE (); \
+ checkp_##NUM##TMODE (p); \
+ DEBUG_NL; \
+}