(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
powerpc/
pr84220-xxsld.c
       1  /* PR target/84220 */
       2  /* Test to ensure we generate invalid parameter errors rather than an ICE
       3      when calling vec_xxsldwi() and vec_xxpermdi() with invalid parameters.  */
       4  /* { dg-do compile { target { powerpc*-*-* } } } */
       5  /* { dg-skip-if "" { powerpc*-*-darwin* } } */
       6  /* { dg-require-effective-target powerpc_vsx_ok } */
       7  /* { dg-options "-O3 -mdejagnu-cpu=power7" } */
       8  
       9  #include <altivec.h>
      10  
      11  vector double
      12  v2df_shift (vector double a, vector double b)
      13  {
      14    return vec_xxsldwi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */
      15    return vec_xxsldwi (a, b, 1);
      16  }
      17  
      18  vector float
      19  v4sf_shift (vector float a, vector float b)
      20  {
      21    return vec_xxsldwi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */
      22    return vec_xxsldwi (a, b, 1);
      23  }
      24  
      25  vector long long
      26  v2di_shift (vector long long a, vector long long b)
      27  {
      28    return vec_xxsldwi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */
      29    return vec_xxsldwi (a, b, 1);
      30  }
      31  
      32  vector unsigned long long
      33  v2diu_shift (vector unsigned long long a, vector unsigned long long b)
      34  {
      35    return vec_xxsldwi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */
      36    return vec_xxsldwi (a, b, 1);
      37  }
      38  
      39  vector int
      40  v4si_shift (vector int a, vector int b)
      41  {
      42    return vec_xxsldwi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */
      43    return vec_xxsldwi (a, b, 1);
      44  }
      45  
      46  vector unsigned int
      47  v4siu_shift (vector unsigned int a, vector unsigned int b)
      48  {
      49    return vec_xxsldwi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */
      50    return vec_xxsldwi (a, b, 1);
      51  }
      52  
      53  vector short
      54  v8hi_shift (vector short a, vector short b)
      55  {
      56    return vec_xxsldwi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */
      57    return vec_xxsldwi (a, b, 1);
      58  }
      59  
      60  vector unsigned short
      61  v8hiu_shift (vector unsigned short a, vector unsigned short b)
      62  {
      63    return vec_xxsldwi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */
      64    return vec_xxsldwi (a, b, 1);
      65  }
      66  
      67  vector signed char
      68  v16qi_shift (vector signed char a, vector signed char b)
      69  {
      70    return vec_xxsldwi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */
      71    return vec_xxsldwi (a, b, 1);
      72  }
      73  
      74  vector unsigned char
      75  v16qiu_shift (vector unsigned char a, vector unsigned char b)
      76  {
      77    return vec_xxsldwi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */
      78    return vec_xxsldwi (a, b, 1);
      79  }
      80  
      81  vector double
      82  v2df_permute (vector double a, vector double b)
      83  {
      84    return vec_xxpermdi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */
      85    return vec_xxpermdi (a, b, 1);
      86  }
      87  
      88  vector float
      89  v4sf_permute (vector float a, vector float b)
      90  {
      91    return vec_xxpermdi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */
      92    return vec_xxpermdi (a, b, 1);
      93  }
      94  
      95  vector long long
      96  v2di_permute (vector long long a, vector long long b)
      97  {
      98    return vec_xxpermdi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */
      99    return vec_xxpermdi (a, b, 1);
     100  }
     101  
     102  vector unsigned long long
     103  v2diu_permute (vector unsigned long long a, vector unsigned long long b)
     104  {
     105    return vec_xxpermdi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */
     106    return vec_xxpermdi (a, b, 1);
     107  }
     108  
     109  vector int
     110  v4si_permute (vector int a, vector int b)
     111  {
     112    return vec_xxpermdi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */
     113    return vec_xxpermdi (a, b, 1);
     114  }
     115  
     116  vector unsigned int
     117  v4siu_permute (vector unsigned int a, vector unsigned int b)
     118  {
     119    return vec_xxpermdi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */
     120    return vec_xxpermdi (a, b, 1);
     121  }
     122  
     123  vector short
     124  v8hi_permute (vector short a, vector short b)
     125  {
     126    return vec_xxpermdi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */
     127  ;
     128    return vec_xxpermdi (a, b, 1);
     129  }
     130  
     131  vector unsigned short
     132  v8hiu_permute (vector unsigned short a, vector unsigned short b)
     133  {
     134    return vec_xxpermdi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */
     135    return vec_xxpermdi (a, b, 1);
     136  }
     137  
     138  vector signed char
     139  v16qi_permute (vector signed char a, vector signed char b)
     140  {
     141    return vec_xxpermdi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */
     142    return vec_xxpermdi (a, b, 1);
     143  }
     144  
     145  vector unsigned char
     146  v16qiu_permute (vector unsigned char a, vector unsigned char b)
     147  {
     148    return vec_xxpermdi (a, b, b); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */
     149    return vec_xxpermdi (a, b, 1);
     150  }