1 /* PR target/79299 */
2 /* { dg-do assemble { target avx512vl } } */
3 /* { dg-require-effective-target masm_intel } */
4 /* { dg-options "-Ofast -mavx512vl -masm=intel" } */
5
6 #include <immintrin.h>
7
8 __m512
f1(__m512i x,void const * y)9 f1 (__m512i x, void const *y)
10 {
11 return _mm512_i32gather_ps (x, y, 1);
12 }
13
14 __m512
f2(__m512 x,__mmask16 y,__m512i z,void const * w)15 f2 (__m512 x, __mmask16 y, __m512i z, void const *w)
16 {
17 return _mm512_mask_i32gather_ps (x, y, z, w, 1);
18 }
19
20 __m512d
f3(__m256i x,void const * y)21 f3 (__m256i x, void const *y)
22 {
23 return _mm512_i32gather_pd (x, y, 1);
24 }
25
26 __m512d
f4(__m512d x,__mmask8 y,__m256i z,void const * w)27 f4 (__m512d x, __mmask8 y, __m256i z, void const *w)
28 {
29 return _mm512_mask_i32gather_pd (x, y, z, w, 1);
30 }
31
32 __m256
f5(__m512i x,void const * y)33 f5 (__m512i x, void const *y)
34 {
35 return _mm512_i64gather_ps (x, y, 1);
36 }
37
38 __m256
f6(__m256 x,__mmask16 y,__m512i z,void const * w)39 f6 (__m256 x, __mmask16 y, __m512i z, void const *w)
40 {
41 return _mm512_mask_i64gather_ps (x, y, z, w, 1);
42 }
43
44 __m512d
f7(__m512i x,void const * y)45 f7 (__m512i x, void const *y)
46 {
47 return _mm512_i64gather_pd (x, y, 1);
48 }
49
50 __m512d
f8(__m512d x,__mmask8 y,__m512i z,void const * w)51 f8 (__m512d x, __mmask8 y, __m512i z, void const *w)
52 {
53 return _mm512_mask_i64gather_pd (x, y, z, w, 1);
54 }
55
56 __m512i
f9(__m512i x,void const * y)57 f9 (__m512i x, void const *y)
58 {
59 return _mm512_i32gather_epi32 (x, y, 1);
60 }
61
62 __m512i
f10(__m512i x,__mmask16 y,__m512i z,void const * w)63 f10 (__m512i x, __mmask16 y, __m512i z, void const *w)
64 {
65 return _mm512_mask_i32gather_epi32 (x, y, z, w, 1);
66 }
67
68 __m512i
f11(__m256i x,void const * y)69 f11 (__m256i x, void const *y)
70 {
71 return _mm512_i32gather_epi64 (x, y, 1);
72 }
73
74 __m512i
f12(__m512i x,__mmask8 y,__m256i z,void const * w)75 f12 (__m512i x, __mmask8 y, __m256i z, void const *w)
76 {
77 return _mm512_mask_i32gather_epi64 (x, y, z, w, 1);
78 }
79
80 __m256i
f13(__m512i x,void const * y)81 f13 (__m512i x, void const *y)
82 {
83 return _mm512_i64gather_epi32 (x, y, 1);
84 }
85
86 __m256i
f14(__m256i x,__mmask16 y,__m512i z,void const * w)87 f14 (__m256i x, __mmask16 y, __m512i z, void const *w)
88 {
89 return _mm512_mask_i64gather_epi32 (x, y, z, w, 1);
90 }
91
92 __m512i
f15(__m512i x,void const * y)93 f15 (__m512i x, void const *y)
94 {
95 return _mm512_i64gather_epi64 (x, y, 1);
96 }
97
98 __m512i
f16(__m512i x,__mmask8 y,__m512i z,void const * w)99 f16 (__m512i x, __mmask8 y, __m512i z, void const *w)
100 {
101 return _mm512_mask_i64gather_epi64 (x, y, z, w, 1);
102 }
103
104 __m256
f17(__m256 x,__mmask8 y,__m256i z,void const * w)105 f17 (__m256 x, __mmask8 y, __m256i z, void const *w)
106 {
107 return _mm256_mmask_i32gather_ps (x, y, z, w, 1);
108 }
109
110 __m128
f18(__m128 x,__mmask8 y,__m128i z,void const * w)111 f18 (__m128 x, __mmask8 y, __m128i z, void const *w)
112 {
113 return _mm_mmask_i32gather_ps (x, y, z, w, 1);
114 }
115
116 __m256d
f19(__m256d x,__mmask8 y,__m128i z,void const * w)117 f19 (__m256d x, __mmask8 y, __m128i z, void const *w)
118 {
119 return _mm256_mmask_i32gather_pd (x, y, z, w, 1);
120 }
121
122 __m128d
f20(__m128d x,__mmask8 y,__m128i z,void const * w)123 f20 (__m128d x, __mmask8 y, __m128i z, void const *w)
124 {
125 return _mm_mmask_i32gather_pd (x, y, z, w, 1);
126 }
127
128 __m128
f21(__m128 x,__mmask8 y,__m256i z,void const * w)129 f21 (__m128 x, __mmask8 y, __m256i z, void const *w)
130 {
131 return _mm256_mmask_i64gather_ps (x, y, z, w, 1);
132 }
133
134 __m128
f22(__m128 x,__mmask8 y,__m128i z,void const * w)135 f22 (__m128 x, __mmask8 y, __m128i z, void const *w)
136 {
137 return _mm_mmask_i64gather_ps (x, y, z, w, 1);
138 }
139
140 __m256d
f23(__m256d x,__mmask8 y,__m256i z,void const * w)141 f23 (__m256d x, __mmask8 y, __m256i z, void const *w)
142 {
143 return _mm256_mmask_i64gather_pd (x, y, z, w, 1);
144 }
145
146 __m128d
f24(__m128d x,__mmask8 y,__m128i z,void const * w)147 f24 (__m128d x, __mmask8 y, __m128i z, void const *w)
148 {
149 return _mm_mmask_i64gather_pd (x, y, z, w, 1);
150 }
151
152 __m256i
f25(__m256i x,__mmask8 y,__m256i z,void const * w)153 f25 (__m256i x, __mmask8 y, __m256i z, void const *w)
154 {
155 return _mm256_mmask_i32gather_epi32 (x, y, z, w, 1);
156 }
157
158 __m128i
f26(__m128i x,__mmask8 y,__m128i z,void const * w)159 f26 (__m128i x, __mmask8 y, __m128i z, void const *w)
160 {
161 return _mm_mmask_i32gather_epi32 (x, y, z, w, 1);
162 }
163
164 __m256i
f27(__m256i x,__mmask8 y,__m128i z,void const * w)165 f27 (__m256i x, __mmask8 y, __m128i z, void const *w)
166 {
167 return _mm256_mmask_i32gather_epi64 (x, y, z, w, 1);
168 }
169
170 __m128i
f28(__m128i x,__mmask8 y,__m128i z,void const * w)171 f28 (__m128i x, __mmask8 y, __m128i z, void const *w)
172 {
173 return _mm_mmask_i32gather_epi64 (x, y, z, w, 1);
174 }
175
176 __m128i
f29(__m128i x,__mmask8 y,__m256i z,void const * w)177 f29 (__m128i x, __mmask8 y, __m256i z, void const *w)
178 {
179 return _mm256_mmask_i64gather_epi32 (x, y, z, w, 1);
180 }
181
182 __m128i
f30(__m128i x,__mmask8 y,__m128i z,void const * w)183 f30 (__m128i x, __mmask8 y, __m128i z, void const *w)
184 {
185 return _mm_mmask_i64gather_epi32 (x, y, z, w, 1);
186 }
187
188 __m256i
f31(__m256i x,__mmask8 y,__m256i z,void const * w)189 f31 (__m256i x, __mmask8 y, __m256i z, void const *w)
190 {
191 return _mm256_mmask_i64gather_epi64 (x, y, z, w, 1);
192 }
193
194 __m128i
f32(__m128i x,__mmask8 y,__m128i z,void const * w)195 f32 (__m128i x, __mmask8 y, __m128i z, void const *w)
196 {
197 return _mm_mmask_i64gather_epi64 (x, y, z, w, 1);
198 }
199
200 __m256
f33(__m256 x,__m256i z,void const * w)201 f33 (__m256 x, __m256i z, void const *w)
202 {
203 return _mm256_mmask_i32gather_ps (x, -1, z, w, 1);
204 }
205
206 __m128
f34(__m128 x,__m128i z,void const * w)207 f34 (__m128 x, __m128i z, void const *w)
208 {
209 return _mm_mmask_i32gather_ps (x, -1, z, w, 1);
210 }
211
212 __m256d
f35(__m256d x,__m128i z,void const * w)213 f35 (__m256d x, __m128i z, void const *w)
214 {
215 return _mm256_mmask_i32gather_pd (x, -1, z, w, 1);
216 }
217
218 __m128d
f36(__m128d x,__m128i z,void const * w)219 f36 (__m128d x, __m128i z, void const *w)
220 {
221 return _mm_mmask_i32gather_pd (x, -1, z, w, 1);
222 }
223
224 __m128
f37(__m128 x,__m256i z,void const * w)225 f37 (__m128 x, __m256i z, void const *w)
226 {
227 return _mm256_mmask_i64gather_ps (x, -1, z, w, 1);
228 }
229
230 __m128
f38(__m128 x,__m128i z,void const * w)231 f38 (__m128 x, __m128i z, void const *w)
232 {
233 return _mm_mmask_i64gather_ps (x, -1, z, w, 1);
234 }
235
236 __m256d
f39(__m256d x,__m256i z,void const * w)237 f39 (__m256d x, __m256i z, void const *w)
238 {
239 return _mm256_mmask_i64gather_pd (x, -1, z, w, 1);
240 }
241
242 __m128d
f40(__m128d x,__m128i z,void const * w)243 f40 (__m128d x, __m128i z, void const *w)
244 {
245 return _mm_mmask_i64gather_pd (x, -1, z, w, 1);
246 }
247
248 __m256i
f41(__m256i x,__m256i z,void const * w)249 f41 (__m256i x, __m256i z, void const *w)
250 {
251 return _mm256_mmask_i32gather_epi32 (x, -1, z, w, 1);
252 }
253
254 __m128i
f42(__m128i x,__m128i z,void const * w)255 f42 (__m128i x, __m128i z, void const *w)
256 {
257 return _mm_mmask_i32gather_epi32 (x, -1, z, w, 1);
258 }
259
260 __m256i
f43(__m256i x,__m128i z,void const * w)261 f43 (__m256i x, __m128i z, void const *w)
262 {
263 return _mm256_mmask_i32gather_epi64 (x, -1, z, w, 1);
264 }
265
266 __m128i
f44(__m128i x,__m128i z,void const * w)267 f44 (__m128i x, __m128i z, void const *w)
268 {
269 return _mm_mmask_i32gather_epi64 (x, -1, z, w, 1);
270 }
271
272 __m128i
f45(__m128i x,__m256i z,void const * w)273 f45 (__m128i x, __m256i z, void const *w)
274 {
275 return _mm256_mmask_i64gather_epi32 (x, -1, z, w, 1);
276 }
277
278 __m128i
f46(__m128i x,__m128i z,void const * w)279 f46 (__m128i x, __m128i z, void const *w)
280 {
281 return _mm_mmask_i64gather_epi32 (x, -1, z, w, 1);
282 }
283
284 __m256i
f47(__m256i x,__m256i z,void const * w)285 f47 (__m256i x, __m256i z, void const *w)
286 {
287 return _mm256_mmask_i64gather_epi64 (x, -1, z, w, 1);
288 }
289
290 __m128i
f48(__m128i x,__m128i z,void const * w)291 f48 (__m128i x, __m128i z, void const *w)
292 {
293 return _mm_mmask_i64gather_epi64 (x, -1, z, w, 1);
294 }
295