Clang Project

clang_source_code/test/CodeGen/avx512vlvnni-builtins.c
1//  RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512vnni -target-feature +avx512vl -emit-llvm -o - -Wall -Werror | FileCheck %s
2
3#include <immintrin.h>
4
5__m256i test_mm256_mask_dpbusd_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B) {
6  // CHECK-LABEL: @test_mm256_mask_dpbusd_epi32
7  // CHECK: @llvm.x86.avx512.vpdpbusd.256
8  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
9  return _mm256_mask_dpbusd_epi32(__S, __U, __A, __B);
10}
11
12__m256i test_mm256_maskz_dpbusd_epi32(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B) {
13  // CHECK-LABEL: @test_mm256_maskz_dpbusd_epi32
14  // CHECK: @llvm.x86.avx512.vpdpbusd.256
15  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
16  return _mm256_maskz_dpbusd_epi32(__U, __S, __A, __B);
17}
18
19__m256i test_mm256_dpbusd_epi32(__m256i __S, __m256i __A, __m256i __B) {
20  // CHECK-LABEL: @test_mm256_dpbusd_epi32
21  // CHECK: @llvm.x86.avx512.vpdpbusd.256
22  return _mm256_dpbusd_epi32(__S, __A, __B);
23}
24
25__m256i test_mm256_mask_dpbusds_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B) {
26  // CHECK-LABEL: @test_mm256_mask_dpbusds_epi32
27  // CHECK: @llvm.x86.avx512.vpdpbusds.256
28  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
29  return _mm256_mask_dpbusds_epi32(__S, __U, __A, __B);
30}
31
32__m256i test_mm256_maskz_dpbusds_epi32(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B) {
33  // CHECK-LABEL: @test_mm256_maskz_dpbusds_epi32
34  // CHECK: @llvm.x86.avx512.vpdpbusds.256
35  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
36  return _mm256_maskz_dpbusds_epi32(__U, __S, __A, __B);
37}
38
39__m256i test_mm256_dpbusds_epi32(__m256i __S, __m256i __A, __m256i __B) {
40  // CHECK-LABEL: @test_mm256_dpbusds_epi32
41  // CHECK: @llvm.x86.avx512.vpdpbusds.256
42  return _mm256_dpbusds_epi32(__S, __A, __B);
43}
44
45__m256i test_mm256_mask_dpwssd_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B) {
46  // CHECK-LABEL: @test_mm256_mask_dpwssd_epi32
47  // CHECK: @llvm.x86.avx512.vpdpwssd.256
48  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
49  return _mm256_mask_dpwssd_epi32(__S, __U, __A, __B);
50}
51
52__m256i test_mm256_maskz_dpwssd_epi32(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B) {
53  // CHECK-LABEL: @test_mm256_maskz_dpwssd_epi32
54  // CHECK: @llvm.x86.avx512.vpdpwssd.256
55  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
56  return _mm256_maskz_dpwssd_epi32(__U, __S, __A, __B);
57}
58
59__m256i test_mm256_dpwssd_epi32(__m256i __S, __m256i __A, __m256i __B) {
60  // CHECK-LABEL: @test_mm256_dpwssd_epi32
61  // CHECK: @llvm.x86.avx512.vpdpwssd.256
62  return _mm256_dpwssd_epi32(__S, __A, __B);
63}
64
65__m256i test_mm256_mask_dpwssds_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B) {
66  // CHECK-LABEL: @test_mm256_mask_dpwssds_epi32
67  // CHECK: @llvm.x86.avx512.vpdpwssds.256
68  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
69  return _mm256_mask_dpwssds_epi32(__S, __U, __A, __B);
70}
71
72__m256i test_mm256_maskz_dpwssds_epi32(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B) {
73  // CHECK-LABEL: @test_mm256_maskz_dpwssds_epi32
74  // CHECK: @llvm.x86.avx512.vpdpwssds.256
75  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
76  return _mm256_maskz_dpwssds_epi32(__U, __S, __A, __B);
77}
78
79__m256i test_mm256_dpwssds_epi32(__m256i __S, __m256i __A, __m256i __B) {
80  // CHECK-LABEL: @test_mm256_dpwssds_epi32
81  // CHECK: @llvm.x86.avx512.vpdpwssds.256
82  return _mm256_dpwssds_epi32(__S, __A, __B);
83}
84
85__m128i test_mm_mask_dpbusd_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B) {
86  // CHECK-LABEL: @test_mm_mask_dpbusd_epi32
87  // CHECK: @llvm.x86.avx512.vpdpbusd.128
88  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
89  return _mm_mask_dpbusd_epi32(__S, __U, __A, __B);
90}
91
92__m128i test_mm_maskz_dpbusd_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B) {
93  // CHECK-LABEL: @test_mm_maskz_dpbusd_epi32
94  // CHECK: @llvm.x86.avx512.vpdpbusd.128
95  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
96  return _mm_maskz_dpbusd_epi32(__U, __S, __A, __B);
97}
98
99__m128i test_mm_dpbusd_epi32(__m128i __S, __m128i __A, __m128i __B) {
100  // CHECK-LABEL: @test_mm_dpbusd_epi32
101  // CHECK: @llvm.x86.avx512.vpdpbusd.128
102  return _mm_dpbusd_epi32(__S, __A, __B);
103}
104
105__m128i test_mm_mask_dpbusds_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B) {
106  // CHECK-LABEL: @test_mm_mask_dpbusds_epi32
107  // CHECK: @llvm.x86.avx512.vpdpbusds.128
108  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
109  return _mm_mask_dpbusds_epi32(__S, __U, __A, __B);
110}
111
112__m128i test_mm_maskz_dpbusds_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B) {
113  // CHECK-LABEL: @test_mm_maskz_dpbusds_epi32
114  // CHECK: @llvm.x86.avx512.vpdpbusds.128
115  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
116  return _mm_maskz_dpbusds_epi32(__U, __S, __A, __B);
117}
118
119__m128i test_mm_dpbusds_epi32(__m128i __S, __m128i __A, __m128i __B) {
120  // CHECK-LABEL: @test_mm_dpbusds_epi32
121  // CHECK: @llvm.x86.avx512.vpdpbusds.128
122  return _mm_dpbusds_epi32(__S, __A, __B);
123}
124
125__m128i test_mm_mask_dpwssd_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B) {
126  // CHECK-LABEL: @test_mm_mask_dpwssd_epi32
127  // CHECK: @llvm.x86.avx512.vpdpwssd.128
128  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
129  return _mm_mask_dpwssd_epi32(__S, __U, __A, __B);
130}
131
132__m128i test_mm_maskz_dpwssd_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B) {
133  // CHECK-LABEL: @test_mm_maskz_dpwssd_epi32
134  // CHECK: @llvm.x86.avx512.vpdpwssd.128
135  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
136  return _mm_maskz_dpwssd_epi32(__U, __S, __A, __B);
137}
138
139__m128i test_mm_dpwssd_epi32(__m128i __S, __m128i __A, __m128i __B) {
140  // CHECK-LABEL: @test_mm_dpwssd_epi32
141  // CHECK: @llvm.x86.avx512.vpdpwssd.128
142  return _mm_dpwssd_epi32(__S, __A, __B);
143}
144
145__m128i test_mm_mask_dpwssds_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B) {
146  // CHECK-LABEL: @test_mm_mask_dpwssds_epi32
147  // CHECK: @llvm.x86.avx512.vpdpwssds.128
148  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
149  return _mm_mask_dpwssds_epi32(__S, __U, __A, __B);
150}
151
152__m128i test_mm_maskz_dpwssds_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B) {
153  // CHECK-LABEL: @test_mm_maskz_dpwssds_epi32
154  // CHECK: @llvm.x86.avx512.vpdpwssds.128
155  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
156  return _mm_maskz_dpwssds_epi32(__U, __S, __A, __B);
157}
158
159__m128i test_mm_dpwssds_epi32(__m128i __S, __m128i __A, __m128i __B) {
160  // CHECK-LABEL: @test_mm_dpwssds_epi32
161  // CHECK: @llvm.x86.avx512.vpdpwssds.128
162  return _mm_dpwssds_epi32(__S, __A, __B);
163}
164
165