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