blob: fd66e02b59d1338483f3facd9325e3490d10f9fa [file] [log] [blame]
/* Test whether overloading works as expected. */
/* { dg-do compile { target { s390*-*-* } } } */
/* { dg-options "-march=z13 -mzarch -mzvector" } */
__vector int v4si;
__vector unsigned uv4si;
__vector bool bv4si;
__vector long long v2di;
__vector unsigned long long uv2di;
__vector bool long long bv2di;
__vector double v2df;
int *intptr;
unsigned *uintptr;
double *dblptr;
long long ll;
unsigned long long ull;
const int *cintptr;
long long* llptr;
unsigned long long* ullptr;
void
foo ()
{
__builtin_s390_vec_scatter_element (v4si, uv4si, (int*)0, 0); /* ok */
__builtin_s390_vec_insert_and_zero (intptr); /* ok */
/* The unsigned pointer must not match the signed pointer. */
__builtin_s390_vec_scatter_element (v4si, uv4si, uintptr, 0); /* { dg-error "invalid parameter combination for intrinsic" } */
/* Make sure signed int pointers don't match unsigned int pointers. */
__builtin_s390_vec_scatter_element (bv4si, uv4si, intptr, 0); /* { dg-error "invalid parameter combination for intrinsic" } */
/* Const pointers do not match unqualified operands. */
__builtin_s390_vec_scatter_element (v4si, uv4si, cintptr, 0); /* { dg-error "invalid parameter combination for intrinsic" } */
/* Volatile pointers do not match unqualified operands. */
__builtin_s390_vec_scatter_element (v4si, uv4si, cintptr, 0); /* { dg-error "invalid parameter combination for intrinsic" } */
/* The third operands needs to be double *. */
__builtin_s390_vec_scatter_element (v2df, uv4si, intptr, 0); /* { dg-error "invalid parameter combination for intrinsic" } */
/* This is an ambigious overload. */
__builtin_s390_vec_scatter_element (v4si, uv4si, 0, 0); /* { dg-error "invalid parameter combination for intrinsic" } */
/* Pointer to vector must not match. */
__builtin_s390_vec_scatter_element (v4si, uv4si, &v4si, 0); /* { dg-error "invalid parameter combination for intrinsic" } */
/* Don't accept const int* for int*. */
__builtin_s390_vec_scatter_element (v4si, uv4si, cintptr, 0); /* { dg-error "invalid parameter combination for intrinsic" } */
__builtin_s390_vec_load_pair (ll, ull); /* { dg-error "ambiguous overload for intrinsic" } */
__builtin_s390_vec_load_pair (ull, ll); /* { dg-error "ambiguous overload for intrinsic" } */
}