1271159Skevlo/* { dg-options "-Wno-psabi" } */
2271159Skevloextern void abort (void);
3271159Skevlo
4271159Skevlotypedef int V2SI __attribute__ ((vector_size (8)));
5271159Skevlotypedef unsigned int V2USI __attribute__ ((vector_size (8)));
6271159Skevlotypedef short V2HI __attribute__ ((vector_size (4)));
7271159Skevlotypedef unsigned int V2UHI __attribute__ ((vector_size (4)));
8271159Skevlo
9271159SkevloV2USI
10271159Skevlotest1 (V2SI x)
11271159Skevlo{
12271159Skevlo  return (V2USI) (V2SI) (long long) x;
13271159Skevlo}
14271159Skevlo
15271159Skevlolong long
16271159Skevlotest2 (V2SI x)
17271159Skevlo{
18271159Skevlo  return (long long) (V2USI) (V2SI) (long long) x;
19271159Skevlo}
20271159Skevlo
21271159Skevloint
22271159Skevlomain (void)
23271159Skevlo{
24271159Skevlo  if (sizeof (short) != 2 || sizeof (int) != 4 || sizeof (long long) != 8)
25271159Skevlo    return 0;
26271159Skevlo
27271159Skevlo  union { V2SI x; int y[2]; V2USI z; long long l; } u;
28271159Skevlo  V2SI a = { -3, -3 };
29271159Skevlo  u.z = test1 (a);
30271159Skevlo  if (u.y[0] != -3 || u.y[1] != -3)
31271159Skevlo    abort ();
32271159Skevlo
33271159Skevlo  u.l = test2 (a);
34271159Skevlo  if (u.y[0] != -3 || u.y[1] != -3)
35271159Skevlo    abort ();
36271159Skevlo  return 0;
37271159Skevlo}
38271159Skevlo