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_p8vector_ok } */
6 /* { dg-options "-maltivec -mpower8-vector" } */
7 
8 #include <altivec.h>
9 
10 typedef  vector  bool long long vbl_t;
11 typedef  vector  signed long long vsl_t;
12 typedef  vector  unsigned long long vul_t;
13 typedef  vector  double vd_t;
14 
15 void
test_vbl(vbl_t v1,vbl_t v2,vbl_t v3)16 test_vbl ( vbl_t v1, vbl_t v2, vbl_t v3 )  \
17 {
18   __builtin_vec_sld(v1, v2, v3); /* { dg-error "invalid parameter combination for AltiVec intrinsic" } */
19   __builtin_vec_sld(v1, v2, 3);
20 }
21 
22 void
test_vsl(vsl_t v1,vsl_t v2,vsl_t v3)23 test_vsl ( vsl_t v1, vsl_t v2, vsl_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
test_vul(vul_t v1,vul_t v2,vul_t v3)30 test_vul ( vul_t v1, vul_t v2, vul_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
test_vd(vd_t v1,vd_t v2,vd_t v3)37 test_vd ( vd_t v1, vd_t v2, vd_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