// Testing conversions between vectors and vectors/scalars
long l1;
auto l_to_i2 = reinterpret_cast<int2>(l1);
int2 i2;
auto i2_to_l = reinterpret_cast<long>(i2);
auto i2_to_i = reinterpret_cast<int>(i2); // expected-error{{reinterpret_cast from vector 'int2' (vector of 2 'int' values) to scalar 'int' of different size}}
auto x2 = reinterpret_cast<__private X>(x); // expected-error{{reinterpret_cast from '__private X' to '__private X' is not allowed}}
auto ptr = reinterpret_cast<__global int* __private>(g_ptr);
(void)reinterpret_cast<__private int* __private>(g_ptr); // expected-error{{reinterpret_cast from '__global int *' to '__private int *' is not allowed}}