1  /* PR target/84220 */
       2  /* Test to ensure we generate invalid parameter errors rather than an ICE
       3      when calling builtin_vec_sld() with invalid parameters.  */
       4  /* { dg-do compile } */
       5  /* { dg-require-effective-target powerpc_altivec_ok } */
       6  /* { dg-options "-maltivec" } */
       7  
       8  #include <altivec.h>
       9  
      10  typedef vector bool char vbc_t;
      11  typedef vector signed char vsc_t;
      12  typedef vector unsigned char vuc_t;
      13  typedef vector bool int vbi_t;
      14  typedef vector signed int vsi_t;
      15  typedef vector unsigned int vui_t;
      16  typedef vector pixel vp_t;
      17  typedef vector bool short vbs_t;
      18  typedef vector signed short vss_t;
      19  typedef vector unsigned short vus_t;
      20  typedef vector float vf_t;
      21  
      22  void 
      23  test_vbc ( vbc_t v1, vbc_t v2, vbc_t v3 )  \
      24  {
      25    __builtin_vec_sld(v1, v2, v3); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */
      26    __builtin_vec_sld(v1, v2, 3);
      27  }
      28  
      29  void 
      30  test_vsc ( vsc_t v1, vsc_t v2, vsc_t v3 )  \
      31  {
      32    __builtin_vec_sld(v1, v2, v3); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */
      33    __builtin_vec_sld(v1, v2, 3);
      34  }
      35  
      36  void 
      37  test_vuc ( vuc_t v1, vuc_t v2, vuc_t v3 )  \
      38  {
      39    __builtin_vec_sld(v1, v2, v3); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */
      40    __builtin_vec_sld(v1, v2, 3);
      41  }
      42  
      43  void 
      44  test_vbi ( vbi_t v1, vbi_t v2, vbi_t v3 )  \
      45  {
      46    __builtin_vec_sld(v1, v2, v3); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */
      47    __builtin_vec_sld(v1, v2, 3);
      48  }
      49  
      50  void 
      51  test_vsi ( vsi_t v1, vsi_t v2, vsi_t v3 )  \
      52  {
      53    __builtin_vec_sld(v1, v2, v3); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */
      54    __builtin_vec_sld(v1, v2, 3);
      55  }
      56  
      57  void 
      58  test_vui ( vui_t v1, vui_t v2, vui_t v3 )  \
      59  {
      60    __builtin_vec_sld(v1, v2, v3); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */
      61    __builtin_vec_sld(v1, v2, 3);
      62  }
      63  
      64  void 
      65  test_vp ( vp_t v1, vp_t v2, vp_t v3 )  \
      66  {
      67    __builtin_vec_sld(v1, v2, v3); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */
      68    __builtin_vec_sld(v1, v2, 3);
      69  }
      70  
      71  void 
      72  test_vbs ( vbs_t v1, vbs_t v2, vbs_t v3 )  \
      73  {
      74    __builtin_vec_sld(v1, v2, v3); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */
      75    __builtin_vec_sld(v1, v2, 3);
      76  }
      77  
      78  void 
      79  test_vss ( vss_t v1, vss_t v2, vss_t v3 )  \
      80  {
      81    __builtin_vec_sld(v1, v2, v3); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */
      82    __builtin_vec_sld(v1, v2, 3);
      83  }
      84  
      85  void 
      86  test_vus ( vus_t v1, vus_t v2, vus_t v3 )  \
      87  {
      88    __builtin_vec_sld(v1, v2, v3); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */
      89    __builtin_vec_sld(v1, v2, 3);
      90  }
      91  
      92  void 
      93  test_vf ( vf_t v1, vf_t v2, vf_t v3 )  \
      94  {
      95    __builtin_vec_sld(v1, v2, v3); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */
      96    __builtin_vec_sld(v1, v2, 3);
      97  }