Home | History | Annotate | Download | only in CodeGen
      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