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.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 | |
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 | |
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 | |
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 | |
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 | |
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 | |