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
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);
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
);