brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.5 KiB · 7f196e0 Raw
193 lines · c
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 SSE2// 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,AVX3// 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,AVX5124// 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,AVX512BW5 6#include <immintrin.h>7 8__m128i test_mm_gf2p8affineinv_epi64_epi8(__m128i A, __m128i B) {9  // SSE-LABEL: @test_mm_gf2p8affineinv_epi64_epi810  // SSE: @llvm.x86.vgf2p8affineinvqb.12811  return _mm_gf2p8affineinv_epi64_epi8(A, B, 1);12}13 14__m128i test_mm_gf2p8affine_epi64_epi8(__m128i A, __m128i B) {15  // SSE-LABEL: @test_mm_gf2p8affine_epi64_epi816  // SSE: @llvm.x86.vgf2p8affineqb.12817  return _mm_gf2p8affine_epi64_epi8(A, B, 1);18}19 20__m128i test_mm_gf2p8mul_epi8(__m128i A, __m128i B) {21  // SSE-LABEL: @test_mm_gf2p8mul_epi822  // SSE: @llvm.x86.vgf2p8mulb.12823  return _mm_gf2p8mul_epi8(A, B);24}25 26#ifdef __AVX__27__m256i test_mm256_gf2p8affineinv_epi64_epi8(__m256i A, __m256i B) {28  // AVX-LABEL: @test_mm256_gf2p8affineinv_epi64_epi829  // AVX: @llvm.x86.vgf2p8affineinvqb.25630  return _mm256_gf2p8affineinv_epi64_epi8(A, B, 1);31}32 33__m256i test_mm256_gf2p8affine_epi64_epi8(__m256i A, __m256i B) {34  // AVX-LABEL: @test_mm256_gf2p8affine_epi64_epi835  // AVX: @llvm.x86.vgf2p8affineqb.25636  return _mm256_gf2p8affine_epi64_epi8(A, B, 1);37}38 39__m256i test_mm256_gf2p8mul_epi8(__m256i A, __m256i B) {40  // AVX-LABEL: @test_mm256_gf2p8mul_epi841  // AVX: @llvm.x86.vgf2p8mulb.25642  return _mm256_gf2p8mul_epi8(A, B);43}44#endif // __AVX__45 46#ifdef __AVX512F__47__m512i test_mm512_gf2p8affineinv_epi64_epi8(__m512i A, __m512i B) {48  // AVX512-LABEL: @test_mm512_gf2p8affineinv_epi64_epi849  // AVX512: @llvm.x86.vgf2p8affineinvqb.51250  return _mm512_gf2p8affineinv_epi64_epi8(A, B, 1);51}52 53__m512i test_mm512_gf2p8affine_epi64_epi8(__m512i A, __m512i B) {54  // AVX512-LABEL: @test_mm512_gf2p8affine_epi64_epi855  // AVX512: @llvm.x86.vgf2p8affineqb.51256  return _mm512_gf2p8affine_epi64_epi8(A, B, 1);57}58 59__m512i test_mm512_gf2p8mul_epi8(__m512i A, __m512i B) {60  // AVX512-LABEL: @test_mm512_gf2p8mul_epi861  // AVX512: @llvm.x86.vgf2p8mulb.51262  return _mm512_gf2p8mul_epi8(A, B);63}64#endif // __AVX512F__65 66#ifdef __AVX512BW__67__m512i test_mm512_mask_gf2p8affineinv_epi64_epi8(__m512i S, __mmask64 U, __m512i A, __m512i B) {68  // AVX512BW-LABEL: @test_mm512_mask_gf2p8affineinv_epi64_epi869  // AVX512BW: @llvm.x86.vgf2p8affineinvqb.51270  // 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);72}73 74__m512i test_mm512_maskz_gf2p8affineinv_epi64_epi8(__mmask64 U, __m512i A, __m512i B) {75  // AVX512BW-LABEL: @test_mm512_maskz_gf2p8affineinv_epi64_epi876  // AVX512BW: @llvm.x86.vgf2p8affineinvqb.51277  // 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);79}80 81__m128i test_mm_mask_gf2p8affineinv_epi64_epi8(__m128i S, __mmask16 U, __m128i A, __m128i B) {82  // AVX512BW-LABEL: @test_mm_mask_gf2p8affineinv_epi64_epi883  // AVX512BW: @llvm.x86.vgf2p8affineinvqb.12884  // 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);86}87 88__m128i test_mm_maskz_gf2p8affineinv_epi64_epi8(__mmask16 U, __m128i A, __m128i B) {89  // AVX512BW-LABEL: @test_mm_maskz_gf2p8affineinv_epi64_epi890  // AVX512BW: @llvm.x86.vgf2p8affineinvqb.12891  // 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);93}94 95__m256i test_mm256_mask_gf2p8affineinv_epi64_epi8(__m256i S, __mmask32 U, __m256i A, __m256i B) {96  // AVX512BW-LABEL: @test_mm256_mask_gf2p8affineinv_epi64_epi897  // AVX512BW: @llvm.x86.vgf2p8affineinvqb.25698  // 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);100}101 102__m256i test_mm256_maskz_gf2p8affineinv_epi64_epi8(__mmask32 U, __m256i A, __m256i B) {103  // AVX512BW-LABEL: @test_mm256_maskz_gf2p8affineinv_epi64_epi8104  // AVX512BW: @llvm.x86.vgf2p8affineinvqb.256105  // 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);107}108 109__m512i test_mm512_mask_gf2p8affine_epi64_epi8(__m512i S, __mmask64 U, __m512i A, __m512i B) {110  // AVX512BW-LABEL: @test_mm512_mask_gf2p8affine_epi64_epi8111  // AVX512BW: @llvm.x86.vgf2p8affineqb.512112  // 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);114}115 116__m512i test_mm512_maskz_gf2p8affine_epi64_epi8(__mmask64 U, __m512i A, __m512i B) {117  // AVX512BW-LABEL: @test_mm512_maskz_gf2p8affine_epi64_epi8118  // AVX512BW: @llvm.x86.vgf2p8affineqb.512119  // 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);121}122 123__m128i test_mm_mask_gf2p8affine_epi64_epi8(__m128i S, __mmask16 U, __m128i A, __m128i B) {124  // AVX512BW-LABEL: @test_mm_mask_gf2p8affine_epi64_epi8125  // AVX512BW: @llvm.x86.vgf2p8affineqb.128126  // 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);128}129 130__m128i test_mm_maskz_gf2p8affine_epi64_epi8(__mmask16 U, __m128i A, __m128i B) {131  // AVX512BW-LABEL: @test_mm_maskz_gf2p8affine_epi64_epi8132  // AVX512BW: @llvm.x86.vgf2p8affineqb.128133  // 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);135}136 137__m256i test_mm256_mask_gf2p8affine_epi64_epi8(__m256i S, __mmask32 U, __m256i A, __m256i B) {138  // AVX512BW-LABEL: @test_mm256_mask_gf2p8affine_epi64_epi8139  // AVX512BW: @llvm.x86.vgf2p8affineqb.256140  // 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);142}143 144__m256i test_mm256_maskz_gf2p8affine_epi64_epi8(__mmask32 U, __m256i A, __m256i B) {145  // AVX512BW-LABEL: @test_mm256_maskz_gf2p8affine_epi64_epi8146  // AVX512BW: @llvm.x86.vgf2p8affineqb.256147  // 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);149}150 151__m512i test_mm512_mask_gf2p8mul_epi8(__m512i S, __mmask64 U, __m512i A, __m512i B) {152  // AVX512BW-LABEL: @test_mm512_mask_gf2p8mul_epi8153  // AVX512BW: @llvm.x86.vgf2p8mulb.512154  // 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);156}157 158__m512i test_mm512_maskz_gf2p8mul_epi8(__mmask64 U, __m512i A, __m512i B) {159  // AVX512BW-LABEL: @test_mm512_maskz_gf2p8mul_epi8160  // AVX512BW: @llvm.x86.vgf2p8mulb.512161  // AVX512BW: select <64 x i1> %{{[0-9]+}}, <64 x i8> %{{[0-9]+}}, <64 x i8> {{.*}}162  return _mm512_maskz_gf2p8mul_epi8(U, A, B);163}164 165__m128i test_mm_mask_gf2p8mul_epi8(__m128i S, __mmask16 U, __m128i A, __m128i B) {166  // AVX512BW-LABEL: @test_mm_mask_gf2p8mul_epi8167  // AVX512BW: @llvm.x86.vgf2p8mulb.128168  // 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);170}171 172__m128i test_mm_maskz_gf2p8mul_epi8(__mmask16 U, __m128i A, __m128i B) {173  // AVX512BW-LABEL: @test_mm_maskz_gf2p8mul_epi8174  // AVX512BW: @llvm.x86.vgf2p8mulb.128175  // AVX512BW: select <16 x i1> %{{[0-9]+}}, <16 x i8> %{{[0-9]+}}, <16 x i8> {{.*}}176  return _mm_maskz_gf2p8mul_epi8(U, A, B);177}178 179__m256i test_mm256_mask_gf2p8mul_epi8(__m256i S, __mmask32 U, __m256i A, __m256i B) {180  // AVX512BW-LABEL: @test_mm256_mask_gf2p8mul_epi8181  // AVX512BW: @llvm.x86.vgf2p8mulb.256182  // 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);184}185 186__m256i test_mm256_maskz_gf2p8mul_epi8(__mmask32 U, __m256i A, __m256i B) {187  // AVX512BW-LABEL: @test_mm256_maskz_gf2p8mul_epi8188  // AVX512BW: @llvm.x86.vgf2p8mulb.256189  // AVX512BW: select <32 x i1> %{{[0-9]+}}, <32 x i8> %{{[0-9]+}}, <32 x i8> {{.*}}190  return _mm256_maskz_gf2p8mul_epi8(U, A, B);191}192#endif // __AVX512BW__193