1 // RUN: %clang_cc1 -ffreestanding %s -O0 -triple=x86_64 -target-feature +avx512bw -target-feature +avx512vl -emit-llvm -o - -Wall -Werror | FileCheck %s
2 // RUN: %clang_cc1 -ffreestanding %s -O0 -triple=i386 -target-feature +avx512bw -target-feature +avx512vl -emit-llvm -o - -Wall -Werror | FileCheck %s
6 short test_mm_reduce_add_epi16(__m128i __W
){
7 // CHECK-LABEL: @test_mm_reduce_add_epi16(
8 // CHECK: call i16 @llvm.vector.reduce.add.v8i16(<8 x i16> %{{.*}})
9 return _mm_reduce_add_epi16(__W
);
12 short test_mm_reduce_mul_epi16(__m128i __W
){
13 // CHECK-LABEL: @test_mm_reduce_mul_epi16(
14 // CHECK: call i16 @llvm.vector.reduce.mul.v8i16(<8 x i16> %{{.*}})
15 return _mm_reduce_mul_epi16(__W
);
18 short test_mm_reduce_or_epi16(__m128i __W
){
19 // CHECK-LABEL: @test_mm_reduce_or_epi16(
20 // CHECK: call i16 @llvm.vector.reduce.or.v8i16(<8 x i16> %{{.*}})
21 return _mm_reduce_or_epi16(__W
);
24 short test_mm_reduce_and_epi16(__m128i __W
){
25 // CHECK-LABEL: @test_mm_reduce_and_epi16(
26 // CHECK: call i16 @llvm.vector.reduce.and.v8i16(<8 x i16> %{{.*}})
27 return _mm_reduce_and_epi16(__W
);
30 short test_mm_mask_reduce_add_epi16(__mmask8 __M
, __m128i __W
){
31 // CHECK-LABEL: @test_mm_mask_reduce_add_epi16(
32 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
33 // CHECK: call i16 @llvm.vector.reduce.add.v8i16(<8 x i16> %{{.*}})
34 return _mm_mask_reduce_add_epi16(__M
, __W
);
37 short test_mm_mask_reduce_mul_epi16(__mmask8 __M
, __m128i __W
){
38 // CHECK-LABEL: @test_mm_mask_reduce_mul_epi16(
39 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
40 // CHECK: call i16 @llvm.vector.reduce.mul.v8i16(<8 x i16> %{{.*}})
41 return _mm_mask_reduce_mul_epi16(__M
, __W
);
44 short test_mm_mask_reduce_and_epi16(__mmask8 __M
, __m128i __W
){
45 // CHECK-LABEL: @test_mm_mask_reduce_and_epi16(
46 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
47 // CHECK: call i16 @llvm.vector.reduce.and.v8i16(<8 x i16> %{{.*}}
48 return _mm_mask_reduce_and_epi16(__M
, __W
);
51 short test_mm_mask_reduce_or_epi16(__mmask8 __M
, __m128i __W
){
52 // CHECK-LABEL: @test_mm_mask_reduce_or_epi16(
53 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
54 // CHECK: call i16 @llvm.vector.reduce.or.v8i16(<8 x i16> %{{.*}})
55 return _mm_mask_reduce_or_epi16(__M
, __W
);
58 short test_mm256_reduce_add_epi16(__m256i __W
){
59 // CHECK-LABEL: @test_mm256_reduce_add_epi16(
60 // CHECK: call i16 @llvm.vector.reduce.add.v16i16(<16 x i16> %{{.*}})
61 return _mm256_reduce_add_epi16(__W
);
64 short test_mm256_reduce_mul_epi16(__m256i __W
){
65 // CHECK-LABEL: @test_mm256_reduce_mul_epi16(
66 // CHECK: call i16 @llvm.vector.reduce.mul.v16i16(<16 x i16> %{{.*}})
67 return _mm256_reduce_mul_epi16(__W
);
70 short test_mm256_reduce_or_epi16(__m256i __W
){
71 // CHECK-LABEL: @test_mm256_reduce_or_epi16(
72 // CHECK: call i16 @llvm.vector.reduce.or.v16i16(<16 x i16> %{{.*}})
73 return _mm256_reduce_or_epi16(__W
);
76 short test_mm256_reduce_and_epi16(__m256i __W
){
77 // CHECK-LABEL: @test_mm256_reduce_and_epi16(
78 // CHECK: call i16 @llvm.vector.reduce.and.v16i16(<16 x i16> %{{.*}})
79 return _mm256_reduce_and_epi16(__W
);
82 short test_mm256_mask_reduce_add_epi16(__mmask16 __M
, __m256i __W
){
83 // CHECK-LABEL: @test_mm256_mask_reduce_add_epi16(
84 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
85 // CHECK: call i16 @llvm.vector.reduce.add.v16i16(<16 x i16> %{{.*}})
86 return _mm256_mask_reduce_add_epi16(__M
, __W
);
89 short test_mm256_mask_reduce_mul_epi16(__mmask16 __M
, __m256i __W
){
90 // CHECK-LABEL: @test_mm256_mask_reduce_mul_epi16(
91 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
92 // CHECK: call i16 @llvm.vector.reduce.mul.v16i16(<16 x i16> %{{.*}})
93 return _mm256_mask_reduce_mul_epi16(__M
, __W
);
96 short test_mm256_mask_reduce_and_epi16(__mmask16 __M
, __m256i __W
){
97 // CHECK-LABEL: @test_mm256_mask_reduce_and_epi16(
98 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
99 // CHECK: call i16 @llvm.vector.reduce.and.v16i16(<16 x i16> %{{.*}})
100 return _mm256_mask_reduce_and_epi16(__M
, __W
);
103 short test_mm256_mask_reduce_or_epi16(__mmask16 __M
, __m256i __W
){
104 // CHECK-LABEL: @test_mm256_mask_reduce_or_epi16(
105 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
106 // CHECK: call i16 @llvm.vector.reduce.or.v16i16(<16 x i16> %{{.*}})
107 return _mm256_mask_reduce_or_epi16(__M
, __W
);
110 signed char test_mm_reduce_add_epi8(__m128i __W
){
111 // CHECK-LABEL: @test_mm_reduce_add_epi8(
112 // CHECK: call i8 @llvm.vector.reduce.add.v16i8(<16 x i8> %{{.*}})
113 return _mm_reduce_add_epi8(__W
);
116 signed char test_mm_reduce_mul_epi8(__m128i __W
){
117 // CHECK-LABEL: @test_mm_reduce_mul_epi8(
118 // CHECK: call i8 @llvm.vector.reduce.mul.v16i8(<16 x i8> %{{.*}})
119 return _mm_reduce_mul_epi8(__W
);
122 signed char test_mm_reduce_and_epi8(__m128i __W
){
123 // CHECK-LABEL: @test_mm_reduce_and_epi8(
124 // CHECK: call i8 @llvm.vector.reduce.and.v16i8(<16 x i8> %{{.*}})
125 return _mm_reduce_and_epi8(__W
);
128 signed char test_mm_reduce_or_epi8(__m128i __W
){
129 // CHECK-LABEL: @test_mm_reduce_or_epi8(
130 // CHECK: call i8 @llvm.vector.reduce.or.v16i8(<16 x i8> %{{.*}})
131 return _mm_reduce_or_epi8(__W
);
134 signed char test_mm_mask_reduce_add_epi8(__mmask16 __M
, __m128i __W
){
135 // CHECK-LABEL: @test_mm_mask_reduce_add_epi8(
136 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
137 // CHECK: call i8 @llvm.vector.reduce.add.v16i8(<16 x i8> %{{.*}})
138 return _mm_mask_reduce_add_epi8(__M
, __W
);
141 signed char test_mm_mask_reduce_mul_epi8(__mmask16 __M
, __m128i __W
){
142 // CHECK-LABEL: @test_mm_mask_reduce_mul_epi8(
143 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
144 // CHECK: call i8 @llvm.vector.reduce.mul.v16i8(<16 x i8> %{{.*}})
145 return _mm_mask_reduce_mul_epi8(__M
, __W
);
148 signed char test_mm_mask_reduce_and_epi8(__mmask16 __M
, __m128i __W
){
149 // CHECK-LABEL: @test_mm_mask_reduce_and_epi8(
150 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
151 // CHECK: call i8 @llvm.vector.reduce.and.v16i8(<16 x i8> %{{.*}})
152 return _mm_mask_reduce_and_epi8(__M
, __W
);
155 signed char test_mm_mask_reduce_or_epi8(__mmask16 __M
, __m128i __W
){
156 // CHECK-LABEL: @test_mm_mask_reduce_or_epi8(
157 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
158 // CHECK: call i8 @llvm.vector.reduce.or.v16i8(<16 x i8> %{{.*}})
159 return _mm_mask_reduce_or_epi8(__M
, __W
);
162 signed char test_mm256_reduce_add_epi8(__m256i __W
){
163 // CHECK-LABEL: @test_mm256_reduce_add_epi8(
164 // CHECK: call i8 @llvm.vector.reduce.add.v32i8(<32 x i8> %{{.*}})
165 return _mm256_reduce_add_epi8(__W
);
168 signed char test_mm256_reduce_mul_epi8(__m256i __W
){
169 // CHECK-LABEL: @test_mm256_reduce_mul_epi8(
170 // CHECK: call i8 @llvm.vector.reduce.mul.v32i8(<32 x i8> %{{.*}})
171 return _mm256_reduce_mul_epi8(__W
);
174 signed char test_mm256_reduce_and_epi8(__m256i __W
){
175 // CHECK-LABEL: @test_mm256_reduce_and_epi8(
176 // CHECK: call i8 @llvm.vector.reduce.and.v32i8(<32 x i8> %{{.*}})
177 return _mm256_reduce_and_epi8(__W
);
180 signed char test_mm256_reduce_or_epi8(__m256i __W
){
181 // CHECK-LABEL: @test_mm256_reduce_or_epi8(
182 // CHECK: call i8 @llvm.vector.reduce.or.v32i8(<32 x i8> %{{.*}})
183 return _mm256_reduce_or_epi8(__W
);
186 signed char test_mm256_mask_reduce_add_epi8(__mmask32 __M
, __m256i __W
){
187 // CHECK-LABEL: @test_mm256_mask_reduce_add_epi8(
188 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
189 // CHECK: call i8 @llvm.vector.reduce.add.v32i8(<32 x i8> %{{.*}})
190 return _mm256_mask_reduce_add_epi8(__M
, __W
);
193 signed char test_mm256_mask_reduce_mul_epi8(__mmask32 __M
, __m256i __W
){
194 // CHECK-LABEL: @test_mm256_mask_reduce_mul_epi8(
195 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
196 // CHECK: call i8 @llvm.vector.reduce.mul.v32i8(<32 x i8> %{{.*}})
197 return _mm256_mask_reduce_mul_epi8(__M
, __W
);
200 signed char test_mm256_mask_reduce_and_epi8(__mmask32 __M
, __m256i __W
){
201 // CHECK-LABEL: @test_mm256_mask_reduce_and_epi8(
202 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
203 // CHECK: call i8 @llvm.vector.reduce.and.v32i8(<32 x i8> %{{.*}})
204 return _mm256_mask_reduce_and_epi8(__M
, __W
);
207 signed char test_mm256_mask_reduce_or_epi8(__mmask32 __M
, __m256i __W
){
208 // CHECK-LABEL: @test_mm256_mask_reduce_or_epi8(
209 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
210 // CHECK: call i8 @llvm.vector.reduce.or.v32i8(<32 x i8> %{{.*}})
211 return _mm256_mask_reduce_or_epi8(__M
, __W
);
214 short test_mm_reduce_max_epi16(__m128i __W
){
215 // CHECK-LABEL: test_mm_reduce_max_epi16
216 // CHECK: call i16 @llvm.vector.reduce.smax.v8i16(<8 x i16> %{{.*}})
217 return _mm_reduce_max_epi16(__W
);
220 short test_mm_reduce_min_epi16(__m128i __W
){
221 // CHECK-LABEL: test_mm_reduce_min_epi16
222 // CHECK: call i16 @llvm.vector.reduce.smin.v8i16(<8 x i16> %{{.*}})
223 return _mm_reduce_min_epi16(__W
);
226 unsigned short test_mm_reduce_max_epu16(__m128i __W
){
227 // CHECK-LABEL: test_mm_reduce_max_epu16
228 // CHECK: call i16 @llvm.vector.reduce.umax.v8i16(<8 x i16> %{{.*}})
229 return _mm_reduce_max_epu16(__W
);
232 unsigned short test_mm_reduce_min_epu16(__m128i __W
){
233 // CHECK-LABEL: test_mm_reduce_min_epu16
234 // CHECK: call i16 @llvm.vector.reduce.umin.v8i16(<8 x i16> %{{.*}})
235 return _mm_reduce_min_epu16(__W
);
238 short test_mm_mask_reduce_max_epi16(__mmask8 __M
, __m128i __W
){
239 // CHECK-LABEL: test_mm_mask_reduce_max_epi16
240 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
241 // CHECK: call i16 @llvm.vector.reduce.smax.v8i16(<8 x i16> %{{.*}})
242 return _mm_mask_reduce_max_epi16(__M
, __W
);
245 short test_mm_mask_reduce_min_epi16(__mmask8 __M
, __m128i __W
){
246 // CHECK-LABEL: test_mm_mask_reduce_min_epi16
247 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
248 // CHECK: call i16 @llvm.vector.reduce.smin.v8i16(<8 x i16> %{{.*}})
249 return _mm_mask_reduce_min_epi16(__M
, __W
);
252 unsigned short test_mm_mask_reduce_max_epu16(__mmask8 __M
, __m128i __W
){
253 // CHECK-LABEL: test_mm_mask_reduce_max_epu16
254 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
255 // CHECK: call i16 @llvm.vector.reduce.umax.v8i16(<8 x i16> %{{.*}})
256 return _mm_mask_reduce_max_epu16(__M
, __W
);
259 unsigned short test_mm_mask_reduce_min_epu16(__mmask8 __M
, __m128i __W
){
260 // CHECK-LABEL: test_mm_mask_reduce_min_epu16
261 // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}
262 // CHECK: call i16 @llvm.vector.reduce.umin.v8i16(<8 x i16> %{{.*}})
263 return _mm_mask_reduce_min_epu16(__M
, __W
);
266 short test_mm256_reduce_max_epi16(__m256i __W
){
267 // CHECK-LABEL: test_mm256_reduce_max_epi16
268 // CHECK: call i16 @llvm.vector.reduce.smax.v16i16(<16 x i16> %{{.*}})
269 return _mm256_reduce_max_epi16(__W
);
272 short test_mm256_reduce_min_epi16(__m256i __W
){
273 // CHECK-LABEL: test_mm256_reduce_min_epi16
274 // CHECK: call i16 @llvm.vector.reduce.smin.v16i16(<16 x i16> %{{.*}})
275 return _mm256_reduce_min_epi16(__W
);
278 unsigned short test_mm256_reduce_max_epu16(__m256i __W
){
279 // CHECK-LABEL: test_mm256_reduce_max_epu16
280 // CHECK: call i16 @llvm.vector.reduce.umax.v16i16(<16 x i16> %{{.*}})
281 return _mm256_reduce_max_epu16(__W
);
284 unsigned short test_mm256_reduce_min_epu16(__m256i __W
){
285 // CHECK-LABEL: test_mm256_reduce_min_epu16
286 // CHECK: call i16 @llvm.vector.reduce.umin.v16i16(<16 x i16> %{{.*}})
287 return _mm256_reduce_min_epu16(__W
);
290 short test_mm256_mask_reduce_max_epi16(__mmask16 __M
, __m256i __W
){
291 // CHECK-LABEL: test_mm256_mask_reduce_max_epi16
292 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
293 // CHECK: call i16 @llvm.vector.reduce.smax.v16i16(<16 x i16> %{{.*}})
294 return _mm256_mask_reduce_max_epi16(__M
, __W
);
297 short test_mm256_mask_reduce_min_epi16(__mmask16 __M
, __m256i __W
){
298 // CHECK-LABEL: test_mm256_mask_reduce_min_epi16
299 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
300 // CHECK: call i16 @llvm.vector.reduce.smin.v16i16(<16 x i16> %{{.*}})
301 return _mm256_mask_reduce_min_epi16(__M
, __W
);
304 unsigned short test_mm256_mask_reduce_max_epu16(__mmask16 __M
, __m256i __W
){
305 // CHECK-LABEL: test_mm256_mask_reduce_max_epu16
306 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
307 // CHECK: call i16 @llvm.vector.reduce.umax.v16i16(<16 x i16> %{{.*}})
308 return _mm256_mask_reduce_max_epu16(__M
, __W
);
311 unsigned short test_mm256_mask_reduce_min_epu16(__mmask16 __M
, __m256i __W
){
312 // CHECK-LABEL: test_mm256_mask_reduce_min_epu16
313 // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}
314 // CHECK: call i16 @llvm.vector.reduce.umin.v16i16(<16 x i16> %{{.*}})
315 return _mm256_mask_reduce_min_epu16(__M
, __W
);
318 signed char test_mm_reduce_max_epi8(__m128i __W
){
319 // CHECK-LABEL: test_mm_reduce_max_epi8
320 // CHECK: call i8 @llvm.vector.reduce.smax.v16i8(<16 x i8> %{{.*}})
321 return _mm_reduce_max_epi8(__W
);
324 signed char test_mm_reduce_min_epi8(__m128i __W
){
325 // CHECK-LABEL: test_mm_reduce_min_epi8
326 // CHECK: call i8 @llvm.vector.reduce.smin.v16i8(<16 x i8> %{{.*}})
327 return _mm_reduce_min_epi8(__W
);
330 unsigned char test_mm_reduce_max_epu8(__m128i __W
){
331 // CHECK-LABEL: test_mm_reduce_max_epu8
332 // CHECK: call i8 @llvm.vector.reduce.umax.v16i8(<16 x i8> %{{.*}})
333 return _mm_reduce_max_epu8(__W
);
336 unsigned char test_mm_reduce_min_epu8(__m128i __W
){
337 // CHECK-LABEL: test_mm_reduce_min_epu8
338 // CHECK: call i8 @llvm.vector.reduce.umin.v16i8(<16 x i8> %{{.*}})
339 return _mm_reduce_min_epu8(__W
);
342 signed char test_mm_mask_reduce_max_epi8(__mmask16 __M
, __m128i __W
){
343 // CHECK-LABEL: test_mm_mask_reduce_max_epi8
344 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
345 // CHECK: call i8 @llvm.vector.reduce.smax.v16i8(<16 x i8> %{{.*}})
346 return _mm_mask_reduce_max_epi8(__M
, __W
);
349 signed char test_mm_mask_reduce_min_epi8(__mmask16 __M
, __m128i __W
){
350 // CHECK-LABEL: test_mm_mask_reduce_min_epi8
351 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
352 // CHECK: call i8 @llvm.vector.reduce.smin.v16i8(<16 x i8> %{{.*}})
353 return _mm_mask_reduce_min_epi8(__M
, __W
);
356 unsigned char test_mm_mask_reduce_max_epu8(__mmask16 __M
, __m128i __W
){
357 // CHECK-LABEL: test_mm_mask_reduce_max_epu8
358 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
359 // CHECK: call i8 @llvm.vector.reduce.umax.v16i8(<16 x i8> %{{.*}})
360 return _mm_mask_reduce_max_epu8(__M
, __W
);
363 unsigned char test_mm_mask_reduce_min_epu8(__mmask16 __M
, __m128i __W
){
364 // CHECK-LABEL: test_mm_mask_reduce_min_epu8
365 // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}
366 // CHECK: call i8 @llvm.vector.reduce.umin.v16i8(<16 x i8> %{{.*}})
367 return _mm_mask_reduce_min_epu8(__M
, __W
);
370 signed char test_mm256_reduce_max_epi8(__m256i __W
){
371 // CHECK-LABEL: test_mm256_reduce_max_epi8
372 // CHECK: call i8 @llvm.vector.reduce.smax.v32i8(<32 x i8> %{{.*}})
373 return _mm256_reduce_max_epi8(__W
);
376 signed char test_mm256_reduce_min_epi8(__m256i __W
){
377 // CHECK-LABEL: test_mm256_reduce_min_epi8
378 // CHECK: call i8 @llvm.vector.reduce.smin.v32i8(<32 x i8> %{{.*}})
379 return _mm256_reduce_min_epi8(__W
);
382 unsigned char test_mm256_reduce_max_epu8(__m256i __W
){
383 // CHECK-LABEL: test_mm256_reduce_max_epu8
384 // CHECK: call i8 @llvm.vector.reduce.umax.v32i8(<32 x i8> %{{.*}})
385 return _mm256_reduce_max_epu8(__W
);
388 unsigned char test_mm256_reduce_min_epu8(__m256i __W
){
389 // CHECK-LABEL: test_mm256_reduce_min_epu8
390 // CHECK: call i8 @llvm.vector.reduce.umin.v32i8(<32 x i8> %{{.*}})
391 return _mm256_reduce_min_epu8(__W
);
394 signed char test_mm256_mask_reduce_max_epi8(__mmask32 __M
, __m256i __W
){
395 // CHECK-LABEL: test_mm256_mask_reduce_max_epi8
396 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
397 // CHECK: call i8 @llvm.vector.reduce.smax.v32i8(<32 x i8> %{{.*}})
398 return _mm256_mask_reduce_max_epi8(__M
, __W
);
401 signed char test_mm256_mask_reduce_min_epi8(__mmask32 __M
, __m256i __W
){
402 // CHECK-LABEL: test_mm256_mask_reduce_min_epi8
403 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
404 // CHECK: call i8 @llvm.vector.reduce.smin.v32i8(<32 x i8> %{{.*}})
405 return _mm256_mask_reduce_min_epi8(__M
, __W
);
408 unsigned char test_mm256_mask_reduce_max_epu8(__mmask32 __M
, __m256i __W
){
409 // CHECK-LABEL: test_mm256_mask_reduce_max_epu8
410 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
411 // CHECK: call i8 @llvm.vector.reduce.umax.v32i8(<32 x i8> %{{.*}})
412 return _mm256_mask_reduce_max_epu8(__M
, __W
);
415 unsigned char test_mm256_mask_reduce_min_epu8(__mmask32 __M
, __m256i __W
){
416 // CHECK-LABEL: test_mm256_mask_reduce_min_epu8
417 // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}
418 // CHECK: call i8 @llvm.vector.reduce.umin.v32i8(<32 x i8> %{{.*}})
419 return _mm256_mask_reduce_min_epu8(__M
, __W
);