brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.8 KiB · b105cdf Raw
102 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-- -mattr=+gfni | FileCheck %s --check-prefixes=SSE3; RUN: llc < %s -mtriple=x86_64-- -mattr=+gfni,+avx | FileCheck %s --check-prefixes=AVX4; RUN: llc < %s -mtriple=x86_64-- -mattr=+avx512vl,+gfni,+avx512bw | FileCheck %s --check-prefixes=AVX5125 6define <16 x i8> @gf2p8affineqb_freeze(<16 x i8> %a0, <16 x i8> %a1, <16 x i8> %a2) {7; SSE-LABEL: gf2p8affineqb_freeze:8; SSE:       # %bb.0:9; SSE-NEXT:    pxor %xmm3, %xmm310; SSE-NEXT:    pcmpgtb %xmm2, %xmm311; SSE-NEXT:    gf2p8affineqb $11, %xmm1, %xmm112; SSE-NEXT:    pand %xmm3, %xmm113; SSE-NEXT:    pandn %xmm0, %xmm314; SSE-NEXT:    por %xmm1, %xmm315; SSE-NEXT:    movdqa %xmm3, %xmm016; SSE-NEXT:    retq17;18; AVX-LABEL: gf2p8affineqb_freeze:19; AVX:       # %bb.0:20; AVX-NEXT:    vgf2p8affineqb $11, %xmm1, %xmm1, %xmm121; AVX-NEXT:    vpblendvb %xmm2, %xmm1, %xmm0, %xmm022; AVX-NEXT:    retq23;24; AVX512-LABEL: gf2p8affineqb_freeze:25; AVX512:       # %bb.0:26; AVX512-NEXT:    vpmovb2m %xmm2, %k127; AVX512-NEXT:    vgf2p8affineqb $11, %xmm1, %xmm1, %xmm0 {%k1}28; AVX512-NEXT:    retq29  %i = icmp slt <16 x i8> %a2, zeroinitializer30  %g = call <16 x i8> @llvm.x86.vgf2p8affineqb.128(<16 x i8> %a1, <16 x i8> %a1, i8 11)31  %f = freeze <16 x i8> %g32  %r = select <16 x i1> %i, <16 x i8> %f, <16 x i8> %a033  ret <16 x i8> %r34}35 36define <16 x i8> @gf2p8affineinvqb_freeze(<16 x i8> %a0, <16 x i8> %a1, <16 x i8> %a2) {37; SSE-LABEL: gf2p8affineinvqb_freeze:38; SSE:       # %bb.0:39; SSE-NEXT:    pxor %xmm3, %xmm340; SSE-NEXT:    pcmpgtb %xmm2, %xmm341; SSE-NEXT:    gf2p8affineinvqb $11, %xmm1, %xmm142; SSE-NEXT:    pand %xmm3, %xmm143; SSE-NEXT:    pandn %xmm0, %xmm344; SSE-NEXT:    por %xmm1, %xmm345; SSE-NEXT:    movdqa %xmm3, %xmm046; SSE-NEXT:    retq47;48; AVX-LABEL: gf2p8affineinvqb_freeze:49; AVX:       # %bb.0:50; AVX-NEXT:    vgf2p8affineinvqb $11, %xmm1, %xmm1, %xmm151; AVX-NEXT:    vpblendvb %xmm2, %xmm1, %xmm0, %xmm052; AVX-NEXT:    retq53;54; AVX512-LABEL: gf2p8affineinvqb_freeze:55; AVX512:       # %bb.0:56; AVX512-NEXT:    vpmovb2m %xmm2, %k157; AVX512-NEXT:    vgf2p8affineinvqb $11, %xmm1, %xmm1, %xmm0 {%k1}58; AVX512-NEXT:    retq59  %i = icmp slt <16 x i8> %a2, zeroinitializer60  %g = call <16 x i8> @llvm.x86.vgf2p8affineinvqb.128(<16 x i8> %a1, <16 x i8> %a1, i8 11)61  %f = freeze <16 x i8> %g62  %r = select <16 x i1> %i, <16 x i8> %f, <16 x i8> %a063  ret <16 x i8> %r64}65 66define <16 x i8> @gf2p8mulb_freeze(<16 x i8> %a0, <16 x i8> %a1, <16 x i8> %a2) {67; SSE-LABEL: gf2p8mulb_freeze:68; SSE:       # %bb.0:69; SSE-NEXT:    pxor %xmm3, %xmm370; SSE-NEXT:    pcmpgtb %xmm2, %xmm371; SSE-NEXT:    gf2p8mulb %xmm1, %xmm172; SSE-NEXT:    pand %xmm3, %xmm173; SSE-NEXT:    pandn %xmm0, %xmm374; SSE-NEXT:    por %xmm1, %xmm375; SSE-NEXT:    movdqa %xmm3, %xmm076; SSE-NEXT:    retq77;78; AVX-LABEL: gf2p8mulb_freeze:79; AVX:       # %bb.0:80; AVX-NEXT:    vgf2p8mulb %xmm1, %xmm1, %xmm181; AVX-NEXT:    vpblendvb %xmm2, %xmm1, %xmm0, %xmm082; AVX-NEXT:    retq83;84; AVX512-LABEL: gf2p8mulb_freeze:85; AVX512:       # %bb.0:86; AVX512-NEXT:    vpmovb2m %xmm2, %k187; AVX512-NEXT:    vgf2p8mulb %xmm1, %xmm1, %xmm0 {%k1}88; AVX512-NEXT:    retq89  %i = icmp slt <16 x i8> %a2, zeroinitializer90  %g = call <16 x i8> @llvm.x86.vgf2p8mulb.128(<16 x i8> %a1, <16 x i8> %a1)91  %f = freeze <16 x i8> %g92  %r = select <16 x i1> %i, <16 x i8> %f, <16 x i8> %a093  ret <16 x i8> %r94}95 96declare <16 x i8> @llvm.x86.vgf2p8affineqb.128(<16 x i8>, <16 x i8>, i8)97declare <32 x i8> @llvm.x86.vgf2p8affineqb.256(<32 x i8>, <32 x i8>, i8)98declare <16 x i8> @llvm.x86.vgf2p8affineinvqb.128(<16 x i8>, <16 x i8>, i8)99declare <32 x i8> @llvm.x86.vgf2p8affineinvqb.256(<32 x i8>, <32 x i8>, i8)100declare <16 x i8> @llvm.x86.vgf2p8mulb.128(<16 x i8>, <16 x i8>)101declare <32 x i8> @llvm.x86.vgf2p8mulb.256(<32 x i8>, <32 x i8>)102