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
v2df_shift(vector double a,vector double b)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
v4sf_shift(vector float a,vector float b)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
v2di_shift(vector long long a,vector long long b)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
v2diu_shift(vector unsigned long long a,vector unsigned long long b)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
v4si_shift(vector int a,vector int b)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
v4siu_shift(vector unsigned int a,vector unsigned int b)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
v8hi_shift(vector short a,vector short b)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
v8hiu_shift(vector unsigned short a,vector unsigned short b)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
v16qi_shift(vector signed char a,vector signed char b)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
v16qiu_shift(vector unsigned char a,vector unsigned char b)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
v2df_permute(vector double a,vector double b)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
v4sf_permute(vector float a,vector float b)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
v2di_permute(vector long long a,vector long long b)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
v2diu_permute(vector unsigned long long a,vector unsigned long long b)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
v4si_permute(vector int a,vector int b)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
v4siu_permute(vector unsigned int a,vector unsigned int b)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
v8hi_permute(vector short a,vector short b)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
v8hiu_permute(vector unsigned short a,vector unsigned short b)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
v16qi_permute(vector signed char a,vector signed char b)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
v16qiu_permute(vector unsigned char a,vector unsigned char b)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 }
151