brintos

brintos / llvm-project-archived public Read only

0
0
Text · 29.1 KiB · 349f70e Raw
502 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -O3 -disable-peephole -mtriple=x86_64-unknown-unknown -mattr=+avx512bf16,+avx512vl < %s | FileCheck %s3 4target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"5target triple = "x86_64-unknown-unknown"6 7; Stack reload folding tests.8;9; By including a nop call with sideeffects we can force a partial register spill of the10; relevant registers and check that the reload is correctly folded into the instruction.11 12define <32 x bfloat> @stack_fold_cvtne2ps2bf16(<16 x float> %a0, <16 x float> %a1) {13; CHECK-LABEL: stack_fold_cvtne2ps2bf16:14; CHECK:       # %bb.0:15; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill16; CHECK-NEXT:    #APP17; CHECK-NEXT:    nop18; CHECK-NEXT:    #NO_APP19; CHECK-NEXT:    vcvtne2ps2bf16 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 # 64-byte Folded Reload20; CHECK-NEXT:    retq21  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()22  %2 = call <32 x bfloat> @llvm.x86.avx512bf16.cvtne2ps2bf16.512(<16 x float> %a0, <16 x float> %a1)23  ret <32 x bfloat> %224}25declare <32 x bfloat> @llvm.x86.avx512bf16.cvtne2ps2bf16.512(<16 x float>, <16 x float>)26 27define <32 x bfloat> @stack_fold_cvtne2ps2bf16_mask(<16 x float> %a0, <16 x float> %a1, ptr %passthru, i32 %U) {28; CHECK-LABEL: stack_fold_cvtne2ps2bf16_mask:29; CHECK:       # %bb.0:30; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill31; CHECK-NEXT:    #APP32; CHECK-NEXT:    nop33; CHECK-NEXT:    #NO_APP34; CHECK-NEXT:    kmovd %esi, %k135; CHECK-NEXT:    vmovaps (%rdi), %zmm236; CHECK-NEXT:    vcvtne2ps2bf16 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload37; CHECK-NEXT:    vmovaps %zmm2, %zmm038; CHECK-NEXT:    retq39  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()40  %2 = call <32 x bfloat> @llvm.x86.avx512bf16.cvtne2ps2bf16.512(<16 x float> %a0, <16 x float> %a1)41  %3 = bitcast i32 %U to <32 x i1>42  ; load needed to keep the operation from being scheduled above the asm block43  %4 = load <32 x bfloat>, ptr %passthru44  %5 = select <32 x i1> %3, <32 x bfloat> %2, <32 x bfloat> %445  ret <32 x bfloat> %546}47 48define <32 x bfloat> @stack_fold_cvtne2ps2bf16_maskz(<16 x float> %a0, <16 x float> %a1, i32 %U) {49; CHECK-LABEL: stack_fold_cvtne2ps2bf16_maskz:50; CHECK:       # %bb.0:51; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill52; CHECK-NEXT:    #APP53; CHECK-NEXT:    nop54; CHECK-NEXT:    #NO_APP55; CHECK-NEXT:    kmovd %edi, %k156; CHECK-NEXT:    vcvtne2ps2bf16 {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm0 {%k1} {z} # 64-byte Folded Reload57; CHECK-NEXT:    retq58  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()59  %2 = call <32 x bfloat> @llvm.x86.avx512bf16.cvtne2ps2bf16.512(<16 x float> %a0, <16 x float> %a1)60  %3 = bitcast i32 %U to <32 x i1>61  %4 = select <32 x i1> %3, <32 x bfloat> %2, <32 x bfloat> zeroinitializer62  ret <32 x bfloat> %463}64 65define <16 x bfloat> @stack_fold_cvtneps2bf16(<16 x float> %a0) {66; CHECK-LABEL: stack_fold_cvtneps2bf16:67; CHECK:       # %bb.0:68; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill69; CHECK-NEXT:    #APP70; CHECK-NEXT:    nop71; CHECK-NEXT:    #NO_APP72; CHECK-NEXT:    vcvtneps2bf16 {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 64-byte Folded Reload73; CHECK-NEXT:    retq74  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()75  %2 = tail call <16 x bfloat> @llvm.x86.avx512bf16.cvtneps2bf16.512(<16 x float> %a0)76  ret <16 x bfloat> %277}78declare <16 x bfloat> @llvm.x86.avx512bf16.cvtneps2bf16.512(<16 x float>)79 80define <16 x bfloat> @stack_fold_cvtneps2bf16_mask(<16 x float> %a0, ptr %passthru, i16 %U) {81; CHECK-LABEL: stack_fold_cvtneps2bf16_mask:82; CHECK:       # %bb.0:83; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill84; CHECK-NEXT:    #APP85; CHECK-NEXT:    nop86; CHECK-NEXT:    #NO_APP87; CHECK-NEXT:    kmovd %esi, %k188; CHECK-NEXT:    vmovaps (%rdi), %ymm189; CHECK-NEXT:    vcvtneps2bf16 {{[-0-9]+}}(%r{{[sb]}}p), %ymm1 {%k1} # 64-byte Folded Reload90; CHECK-NEXT:    vmovaps %ymm1, %ymm091; CHECK-NEXT:    retq92  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()93  %2 = tail call <16 x bfloat> @llvm.x86.avx512bf16.cvtneps2bf16.512(<16 x float> %a0)94  %3 = bitcast i16 %U to <16 x i1>95  ; load needed to keep the operation from being scheduled above the asm block96  %4 = load <16 x bfloat>, ptr %passthru97  %5 = select <16 x i1> %3, <16 x bfloat> %2, <16 x bfloat> %498  ret <16 x bfloat> %599}100 101define <16 x bfloat> @stack_fold_cvtneps2bf16_maskz(<16 x float> %a0, i16 %U) {102; CHECK-LABEL: stack_fold_cvtneps2bf16_maskz:103; CHECK:       # %bb.0:104; CHECK-NEXT:    vmovups %zmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill105; CHECK-NEXT:    #APP106; CHECK-NEXT:    nop107; CHECK-NEXT:    #NO_APP108; CHECK-NEXT:    kmovd %edi, %k1109; CHECK-NEXT:    vcvtneps2bf16 {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 {%k1} {z} # 64-byte Folded Reload110; CHECK-NEXT:    retq111  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()112  %2 = tail call <16 x bfloat> @llvm.x86.avx512bf16.cvtneps2bf16.512(<16 x float> %a0)113  %3 = bitcast i16 %U to <16 x i1>114  %4 = select <16 x i1> %3, <16 x bfloat> %2, <16 x bfloat> zeroinitializer115  ret <16 x bfloat> %4116}117 118define <16 x float> @stack_fold_vdpbf16ps(<16 x float> %a0, <32 x bfloat> %a1, <32 x bfloat> %a2) {119; CHECK-LABEL: stack_fold_vdpbf16ps:120; CHECK:       # %bb.0:121; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill122; CHECK-NEXT:    #APP123; CHECK-NEXT:    nop124; CHECK-NEXT:    #NO_APP125; CHECK-NEXT:    vdpbf16ps {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 # 64-byte Folded Reload126; CHECK-NEXT:    retq127  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()128  %2 = tail call <16 x float> @llvm.x86.avx512bf16.dpbf16ps.512(<16 x float> %a0, <32 x bfloat> %a1, <32 x bfloat> %a2)129  ret <16 x float> %2130}131declare <16 x float> @llvm.x86.avx512bf16.dpbf16ps.512(<16 x float>, <32 x bfloat>, <32 x bfloat>)132 133define <16 x float> @stack_fold_vdpbf16ps_mask(ptr %a0, <32 x bfloat> %a1, <32 x bfloat> %a2, ptr %passthru, i16 %U) {134; CHECK-LABEL: stack_fold_vdpbf16ps_mask:135; CHECK:       # %bb.0:136; CHECK-NEXT:    vmovups %zmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill137; CHECK-NEXT:    #APP138; CHECK-NEXT:    nop139; CHECK-NEXT:    #NO_APP140; CHECK-NEXT:    vmovaps (%rdi), %zmm2141; CHECK-NEXT:    kmovd %edx, %k1142; CHECK-NEXT:    vdpbf16ps {{[-0-9]+}}(%r{{[sb]}}p), %zmm0, %zmm2 {%k1} # 64-byte Folded Reload143; CHECK-NEXT:    vmovaps %zmm2, %zmm0144; CHECK-NEXT:    retq145  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()146  ; load needed to keep the operation from being scheduled above the asm block147  %2 = load <16 x float>, ptr %a0148  %3 = tail call <16 x float> @llvm.x86.avx512bf16.dpbf16ps.512(<16 x float> %2, <32 x bfloat> %a1, <32 x bfloat> %a2)149  %4 = bitcast i16 %U to <16 x i1>150  %5 = select <16 x i1> %4, <16 x float> %3, <16 x float> %2151  ret <16 x float> %5152}153 154define <16 x float> @stack_fold_vdpbf16ps_maskz(<16 x float> %a0, <32 x bfloat> %a1, <32 x bfloat> %a2, ptr %U) {155; CHECK-LABEL: stack_fold_vdpbf16ps_maskz:156; CHECK:       # %bb.0:157; CHECK-NEXT:    vmovups %zmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 64-byte Spill158; CHECK-NEXT:    #APP159; CHECK-NEXT:    nop160; CHECK-NEXT:    #NO_APP161; CHECK-NEXT:    kmovw (%rdi), %k1162; CHECK-NEXT:    vdpbf16ps {{[-0-9]+}}(%r{{[sb]}}p), %zmm1, %zmm0 {%k1} {z} # 64-byte Folded Reload163; CHECK-NEXT:    retq164  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()165  %2 = tail call <16 x float> @llvm.x86.avx512bf16.dpbf16ps.512(<16 x float> %a0, <32 x bfloat> %a1, <32 x bfloat> %a2)166  %3 = load i16, ptr %U167  %4 = bitcast i16 %3 to <16 x i1>168  %5 = select <16 x i1> %4, <16 x float> %2, <16 x float> zeroinitializer169  ret <16 x float> %5170}171 172 173 174define <16 x bfloat> @stack_fold_cvtne2ps2bf16_ymm(<8 x float> %a0, <8 x float> %a1) {175; CHECK-LABEL: stack_fold_cvtne2ps2bf16_ymm:176; CHECK:       # %bb.0:177; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill178; CHECK-NEXT:    #APP179; CHECK-NEXT:    nop180; CHECK-NEXT:    #NO_APP181; CHECK-NEXT:    vcvtne2ps2bf16 {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 # 32-byte Folded Reload182; CHECK-NEXT:    retq183  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()184  %2 = call <16 x bfloat> @llvm.x86.avx512bf16.cvtne2ps2bf16.256(<8 x float> %a0, <8 x float> %a1)185  ret <16 x bfloat> %2186}187declare <16 x bfloat> @llvm.x86.avx512bf16.cvtne2ps2bf16.256(<8 x float>, <8 x float>)188 189define <16 x bfloat> @stack_fold_cvtne2ps2bf16_mask_ymm(<8 x float> %a0, <8 x float> %a1, ptr %passthru, i16 %U) {190; CHECK-LABEL: stack_fold_cvtne2ps2bf16_mask_ymm:191; CHECK:       # %bb.0:192; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill193; CHECK-NEXT:    #APP194; CHECK-NEXT:    nop195; CHECK-NEXT:    #NO_APP196; CHECK-NEXT:    kmovd %esi, %k1197; CHECK-NEXT:    vmovaps (%rdi), %ymm2198; CHECK-NEXT:    vcvtne2ps2bf16 {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 {%k1} # 32-byte Folded Reload199; CHECK-NEXT:    vmovaps %ymm2, %ymm0200; CHECK-NEXT:    retq201  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()202  %2 = call <16 x bfloat> @llvm.x86.avx512bf16.cvtne2ps2bf16.256(<8 x float> %a0, <8 x float> %a1)203  %3 = bitcast i16 %U to <16 x i1>204  ; load needed to keep the operation from being scheduled above the asm block205  %4 = load <16 x bfloat>, ptr %passthru206  %5 = select <16 x i1> %3, <16 x bfloat> %2, <16 x bfloat> %4207  ret <16 x bfloat> %5208}209 210define <16 x bfloat> @stack_fold_cvtne2ps2bf16_maskz_ymm(<8 x float> %a0, <8 x float> %a1, i16 %U) {211; CHECK-LABEL: stack_fold_cvtne2ps2bf16_maskz_ymm:212; CHECK:       # %bb.0:213; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill214; CHECK-NEXT:    #APP215; CHECK-NEXT:    nop216; CHECK-NEXT:    #NO_APP217; CHECK-NEXT:    kmovd %edi, %k1218; CHECK-NEXT:    vcvtne2ps2bf16 {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm0 {%k1} {z} # 32-byte Folded Reload219; CHECK-NEXT:    retq220  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()221  %2 = call <16 x bfloat> @llvm.x86.avx512bf16.cvtne2ps2bf16.256(<8 x float> %a0, <8 x float> %a1)222  %3 = bitcast i16 %U to <16 x i1>223  %4 = select <16 x i1> %3, <16 x bfloat> %2, <16 x bfloat> zeroinitializer224  ret <16 x bfloat> %4225}226 227define <8 x bfloat> @stack_fold_cvtneps2bf16_ymm(<8 x float> %a0) {228; CHECK-LABEL: stack_fold_cvtneps2bf16_ymm:229; CHECK:       # %bb.0:230; CHECK-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill231; CHECK-NEXT:    #APP232; CHECK-NEXT:    nop233; CHECK-NEXT:    #NO_APP234; CHECK-NEXT:    vcvtneps2bf16y {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 32-byte Folded Reload235; CHECK-NEXT:    vzeroupper236; CHECK-NEXT:    retq237  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()238  %2 = tail call <8 x bfloat> @llvm.x86.avx512bf16.cvtneps2bf16.256(<8 x float> %a0)239  ret <8 x bfloat> %2240}241declare <8 x bfloat> @llvm.x86.avx512bf16.cvtneps2bf16.256(<8 x float>)242 243define <8 x bfloat> @stack_fold_cvtneps2bf16_mask_ymm(<8 x float> %a0, ptr %passthru, i8 %U) {244; CHECK-LABEL: stack_fold_cvtneps2bf16_mask_ymm:245; CHECK:       # %bb.0:246; CHECK-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill247; CHECK-NEXT:    #APP248; CHECK-NEXT:    nop249; CHECK-NEXT:    #NO_APP250; CHECK-NEXT:    kmovd %esi, %k1251; CHECK-NEXT:    vmovaps (%rdi), %xmm1252; CHECK-NEXT:    vcvtneps2bf16y {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 {%k1} # 32-byte Folded Reload253; CHECK-NEXT:    vmovaps %xmm1, %xmm0254; CHECK-NEXT:    vzeroupper255; CHECK-NEXT:    retq256  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()257  %2 = tail call <8 x bfloat> @llvm.x86.avx512bf16.cvtneps2bf16.256(<8 x float> %a0)258  %3 = bitcast i8 %U to <8 x i1>259  ; load needed to keep the operation from being scheduled above the asm block260  %4 = load <8 x bfloat>, ptr %passthru261  %5 = select <8 x i1> %3, <8 x bfloat> %2, <8 x bfloat> %4262  ret <8 x bfloat> %5263}264 265define <8 x bfloat> @stack_fold_cvtneps2bf16_maskz_ymm(<8 x float> %a0, i8 %U) {266; CHECK-LABEL: stack_fold_cvtneps2bf16_maskz_ymm:267; CHECK:       # %bb.0:268; CHECK-NEXT:    vmovups %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill269; CHECK-NEXT:    #APP270; CHECK-NEXT:    nop271; CHECK-NEXT:    #NO_APP272; CHECK-NEXT:    kmovd %edi, %k1273; CHECK-NEXT:    vcvtneps2bf16y {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 {%k1} {z} # 32-byte Folded Reload274; CHECK-NEXT:    vzeroupper275; CHECK-NEXT:    retq276  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()277  %2 = tail call <8 x bfloat> @llvm.x86.avx512bf16.cvtneps2bf16.256(<8 x float> %a0)278  %3 = bitcast i8 %U to <8 x i1>279  %4 = select <8 x i1> %3, <8 x bfloat> %2, <8 x bfloat> zeroinitializer280  ret <8 x bfloat> %4281}282 283define <8 x float> @stack_fold_vdpbf16ps_ymm(<8 x float> %a0, <16 x bfloat> %a1, <16 x bfloat> %a2) {284; CHECK-LABEL: stack_fold_vdpbf16ps_ymm:285; CHECK:       # %bb.0:286; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill287; CHECK-NEXT:    #APP288; CHECK-NEXT:    nop289; CHECK-NEXT:    #NO_APP290; CHECK-NEXT:    vdpbf16ps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 # 32-byte Folded Reload291; CHECK-NEXT:    retq292  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()293  %2 = tail call <8 x float> @llvm.x86.avx512bf16.dpbf16ps.256(<8 x float> %a0, <16 x bfloat> %a1, <16 x bfloat> %a2)294  ret <8 x float> %2295}296declare <8 x float> @llvm.x86.avx512bf16.dpbf16ps.256(<8 x float>, <16 x bfloat>, <16 x bfloat>)297 298define <8 x float> @stack_fold_vdpbf16ps_mask_ymm(ptr %a0, <16 x bfloat> %a1, <16 x bfloat> %a2, ptr %passthru, i8 %U) {299; CHECK-LABEL: stack_fold_vdpbf16ps_mask_ymm:300; CHECK:       # %bb.0:301; CHECK-NEXT:    vmovups %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill302; CHECK-NEXT:    #APP303; CHECK-NEXT:    nop304; CHECK-NEXT:    #NO_APP305; CHECK-NEXT:    vmovaps (%rdi), %ymm2306; CHECK-NEXT:    kmovd %edx, %k1307; CHECK-NEXT:    vdpbf16ps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0, %ymm2 {%k1} # 32-byte Folded Reload308; CHECK-NEXT:    vmovaps %ymm2, %ymm0309; CHECK-NEXT:    retq310  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()311  ; load needed to keep the operation from being scheduled above the asm block312  %2 = load <8 x float>, ptr %a0313  %3 = tail call <8 x float> @llvm.x86.avx512bf16.dpbf16ps.256(<8 x float> %2, <16 x bfloat> %a1, <16 x bfloat> %a2)314  %4 = bitcast i8 %U to <8 x i1>315  %5 = select <8 x i1> %4, <8 x float> %3, <8 x float> %2316  ret <8 x float> %5317}318 319define <8 x float> @stack_fold_vdpbf16ps_maskz_ymm(<8 x float> %a0, <16 x bfloat> %a1, <16 x bfloat> %a2, ptr %U) {320; CHECK-LABEL: stack_fold_vdpbf16ps_maskz_ymm:321; CHECK:       # %bb.0:322; CHECK-NEXT:    vmovups %ymm2, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill323; CHECK-NEXT:    #APP324; CHECK-NEXT:    nop325; CHECK-NEXT:    #NO_APP326; CHECK-NEXT:    movzbl (%rdi), %eax327; CHECK-NEXT:    kmovd %eax, %k1328; CHECK-NEXT:    vdpbf16ps {{[-0-9]+}}(%r{{[sb]}}p), %ymm1, %ymm0 {%k1} {z} # 32-byte Folded Reload329; CHECK-NEXT:    retq330  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()331  %2 = tail call <8 x float> @llvm.x86.avx512bf16.dpbf16ps.256(<8 x float> %a0, <16 x bfloat> %a1, <16 x bfloat> %a2)332  %3 = load i8, ptr %U333  %4 = bitcast i8 %3 to <8 x i1>334  %5 = select <8 x i1> %4, <8 x float> %2, <8 x float> zeroinitializer335  ret <8 x float> %5336}337 338 339 340 341define <8 x bfloat> @stack_fold_cvtne2ps2bf16_xmm(<4 x float> %a0, <4 x float> %a1) {342; CHECK-LABEL: stack_fold_cvtne2ps2bf16_xmm:343; CHECK:       # %bb.0:344; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill345; CHECK-NEXT:    #APP346; CHECK-NEXT:    nop347; CHECK-NEXT:    #NO_APP348; CHECK-NEXT:    vcvtne2ps2bf16 {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 # 16-byte Folded Reload349; CHECK-NEXT:    retq350  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()351  %2 = call <8 x bfloat> @llvm.x86.avx512bf16.cvtne2ps2bf16.128(<4 x float> %a0, <4 x float> %a1)352  ret <8 x bfloat> %2353}354declare <8 x bfloat> @llvm.x86.avx512bf16.cvtne2ps2bf16.128(<4 x float>, <4 x float>)355 356define <8 x bfloat> @stack_fold_cvtne2ps2bf16_mask_xmm(<4 x float> %a0, <4 x float> %a1, ptr %passthru, i8 %U) {357; CHECK-LABEL: stack_fold_cvtne2ps2bf16_mask_xmm:358; CHECK:       # %bb.0:359; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill360; CHECK-NEXT:    #APP361; CHECK-NEXT:    nop362; CHECK-NEXT:    #NO_APP363; CHECK-NEXT:    kmovd %esi, %k1364; CHECK-NEXT:    vmovaps (%rdi), %xmm2365; CHECK-NEXT:    vcvtne2ps2bf16 {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm2 {%k1} # 16-byte Folded Reload366; CHECK-NEXT:    vmovaps %xmm2, %xmm0367; CHECK-NEXT:    retq368  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()369  %2 = call <8 x bfloat> @llvm.x86.avx512bf16.cvtne2ps2bf16.128(<4 x float> %a0, <4 x float> %a1)370  %3 = bitcast i8 %U to <8 x i1>371  ; load needed to keep the operation from being scheduled above the asm block372  %4 = load <8 x bfloat>, ptr %passthru373  %5 = select <8 x i1> %3, <8 x bfloat> %2, <8 x bfloat> %4374  ret <8 x bfloat> %5375}376 377define <8 x bfloat> @stack_fold_cvtne2ps2bf16_maskz_xmm(<4 x float> %a0, <4 x float> %a1, i8 %U) {378; CHECK-LABEL: stack_fold_cvtne2ps2bf16_maskz_xmm:379; CHECK:       # %bb.0:380; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill381; CHECK-NEXT:    #APP382; CHECK-NEXT:    nop383; CHECK-NEXT:    #NO_APP384; CHECK-NEXT:    kmovd %edi, %k1385; CHECK-NEXT:    vcvtne2ps2bf16 {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm0 {%k1} {z} # 16-byte Folded Reload386; CHECK-NEXT:    retq387  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()388  %2 = call <8 x bfloat> @llvm.x86.avx512bf16.cvtne2ps2bf16.128(<4 x float> %a0, <4 x float> %a1)389  %3 = bitcast i8 %U to <8 x i1>390  %4 = select <8 x i1> %3, <8 x bfloat> %2, <8 x bfloat> zeroinitializer391  ret <8 x bfloat> %4392}393 394define <8 x bfloat> @stack_fold_cvtneps2bf16_xmm(<4 x float> %a0) {395; CHECK-LABEL: stack_fold_cvtneps2bf16_xmm:396; CHECK:       # %bb.0:397; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill398; CHECK-NEXT:    #APP399; CHECK-NEXT:    nop400; CHECK-NEXT:    #NO_APP401; CHECK-NEXT:    vcvtneps2bf16x {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload402; CHECK-NEXT:    retq403  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()404  %2 = tail call <8 x bfloat> @llvm.x86.avx512bf16.mask.cvtneps2bf16.128(<4 x float> %a0, <8 x bfloat> undef, <4 x i1> <i1 true, i1 true, i1 true, i1 true>)405  ret <8 x bfloat> %2406}407declare <8 x bfloat> @llvm.x86.avx512bf16.mask.cvtneps2bf16.128(<4 x float>, <8 x bfloat>, <4 x i1>)408 409define <8 x bfloat> @stack_fold_cvtneps2bf16_mask_xmm(<4 x float> %a0, ptr %passthru, i8 %U) {410; CHECK-LABEL: stack_fold_cvtneps2bf16_mask_xmm:411; CHECK:       # %bb.0:412; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill413; CHECK-NEXT:    #APP414; CHECK-NEXT:    nop415; CHECK-NEXT:    #NO_APP416; CHECK-NEXT:    vmovaps (%rdi), %xmm1417; CHECK-NEXT:    kmovd %esi, %k1418; CHECK-NEXT:    vcvtneps2bf16x {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 {%k1} # 16-byte Folded Reload419; CHECK-NEXT:    vmovaps %xmm1, %xmm0420; CHECK-NEXT:    retq421  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()422  %2 = load <8 x bfloat>, ptr %passthru423  %3 = bitcast i8 %U to <8 x i1>424  %4 = shufflevector <8 x i1> %3, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>425  %5 = tail call <8 x bfloat> @llvm.x86.avx512bf16.mask.cvtneps2bf16.128(<4 x float> %a0, <8 x bfloat> %2, <4 x i1> %4)426  ret <8 x bfloat> %5427}428 429define <8 x bfloat> @stack_fold_cvtneps2bf16_maskz_xmm(<4 x float> %a0, i8 %U) {430; CHECK-LABEL: stack_fold_cvtneps2bf16_maskz_xmm:431; CHECK:       # %bb.0:432; CHECK-NEXT:    vmovaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill433; CHECK-NEXT:    #APP434; CHECK-NEXT:    nop435; CHECK-NEXT:    #NO_APP436; CHECK-NEXT:    kmovd %edi, %k1437; CHECK-NEXT:    vcvtneps2bf16x {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 {%k1} {z} # 16-byte Folded Reload438; CHECK-NEXT:    retq439  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()440  %2 = bitcast i8 %U to <8 x i1>441  %3 = shufflevector <8 x i1> %2, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>442  %4 = tail call <8 x bfloat> @llvm.x86.avx512bf16.mask.cvtneps2bf16.128(<4 x float> %a0, <8 x bfloat> zeroinitializer, <4 x i1> %3)443  ret <8 x bfloat> %4444}445 446define <4 x float> @stack_fold_vdpbf16ps_xmm(<4 x float> %a0, <8 x bfloat> %a1, <8 x bfloat> %a2) {447; CHECK-LABEL: stack_fold_vdpbf16ps_xmm:448; CHECK:       # %bb.0:449; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill450; CHECK-NEXT:    #APP451; CHECK-NEXT:    nop452; CHECK-NEXT:    #NO_APP453; CHECK-NEXT:    vdpbf16ps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 # 16-byte Folded Reload454; CHECK-NEXT:    retq455  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()456  %2 = tail call <4 x float> @llvm.x86.avx512bf16.dpbf16ps.128(<4 x float> %a0, <8 x bfloat> %a1, <8 x bfloat> %a2)457  ret <4 x float> %2458}459declare <4 x float> @llvm.x86.avx512bf16.dpbf16ps.128(<4 x float>, <8 x bfloat>, <8 x bfloat>)460 461define <4 x float> @stack_fold_vdpbf16ps_mask_xmm(ptr %a0, <8 x bfloat> %a1, <8 x bfloat> %a2, ptr %passthru, i8 %U) {462; CHECK-LABEL: stack_fold_vdpbf16ps_mask_xmm:463; CHECK:       # %bb.0:464; CHECK-NEXT:    vmovaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill465; CHECK-NEXT:    #APP466; CHECK-NEXT:    nop467; CHECK-NEXT:    #NO_APP468; CHECK-NEXT:    vmovaps (%rdi), %xmm2469; CHECK-NEXT:    kmovd %edx, %k1470; CHECK-NEXT:    vdpbf16ps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0, %xmm2 {%k1} # 16-byte Folded Reload471; CHECK-NEXT:    vmovaps %xmm2, %xmm0472; CHECK-NEXT:    retq473  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()474  ; load needed to keep the operation from being scheduled above the asm block475  %2 = load <4 x float>, ptr %a0476  %3 = tail call <4 x float> @llvm.x86.avx512bf16.dpbf16ps.128(<4 x float> %2, <8 x bfloat> %a1, <8 x bfloat> %a2)477  %4 = bitcast i8 %U to <8 x i1>478  %5 = shufflevector <8 x i1> %4, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>479  %6 = select <4 x i1> %5, <4 x float> %3, <4 x float> %2480  ret <4 x float> %6481}482 483define <4 x float> @stack_fold_vdpbf16ps_maskz_xmm(<4 x float> %a0, <8 x bfloat> %a1, <8 x bfloat> %a2, ptr %U) {484; CHECK-LABEL: stack_fold_vdpbf16ps_maskz_xmm:485; CHECK:       # %bb.0:486; CHECK-NEXT:    vmovaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill487; CHECK-NEXT:    #APP488; CHECK-NEXT:    nop489; CHECK-NEXT:    #NO_APP490; CHECK-NEXT:    movzbl (%rdi), %eax491; CHECK-NEXT:    kmovd %eax, %k1492; CHECK-NEXT:    vdpbf16ps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1, %xmm0 {%k1} {z} # 16-byte Folded Reload493; CHECK-NEXT:    retq494  %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{xmm16},~{xmm17},~{xmm18},~{xmm19},~{xmm20},~{xmm21},~{xmm22},~{xmm23},~{xmm24},~{xmm25},~{xmm26},~{xmm27},~{xmm28},~{xmm29},~{xmm30},~{xmm31},~{flags}"()495  %2 = tail call <4 x float> @llvm.x86.avx512bf16.dpbf16ps.128(<4 x float> %a0, <8 x bfloat> %a1, <8 x bfloat> %a2)496  %3 = load i8, ptr %U497  %4 = bitcast i8 %3 to <8 x i1>498  %5 = shufflevector <8 x i1> %4, <8 x i1> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 3>499  %6 = select <4 x i1> %5, <4 x float> %2, <4 x float> zeroinitializer500  ret <4 x float> %6501}502