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