1// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin -target-feature +avx512vbmi -target-feature +avx512vl -target-feature +avx512bw -emit-llvm -o - -Werror | FileCheck %s
2
3// Don't include mm_malloc.h, it's system specific.
4#define __MM_MALLOC_H
5
6#include <immintrin.h>
7
8__m128i test_mm_permutexvar_epi8(__m128i __A, __m128i __B) {
9  // CHECK-LABEL: @test_mm_permutexvar_epi8
10  // CHECK: @llvm.x86.avx512.mask.permvar.qi.128
11  return _mm_permutexvar_epi8(__A, __B);
12}
13
14__m128i test_mm_maskz_permutexvar_epi8(__mmask16 __M, __m128i __A, __m128i __B) {
15  // CHECK-LABEL: @test_mm_maskz_permutexvar_epi8
16  // CHECK: @llvm.x86.avx512.mask.permvar.qi.128
17  return _mm_maskz_permutexvar_epi8(__M, __A, __B);
18}
19
20__m128i test_mm_mask_permutexvar_epi8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B) {
21  // CHECK-LABEL: @test_mm_mask_permutexvar_epi8
22  // CHECK: @llvm.x86.avx512.mask.permvar.qi.128
23  return _mm_mask_permutexvar_epi8(__W, __M, __A, __B);
24}
25
26__m256i test_mm256_permutexvar_epi8(__m256i __A, __m256i __B) {
27  // CHECK-LABEL: @test_mm256_permutexvar_epi8
28  // CHECK: @llvm.x86.avx512.mask.permvar.qi.256
29  return _mm256_permutexvar_epi8(__A, __B);
30}
31
32__m256i test_mm256_maskz_permutexvar_epi8(__mmask32 __M, __m256i __A, __m256i __B) {
33  // CHECK-LABEL: @test_mm256_maskz_permutexvar_epi8
34  // CHECK: @llvm.x86.avx512.mask.permvar.qi.256
35  return _mm256_maskz_permutexvar_epi8(__M, __A, __B);
36}
37
38__m256i test_mm256_mask_permutexvar_epi8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B) {
39  // CHECK-LABEL: @test_mm256_mask_permutexvar_epi8
40  // CHECK: @llvm.x86.avx512.mask.permvar.qi.256
41  return _mm256_mask_permutexvar_epi8(__W, __M, __A, __B);
42}
43
44__m128i test_mm_mask2_permutex2var_epi8(__m128i __A, __m128i __I, __mmask16 __U, __m128i __B) {
45  // CHECK-LABEL: @test_mm_mask2_permutex2var_epi8
46  // CHECK: @llvm.x86.avx512.mask.vpermi2var.qi.128
47  return _mm_mask2_permutex2var_epi8(__A, __I, __U, __B);
48}
49
50__m256i test_mm256_mask2_permutex2var_epi8(__m256i __A, __m256i __I, __mmask32 __U, __m256i __B) {
51  // CHECK-LABEL: @test_mm256_mask2_permutex2var_epi8
52  // CHECK: @llvm.x86.avx512.mask.vpermi2var.qi.256
53  return _mm256_mask2_permutex2var_epi8(__A, __I, __U, __B);
54}
55
56__m128i test_mm_permutex2var_epi8(__m128i __A, __m128i __I, __m128i __B) {
57  // CHECK-LABEL: @test_mm_permutex2var_epi8
58  // CHECK: @llvm.x86.avx512.mask.vpermt2var.qi.128
59  return _mm_permutex2var_epi8(__A, __I, __B);
60}
61
62__m128i test_mm_mask_permutex2var_epi8(__m128i __A, __mmask16 __U, __m128i __I, __m128i __B) {
63  // CHECK-LABEL: @test_mm_mask_permutex2var_epi8
64  // CHECK: @llvm.x86.avx512.mask.vpermt2var.qi.128
65  return _mm_mask_permutex2var_epi8(__A, __U, __I, __B);
66}
67
68__m128i test_mm_maskz_permutex2var_epi8(__mmask16 __U, __m128i __A, __m128i __I, __m128i __B) {
69  // CHECK-LABEL: @test_mm_maskz_permutex2var_epi8
70  // CHECK: @llvm.x86.avx512.maskz.vpermt2var.qi.128
71  return _mm_maskz_permutex2var_epi8(__U, __A, __I, __B);
72}
73
74__m256i test_mm256_permutex2var_epi8(__m256i __A, __m256i __I, __m256i __B) {
75  // CHECK-LABEL: @test_mm256_permutex2var_epi8
76  // CHECK: @llvm.x86.avx512.mask.vpermt2var.qi.256
77  return _mm256_permutex2var_epi8(__A, __I, __B);
78}
79
80__m256i test_mm256_mask_permutex2var_epi8(__m256i __A, __mmask32 __U, __m256i __I, __m256i __B) {
81  // CHECK-LABEL: @test_mm256_mask_permutex2var_epi8
82  // CHECK: @llvm.x86.avx512.mask.vpermt2var.qi.256
83  return _mm256_mask_permutex2var_epi8(__A, __U, __I, __B);
84}
85
86__m256i test_mm256_maskz_permutex2var_epi8(__mmask32 __U, __m256i __A, __m256i __I, __m256i __B) {
87  // CHECK-LABEL: @test_mm256_maskz_permutex2var_epi8
88  // CHECK: @llvm.x86.avx512.maskz.vpermt2var.qi.256
89  return _mm256_maskz_permutex2var_epi8(__U, __A, __I, __B);
90}
91
92__m128i test_mm_mask_multishift_epi64_epi8(__m128i __W, __mmask16 __M, __m128i __X, __m128i __Y) {
93  // CHECK-LABEL: @test_mm_mask_multishift_epi64_epi8
94  // CHECK: @llvm.x86.avx512.mask.pmultishift.qb.128
95  return _mm_mask_multishift_epi64_epi8(__W, __M, __X, __Y);
96}
97
98__m128i test_mm_maskz_multishift_epi64_epi8(__mmask16 __M, __m128i __X, __m128i __Y) {
99  // CHECK-LABEL: @test_mm_maskz_multishift_epi64_epi8
100  // CHECK: @llvm.x86.avx512.mask.pmultishift.qb.128
101  return _mm_maskz_multishift_epi64_epi8(__M, __X, __Y);
102}
103
104__m128i test_mm_multishift_epi64_epi8(__m128i __X, __m128i __Y) {
105  // CHECK-LABEL: @test_mm_multishift_epi64_epi8
106  // CHECK: @llvm.x86.avx512.mask.pmultishift.qb.128
107  return _mm_multishift_epi64_epi8(__X, __Y);
108}
109
110__m256i test_mm256_mask_multishift_epi64_epi8(__m256i __W, __mmask32 __M, __m256i __X, __m256i __Y) {
111  // CHECK-LABEL: @test_mm256_mask_multishift_epi64_epi8
112  // CHECK: @llvm.x86.avx512.mask.pmultishift.qb.256
113  return _mm256_mask_multishift_epi64_epi8(__W, __M, __X, __Y);
114}
115
116__m256i test_mm256_maskz_multishift_epi64_epi8(__mmask32 __M, __m256i __X, __m256i __Y) {
117  // CHECK-LABEL: @test_mm256_maskz_multishift_epi64_epi8
118  // CHECK: @llvm.x86.avx512.mask.pmultishift.qb.256
119  return _mm256_maskz_multishift_epi64_epi8(__M, __X, __Y);
120}
121
122__m256i test_mm256_multishift_epi64_epi8(__m256i __X, __m256i __Y) {
123  // CHECK-LABEL: @test_mm256_multishift_epi64_epi8
124  // CHECK: @llvm.x86.avx512.mask.pmultishift.qb.256
125  return _mm256_multishift_epi64_epi8(__X, __Y);
126}
127
128