Viewing file: vec-overloading-2.c (2.24 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* 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" } */ }
|