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
test_vbc(vbc_t v1,vbc_t v2,vbc_t v3)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
test_vsc(vsc_t v1,vsc_t v2,vsc_t v3)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
test_vuc(vuc_t v1,vuc_t v2,vuc_t v3)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
test_vbi(vbi_t v1,vbi_t v2,vbi_t v3)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
test_vsi(vsi_t v1,vsi_t v2,vsi_t v3)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
test_vui(vui_t v1,vui_t v2,vui_t v3)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
test_vp(vp_t v1,vp_t v2,vp_t v3)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
test_vbs(vbs_t v1,vbs_t v2,vbs_t v3)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
test_vss(vss_t v1,vss_t v2,vss_t v3)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
test_vus(vus_t v1,vus_t v2,vus_t v3)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
test_vf(vf_t v1,vf_t v2,vf_t v3)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 }
98