]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/CodeGen/avx512vbmivl-builtin.c
Vendor import of clang trunk r338150:
[FreeBSD/FreeBSD.git] / test / CodeGen / avx512vbmivl-builtin.c
1 // RUN: %clang_cc1 -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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.mask.pmultishift.qb.128
103   return _mm_mask_multishift_epi64_epi8(__W, __M, __X, __Y); 
104 }
105
106 __m128i test_mm_maskz_multishift_epi64_epi8(__mmask16 __M, __m128i __X, __m128i __Y) {
107   // CHECK-LABEL: @test_mm_maskz_multishift_epi64_epi8
108   // CHECK: @llvm.x86.avx512.mask.pmultishift.qb.128
109   return _mm_maskz_multishift_epi64_epi8(__M, __X, __Y); 
110 }
111
112 __m128i test_mm_multishift_epi64_epi8(__m128i __X, __m128i __Y) {
113   // CHECK-LABEL: @test_mm_multishift_epi64_epi8
114   // CHECK: @llvm.x86.avx512.mask.pmultishift.qb.128
115   return _mm_multishift_epi64_epi8(__X, __Y); 
116 }
117
118 __m256i test_mm256_mask_multishift_epi64_epi8(__m256i __W, __mmask32 __M, __m256i __X, __m256i __Y) {
119   // CHECK-LABEL: @test_mm256_mask_multishift_epi64_epi8
120   // CHECK: @llvm.x86.avx512.mask.pmultishift.qb.256
121   return _mm256_mask_multishift_epi64_epi8(__W, __M, __X, __Y); 
122 }
123
124 __m256i test_mm256_maskz_multishift_epi64_epi8(__mmask32 __M, __m256i __X, __m256i __Y) {
125   // CHECK-LABEL: @test_mm256_maskz_multishift_epi64_epi8
126   // CHECK: @llvm.x86.avx512.mask.pmultishift.qb.256
127   return _mm256_maskz_multishift_epi64_epi8(__M, __X, __Y); 
128 }
129
130 __m256i test_mm256_multishift_epi64_epi8(__m256i __X, __m256i __Y) {
131   // CHECK-LABEL: @test_mm256_multishift_epi64_epi8
132   // CHECK: @llvm.x86.avx512.mask.pmultishift.qb.256
133   return _mm256_multishift_epi64_epi8(__X, __Y); 
134 }
135