• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // RUN: %clang_cc1 %s -triple=x86_64-apple-darwin -target-feature +avx512vl -target-feature +avx512cd -emit-llvm -o - -Werror | FileCheck %s
2 
3 // Don't include mm_malloc.h, it's system specific.
4 #define __MM_MALLOC_H
5 
6 #include <immintrin.h>
7 
test_mm_broadcastmb_epi64(__mmask8 __A)8 __m128i test_mm_broadcastmb_epi64(__mmask8 __A) {
9   // CHECK-LABEL: @test_mm_broadcastmb_epi64
10   // CHECK: @llvm.x86.avx512.broadcastmb.128
11   return _mm_broadcastmb_epi64(__A);
12 }
13 
test_mm256_broadcastmb_epi64(__mmask8 __A)14 __m256i test_mm256_broadcastmb_epi64(__mmask8 __A) {
15   // CHECK-LABEL: @test_mm256_broadcastmb_epi64
16   // CHECK: @llvm.x86.avx512.broadcastmb.256
17   return _mm256_broadcastmb_epi64(__A);
18 }
19 
test_mm_broadcastmw_epi32(__mmask16 __A)20 __m128i test_mm_broadcastmw_epi32(__mmask16 __A) {
21   // CHECK-LABEL: @test_mm_broadcastmw_epi32
22   // CHECK: @llvm.x86.avx512.broadcastmw.128
23   return _mm_broadcastmw_epi32(__A);
24 }
25 
test_mm256_broadcastmw_epi32(__mmask16 __A)26 __m256i test_mm256_broadcastmw_epi32(__mmask16 __A) {
27   // CHECK-LABEL: @test_mm256_broadcastmw_epi32
28   // CHECK: @llvm.x86.avx512.broadcastmw.256
29   return _mm256_broadcastmw_epi32(__A);
30 }
31 
test_mm_conflict_epi64(__m128i __A)32 __m128i test_mm_conflict_epi64(__m128i __A) {
33   // CHECK-LABEL: @test_mm_conflict_epi64
34   // CHECK: @llvm.x86.avx512.mask.conflict.q.128
35   return _mm_conflict_epi64(__A);
36 }
37 
test_mm_mask_conflict_epi64(__m128i __W,__mmask8 __U,__m128i __A)38 __m128i test_mm_mask_conflict_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
39   // CHECK-LABEL: @test_mm_mask_conflict_epi64
40   // CHECK: @llvm.x86.avx512.mask.conflict.q.128
41   return _mm_mask_conflict_epi64(__W, __U, __A);
42 }
43 
test_mm_maskz_conflict_epi64(__mmask8 __U,__m128i __A)44 __m128i test_mm_maskz_conflict_epi64(__mmask8 __U, __m128i __A) {
45   // CHECK-LABEL: @test_mm_maskz_conflict_epi64
46   // CHECK: @llvm.x86.avx512.mask.conflict.q.128
47   return _mm_maskz_conflict_epi64(__U, __A);
48 }
49 
test_mm256_conflict_epi64(__m256i __A)50 __m256i test_mm256_conflict_epi64(__m256i __A) {
51   // CHECK-LABEL: @test_mm256_conflict_epi64
52   // CHECK: @llvm.x86.avx512.mask.conflict.q.256
53   return _mm256_conflict_epi64(__A);
54 }
55 
test_mm256_mask_conflict_epi64(__m256i __W,__mmask8 __U,__m256i __A)56 __m256i test_mm256_mask_conflict_epi64(__m256i __W, __mmask8 __U, __m256i __A) {
57   // CHECK-LABEL: @test_mm256_mask_conflict_epi64
58   // CHECK: @llvm.x86.avx512.mask.conflict.q.256
59   return _mm256_mask_conflict_epi64(__W, __U, __A);
60 }
61 
test_mm256_maskz_conflict_epi64(__mmask8 __U,__m256i __A)62 __m256i test_mm256_maskz_conflict_epi64(__mmask8 __U, __m256i __A) {
63   // CHECK-LABEL: @test_mm256_maskz_conflict_epi64
64   // CHECK: @llvm.x86.avx512.mask.conflict.q.256
65   return _mm256_maskz_conflict_epi64(__U, __A);
66 }
67 
test_mm_conflict_epi32(__m128i __A)68 __m128i test_mm_conflict_epi32(__m128i __A) {
69   // CHECK-LABEL: @test_mm_conflict_epi32
70   // CHECK: @llvm.x86.avx512.mask.conflict.d.128
71   return _mm_conflict_epi32(__A);
72 }
73 
test_mm_mask_conflict_epi32(__m128i __W,__mmask8 __U,__m128i __A)74 __m128i test_mm_mask_conflict_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
75   // CHECK-LABEL: @test_mm_mask_conflict_epi32
76   // CHECK: @llvm.x86.avx512.mask.conflict.d.128
77   return _mm_mask_conflict_epi32(__W, __U, __A);
78 }
79 
test_mm_maskz_conflict_epi32(__mmask8 __U,__m128i __A)80 __m128i test_mm_maskz_conflict_epi32(__mmask8 __U, __m128i __A) {
81   // CHECK-LABEL: @test_mm_maskz_conflict_epi32
82   // CHECK: @llvm.x86.avx512.mask.conflict.d.128
83   return _mm_maskz_conflict_epi32(__U, __A);
84 }
85 
test_mm256_conflict_epi32(__m256i __A)86 __m256i test_mm256_conflict_epi32(__m256i __A) {
87   // CHECK-LABEL: @test_mm256_conflict_epi32
88   // CHECK: @llvm.x86.avx512.mask.conflict.d.256
89   return _mm256_conflict_epi32(__A);
90 }
91 
test_mm256_mask_conflict_epi32(__m256i __W,__mmask8 __U,__m256i __A)92 __m256i test_mm256_mask_conflict_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
93   // CHECK-LABEL: @test_mm256_mask_conflict_epi32
94   // CHECK: @llvm.x86.avx512.mask.conflict.d.256
95   return _mm256_mask_conflict_epi32(__W, __U, __A);
96 }
97 
test_mm256_maskz_conflict_epi32(__mmask8 __U,__m256i __A)98 __m256i test_mm256_maskz_conflict_epi32(__mmask8 __U, __m256i __A) {
99   // CHECK-LABEL: @test_mm256_maskz_conflict_epi32
100   // CHECK: @llvm.x86.avx512.mask.conflict.d.256
101   return _mm256_maskz_conflict_epi32(__U, __A);
102 }
103 
test_mm_lzcnt_epi32(__m128i __A)104 __m128i test_mm_lzcnt_epi32(__m128i __A) {
105   // CHECK-LABEL: @test_mm_lzcnt_epi32
106   // CHECK: call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %{{.*}}, i1 false)
107   return _mm_lzcnt_epi32(__A);
108 }
109 
test_mm_mask_lzcnt_epi32(__m128i __W,__mmask8 __U,__m128i __A)110 __m128i test_mm_mask_lzcnt_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
111   // CHECK-LABEL: @test_mm_mask_lzcnt_epi32
112   // CHECK: call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %{{.*}}, i1 false)
113   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
114   return _mm_mask_lzcnt_epi32(__W, __U, __A);
115 }
116 
test_mm_maskz_lzcnt_epi32(__mmask8 __U,__m128i __A)117 __m128i test_mm_maskz_lzcnt_epi32(__mmask8 __U, __m128i __A) {
118   // CHECK-LABEL: @test_mm_maskz_lzcnt_epi32
119   // CHECK: call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %{{.*}}, i1 false)
120   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
121   return _mm_maskz_lzcnt_epi32(__U, __A);
122 }
123 
test_mm256_lzcnt_epi32(__m256i __A)124 __m256i test_mm256_lzcnt_epi32(__m256i __A) {
125   // CHECK-LABEL: @test_mm256_lzcnt_epi32
126   // CHECK: call <8 x i32> @llvm.ctlz.v8i32(<8 x i32> %{{.*}}, i1 false)
127   return _mm256_lzcnt_epi32(__A);
128 }
129 
test_mm256_mask_lzcnt_epi32(__m256i __W,__mmask8 __U,__m256i __A)130 __m256i test_mm256_mask_lzcnt_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
131   // CHECK-LABEL: @test_mm256_mask_lzcnt_epi32
132   // CHECK: call <8 x i32> @llvm.ctlz.v8i32(<8 x i32> %{{.*}}, i1 false)
133   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
134   return _mm256_mask_lzcnt_epi32(__W, __U, __A);
135 }
136 
test_mm256_maskz_lzcnt_epi32(__mmask8 __U,__m256i __A)137 __m256i test_mm256_maskz_lzcnt_epi32(__mmask8 __U, __m256i __A) {
138   // CHECK-LABEL: @test_mm256_maskz_lzcnt_epi32
139   // CHECK: call <8 x i32> @llvm.ctlz.v8i32(<8 x i32> %{{.*}}, i1 false)
140   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
141   return _mm256_maskz_lzcnt_epi32(__U, __A);
142 }
143 
test_mm_lzcnt_epi64(__m128i __A)144 __m128i test_mm_lzcnt_epi64(__m128i __A) {
145   // CHECK-LABEL: @test_mm_lzcnt_epi64
146   // CHECK: call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %{{.*}}, i1 false)
147   return _mm_lzcnt_epi64(__A);
148 }
149 
test_mm_mask_lzcnt_epi64(__m128i __W,__mmask8 __U,__m128i __A)150 __m128i test_mm_mask_lzcnt_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
151   // CHECK-LABEL: @test_mm_mask_lzcnt_epi64
152   // CHECK: call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %{{.*}}, i1 false)
153   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
154   return _mm_mask_lzcnt_epi64(__W, __U, __A);
155 }
156 
test_mm_maskz_lzcnt_epi64(__mmask8 __U,__m128i __A)157 __m128i test_mm_maskz_lzcnt_epi64(__mmask8 __U, __m128i __A) {
158   // CHECK-LABEL: @test_mm_maskz_lzcnt_epi64
159   // CHECK: call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %{{.*}}, i1 false)
160   // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
161   return _mm_maskz_lzcnt_epi64(__U, __A);
162 }
163 
test_mm256_lzcnt_epi64(__m256i __A)164 __m256i test_mm256_lzcnt_epi64(__m256i __A) {
165   // CHECK-LABEL: @test_mm256_lzcnt_epi64
166   // CHECK: call <4 x i64> @llvm.ctlz.v4i64(<4 x i64> %{{.*}}, i1 false)
167   return _mm256_lzcnt_epi64(__A);
168 }
169 
test_mm256_mask_lzcnt_epi64(__m256i __W,__mmask8 __U,__m256i __A)170 __m256i test_mm256_mask_lzcnt_epi64(__m256i __W, __mmask8 __U, __m256i __A) {
171   // CHECK-LABEL: @test_mm256_mask_lzcnt_epi64
172   // CHECK: call <4 x i64> @llvm.ctlz.v4i64(<4 x i64> %{{.*}}, i1 false)
173   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
174   return _mm256_mask_lzcnt_epi64(__W, __U, __A);
175 }
176 
test_mm256_maskz_lzcnt_epi64(__mmask8 __U,__m256i __A)177 __m256i test_mm256_maskz_lzcnt_epi64(__mmask8 __U, __m256i __A) {
178   // CHECK-LABEL: @test_mm256_maskz_lzcnt_epi64
179   // CHECK: call <4 x i64> @llvm.ctlz.v4i64(<4 x i64> %{{.*}}, i1 false)
180   // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
181   return _mm256_maskz_lzcnt_epi64(__U, __A);
182 }
183