llvm-project/clang/test/CodeGen/builtins-systemz-zvector-error.c
George Burgess IV 2099b54102 [Sema] Relax overloading restrictions in C.
This patch allows us to perform incompatible pointer conversions when
resolving overloads in C. So, the following code will no longer fail to
compile (though it will still emit warnings, assuming the user hasn't
opted out of them):

```
void foo(char *) __attribute__((overloadable));
void foo(int) __attribute__((overloadable));

void callFoo() {
  unsigned char bar[128];
  foo(bar); // selects the char* overload.
}
```

These conversions are ranked below all others, so:

  A. Any other viable conversion will win out
  B. If we had another incompatible pointer conversion in the example
     above (e.g. `void foo(int *)`), we would complain about
     an ambiguity.

Differential Revision: https://reviews.llvm.org/D24113

llvm-svn: 280553
2016-09-02 22:59:57 +00:00

566 lines
48 KiB
C

// REQUIRES: systemz-registered-target
// RUN: %clang_cc1 -target-cpu z13 -triple s390x-linux-gnu \
// RUN: -fzvector -fno-lax-vector-conversions \
// RUN: -Wall -Wno-unused -Werror -fsyntax-only -verify %s
#include <vecintrin.h>
volatile vector signed char vsc;
volatile vector signed short vss;
volatile vector signed int vsi;
volatile vector signed long long vsl;
volatile vector unsigned char vuc;
volatile vector unsigned short vus;
volatile vector unsigned int vui;
volatile vector unsigned long long vul;
volatile vector bool char vbc;
volatile vector bool short vbs;
volatile vector bool int vbi;
volatile vector bool long long vbl;
volatile vector double vd;
volatile signed char sc;
volatile signed short ss;
volatile signed int si;
volatile signed long long sl;
volatile unsigned char uc;
volatile unsigned short us;
volatile unsigned int ui;
volatile unsigned long long ul;
volatile double d;
const void * volatile cptr;
const signed char * volatile cptrsc;
const signed short * volatile cptrss;
const signed int * volatile cptrsi;
const signed long long * volatile cptrsl;
const unsigned char * volatile cptruc;
const unsigned short * volatile cptrus;
const unsigned int * volatile cptrui;
const unsigned long long * volatile cptrul;
const float * volatile cptrf;
const double * volatile cptrd;
void * volatile ptr;
signed char * volatile ptrsc;
signed short * volatile ptrss;
signed int * volatile ptrsi;
signed long long * volatile ptrsl;
unsigned char * volatile ptruc;
unsigned short * volatile ptrus;
unsigned int * volatile ptrui;
unsigned long long * volatile ptrul;
float * volatile ptrf;
double * volatile ptrd;
volatile unsigned int len;
volatile int idx;
int cc;
void test_core(void) {
len = __lcbb(cptr, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* {{must be a constant power of 2 from 64 to 4096}}
len = __lcbb(cptr, 200); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* {{must be a constant power of 2 from 64 to 4096}}
len = __lcbb(cptr, 32); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* {{must be a constant power of 2 from 64 to 4096}}
len = __lcbb(cptr, 8192); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* {{must be a constant power of 2 from 64 to 4096}}
vsl = vec_permi(vsl, vsl, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 3 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 3}}
vsl = vec_permi(vsl, vsl, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 3 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 3}}
vsl = vec_permi(vsl, vsl, 4); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 3 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 3}}
vul = vec_permi(vul, vul, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 2 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 3}}
vul = vec_permi(vul, vul, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 2 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 3}}
vul = vec_permi(vul, vul, 4); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 2 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 3}}
vbl = vec_permi(vbl, vbl, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 2 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 3}}
vbl = vec_permi(vbl, vbl, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 2 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 3}}
vbl = vec_permi(vbl, vbl, 4); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 2 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 3}}
vd = vec_permi(vd, vd, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 3 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 3}}
vd = vec_permi(vd, vd, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 3 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 3}}
vd = vec_permi(vd, vd, 4); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 3 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 3}}
vsi = vec_gather_element(vsi, vui, cptrsi, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 6 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 3}}
vsi = vec_gather_element(vsi, vui, cptrsi, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 6 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 3}}
vsi = vec_gather_element(vsi, vui, cptrsi, 4); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 6 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 3}}
vui = vec_gather_element(vui, vui, cptrui, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 5 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 3}}
vui = vec_gather_element(vui, vui, cptrui, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 5 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 3}}
vui = vec_gather_element(vui, vui, cptrui, 4); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 5 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 3}}
vbi = vec_gather_element(vbi, vui, cptrui, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 5 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 3}}
vbi = vec_gather_element(vbi, vui, cptrui, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 5 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 3}}
vbi = vec_gather_element(vbi, vui, cptrui, 4); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 5 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 3}}
vsl = vec_gather_element(vsl, vul, cptrsl, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 6 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 1}}
vsl = vec_gather_element(vsl, vul, cptrsl, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 6 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 1}}
vsl = vec_gather_element(vsl, vul, cptrsl, 2); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 6 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 1}}
vul = vec_gather_element(vul, vul, cptrul, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 5 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 1}}
vul = vec_gather_element(vul, vul, cptrul, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 5 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 1}}
vul = vec_gather_element(vul, vul, cptrul, 2); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 5 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 1}}
vbl = vec_gather_element(vbl, vul, cptrul, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 5 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 1}}
vbl = vec_gather_element(vbl, vul, cptrul, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 5 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 1}}
vbl = vec_gather_element(vbl, vul, cptrul, 2); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 5 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 1}}
vd = vec_gather_element(vd, vul, cptrd, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 6 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 1}}
vd = vec_gather_element(vd, vul, cptrd, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 6 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 1}}
vd = vec_gather_element(vd, vul, cptrd, 2); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 6 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 1}}
vec_scatter_element(vsi, vui, ptrsi, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 6 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 3}}
vec_scatter_element(vsi, vui, ptrsi, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 6 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 3}}
vec_scatter_element(vsi, vui, ptrsi, 4); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 6 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 3}}
vec_scatter_element(vui, vui, ptrui, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 5 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 3}}
vec_scatter_element(vui, vui, ptrui, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 5 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 3}}
vec_scatter_element(vui, vui, ptrui, 4); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 5 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 3}}
vec_scatter_element(vbi, vui, ptrui, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 5 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 3}}
vec_scatter_element(vbi, vui, ptrui, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 5 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 3}}
vec_scatter_element(vbi, vui, ptrui, 4); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 5 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 3}}
vec_scatter_element(vsl, vul, ptrsl, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 6 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 1}}
vec_scatter_element(vsl, vul, ptrsl, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 6 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 1}}
vec_scatter_element(vsl, vul, ptrsl, 2); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 6 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 1}}
vec_scatter_element(vul, vul, ptrul, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 5 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 1}}
vec_scatter_element(vul, vul, ptrul, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 5 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 1}}
vec_scatter_element(vul, vul, ptrul, 2); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 5 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 1}}
vec_scatter_element(vbl, vul, ptrul, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 5 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 1}}
vec_scatter_element(vbl, vul, ptrul, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 5 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 1}}
vec_scatter_element(vbl, vul, ptrul, 2); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 5 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 1}}
vec_scatter_element(vd, vul, ptrd, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 6 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 1}}
vec_scatter_element(vd, vul, ptrd, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 6 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 1}}
vec_scatter_element(vd, vul, ptrd, 2); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 6 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 1}}
vsc = vec_load_bndry(cptrsc, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 9 {{must be a constant power of 2 from 64 to 4096}}
vsc = vec_load_bndry(cptrsc, 200); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 9 {{must be a constant power of 2 from 64 to 4096}}
vsc = vec_load_bndry(cptrsc, 32); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 9 {{must be a constant power of 2 from 64 to 4096}}
vsc = vec_load_bndry(cptrsc, 8192); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 9 {{must be a constant power of 2 from 64 to 4096}}
vuc = vec_load_bndry(cptruc, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 9 {{must be a constant power of 2 from 64 to 4096}}
vss = vec_load_bndry(cptrss, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 9 {{must be a constant power of 2 from 64 to 4096}}
vus = vec_load_bndry(cptrus, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 9 {{must be a constant power of 2 from 64 to 4096}}
vsi = vec_load_bndry(cptrsi, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 9 {{must be a constant power of 2 from 64 to 4096}}
vui = vec_load_bndry(cptrui, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 9 {{must be a constant power of 2 from 64 to 4096}}
vsl = vec_load_bndry(cptrsl, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 9 {{must be a constant power of 2 from 64 to 4096}}
vul = vec_load_bndry(cptrul, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 9 {{must be a constant power of 2 from 64 to 4096}}
vuc = vec_genmask(idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* {{must be a constant integer}}
vuc = vec_genmasks_8(0, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* {{must be a constant integer}}
vuc = vec_genmasks_8(idx, 0); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* {{must be a constant integer}}
vuc = vec_genmasks_8(idx, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* {{must be a constant integer}}
vus = vec_genmasks_16(0, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* {{must be a constant integer}}
vus = vec_genmasks_16(idx, 0); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* {{must be a constant integer}}
vus = vec_genmasks_16(idx, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* {{must be a constant integer}}
vui = vec_genmasks_32(0, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* {{must be a constant integer}}
vui = vec_genmasks_32(idx, 0); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* {{must be a constant integer}}
vui = vec_genmasks_32(idx, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* {{must be a constant integer}}
vul = vec_genmasks_64(0, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* {{must be a constant integer}}
vul = vec_genmasks_64(idx, 0); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* {{must be a constant integer}}
vul = vec_genmasks_64(idx, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* {{must be a constant integer}}
vsc = vec_splat(vsc, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 12 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 15}}
vsc = vec_splat(vsc, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 12 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 15}}
vsc = vec_splat(vsc, 16); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 12 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 15}}
vuc = vec_splat(vuc, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 11 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 15}}
vuc = vec_splat(vuc, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 11 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 15}}
vuc = vec_splat(vuc, 16); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 11 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 15}}
vbc = vec_splat(vbc, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 11 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 15}}
vbc = vec_splat(vbc, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 11 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 15}}
vbc = vec_splat(vbc, 16); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 11 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 15}}
vss = vec_splat(vss, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 12 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 7}}
vss = vec_splat(vss, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 12 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 7}}
vss = vec_splat(vss, 8); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 12 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 7}}
vus = vec_splat(vus, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 11 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 7}}
vus = vec_splat(vus, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 11 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 7}}
vus = vec_splat(vus, 8); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 11 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 7}}
vbs = vec_splat(vbs, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 11 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 7}}
vbs = vec_splat(vbs, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 11 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 7}}
vbs = vec_splat(vbs, 8); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 11 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 7}}
vsi = vec_splat(vsi, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 12 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 3}}
vsi = vec_splat(vsi, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 12 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 3}}
vsi = vec_splat(vsi, 4); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 12 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 3}}
vui = vec_splat(vui, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 11 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 3}}
vui = vec_splat(vui, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 11 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 3}}
vui = vec_splat(vui, 4); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 11 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 3}}
vbi = vec_splat(vbi, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 11 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 3}}
vbi = vec_splat(vbi, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 11 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 3}}
vbi = vec_splat(vbi, 4); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 11 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 3}}
vsl = vec_splat(vsl, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 12 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 1}}
vsl = vec_splat(vsl, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 12 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 1}}
vsl = vec_splat(vsl, 2); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 12 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 1}}
vul = vec_splat(vul, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 11 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 1}}
vul = vec_splat(vul, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 11 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 1}}
vul = vec_splat(vul, 2); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 11 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 1}}
vbl = vec_splat(vbl, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 11 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 1}}
vbl = vec_splat(vbl, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 11 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 1}}
vbl = vec_splat(vbl, 2); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 11 {{candidate function not viable}}
// expected-note@vecintrin.h:* 2 {{must be a constant integer from 0 to 1}}
vd = vec_splat(vd, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 12 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 1}}
vd = vec_splat(vd, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 12 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 1}}
vd = vec_splat(vd, 2); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 12 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 1}}
vsc = vec_splat_s8(idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* {{must be a constant integer}}
vuc = vec_splat_u8(idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* {{must be a constant integer}}
vss = vec_splat_s16(idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* {{must be a constant integer}}
vus = vec_splat_u16(idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* {{must be a constant integer}}
vsi = vec_splat_s32(idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* {{must be a constant integer}}
vui = vec_splat_u32(idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* {{must be a constant integer}}
vsl = vec_splat_s64(idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* {{must be a constant integer}}
vul = vec_splat_u64(idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* {{must be a constant integer}}
}
void test_integer(void) {
vsc = vec_rl_mask(vsc, vuc, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 7 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer}}
vuc = vec_rl_mask(vuc, vuc, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 7 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer}}
vss = vec_rl_mask(vss, vus, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 7 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer}}
vus = vec_rl_mask(vus, vus, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 7 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer}}
vsi = vec_rl_mask(vsi, vui, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 7 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer}}
vui = vec_rl_mask(vui, vui, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 7 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer}}
vsl = vec_rl_mask(vsl, vul, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 7 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer}}
vul = vec_rl_mask(vul, vul, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 7 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer}}
vsc = vec_sld(vsc, vsc, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 8 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 15}}
vsc = vec_sld(vsc, vsc, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 8 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 15}}
vsc = vec_sld(vsc, vsc, 16); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 8 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 15}}
vuc = vec_sld(vuc, vuc, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 8 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 15}}
vuc = vec_sld(vuc, vuc, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 8 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 15}}
vuc = vec_sld(vuc, vuc, 16); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 8 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 15}}
vss = vec_sld(vss, vss, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 8 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 15}}
vus = vec_sld(vus, vus, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 8 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 15}}
vsi = vec_sld(vsi, vsi, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 8 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 15}}
vui = vec_sld(vui, vui, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 8 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 15}}
vsl = vec_sld(vsl, vsl, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 8 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 15}}
vul = vec_sld(vul, vul, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 8 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 15}}
vd = vec_sld(vd, vd, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 8 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 15}}
vsc = vec_sldw(vsc, vsc, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 8 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 3}}
vsc = vec_sldw(vsc, vsc, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 8 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 3}}
vsc = vec_sldw(vsc, vsc, 4); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 8 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 3}}
vuc = vec_sldw(vuc, vuc, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 8 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 3}}
vuc = vec_sldw(vuc, vuc, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 8 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 3}}
vuc = vec_sldw(vuc, vuc, 4); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 8 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 3}}
vss = vec_sldw(vss, vss, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 8 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 3}}
vus = vec_sldw(vus, vus, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 8 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 3}}
vsi = vec_sldw(vsi, vsi, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 8 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 3}}
vui = vec_sldw(vui, vui, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 8 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 3}}
vsl = vec_sldw(vsl, vsl, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 8 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 3}}
vul = vec_sldw(vul, vul, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 8 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 3}}
vd = vec_sldw(vd, vd, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 8 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 3}}
}
void test_float(void) {
vd = vec_ctd(vsl, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 1 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 31}}
vd = vec_ctd(vsl, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 1 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 31}}
vd = vec_ctd(vsl, 32); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 1 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 31}}
vd = vec_ctd(vul, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 1 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 31}}
vd = vec_ctd(vul, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 1 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 31}}
vd = vec_ctd(vul, 32); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 1 {{candidate function not viable}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 31}}
vsl = vec_ctsl(vd, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 31}}
vsl = vec_ctsl(vd, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 31}}
vsl = vec_ctsl(vd, 32); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 31}}
vul = vec_ctul(vd, idx); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 31}}
vul = vec_ctul(vd, -1); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 31}}
vul = vec_ctul(vd, 32); // expected-error {{no matching function}}
// expected-note@vecintrin.h:* 1 {{must be a constant integer from 0 to 31}}
vbl = vec_fp_test_data_class(vd, idx, &cc); // expected-error {{must be a constant integer}}
vbl = vec_fp_test_data_class(vd, -1, &cc); // expected-error {{should be a value from 0 to 4095}}
vbl = vec_fp_test_data_class(vd, 4096, &cc); // expected-error {{should be a value from 0 to 4095}}
}