| /* { dg-do run } */ |
| /* { dg-options "-fno-common" { target hppa*-*-hpux* } } */ |
| |
| extern void abort (void); |
| |
| typedef long long T; |
| typedef T vl_t __attribute__((vector_size(2 * sizeof (T)))); |
| |
| vl_t ul[4], vl[4] = { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } }; |
| |
| static void |
| mul_vl_l(vl_t *u, vl_t *v, T x, int m) |
| { |
| vl_t w; |
| T *p = (T *)&w; |
| p[0] = p[1] = x; |
| while (m--) |
| *u++ = *v++ * w; |
| } |
| |
| int |
| main(int argc, char *argv[]) |
| { |
| int i; |
| T *pl; |
| |
| pl = (T *) &ul; |
| mul_vl_l(ul, vl, 2, 4); |
| for (i = 0; i < 8; i++) |
| if (pl[i] != 2 * (i + 1)) |
| abort (); |
| |
| return 0; |
| } |