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