@@ -311,8 +311,7 @@ define <vscale x 8 x bfloat> @fadd_sel_nxv8bf16(<vscale x 8 x bfloat> %a, <vscal
311311;
312312; SVE-B16B16-LABEL: fadd_sel_nxv8bf16:
313313; SVE-B16B16: // %bb.0:
314- ; SVE-B16B16-NEXT: bfadd z1.h, z0.h, z1.h
315- ; SVE-B16B16-NEXT: mov z0.h, p0/m, z1.h
314+ ; SVE-B16B16-NEXT: bfadd z0.h, p0/m, z0.h, z1.h
316315; SVE-B16B16-NEXT: ret
317316 %sel = select <vscale x 8 x i1 > %mask , <vscale x 8 x bfloat> %b , <vscale x 8 x bfloat> zeroinitializer
318317 %fadd = fadd nsz <vscale x 8 x bfloat> %a , %sel
@@ -341,8 +340,7 @@ define <vscale x 8 x bfloat> @fsub_sel_nxv8bf16(<vscale x 8 x bfloat> %a, <vscal
341340;
342341; SVE-B16B16-LABEL: fsub_sel_nxv8bf16:
343342; SVE-B16B16: // %bb.0:
344- ; SVE-B16B16-NEXT: bfsub z1.h, z0.h, z1.h
345- ; SVE-B16B16-NEXT: mov z0.h, p0/m, z1.h
343+ ; SVE-B16B16-NEXT: bfsub z0.h, p0/m, z0.h, z1.h
346344; SVE-B16B16-NEXT: ret
347345 %sel = select <vscale x 8 x i1 > %mask , <vscale x 8 x bfloat> %b , <vscale x 8 x bfloat> zeroinitializer
348346 %fsub = fsub <vscale x 8 x bfloat> %a , %sel
@@ -371,8 +369,7 @@ define <vscale x 8 x bfloat> @fadd_sel_negzero_nxv8bf16(<vscale x 8 x bfloat> %a
371369;
372370; SVE-B16B16-LABEL: fadd_sel_negzero_nxv8bf16:
373371; SVE-B16B16: // %bb.0:
374- ; SVE-B16B16-NEXT: bfadd z1.h, z0.h, z1.h
375- ; SVE-B16B16-NEXT: mov z0.h, p0/m, z1.h
372+ ; SVE-B16B16-NEXT: bfadd z0.h, p0/m, z0.h, z1.h
376373; SVE-B16B16-NEXT: ret
377374 %nz = fneg <vscale x 8 x bfloat> zeroinitializer
378375 %sel = select <vscale x 8 x i1 > %mask , <vscale x 8 x bfloat> %b , <vscale x 8 x bfloat> %nz
@@ -402,8 +399,7 @@ define <vscale x 8 x bfloat> @fsub_sel_negzero_nxv8bf16(<vscale x 8 x bfloat> %a
402399;
403400; SVE-B16B16-LABEL: fsub_sel_negzero_nxv8bf16:
404401; SVE-B16B16: // %bb.0:
405- ; SVE-B16B16-NEXT: bfsub z1.h, z0.h, z1.h
406- ; SVE-B16B16-NEXT: mov z0.h, p0/m, z1.h
402+ ; SVE-B16B16-NEXT: bfsub z0.h, p0/m, z0.h, z1.h
407403; SVE-B16B16-NEXT: ret
408404 %nz = fneg <vscale x 8 x bfloat> zeroinitializer
409405 %sel = select <vscale x 8 x i1 > %mask , <vscale x 8 x bfloat> %b , <vscale x 8 x bfloat> %nz
@@ -490,9 +486,7 @@ define <vscale x 8 x bfloat> @fsub_sel_fmul_nxv8bf16(<vscale x 8 x bfloat> %a, <
490486;
491487; SVE-B16B16-LABEL: fsub_sel_fmul_nxv8bf16:
492488; SVE-B16B16: // %bb.0:
493- ; SVE-B16B16-NEXT: bfmul z1.h, z1.h, z2.h
494- ; SVE-B16B16-NEXT: bfsub z1.h, z0.h, z1.h
495- ; SVE-B16B16-NEXT: mov z0.h, p0/m, z1.h
489+ ; SVE-B16B16-NEXT: bfmls z0.h, p0/m, z1.h, z2.h
496490; SVE-B16B16-NEXT: ret
497491 %fmul = fmul <vscale x 8 x bfloat> %b , %c
498492 %sel = select <vscale x 8 x i1 > %mask , <vscale x 8 x bfloat> %fmul , <vscale x 8 x bfloat> zeroinitializer
@@ -532,9 +526,7 @@ define <vscale x 8 x bfloat> @fadd_sel_fmul_nsz_nxv8bf16(<vscale x 8 x bfloat> %
532526;
533527; SVE-B16B16-LABEL: fadd_sel_fmul_nsz_nxv8bf16:
534528; SVE-B16B16: // %bb.0:
535- ; SVE-B16B16-NEXT: bfmul z1.h, z1.h, z2.h
536- ; SVE-B16B16-NEXT: bfadd z1.h, z0.h, z1.h
537- ; SVE-B16B16-NEXT: mov z0.h, p0/m, z1.h
529+ ; SVE-B16B16-NEXT: bfmla z0.h, p0/m, z1.h, z2.h
538530; SVE-B16B16-NEXT: ret
539531 %fmul = fmul <vscale x 8 x bfloat> %b , %c
540532 %sel = select <vscale x 8 x i1 > %mask , <vscale x 8 x bfloat> %fmul , <vscale x 8 x bfloat> zeroinitializer
@@ -574,9 +566,7 @@ define <vscale x 8 x bfloat> @fsub_sel_fmul_nsz_nxv8bf16(<vscale x 8 x bfloat> %
574566;
575567; SVE-B16B16-LABEL: fsub_sel_fmul_nsz_nxv8bf16:
576568; SVE-B16B16: // %bb.0:
577- ; SVE-B16B16-NEXT: bfmul z1.h, z1.h, z2.h
578- ; SVE-B16B16-NEXT: bfsub z1.h, z0.h, z1.h
579- ; SVE-B16B16-NEXT: mov z0.h, p0/m, z1.h
569+ ; SVE-B16B16-NEXT: bfmls z0.h, p0/m, z1.h, z2.h
580570; SVE-B16B16-NEXT: ret
581571 %fmul = fmul <vscale x 8 x bfloat> %b , %c
582572 %sel = select <vscale x 8 x i1 > %mask , <vscale x 8 x bfloat> %fmul , <vscale x 8 x bfloat> zeroinitializer
@@ -616,9 +606,7 @@ define <vscale x 8 x bfloat> @fadd_sel_fmul_negzero_nxv8bf16(<vscale x 8 x bfloa
616606;
617607; SVE-B16B16-LABEL: fadd_sel_fmul_negzero_nxv8bf16:
618608; SVE-B16B16: // %bb.0:
619- ; SVE-B16B16-NEXT: bfmul z1.h, z1.h, z2.h
620- ; SVE-B16B16-NEXT: bfadd z1.h, z0.h, z1.h
621- ; SVE-B16B16-NEXT: mov z0.h, p0/m, z1.h
609+ ; SVE-B16B16-NEXT: bfmla z0.h, p0/m, z1.h, z2.h
622610; SVE-B16B16-NEXT: ret
623611 %fmul = fmul <vscale x 8 x bfloat> %b , %c
624612 %nz = fneg <vscale x 8 x bfloat> zeroinitializer
@@ -707,9 +695,7 @@ define <vscale x 8 x bfloat> @fadd_sel_fmul_negzero_nsz_nxv8bf16(<vscale x 8 x b
707695;
708696; SVE-B16B16-LABEL: fadd_sel_fmul_negzero_nsz_nxv8bf16:
709697; SVE-B16B16: // %bb.0:
710- ; SVE-B16B16-NEXT: bfmul z1.h, z1.h, z2.h
711- ; SVE-B16B16-NEXT: bfadd z1.h, z0.h, z1.h
712- ; SVE-B16B16-NEXT: mov z0.h, p0/m, z1.h
698+ ; SVE-B16B16-NEXT: bfmla z0.h, p0/m, z1.h, z2.h
713699; SVE-B16B16-NEXT: ret
714700 %fmul = fmul <vscale x 8 x bfloat> %b , %c
715701 %nz = fneg <vscale x 8 x bfloat> zeroinitializer
@@ -750,9 +736,7 @@ define <vscale x 8 x bfloat> @fsub_sel_fmul_negzero_nsz_nxv8bf16(<vscale x 8 x b
750736;
751737; SVE-B16B16-LABEL: fsub_sel_fmul_negzero_nsz_nxv8bf16:
752738; SVE-B16B16: // %bb.0:
753- ; SVE-B16B16-NEXT: bfmul z1.h, z1.h, z2.h
754- ; SVE-B16B16-NEXT: bfsub z1.h, z0.h, z1.h
755- ; SVE-B16B16-NEXT: mov z0.h, p0/m, z1.h
739+ ; SVE-B16B16-NEXT: bfmls z0.h, p0/m, z1.h, z2.h
756740; SVE-B16B16-NEXT: ret
757741 %fmul = fmul <vscale x 8 x bfloat> %b , %c
758742 %nz = fneg <vscale x 8 x bfloat> zeroinitializer
0 commit comments