* gas/config/tc-avr.c: Change ISA for devices with USB support to
[external/binutils.git] / gdb / testsuite / gdb.arch / e500-abi.c
1 #include <spe.h>
2
3 /* Test PowerPC SPU extensions.  */
4
5 #define vector __attribute__((vector_size(8)))
6
7 vector unsigned short f_vec;
8 vector short g_vec;
9 vector float h_vec;
10 vector float i_vec;
11 vector unsigned int l_vec;
12 vector int m_vec;
13 vector int n_vec;
14
15 /* dummy variables used in the testfile */
16 vector unsigned int a_vec_d = {1, 1};
17 vector int b_vec_d = {0, 0};
18 vector float c_vec_d = {1.0, 1.0};
19 vector unsigned int d_vec_d = {0, 0};
20 vector int e_vec_d = {1, 1};
21 vector unsigned short f_vec_d = {1, 1, 1, 1};
22 vector short g_vec_d = {1, 1, 1, 1};
23 vector float h_vec_d = {1.0, 1.0};
24 vector float i_vec_d = {2.0, 2.0};
25 vector unsigned int l_vec_d = {0, 0};
26 vector int m_vec_d = {0, 0};
27
28
29 vector int
30 vec_func (vector unsigned int a_vec_f,
31           vector int b_vec_f,
32           vector float c_vec_f,
33           vector unsigned int d_vec_f,
34           vector int e_vec_f,
35           vector unsigned short f_vec_f,
36           vector short g_vec_f,
37           vector float h_vec_f,
38           vector float i_vec_f,
39           vector unsigned int l_vec_f,
40           vector int m_vec_f) 
41 {
42   vector int n_vec;
43
44
45   int x,y,z;
46   x = 2;
47   y = 3;
48  
49   z = x + y;
50   z++;
51   n_vec = __ev_and(a_vec_f, b_vec_f);
52   n_vec = __ev_or(c_vec_f, d_vec_f);
53   n_vec = __ev_or(e_vec_f, f_vec_f);
54   n_vec = __ev_and(g_vec_f, h_vec_f);
55   n_vec = __ev_and(i_vec_f, l_vec_f);
56   n_vec = __ev_or(m_vec_f, a_vec_f);
57
58   return n_vec;
59 }
60
61 void marker(void) {};
62
63 int
64 main (void)
65 {
66   vector unsigned int a_vec;
67   vector int b_vec;
68   vector float c_vec;
69   vector unsigned int d_vec;
70   vector int e_vec;
71
72   vector int res_vec;
73
74   a_vec = (vector unsigned int)__ev_create_u64 ((uint64_t) 55);
75   b_vec = __ev_create_s64 ((int64_t) 66);
76   c_vec = (vector float) __ev_create_fs (3.14F, 2.18F);
77   d_vec = (vector unsigned int) __ev_create_u32 ((uint32_t) 5, (uint32_t) 4);
78   e_vec = (vector int) __ev_create_s32 ((int32_t) 5, (int32_t) 6);
79   f_vec = (vector unsigned short) __ev_create_u16 ((uint16_t) 6, (uint16_t) 6, (uint16_t) 7, (uint16_t) 1);
80   g_vec = (vector short) __ev_create_s16 ((int16_t) 6, (int16_t) 6, (int16_t) 7, (int16_t) 9);
81   h_vec = (vector float) __ev_create_sfix32_fs (3.0F, 2.0F);
82   i_vec = (vector float) __ev_create_ufix32_fs (3.0F, 2.0F);
83   l_vec = (vector unsigned int) __ev_create_ufix32_u32 (3U, 5U);
84   m_vec = (vector int) __ev_create_sfix32_s32 (6, 9);
85
86   marker ();
87
88 #if 0
89 /* This line is useful for cut-n-paste from a gdb session. */
90 vec_func(a_vec,b_vec,c_vec,d_vec,e_vec,f_vec,g_vec,h_vec,i_vec,l_vec,m_vec)
91 #endif
92
93   res_vec = vec_func (a_vec,  /* goes in r3 */
94                       b_vec,  /* goes in r4 */
95                       c_vec,  /* goes in r5 */
96                       d_vec,  /* goes in r6 */
97                       e_vec,  /* goes in r7 */
98                       f_vec,  /* goes in r8 */
99                       g_vec,  /* goes in r9 */
100                       h_vec,  /* goes in r10 */
101                       i_vec,  /* goes in stack */
102                       l_vec,  /* goes in stack */
103                       m_vec);  /* goes in stack */
104
105   return 0;
106 }