brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.7 KiB · 32f8c0f Raw
175 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx512bf16 --show-mc-encoding | FileCheck %s --check-prefixes=CHECK,X863; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx512bf16 --show-mc-encoding | FileCheck %s --check-prefixes=CHECK,X644 5declare <32 x i16> @llvm.x86.avx512bf16.cvtne2ps2bf16.512(<16 x float>, <16 x float>) #36 7define <8 x i64> @test_mm512_cvtne2ps2bf16_512(<16 x float> %A, <16 x float> %B) local_unnamed_addr #2 {8; CHECK-LABEL: test_mm512_cvtne2ps2bf16_512:9; CHECK:       # %bb.0: # %entry10; CHECK-NEXT:    vcvtne2ps2bf16 %zmm1, %zmm0, %zmm0 # encoding: [0x62,0xf2,0x7f,0x48,0x72,0xc1]11; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]12entry:13  %0 = tail call <32 x i16> @llvm.x86.avx512bf16.cvtne2ps2bf16.512(<16 x float> %A, <16 x float> %B) #414  %1 = bitcast <32 x i16> %0 to <8 x i64>15  ret <8 x i64> %116}17 18define <8 x i64> @test_mm512_maskz_cvtne2ps2bf16_512(<16 x float> %A, <16 x float> %B, i32 %U) local_unnamed_addr #2 {19; X86-LABEL: test_mm512_maskz_cvtne2ps2bf16_512:20; X86:       # %bb.0: # %entry21; X86-NEXT:    vcvtne2ps2bf16 %zmm1, %zmm0, %zmm0 # encoding: [0x62,0xf2,0x7f,0x48,0x72,0xc1]22; X86-NEXT:    kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]23; X86-NEXT:    vmovdqu16 %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf1,0xff,0xc9,0x6f,0xc0]24; X86-NEXT:    retl # encoding: [0xc3]25;26; X64-LABEL: test_mm512_maskz_cvtne2ps2bf16_512:27; X64:       # %bb.0: # %entry28; X64-NEXT:    vcvtne2ps2bf16 %zmm1, %zmm0, %zmm0 # encoding: [0x62,0xf2,0x7f,0x48,0x72,0xc1]29; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]30; X64-NEXT:    vmovdqu16 %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf1,0xff,0xc9,0x6f,0xc0]31; X64-NEXT:    retq # encoding: [0xc3]32entry:33  %0 = tail call <32 x i16> @llvm.x86.avx512bf16.cvtne2ps2bf16.512(<16 x float> %A, <16 x float> %B) #434  %1 = bitcast i32 %U to <32 x i1>35  %2 = select <32 x i1> %1, <32 x i16> %0, <32 x i16> zeroinitializer36  %3 = bitcast <32 x i16> %2 to <8 x i64>37  ret <8 x i64> %338}39 40define <8 x i64> @test_mm512_mask_cvtne2ps2bf16_512(<8 x i64> %C, i32 %U, <16 x float> %A, <16 x float> %B) local_unnamed_addr #2 {41; X86-LABEL: test_mm512_mask_cvtne2ps2bf16_512:42; X86:       # %bb.0: # %entry43; X86-NEXT:    vcvtne2ps2bf16 %zmm2, %zmm1, %zmm1 # encoding: [0x62,0xf2,0x77,0x48,0x72,0xca]44; X86-NEXT:    kmovd {{[0-9]+}}(%esp), %k1 # encoding: [0xc4,0xe1,0xf9,0x90,0x4c,0x24,0x04]45; X86-NEXT:    vmovdqu16 %zmm1, %zmm0 {%k1} # encoding: [0x62,0xf1,0xff,0x49,0x6f,0xc1]46; X86-NEXT:    retl # encoding: [0xc3]47;48; X64-LABEL: test_mm512_mask_cvtne2ps2bf16_512:49; X64:       # %bb.0: # %entry50; X64-NEXT:    vcvtne2ps2bf16 %zmm2, %zmm1, %zmm1 # encoding: [0x62,0xf2,0x77,0x48,0x72,0xca]51; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]52; X64-NEXT:    vmovdqu16 %zmm1, %zmm0 {%k1} # encoding: [0x62,0xf1,0xff,0x49,0x6f,0xc1]53; X64-NEXT:    retq # encoding: [0xc3]54entry:55  %0 = tail call <32 x i16> @llvm.x86.avx512bf16.cvtne2ps2bf16.512(<16 x float> %A, <16 x float> %B) #456  %1 = bitcast <8 x i64> %C to <32 x i16>57  %2 = bitcast i32 %U to <32 x i1>58  %3 = select <32 x i1> %2, <32 x i16> %0, <32 x i16> %159  %4 = bitcast <32 x i16> %3 to <8 x i64>60  ret <8 x i64> %461}62 63declare <16 x i16> @llvm.x86.avx512bf16.cvtneps2bf16.512(<16 x float>) #364 65define <4 x i64> @test_mm512_cvtneps2bf16_512(<16 x float> %A) local_unnamed_addr #2 {66; CHECK-LABEL: test_mm512_cvtneps2bf16_512:67; CHECK:       # %bb.0: # %entry68; CHECK-NEXT:    vcvtneps2bf16 %zmm0, %ymm0 # encoding: [0x62,0xf2,0x7e,0x48,0x72,0xc0]69; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]70entry:71  %0 = tail call <16 x i16> @llvm.x86.avx512bf16.cvtneps2bf16.512(<16 x float> %A) #472  %1 = bitcast <16 x i16> %0 to <4 x i64>73  ret <4 x i64> %174}75 76define <4 x i64> @test_mm512_maskz_cvtneps2bf16_512(<16 x float> %A, i16 %U) local_unnamed_addr #2 {77; X86-LABEL: test_mm512_maskz_cvtneps2bf16_512:78; X86:       # %bb.0: # %entry79; X86-NEXT:    vcvtneps2bf16 %zmm0, %ymm0 # encoding: [0x62,0xf2,0x7e,0x48,0x72,0xc0]80; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]81; X86-NEXT:    vmovdqu16 %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf1,0xff,0xc9,0x6f,0xc0]82; X86-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm083; X86-NEXT:    retl # encoding: [0xc3]84;85; X64-LABEL: test_mm512_maskz_cvtneps2bf16_512:86; X64:       # %bb.0: # %entry87; X64-NEXT:    vcvtneps2bf16 %zmm0, %ymm0 # encoding: [0x62,0xf2,0x7e,0x48,0x72,0xc0]88; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]89; X64-NEXT:    vmovdqu16 %zmm0, %zmm0 {%k1} {z} # encoding: [0x62,0xf1,0xff,0xc9,0x6f,0xc0]90; X64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm091; X64-NEXT:    retq # encoding: [0xc3]92entry:93  %0 = tail call <16 x i16> @llvm.x86.avx512bf16.cvtneps2bf16.512(<16 x float> %A) #494  %1 = bitcast i16 %U to <16 x i1>95  %2 = select <16 x i1> %1, <16 x i16> %0, <16 x i16> zeroinitializer96  %3 = bitcast <16 x i16> %2 to <4 x i64>97  ret <4 x i64> %398}99 100define <4 x i64> @test_mm512_mask_cvtneps2bf16_512(<4 x i64> %C, i16 %U, <16 x float> %A) local_unnamed_addr #2 {101; X86-LABEL: test_mm512_mask_cvtneps2bf16_512:102; X86:       # %bb.0: # %entry103; X86-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0104; X86-NEXT:    vcvtneps2bf16 %zmm1, %ymm1 # encoding: [0x62,0xf2,0x7e,0x48,0x72,0xc9]105; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]106; X86-NEXT:    vmovdqu16 %zmm1, %zmm0 {%k1} # encoding: [0x62,0xf1,0xff,0x49,0x6f,0xc1]107; X86-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0108; X86-NEXT:    retl # encoding: [0xc3]109;110; X64-LABEL: test_mm512_mask_cvtneps2bf16_512:111; X64:       # %bb.0: # %entry112; X64-NEXT:    # kill: def $ymm0 killed $ymm0 def $zmm0113; X64-NEXT:    vcvtneps2bf16 %zmm1, %ymm1 # encoding: [0x62,0xf2,0x7e,0x48,0x72,0xc9]114; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]115; X64-NEXT:    vmovdqu16 %zmm1, %zmm0 {%k1} # encoding: [0x62,0xf1,0xff,0x49,0x6f,0xc1]116; X64-NEXT:    # kill: def $ymm0 killed $ymm0 killed $zmm0117; X64-NEXT:    retq # encoding: [0xc3]118entry:119  %0 = tail call <16 x i16> @llvm.x86.avx512bf16.cvtneps2bf16.512(<16 x float> %A) #4120  %1 = bitcast <4 x i64> %C to <16 x i16>121  %2 = bitcast i16 %U to <16 x i1>122  %3 = select <16 x i1> %2, <16 x i16> %0, <16 x i16> %1123  %4 = bitcast <16 x i16> %3 to <4 x i64>124  ret <4 x i64> %4125}126 127declare <16 x float> @llvm.x86.avx512bf16.dpbf16ps.512(<16 x float>, <16 x i32>, <16 x i32>) #3128 129define <16 x float> @test_mm512_dpbf16ps_512(<16 x float> %E, <16 x i32> %A, <16 x i32> %B) local_unnamed_addr #2 {130; CHECK-LABEL: test_mm512_dpbf16ps_512:131; CHECK:       # %bb.0: # %entry132; CHECK-NEXT:    vdpbf16ps %zmm2, %zmm1, %zmm0 # encoding: [0x62,0xf2,0x76,0x48,0x52,0xc2]133; CHECK-NEXT:    ret{{[l|q]}} # encoding: [0xc3]134entry:135  %0 = tail call <16 x float> @llvm.x86.avx512bf16.dpbf16ps.512(<16 x float> %E, <16 x i32> %A, <16 x i32> %B) #4136  ret <16 x float> %0137}138 139define <16 x float> @test_mm512_maskz_dpbf16ps_512(<16 x float> %E, <16 x i32> %A, <16 x i32> %B, i16 zeroext %U) local_unnamed_addr #2 {140; X86-LABEL: test_mm512_maskz_dpbf16ps_512:141; X86:       # %bb.0: # %entry142; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]143; X86-NEXT:    vdpbf16ps %zmm2, %zmm1, %zmm0 {%k1} {z} # encoding: [0x62,0xf2,0x76,0xc9,0x52,0xc2]144; X86-NEXT:    retl # encoding: [0xc3]145;146; X64-LABEL: test_mm512_maskz_dpbf16ps_512:147; X64:       # %bb.0: # %entry148; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]149; X64-NEXT:    vdpbf16ps %zmm2, %zmm1, %zmm0 {%k1} {z} # encoding: [0x62,0xf2,0x76,0xc9,0x52,0xc2]150; X64-NEXT:    retq # encoding: [0xc3]151entry:152  %0 = tail call <16 x float> @llvm.x86.avx512bf16.dpbf16ps.512(<16 x float> %E, <16 x i32> %A, <16 x i32> %B) #4153  %1 = bitcast i16 %U to <16 x i1>154  %2 = select <16 x i1> %1, <16 x float> %0, <16 x float> zeroinitializer155  ret <16 x float> %2156}157define <16 x float> @test_mm512_mask_dpbf16ps_512(i16 zeroext %U, <16 x float> %E, <16 x i32> %A, <16 x i32> %B) local_unnamed_addr #2 {158; X86-LABEL: test_mm512_mask_dpbf16ps_512:159; X86:       # %bb.0: # %entry160; X86-NEXT:    kmovw {{[0-9]+}}(%esp), %k1 # encoding: [0xc5,0xf8,0x90,0x4c,0x24,0x04]161; X86-NEXT:    vdpbf16ps %zmm2, %zmm1, %zmm0 {%k1} # encoding: [0x62,0xf2,0x76,0x49,0x52,0xc2]162; X86-NEXT:    retl # encoding: [0xc3]163;164; X64-LABEL: test_mm512_mask_dpbf16ps_512:165; X64:       # %bb.0: # %entry166; X64-NEXT:    kmovd %edi, %k1 # encoding: [0xc5,0xfb,0x92,0xcf]167; X64-NEXT:    vdpbf16ps %zmm2, %zmm1, %zmm0 {%k1} # encoding: [0x62,0xf2,0x76,0x49,0x52,0xc2]168; X64-NEXT:    retq # encoding: [0xc3]169entry:170  %0 = tail call <16 x float> @llvm.x86.avx512bf16.dpbf16ps.512(<16 x float> %E, <16 x i32> %A, <16 x i32> %B) #4171  %1 = bitcast i16 %U to <16 x i1>172  %2 = select <16 x i1> %1, <16 x float> %0, <16 x float> %E173  ret <16 x float> %2174}175