1 // RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +gfni -emit-llvm -o - | FileCheck %s --check-prefix SSE
2 // RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +gfni -target-feature +avx -emit-llvm -o - | FileCheck %s --check-prefixes SSE,AVX
3 // RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +gfni -target-feature +avx512f -target-feature +avx512vl -emit-llvm -o - | FileCheck %s --check-prefixes SSE,AVX,AVX512
4 // RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +gfni -target-feature +avx512bw -target-feature +avx512vl -emit-llvm -o - | FileCheck %s --check-prefixes SSE,AVX,AVX512,AVX512BW
8 __m128i
test_mm_gf2p8affineinv_epi64_epi8(__m128i A
, __m128i B
) {
9 // SSE-LABEL: @test_mm_gf2p8affineinv_epi64_epi8
10 // SSE: @llvm.x86.vgf2p8affineinvqb.128
11 return _mm_gf2p8affineinv_epi64_epi8(A
, B
, 1);
14 __m128i
test_mm_gf2p8affine_epi64_epi8(__m128i A
, __m128i B
) {
15 // SSE-LABEL: @test_mm_gf2p8affine_epi64_epi8
16 // SSE: @llvm.x86.vgf2p8affineqb.128
17 return _mm_gf2p8affine_epi64_epi8(A
, B
, 1);
20 __m128i
test_mm_gf2p8mul_epi8(__m128i A
, __m128i B
) {
21 // SSE-LABEL: @test_mm_gf2p8mul_epi8
22 // SSE: @llvm.x86.vgf2p8mulb.128
23 return _mm_gf2p8mul_epi8(A
, B
);
27 __m256i
test_mm256_gf2p8affineinv_epi64_epi8(__m256i A
, __m256i B
) {
28 // AVX-LABEL: @test_mm256_gf2p8affineinv_epi64_epi8
29 // AVX: @llvm.x86.vgf2p8affineinvqb.256
30 return _mm256_gf2p8affineinv_epi64_epi8(A
, B
, 1);
33 __m256i
test_mm256_gf2p8affine_epi64_epi8(__m256i A
, __m256i B
) {
34 // AVX-LABEL: @test_mm256_gf2p8affine_epi64_epi8
35 // AVX: @llvm.x86.vgf2p8affineqb.256
36 return _mm256_gf2p8affine_epi64_epi8(A
, B
, 1);
39 __m256i
test_mm256_gf2p8mul_epi8(__m256i A
, __m256i B
) {
40 // AVX-LABEL: @test_mm256_gf2p8mul_epi8
41 // AVX: @llvm.x86.vgf2p8mulb.256
42 return _mm256_gf2p8mul_epi8(A
, B
);
47 __m512i
test_mm512_gf2p8affineinv_epi64_epi8(__m512i A
, __m512i B
) {
48 // AVX512-LABEL: @test_mm512_gf2p8affineinv_epi64_epi8
49 // AVX512: @llvm.x86.vgf2p8affineinvqb.512
50 return _mm512_gf2p8affineinv_epi64_epi8(A
, B
, 1);
53 __m512i
test_mm512_gf2p8affine_epi64_epi8(__m512i A
, __m512i B
) {
54 // AVX512-LABEL: @test_mm512_gf2p8affine_epi64_epi8
55 // AVX512: @llvm.x86.vgf2p8affineqb.512
56 return _mm512_gf2p8affine_epi64_epi8(A
, B
, 1);
59 __m512i
test_mm512_gf2p8mul_epi8(__m512i A
, __m512i B
) {
60 // AVX512-LABEL: @test_mm512_gf2p8mul_epi8
61 // AVX512: @llvm.x86.vgf2p8mulb.512
62 return _mm512_gf2p8mul_epi8(A
, B
);
67 __m512i
test_mm512_mask_gf2p8affineinv_epi64_epi8(__m512i S
, __mmask64 U
, __m512i A
, __m512i B
) {
68 // AVX512BW-LABEL: @test_mm512_mask_gf2p8affineinv_epi64_epi8
69 // AVX512BW: @llvm.x86.vgf2p8affineinvqb.512
70 // AVX512BW: select <64 x i1> %{{[0-9]+}}, <64 x i8> %{{[0-9]+}}, <64 x i8> {{.*}}
71 return _mm512_mask_gf2p8affineinv_epi64_epi8(S
, U
, A
, B
, 1);
74 __m512i
test_mm512_maskz_gf2p8affineinv_epi64_epi8(__mmask64 U
, __m512i A
, __m512i B
) {
75 // AVX512BW-LABEL: @test_mm512_maskz_gf2p8affineinv_epi64_epi8
76 // AVX512BW: @llvm.x86.vgf2p8affineinvqb.512
77 // AVX512BW: select <64 x i1> %{{[0-9]+}}, <64 x i8> %{{[0-9]+}}, <64 x i8> {{.*}}
78 return _mm512_maskz_gf2p8affineinv_epi64_epi8(U
, A
, B
, 1);
81 __m128i
test_mm_mask_gf2p8affineinv_epi64_epi8(__m128i S
, __mmask16 U
, __m128i A
, __m128i B
) {
82 // AVX512BW-LABEL: @test_mm_mask_gf2p8affineinv_epi64_epi8
83 // AVX512BW: @llvm.x86.vgf2p8affineinvqb.128
84 // AVX512BW: select <16 x i1> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i8> {{.*}}
85 return _mm_mask_gf2p8affineinv_epi64_epi8(S
, U
, A
, B
, 1);
88 __m128i
test_mm_maskz_gf2p8affineinv_epi64_epi8(__mmask16 U
, __m128i A
, __m128i B
) {
89 // AVX512BW-LABEL: @test_mm_maskz_gf2p8affineinv_epi64_epi8
90 // AVX512BW: @llvm.x86.vgf2p8affineinvqb.128
91 // AVX512BW: select <16 x i1> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i8> {{.*}}
92 return _mm_maskz_gf2p8affineinv_epi64_epi8(U
, A
, B
, 1);
95 __m256i
test_mm256_mask_gf2p8affineinv_epi64_epi8(__m256i S
, __mmask32 U
, __m256i A
, __m256i B
) {
96 // AVX512BW-LABEL: @test_mm256_mask_gf2p8affineinv_epi64_epi8
97 // AVX512BW: @llvm.x86.vgf2p8affineinvqb.256
98 // AVX512BW: select <32 x i1> %{{[0-9]+}}, <32 x i8> %{{[0-9]+}}, <32 x i8> {{.*}}
99 return _mm256_mask_gf2p8affineinv_epi64_epi8(S
, U
, A
, B
, 1);
102 __m256i
test_mm256_maskz_gf2p8affineinv_epi64_epi8(__mmask32 U
, __m256i A
, __m256i B
) {
103 // AVX512BW-LABEL: @test_mm256_maskz_gf2p8affineinv_epi64_epi8
104 // AVX512BW: @llvm.x86.vgf2p8affineinvqb.256
105 // AVX512BW: select <32 x i1> %{{[0-9]+}}, <32 x i8> %{{[0-9]+}}, <32 x i8> {{.*}}
106 return _mm256_maskz_gf2p8affineinv_epi64_epi8(U
, A
, B
, 1);
109 __m512i
test_mm512_mask_gf2p8affine_epi64_epi8(__m512i S
, __mmask64 U
, __m512i A
, __m512i B
) {
110 // AVX512BW-LABEL: @test_mm512_mask_gf2p8affine_epi64_epi8
111 // AVX512BW: @llvm.x86.vgf2p8affineqb.512
112 // AVX512BW: select <64 x i1> %{{[0-9]+}}, <64 x i8> %{{[0-9]+}}, <64 x i8> {{.*}}
113 return _mm512_mask_gf2p8affine_epi64_epi8(S
, U
, A
, B
, 1);
116 __m512i
test_mm512_maskz_gf2p8affine_epi64_epi8(__mmask64 U
, __m512i A
, __m512i B
) {
117 // AVX512BW-LABEL: @test_mm512_maskz_gf2p8affine_epi64_epi8
118 // AVX512BW: @llvm.x86.vgf2p8affineqb.512
119 // AVX512BW: select <64 x i1> %{{[0-9]+}}, <64 x i8> %{{[0-9]+}}, <64 x i8> {{.*}}
120 return _mm512_maskz_gf2p8affine_epi64_epi8(U
, A
, B
, 1);
123 __m128i
test_mm_mask_gf2p8affine_epi64_epi8(__m128i S
, __mmask16 U
, __m128i A
, __m128i B
) {
124 // AVX512BW-LABEL: @test_mm_mask_gf2p8affine_epi64_epi8
125 // AVX512BW: @llvm.x86.vgf2p8affineqb.128
126 // AVX512BW: select <16 x i1> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i8> {{.*}}
127 return _mm_mask_gf2p8affine_epi64_epi8(S
, U
, A
, B
, 1);
130 __m128i
test_mm_maskz_gf2p8affine_epi64_epi8(__mmask16 U
, __m128i A
, __m128i B
) {
131 // AVX512BW-LABEL: @test_mm_maskz_gf2p8affine_epi64_epi8
132 // AVX512BW: @llvm.x86.vgf2p8affineqb.128
133 // AVX512BW: select <16 x i1> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i8> {{.*}}
134 return _mm_maskz_gf2p8affine_epi64_epi8(U
, A
, B
, 1);
137 __m256i
test_mm256_mask_gf2p8affine_epi64_epi8(__m256i S
, __mmask32 U
, __m256i A
, __m256i B
) {
138 // AVX512BW-LABEL: @test_mm256_mask_gf2p8affine_epi64_epi8
139 // AVX512BW: @llvm.x86.vgf2p8affineqb.256
140 // AVX512BW: select <32 x i1> %{{[0-9]+}}, <32 x i8> %{{[0-9]+}}, <32 x i8> {{.*}}
141 return _mm256_mask_gf2p8affine_epi64_epi8(S
, U
, A
, B
, 1);
144 __m256i
test_mm256_maskz_gf2p8affine_epi64_epi8(__mmask32 U
, __m256i A
, __m256i B
) {
145 // AVX512BW-LABEL: @test_mm256_maskz_gf2p8affine_epi64_epi8
146 // AVX512BW: @llvm.x86.vgf2p8affineqb.256
147 // AVX512BW: select <32 x i1> %{{[0-9]+}}, <32 x i8> %{{[0-9]+}}, <32 x i8> {{.*}}
148 return _mm256_maskz_gf2p8affine_epi64_epi8(U
, A
, B
, 1);
151 __m512i
test_mm512_mask_gf2p8mul_epi8(__m512i S
, __mmask64 U
, __m512i A
, __m512i B
) {
152 // AVX512BW-LABEL: @test_mm512_mask_gf2p8mul_epi8
153 // AVX512BW: @llvm.x86.vgf2p8mulb.512
154 // AVX512BW: select <64 x i1> %{{[0-9]+}}, <64 x i8> %{{[0-9]+}}, <64 x i8> {{.*}}
155 return _mm512_mask_gf2p8mul_epi8(S
, U
, A
, B
);
158 __m512i
test_mm512_maskz_gf2p8mul_epi8(__mmask64 U
, __m512i A
, __m512i B
) {
159 // AVX512BW-LABEL: @test_mm512_maskz_gf2p8mul_epi8
160 // AVX512BW: @llvm.x86.vgf2p8mulb.512
161 // AVX512BW: select <64 x i1> %{{[0-9]+}}, <64 x i8> %{{[0-9]+}}, <64 x i8> {{.*}}
162 return _mm512_maskz_gf2p8mul_epi8(U
, A
, B
);
165 __m128i
test_mm_mask_gf2p8mul_epi8(__m128i S
, __mmask16 U
, __m128i A
, __m128i B
) {
166 // AVX512BW-LABEL: @test_mm_mask_gf2p8mul_epi8
167 // AVX512BW: @llvm.x86.vgf2p8mulb.128
168 // AVX512BW: select <16 x i1> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i8> {{.*}}
169 return _mm_mask_gf2p8mul_epi8(S
, U
, A
, B
);
172 __m128i
test_mm_maskz_gf2p8mul_epi8(__mmask16 U
, __m128i A
, __m128i B
) {
173 // AVX512BW-LABEL: @test_mm_maskz_gf2p8mul_epi8
174 // AVX512BW: @llvm.x86.vgf2p8mulb.128
175 // AVX512BW: select <16 x i1> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i8> {{.*}}
176 return _mm_maskz_gf2p8mul_epi8(U
, A
, B
);
179 __m256i
test_mm256_mask_gf2p8mul_epi8(__m256i S
, __mmask32 U
, __m256i A
, __m256i B
) {
180 // AVX512BW-LABEL: @test_mm256_mask_gf2p8mul_epi8
181 // AVX512BW: @llvm.x86.vgf2p8mulb.256
182 // AVX512BW: select <32 x i1> %{{[0-9]+}}, <32 x i8> %{{[0-9]+}}, <32 x i8> {{.*}}
183 return _mm256_mask_gf2p8mul_epi8(S
, U
, A
, B
);
186 __m256i
test_mm256_maskz_gf2p8mul_epi8(__mmask32 U
, __m256i A
, __m256i B
) {
187 // AVX512BW-LABEL: @test_mm256_maskz_gf2p8mul_epi8
188 // AVX512BW: @llvm.x86.vgf2p8mulb.256
189 // AVX512BW: select <32 x i1> %{{[0-9]+}}, <32 x i8> %{{[0-9]+}}, <32 x i8> {{.*}}
190 return _mm256_maskz_gf2p8mul_epi8(U
, A
, B
);
192 #endif // __AVX512BW__