blob: 9945d7bf6df75d3c1c98cc5b55fdf30540629546 [file] [log] [blame]
Eric Christopherabb2b542016-08-04 06:02:50 +00001// RUN: %clang_cc1 %s -triple=x86_64-apple-darwin -target-feature +avx512vl -target-feature +avx512cd -emit-llvm -o - -Wall -Werror | FileCheck %s
Michael Zuckerman8c2900f2016-04-27 11:43:14 +00002
3// Don't include mm_malloc.h, it's system specific.
4#define __MM_MALLOC_H
5
6#include <immintrin.h>
7
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
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
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
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}
Michael Zuckerman514f0552016-04-27 15:35:13 +000031
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
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
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
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
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
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
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
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
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
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
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
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}
Craig Topper879b0972016-06-21 06:53:58 +0000103
104__m128i test_mm_lzcnt_epi32(__m128i __A) {
105 // CHECK-LABEL: @test_mm_lzcnt_epi32
Craig Topper46e75552016-07-06 04:24:29 +0000106 // CHECK: call <4 x i32> @llvm.ctlz.v4i32(<4 x i32> %{{.*}}, i1 false)
Craig Topper879b0972016-06-21 06:53:58 +0000107 return _mm_lzcnt_epi32(__A);
108}
109
110__m128i test_mm_mask_lzcnt_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
111 // CHECK-LABEL: @test_mm_mask_lzcnt_epi32
Craig Topper46e75552016-07-06 04:24:29 +0000112 // 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> %{{.*}}
Craig Topper879b0972016-06-21 06:53:58 +0000114 return _mm_mask_lzcnt_epi32(__W, __U, __A);
115}
116
117__m128i test_mm_maskz_lzcnt_epi32(__mmask8 __U, __m128i __A) {
118 // CHECK-LABEL: @test_mm_maskz_lzcnt_epi32
Craig Topper46e75552016-07-06 04:24:29 +0000119 // 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> %{{.*}}
Craig Topper879b0972016-06-21 06:53:58 +0000121 return _mm_maskz_lzcnt_epi32(__U, __A);
122}
123
124__m256i test_mm256_lzcnt_epi32(__m256i __A) {
125 // CHECK-LABEL: @test_mm256_lzcnt_epi32
Craig Topper46e75552016-07-06 04:24:29 +0000126 // CHECK: call <8 x i32> @llvm.ctlz.v8i32(<8 x i32> %{{.*}}, i1 false)
Craig Topper879b0972016-06-21 06:53:58 +0000127 return _mm256_lzcnt_epi32(__A);
128}
129
130__m256i test_mm256_mask_lzcnt_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
131 // CHECK-LABEL: @test_mm256_mask_lzcnt_epi32
Craig Topper46e75552016-07-06 04:24:29 +0000132 // 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> %{{.*}}
Craig Topper879b0972016-06-21 06:53:58 +0000134 return _mm256_mask_lzcnt_epi32(__W, __U, __A);
135}
136
137__m256i test_mm256_maskz_lzcnt_epi32(__mmask8 __U, __m256i __A) {
138 // CHECK-LABEL: @test_mm256_maskz_lzcnt_epi32
Craig Topper46e75552016-07-06 04:24:29 +0000139 // 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> %{{.*}}
Craig Topper879b0972016-06-21 06:53:58 +0000141 return _mm256_maskz_lzcnt_epi32(__U, __A);
142}
143
144__m128i test_mm_lzcnt_epi64(__m128i __A) {
145 // CHECK-LABEL: @test_mm_lzcnt_epi64
Craig Topper46e75552016-07-06 04:24:29 +0000146 // CHECK: call <2 x i64> @llvm.ctlz.v2i64(<2 x i64> %{{.*}}, i1 false)
Craig Topper879b0972016-06-21 06:53:58 +0000147 return _mm_lzcnt_epi64(__A);
148}
149
150__m128i test_mm_mask_lzcnt_epi64(__m128i __W, __mmask8 __U, __m128i __A) {
151 // CHECK-LABEL: @test_mm_mask_lzcnt_epi64
Craig Topper46e75552016-07-06 04:24:29 +0000152 // 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> %{{.*}}
Craig Topper879b0972016-06-21 06:53:58 +0000154 return _mm_mask_lzcnt_epi64(__W, __U, __A);
155}
156
157__m128i test_mm_maskz_lzcnt_epi64(__mmask8 __U, __m128i __A) {
158 // CHECK-LABEL: @test_mm_maskz_lzcnt_epi64
Craig Topper46e75552016-07-06 04:24:29 +0000159 // 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> %{{.*}}
Craig Topper879b0972016-06-21 06:53:58 +0000161 return _mm_maskz_lzcnt_epi64(__U, __A);
162}
163
164__m256i test_mm256_lzcnt_epi64(__m256i __A) {
165 // CHECK-LABEL: @test_mm256_lzcnt_epi64
Craig Topper46e75552016-07-06 04:24:29 +0000166 // CHECK: call <4 x i64> @llvm.ctlz.v4i64(<4 x i64> %{{.*}}, i1 false)
Craig Topper879b0972016-06-21 06:53:58 +0000167 return _mm256_lzcnt_epi64(__A);
168}
169
170__m256i test_mm256_mask_lzcnt_epi64(__m256i __W, __mmask8 __U, __m256i __A) {
171 // CHECK-LABEL: @test_mm256_mask_lzcnt_epi64
Craig Topper46e75552016-07-06 04:24:29 +0000172 // 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> %{{.*}}
Craig Topper879b0972016-06-21 06:53:58 +0000174 return _mm256_mask_lzcnt_epi64(__W, __U, __A);
175}
176
177__m256i test_mm256_maskz_lzcnt_epi64(__mmask8 __U, __m256i __A) {
178 // CHECK-LABEL: @test_mm256_maskz_lzcnt_epi64
Craig Topper46e75552016-07-06 04:24:29 +0000179 // 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> %{{.*}}
Craig Topper879b0972016-06-21 06:53:58 +0000181 return _mm256_maskz_lzcnt_epi64(__U, __A);
182}