1 // REQUIRES: systemz-registered-target 2 // RUN: %clang_cc1 -target-cpu z13 -triple s390x-unknown-unknown \ 3 // RUN: -Wall -Wno-unused -Werror -fsyntax-only -verify %s 4 5 typedef __attribute__((vector_size(16))) signed char vec_schar; 6 typedef __attribute__((vector_size(16))) signed short vec_sshort; 7 typedef __attribute__((vector_size(16))) signed int vec_sint; 8 typedef __attribute__((vector_size(16))) signed long long vec_slong; 9 typedef __attribute__((vector_size(16))) unsigned char vec_uchar; 10 typedef __attribute__((vector_size(16))) unsigned short vec_ushort; 11 typedef __attribute__((vector_size(16))) unsigned int vec_uint; 12 typedef __attribute__((vector_size(16))) unsigned long long vec_ulong; 13 typedef __attribute__((vector_size(16))) double vec_double; 14 15 volatile vec_schar vsc; 16 volatile vec_sshort vss; 17 volatile vec_sint vsi; 18 volatile vec_slong vsl; 19 volatile vec_uchar vuc; 20 volatile vec_ushort vus; 21 volatile vec_uint vui; 22 volatile vec_ulong vul; 23 volatile vec_double vd; 24 25 volatile unsigned int len; 26 const void * volatile cptr; 27 int cc; 28 29 void test_core(void) { 30 __builtin_s390_lcbb(cptr, -1); // expected-error {{argument should be a value from 0 to 15}} 31 __builtin_s390_lcbb(cptr, 16); // expected-error {{argument should be a value from 0 to 15}} 32 __builtin_s390_lcbb(cptr, len); // expected-error {{must be a constant integer}} 33 34 __builtin_s390_vlbb(cptr, -1); // expected-error {{argument should be a value from 0 to 15}} 35 __builtin_s390_vlbb(cptr, 16); // expected-error {{argument should be a value from 0 to 15}} 36 __builtin_s390_vlbb(cptr, len); // expected-error {{must be a constant integer}} 37 38 __builtin_s390_vpdi(vul, vul, -1); // expected-error {{argument should be a value from 0 to 15}} 39 __builtin_s390_vpdi(vul, vul, 16); // expected-error {{argument should be a value from 0 to 15}} 40 __builtin_s390_vpdi(vul, vul, len); // expected-error {{must be a constant integer}} 41 } 42 43 void test_integer(void) { 44 __builtin_s390_verimb(vuc, vuc, vuc, -1); // expected-error {{argument should be a value from 0 to 255}} 45 __builtin_s390_verimb(vuc, vuc, vuc, 256); // expected-error {{argument should be a value from 0 to 255}} 46 __builtin_s390_verimb(vuc, vuc, vuc, len); // expected-error {{must be a constant integer}} 47 48 __builtin_s390_verimh(vus, vus, vus, -1); // expected-error {{argument should be a value from 0 to 255}} 49 __builtin_s390_verimh(vus, vus, vus, 256); // expected-error {{argument should be a value from 0 to 255}} 50 __builtin_s390_verimh(vus, vus, vus, len); // expected-error {{must be a constant integer}} 51 52 __builtin_s390_verimf(vui, vui, vui, -1); // expected-error {{argument should be a value from 0 to 255}} 53 __builtin_s390_verimf(vui, vui, vui, 256); // expected-error {{argument should be a value from 0 to 255}} 54 __builtin_s390_verimf(vui, vui, vui, len); // expected-error {{must be a constant integer}} 55 56 __builtin_s390_verimg(vul, vul, vul, -1); // expected-error {{argument should be a value from 0 to 255}} 57 __builtin_s390_verimg(vul, vul, vul, 256); // expected-error {{argument should be a value from 0 to 255}} 58 __builtin_s390_verimg(vul, vul, vul, len); // expected-error {{must be a constant integer}} 59 60 __builtin_s390_vsldb(vuc, vuc, -1); // expected-error {{argument should be a value from 0 to 15}} 61 __builtin_s390_vsldb(vuc, vuc, 16); // expected-error {{argument should be a value from 0 to 15}} 62 __builtin_s390_vsldb(vuc, vuc, len); // expected-error {{must be a constant integer}} 63 } 64 65 void test_string(void) { 66 __builtin_s390_vfaeb(vuc, vuc, -1); // expected-error {{argument should be a value from 0 to 15}} 67 __builtin_s390_vfaeb(vuc, vuc, 16); // expected-error {{argument should be a value from 0 to 15}} 68 __builtin_s390_vfaeb(vuc, vuc, len); // expected-error {{must be a constant integer}} 69 70 __builtin_s390_vfaeh(vus, vus, -1); // expected-error {{argument should be a value from 0 to 15}} 71 __builtin_s390_vfaeh(vus, vus, 16); // expected-error {{argument should be a value from 0 to 15}} 72 __builtin_s390_vfaeh(vus, vus, len); // expected-error {{must be a constant integer}} 73 74 __builtin_s390_vfaef(vui, vui, -1); // expected-error {{argument should be a value from 0 to 15}} 75 __builtin_s390_vfaef(vui, vui, 16); // expected-error {{argument should be a value from 0 to 15}} 76 __builtin_s390_vfaef(vui, vui, len); // expected-error {{must be a constant integer}} 77 78 __builtin_s390_vfaezb(vuc, vuc, -1); // expected-error {{argument should be a value from 0 to 15}} 79 __builtin_s390_vfaezb(vuc, vuc, 16); // expected-error {{argument should be a value from 0 to 15}} 80 __builtin_s390_vfaezb(vuc, vuc, len); // expected-error {{must be a constant integer}} 81 82 __builtin_s390_vfaezh(vus, vus, -1); // expected-error {{argument should be a value from 0 to 15}} 83 __builtin_s390_vfaezh(vus, vus, 16); // expected-error {{argument should be a value from 0 to 15}} 84 __builtin_s390_vfaezh(vus, vus, len); // expected-error {{must be a constant integer}} 85 86 __builtin_s390_vfaezf(vui, vui, -1); // expected-error {{argument should be a value from 0 to 15}} 87 __builtin_s390_vfaezf(vui, vui, 16); // expected-error {{argument should be a value from 0 to 15}} 88 __builtin_s390_vfaezf(vui, vui, len); // expected-error {{must be a constant integer}} 89 90 __builtin_s390_vstrcb(vuc, vuc, vuc, -1); // expected-error {{argument should be a value from 0 to 15}} 91 __builtin_s390_vstrcb(vuc, vuc, vuc, 16); // expected-error {{argument should be a value from 0 to 15}} 92 __builtin_s390_vstrcb(vuc, vuc, vuc, len); // expected-error {{must be a constant integer}} 93 94 __builtin_s390_vstrch(vus, vus, vus, -1); // expected-error {{argument should be a value from 0 to 15}} 95 __builtin_s390_vstrch(vus, vus, vus, 16); // expected-error {{argument should be a value from 0 to 15}} 96 __builtin_s390_vstrch(vus, vus, vus, len); // expected-error {{must be a constant integer}} 97 98 __builtin_s390_vstrcf(vui, vui, vui, -1); // expected-error {{argument should be a value from 0 to 15}} 99 __builtin_s390_vstrcf(vui, vui, vui, 16); // expected-error {{argument should be a value from 0 to 15}} 100 __builtin_s390_vstrcf(vui, vui, vui, len); // expected-error {{must be a constant integer}} 101 102 __builtin_s390_vstrczb(vuc, vuc, vuc, -1); // expected-error {{argument should be a value from 0 to 15}} 103 __builtin_s390_vstrczb(vuc, vuc, vuc, 16); // expected-error {{argument should be a value from 0 to 15}} 104 __builtin_s390_vstrczb(vuc, vuc, vuc, len); // expected-error {{must be a constant integer}} 105 106 __builtin_s390_vstrczh(vus, vus, vus, -1); // expected-error {{argument should be a value from 0 to 15}} 107 __builtin_s390_vstrczh(vus, vus, vus, 16); // expected-error {{argument should be a value from 0 to 15}} 108 __builtin_s390_vstrczh(vus, vus, vus, len); // expected-error {{must be a constant integer}} 109 110 __builtin_s390_vstrczf(vui, vui, vui, -1); // expected-error {{argument should be a value from 0 to 15}} 111 __builtin_s390_vstrczf(vui, vui, vui, 16); // expected-error {{argument should be a value from 0 to 15}} 112 __builtin_s390_vstrczf(vui, vui, vui, len); // expected-error {{must be a constant integer}} 113 114 __builtin_s390_vfaebs(vuc, vuc, -1, &cc); // expected-error {{argument should be a value from 0 to 15}} 115 __builtin_s390_vfaebs(vuc, vuc, 16, &cc); // expected-error {{argument should be a value from 0 to 15}} 116 __builtin_s390_vfaebs(vuc, vuc, len, &cc); // expected-error {{must be a constant integer}} 117 118 __builtin_s390_vfaehs(vus, vus, -1, &cc); // expected-error {{argument should be a value from 0 to 15}} 119 __builtin_s390_vfaehs(vus, vus, 16, &cc); // expected-error {{argument should be a value from 0 to 15}} 120 __builtin_s390_vfaehs(vus, vus, len, &cc); // expected-error {{must be a constant integer}} 121 122 __builtin_s390_vfaefs(vui, vui, -1, &cc); // expected-error {{argument should be a value from 0 to 15}} 123 __builtin_s390_vfaefs(vui, vui, 16, &cc); // expected-error {{argument should be a value from 0 to 15}} 124 __builtin_s390_vfaefs(vui, vui, len, &cc); // expected-error {{must be a constant integer}} 125 126 __builtin_s390_vfaezbs(vuc, vuc, -1, &cc); // expected-error {{argument should be a value from 0 to 15}} 127 __builtin_s390_vfaezbs(vuc, vuc, 16, &cc); // expected-error {{argument should be a value from 0 to 15}} 128 __builtin_s390_vfaezbs(vuc, vuc, len, &cc); // expected-error {{must be a constant integer}} 129 130 __builtin_s390_vfaezhs(vus, vus, -1, &cc); // expected-error {{argument should be a value from 0 to 15}} 131 __builtin_s390_vfaezhs(vus, vus, 16, &cc); // expected-error {{argument should be a value from 0 to 15}} 132 __builtin_s390_vfaezhs(vus, vus, len, &cc); // expected-error {{must be a constant integer}} 133 134 __builtin_s390_vfaezfs(vui, vui, -1, &cc); // expected-error {{argument should be a value from 0 to 15}} 135 __builtin_s390_vfaezfs(vui, vui, 16, &cc); // expected-error {{argument should be a value from 0 to 15}} 136 __builtin_s390_vfaezfs(vui, vui, len, &cc); // expected-error {{must be a constant integer}} 137 138 __builtin_s390_vstrcbs(vuc, vuc, vuc, -1, &cc); // expected-error {{argument should be a value from 0 to 15}} 139 __builtin_s390_vstrcbs(vuc, vuc, vuc, 16, &cc); // expected-error {{argument should be a value from 0 to 15}} 140 __builtin_s390_vstrcbs(vuc, vuc, vuc, len, &cc); // expected-error {{must be a constant integer}} 141 142 __builtin_s390_vstrchs(vus, vus, vus, -1, &cc); // expected-error {{argument should be a value from 0 to 15}} 143 __builtin_s390_vstrchs(vus, vus, vus, 16, &cc); // expected-error {{argument should be a value from 0 to 15}} 144 __builtin_s390_vstrchs(vus, vus, vus, len, &cc); // expected-error {{must be a constant integer}} 145 146 __builtin_s390_vstrcfs(vui, vui, vui, -1, &cc); // expected-error {{argument should be a value from 0 to 15}} 147 __builtin_s390_vstrcfs(vui, vui, vui, 16, &cc); // expected-error {{argument should be a value from 0 to 15}} 148 __builtin_s390_vstrcfs(vui, vui, vui, len, &cc); // expected-error {{must be a constant integer}} 149 150 __builtin_s390_vstrczbs(vuc, vuc, vuc, -1, &cc); // expected-error {{argument should be a value from 0 to 15}} 151 __builtin_s390_vstrczbs(vuc, vuc, vuc, 16, &cc); // expected-error {{argument should be a value from 0 to 15}} 152 __builtin_s390_vstrczbs(vuc, vuc, vuc, len, &cc); // expected-error {{must be a constant integer}} 153 154 __builtin_s390_vstrczhs(vus, vus, vus, -1, &cc); // expected-error {{argument should be a value from 0 to 15}} 155 __builtin_s390_vstrczhs(vus, vus, vus, 16, &cc); // expected-error {{argument should be a value from 0 to 15}} 156 __builtin_s390_vstrczhs(vus, vus, vus, len, &cc); // expected-error {{must be a constant integer}} 157 158 __builtin_s390_vstrczfs(vui, vui, vui, -1, &cc); // expected-error {{argument should be a value from 0 to 15}} 159 __builtin_s390_vstrczfs(vui, vui, vui, 16, &cc); // expected-error {{argument should be a value from 0 to 15}} 160 __builtin_s390_vstrczfs(vui, vui, vui, len, &cc); // expected-error {{must be a constant integer}} 161 } 162 163 void test_float(void) { 164 __builtin_s390_vftcidb(vd, -1, &cc); // expected-error {{argument should be a value from 0 to 4095}} 165 __builtin_s390_vftcidb(vd, 4096, &cc); // expected-error {{argument should be a value from 0 to 4095}} 166 __builtin_s390_vftcidb(vd, len, &cc); // expected-error {{must be a constant integer}} 167 168 __builtin_s390_vfidb(vd, -1, 0); // expected-error {{argument should be a value from 0 to 15}} 169 __builtin_s390_vfidb(vd, 16, 0); // expected-error {{argument should be a value from 0 to 15}} 170 __builtin_s390_vfidb(vd, len, 0); // expected-error {{must be a constant integer}} 171 __builtin_s390_vfidb(vd, 0, -1); // expected-error {{argument should be a value from 0 to 15}} 172 __builtin_s390_vfidb(vd, 0, 16); // expected-error {{argument should be a value from 0 to 15}} 173 __builtin_s390_vfidb(vd, 0, len); // expected-error {{must be a constant integer}} 174 } 175