Skip to content

Commit 468cffb

Browse files
authored
[NFC][RISCV] Make vfadd attribute list follow other tests (#170864)
1 parent 09eb25f commit 468cffb

File tree

1 file changed

+147
-23
lines changed

1 file changed

+147
-23
lines changed

llvm/test/CodeGen/RISCV/rvv/vfadd-sdnode.ll

Lines changed: 147 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@
1111
; RUN: llc -mtriple=riscv64 -mattr=+d,+zfhmin,+zvfhmin,+zfbfmin,+zvfbfmin,+v \
1212
; RUN: -target-abi=lp64d -verify-machineinstrs < %s | FileCheck %s \
1313
; RUN: --check-prefixes=CHECK,ZVFHMIN
14-
; RUN: llc -mtriple=riscv32 -mattr=+d,+zvfh,+experimental-zvfbfa,+v \
14+
; RUN: llc -mtriple=riscv32 -mattr=+d,+zvfhmin,+experimental-zvfbfa,+v \
1515
; RUN: -verify-machineinstrs < %s | FileCheck %s \
1616
; RUN: --check-prefixes=CHECK,ZVFBFA
17-
; RUN: llc -mtriple=riscv64 -mattr=+d,+zvfh,+experimental-zvfbfa,+v \
17+
; RUN: llc -mtriple=riscv64 -mattr=+d,+zvfhmin,+experimental-zvfbfa,+v \
1818
; RUN: -verify-machineinstrs < %s | FileCheck %s \
1919
; RUN: --check-prefixes=CHECK,ZVFBFA
2020

@@ -563,7 +563,12 @@ define <vscale x 1 x half> @vfadd_vv_nxv1f16(<vscale x 1 x half> %va, <vscale x
563563
; ZVFBFA-LABEL: vfadd_vv_nxv1f16:
564564
; ZVFBFA: # %bb.0:
565565
; ZVFBFA-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
566-
; ZVFBFA-NEXT: vfadd.vv v8, v8, v9
566+
; ZVFBFA-NEXT: vfwcvt.f.f.v v10, v9
567+
; ZVFBFA-NEXT: vfwcvt.f.f.v v9, v8
568+
; ZVFBFA-NEXT: vsetvli zero, zero, e32, mf2, ta, ma
569+
; ZVFBFA-NEXT: vfadd.vv v9, v9, v10
570+
; ZVFBFA-NEXT: vsetvli zero, zero, e16, mf4, ta, ma
571+
; ZVFBFA-NEXT: vfncvt.f.f.w v8, v9
567572
; ZVFBFA-NEXT: ret
568573
%vc = fadd <vscale x 1 x half> %va, %vb
569574
ret <vscale x 1 x half> %vc
@@ -589,8 +594,15 @@ define <vscale x 1 x half> @vfadd_vf_nxv1f16(<vscale x 1 x half> %va, half %b) {
589594
;
590595
; ZVFBFA-LABEL: vfadd_vf_nxv1f16:
591596
; ZVFBFA: # %bb.0:
592-
; ZVFBFA-NEXT: vsetvli a0, zero, e16, mf4, ta, ma
593-
; ZVFBFA-NEXT: vfadd.vf v8, v8, fa0
597+
; ZVFBFA-NEXT: fmv.x.w a0, fa0
598+
; ZVFBFA-NEXT: vsetvli a1, zero, e16, mf4, ta, ma
599+
; ZVFBFA-NEXT: vmv.v.x v9, a0
600+
; ZVFBFA-NEXT: vfwcvt.f.f.v v10, v8
601+
; ZVFBFA-NEXT: vfwcvt.f.f.v v8, v9
602+
; ZVFBFA-NEXT: vsetvli zero, zero, e32, mf2, ta, ma
603+
; ZVFBFA-NEXT: vfadd.vv v9, v10, v8
604+
; ZVFBFA-NEXT: vsetvli zero, zero, e16, mf4, ta, ma
605+
; ZVFBFA-NEXT: vfncvt.f.f.w v8, v9
594606
; ZVFBFA-NEXT: ret
595607
%head = insertelement <vscale x 1 x half> poison, half %b, i32 0
596608
%splat = shufflevector <vscale x 1 x half> %head, <vscale x 1 x half> poison, <vscale x 1 x i32> zeroinitializer
@@ -619,7 +631,12 @@ define <vscale x 2 x half> @vfadd_vv_nxv2f16(<vscale x 2 x half> %va, <vscale x
619631
; ZVFBFA-LABEL: vfadd_vv_nxv2f16:
620632
; ZVFBFA: # %bb.0:
621633
; ZVFBFA-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
622-
; ZVFBFA-NEXT: vfadd.vv v8, v8, v9
634+
; ZVFBFA-NEXT: vfwcvt.f.f.v v10, v9
635+
; ZVFBFA-NEXT: vfwcvt.f.f.v v9, v8
636+
; ZVFBFA-NEXT: vsetvli zero, zero, e32, m1, ta, ma
637+
; ZVFBFA-NEXT: vfadd.vv v9, v9, v10
638+
; ZVFBFA-NEXT: vsetvli zero, zero, e16, mf2, ta, ma
639+
; ZVFBFA-NEXT: vfncvt.f.f.w v8, v9
623640
; ZVFBFA-NEXT: ret
624641
%vc = fadd <vscale x 2 x half> %va, %vb
625642
ret <vscale x 2 x half> %vc
@@ -645,8 +662,15 @@ define <vscale x 2 x half> @vfadd_vf_nxv2f16(<vscale x 2 x half> %va, half %b) {
645662
;
646663
; ZVFBFA-LABEL: vfadd_vf_nxv2f16:
647664
; ZVFBFA: # %bb.0:
648-
; ZVFBFA-NEXT: vsetvli a0, zero, e16, mf2, ta, ma
649-
; ZVFBFA-NEXT: vfadd.vf v8, v8, fa0
665+
; ZVFBFA-NEXT: fmv.x.w a0, fa0
666+
; ZVFBFA-NEXT: vsetvli a1, zero, e16, mf2, ta, ma
667+
; ZVFBFA-NEXT: vmv.v.x v9, a0
668+
; ZVFBFA-NEXT: vfwcvt.f.f.v v10, v8
669+
; ZVFBFA-NEXT: vfwcvt.f.f.v v8, v9
670+
; ZVFBFA-NEXT: vsetvli zero, zero, e32, m1, ta, ma
671+
; ZVFBFA-NEXT: vfadd.vv v9, v10, v8
672+
; ZVFBFA-NEXT: vsetvli zero, zero, e16, mf2, ta, ma
673+
; ZVFBFA-NEXT: vfncvt.f.f.w v8, v9
650674
; ZVFBFA-NEXT: ret
651675
%head = insertelement <vscale x 2 x half> poison, half %b, i32 0
652676
%splat = shufflevector <vscale x 2 x half> %head, <vscale x 2 x half> poison, <vscale x 2 x i32> zeroinitializer
@@ -675,7 +699,12 @@ define <vscale x 4 x half> @vfadd_vv_nxv4f16(<vscale x 4 x half> %va, <vscale x
675699
; ZVFBFA-LABEL: vfadd_vv_nxv4f16:
676700
; ZVFBFA: # %bb.0:
677701
; ZVFBFA-NEXT: vsetvli a0, zero, e16, m1, ta, ma
678-
; ZVFBFA-NEXT: vfadd.vv v8, v8, v9
702+
; ZVFBFA-NEXT: vfwcvt.f.f.v v10, v9
703+
; ZVFBFA-NEXT: vfwcvt.f.f.v v12, v8
704+
; ZVFBFA-NEXT: vsetvli zero, zero, e32, m2, ta, ma
705+
; ZVFBFA-NEXT: vfadd.vv v10, v12, v10
706+
; ZVFBFA-NEXT: vsetvli zero, zero, e16, m1, ta, ma
707+
; ZVFBFA-NEXT: vfncvt.f.f.w v8, v10
679708
; ZVFBFA-NEXT: ret
680709
%vc = fadd <vscale x 4 x half> %va, %vb
681710
ret <vscale x 4 x half> %vc
@@ -701,8 +730,15 @@ define <vscale x 4 x half> @vfadd_vf_nxv4f16(<vscale x 4 x half> %va, half %b) {
701730
;
702731
; ZVFBFA-LABEL: vfadd_vf_nxv4f16:
703732
; ZVFBFA: # %bb.0:
704-
; ZVFBFA-NEXT: vsetvli a0, zero, e16, m1, ta, ma
705-
; ZVFBFA-NEXT: vfadd.vf v8, v8, fa0
733+
; ZVFBFA-NEXT: fmv.x.w a0, fa0
734+
; ZVFBFA-NEXT: vsetvli a1, zero, e16, m1, ta, ma
735+
; ZVFBFA-NEXT: vmv.v.x v12, a0
736+
; ZVFBFA-NEXT: vfwcvt.f.f.v v10, v8
737+
; ZVFBFA-NEXT: vfwcvt.f.f.v v8, v12
738+
; ZVFBFA-NEXT: vsetvli zero, zero, e32, m2, ta, ma
739+
; ZVFBFA-NEXT: vfadd.vv v10, v10, v8
740+
; ZVFBFA-NEXT: vsetvli zero, zero, e16, m1, ta, ma
741+
; ZVFBFA-NEXT: vfncvt.f.f.w v8, v10
706742
; ZVFBFA-NEXT: ret
707743
%head = insertelement <vscale x 4 x half> poison, half %b, i32 0
708744
%splat = shufflevector <vscale x 4 x half> %head, <vscale x 4 x half> poison, <vscale x 4 x i32> zeroinitializer
@@ -731,7 +767,12 @@ define <vscale x 8 x half> @vfadd_vv_nxv8f16(<vscale x 8 x half> %va, <vscale x
731767
; ZVFBFA-LABEL: vfadd_vv_nxv8f16:
732768
; ZVFBFA: # %bb.0:
733769
; ZVFBFA-NEXT: vsetvli a0, zero, e16, m2, ta, ma
734-
; ZVFBFA-NEXT: vfadd.vv v8, v8, v10
770+
; ZVFBFA-NEXT: vfwcvt.f.f.v v12, v10
771+
; ZVFBFA-NEXT: vfwcvt.f.f.v v16, v8
772+
; ZVFBFA-NEXT: vsetvli zero, zero, e32, m4, ta, ma
773+
; ZVFBFA-NEXT: vfadd.vv v12, v16, v12
774+
; ZVFBFA-NEXT: vsetvli zero, zero, e16, m2, ta, ma
775+
; ZVFBFA-NEXT: vfncvt.f.f.w v8, v12
735776
; ZVFBFA-NEXT: ret
736777
%vc = fadd <vscale x 8 x half> %va, %vb
737778
ret <vscale x 8 x half> %vc
@@ -757,8 +798,15 @@ define <vscale x 8 x half> @vfadd_vf_nxv8f16(<vscale x 8 x half> %va, half %b) {
757798
;
758799
; ZVFBFA-LABEL: vfadd_vf_nxv8f16:
759800
; ZVFBFA: # %bb.0:
760-
; ZVFBFA-NEXT: vsetvli a0, zero, e16, m2, ta, ma
761-
; ZVFBFA-NEXT: vfadd.vf v8, v8, fa0
801+
; ZVFBFA-NEXT: fmv.x.w a0, fa0
802+
; ZVFBFA-NEXT: vsetvli a1, zero, e16, m2, ta, ma
803+
; ZVFBFA-NEXT: vmv.v.x v16, a0
804+
; ZVFBFA-NEXT: vfwcvt.f.f.v v12, v8
805+
; ZVFBFA-NEXT: vfwcvt.f.f.v v8, v16
806+
; ZVFBFA-NEXT: vsetvli zero, zero, e32, m4, ta, ma
807+
; ZVFBFA-NEXT: vfadd.vv v12, v12, v8
808+
; ZVFBFA-NEXT: vsetvli zero, zero, e16, m2, ta, ma
809+
; ZVFBFA-NEXT: vfncvt.f.f.w v8, v12
762810
; ZVFBFA-NEXT: ret
763811
%head = insertelement <vscale x 8 x half> poison, half %b, i32 0
764812
%splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
@@ -786,8 +834,15 @@ define <vscale x 8 x half> @vfadd_fv_nxv8f16(<vscale x 8 x half> %va, half %b) {
786834
;
787835
; ZVFBFA-LABEL: vfadd_fv_nxv8f16:
788836
; ZVFBFA: # %bb.0:
789-
; ZVFBFA-NEXT: vsetvli a0, zero, e16, m2, ta, ma
790-
; ZVFBFA-NEXT: vfadd.vf v8, v8, fa0
837+
; ZVFBFA-NEXT: fmv.x.w a0, fa0
838+
; ZVFBFA-NEXT: vsetvli a1, zero, e16, m2, ta, ma
839+
; ZVFBFA-NEXT: vmv.v.x v16, a0
840+
; ZVFBFA-NEXT: vfwcvt.f.f.v v12, v8
841+
; ZVFBFA-NEXT: vfwcvt.f.f.v v8, v16
842+
; ZVFBFA-NEXT: vsetvli zero, zero, e32, m4, ta, ma
843+
; ZVFBFA-NEXT: vfadd.vv v12, v8, v12
844+
; ZVFBFA-NEXT: vsetvli zero, zero, e16, m2, ta, ma
845+
; ZVFBFA-NEXT: vfncvt.f.f.w v8, v12
791846
; ZVFBFA-NEXT: ret
792847
%head = insertelement <vscale x 8 x half> poison, half %b, i32 0
793848
%splat = shufflevector <vscale x 8 x half> %head, <vscale x 8 x half> poison, <vscale x 8 x i32> zeroinitializer
@@ -816,7 +871,12 @@ define <vscale x 16 x half> @vfadd_vv_nxv16f16(<vscale x 16 x half> %va, <vscale
816871
; ZVFBFA-LABEL: vfadd_vv_nxv16f16:
817872
; ZVFBFA: # %bb.0:
818873
; ZVFBFA-NEXT: vsetvli a0, zero, e16, m4, ta, ma
819-
; ZVFBFA-NEXT: vfadd.vv v8, v8, v12
874+
; ZVFBFA-NEXT: vfwcvt.f.f.v v16, v12
875+
; ZVFBFA-NEXT: vfwcvt.f.f.v v24, v8
876+
; ZVFBFA-NEXT: vsetvli zero, zero, e32, m8, ta, ma
877+
; ZVFBFA-NEXT: vfadd.vv v16, v24, v16
878+
; ZVFBFA-NEXT: vsetvli zero, zero, e16, m4, ta, ma
879+
; ZVFBFA-NEXT: vfncvt.f.f.w v8, v16
820880
; ZVFBFA-NEXT: ret
821881
%vc = fadd <vscale x 16 x half> %va, %vb
822882
ret <vscale x 16 x half> %vc
@@ -842,8 +902,15 @@ define <vscale x 16 x half> @vfadd_vf_nxv16f16(<vscale x 16 x half> %va, half %b
842902
;
843903
; ZVFBFA-LABEL: vfadd_vf_nxv16f16:
844904
; ZVFBFA: # %bb.0:
845-
; ZVFBFA-NEXT: vsetvli a0, zero, e16, m4, ta, ma
846-
; ZVFBFA-NEXT: vfadd.vf v8, v8, fa0
905+
; ZVFBFA-NEXT: fmv.x.w a0, fa0
906+
; ZVFBFA-NEXT: vsetvli a1, zero, e16, m4, ta, ma
907+
; ZVFBFA-NEXT: vmv.v.x v24, a0
908+
; ZVFBFA-NEXT: vfwcvt.f.f.v v16, v8
909+
; ZVFBFA-NEXT: vfwcvt.f.f.v v8, v24
910+
; ZVFBFA-NEXT: vsetvli zero, zero, e32, m8, ta, ma
911+
; ZVFBFA-NEXT: vfadd.vv v16, v16, v8
912+
; ZVFBFA-NEXT: vsetvli zero, zero, e16, m4, ta, ma
913+
; ZVFBFA-NEXT: vfncvt.f.f.w v8, v16
847914
; ZVFBFA-NEXT: ret
848915
%head = insertelement <vscale x 16 x half> poison, half %b, i32 0
849916
%splat = shufflevector <vscale x 16 x half> %head, <vscale x 16 x half> poison, <vscale x 16 x i32> zeroinitializer
@@ -892,8 +959,34 @@ define <vscale x 32 x half> @vfadd_vv_nxv32f16(<vscale x 32 x half> %va, <vscale
892959
;
893960
; ZVFBFA-LABEL: vfadd_vv_nxv32f16:
894961
; ZVFBFA: # %bb.0:
895-
; ZVFBFA-NEXT: vsetvli a0, zero, e16, m8, ta, ma
896-
; ZVFBFA-NEXT: vfadd.vv v8, v8, v16
962+
; ZVFBFA-NEXT: addi sp, sp, -16
963+
; ZVFBFA-NEXT: .cfi_def_cfa_offset 16
964+
; ZVFBFA-NEXT: csrr a0, vlenb
965+
; ZVFBFA-NEXT: slli a0, a0, 3
966+
; ZVFBFA-NEXT: sub sp, sp, a0
967+
; ZVFBFA-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x08, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 8 * vlenb
968+
; ZVFBFA-NEXT: vsetvli a0, zero, e16, m4, ta, ma
969+
; ZVFBFA-NEXT: vfwcvt.f.f.v v24, v16
970+
; ZVFBFA-NEXT: addi a0, sp, 16
971+
; ZVFBFA-NEXT: vs8r.v v24, (a0) # vscale x 64-byte Folded Spill
972+
; ZVFBFA-NEXT: vfwcvt.f.f.v v0, v8
973+
; ZVFBFA-NEXT: vfwcvt.f.f.v v24, v20
974+
; ZVFBFA-NEXT: vfwcvt.f.f.v v16, v12
975+
; ZVFBFA-NEXT: vl8r.v v8, (a0) # vscale x 64-byte Folded Reload
976+
; ZVFBFA-NEXT: vsetvli zero, zero, e32, m8, ta, ma
977+
; ZVFBFA-NEXT: vfadd.vv v0, v0, v8
978+
; ZVFBFA-NEXT: vsetvli zero, zero, e16, m4, ta, ma
979+
; ZVFBFA-NEXT: vfncvt.f.f.w v8, v0
980+
; ZVFBFA-NEXT: vsetvli zero, zero, e32, m8, ta, ma
981+
; ZVFBFA-NEXT: vfadd.vv v16, v16, v24
982+
; ZVFBFA-NEXT: vsetvli zero, zero, e16, m4, ta, ma
983+
; ZVFBFA-NEXT: vfncvt.f.f.w v12, v16
984+
; ZVFBFA-NEXT: csrr a0, vlenb
985+
; ZVFBFA-NEXT: slli a0, a0, 3
986+
; ZVFBFA-NEXT: add sp, sp, a0
987+
; ZVFBFA-NEXT: .cfi_def_cfa sp, 16
988+
; ZVFBFA-NEXT: addi sp, sp, 16
989+
; ZVFBFA-NEXT: .cfi_def_cfa_offset 0
897990
; ZVFBFA-NEXT: ret
898991
%vc = fadd <vscale x 32 x half> %va, %vb
899992
ret <vscale x 32 x half> %vc
@@ -945,8 +1038,39 @@ define <vscale x 32 x half> @vfadd_vf_nxv32f16(<vscale x 32 x half> %va, half %b
9451038
;
9461039
; ZVFBFA-LABEL: vfadd_vf_nxv32f16:
9471040
; ZVFBFA: # %bb.0:
948-
; ZVFBFA-NEXT: vsetvli a0, zero, e16, m8, ta, ma
949-
; ZVFBFA-NEXT: vfadd.vf v8, v8, fa0
1041+
; ZVFBFA-NEXT: addi sp, sp, -16
1042+
; ZVFBFA-NEXT: .cfi_def_cfa_offset 16
1043+
; ZVFBFA-NEXT: csrr a0, vlenb
1044+
; ZVFBFA-NEXT: slli a0, a0, 3
1045+
; ZVFBFA-NEXT: sub sp, sp, a0
1046+
; ZVFBFA-NEXT: .cfi_escape 0x0f, 0x0d, 0x72, 0x00, 0x11, 0x10, 0x22, 0x11, 0x08, 0x92, 0xa2, 0x38, 0x00, 0x1e, 0x22 # sp + 16 + 8 * vlenb
1047+
; ZVFBFA-NEXT: fmv.x.w a0, fa0
1048+
; ZVFBFA-NEXT: vsetvli a1, zero, e16, m4, ta, ma
1049+
; ZVFBFA-NEXT: vfwcvt.f.f.v v16, v8
1050+
; ZVFBFA-NEXT: addi a1, sp, 16
1051+
; ZVFBFA-NEXT: vs8r.v v16, (a1) # vscale x 64-byte Folded Spill
1052+
; ZVFBFA-NEXT: vfwcvt.f.f.v v24, v12
1053+
; ZVFBFA-NEXT: vsetvli a1, zero, e16, m8, ta, ma
1054+
; ZVFBFA-NEXT: vmv.v.x v8, a0
1055+
; ZVFBFA-NEXT: vsetvli a0, zero, e16, m4, ta, ma
1056+
; ZVFBFA-NEXT: vfwcvt.f.f.v v0, v8
1057+
; ZVFBFA-NEXT: vfwcvt.f.f.v v16, v12
1058+
; ZVFBFA-NEXT: addi a0, sp, 16
1059+
; ZVFBFA-NEXT: vl8r.v v8, (a0) # vscale x 64-byte Folded Reload
1060+
; ZVFBFA-NEXT: vsetvli zero, zero, e32, m8, ta, ma
1061+
; ZVFBFA-NEXT: vfadd.vv v0, v8, v0
1062+
; ZVFBFA-NEXT: vsetvli zero, zero, e16, m4, ta, ma
1063+
; ZVFBFA-NEXT: vfncvt.f.f.w v8, v0
1064+
; ZVFBFA-NEXT: vsetvli zero, zero, e32, m8, ta, ma
1065+
; ZVFBFA-NEXT: vfadd.vv v16, v24, v16
1066+
; ZVFBFA-NEXT: vsetvli zero, zero, e16, m4, ta, ma
1067+
; ZVFBFA-NEXT: vfncvt.f.f.w v12, v16
1068+
; ZVFBFA-NEXT: csrr a0, vlenb
1069+
; ZVFBFA-NEXT: slli a0, a0, 3
1070+
; ZVFBFA-NEXT: add sp, sp, a0
1071+
; ZVFBFA-NEXT: .cfi_def_cfa sp, 16
1072+
; ZVFBFA-NEXT: addi sp, sp, 16
1073+
; ZVFBFA-NEXT: .cfi_def_cfa_offset 0
9501074
; ZVFBFA-NEXT: ret
9511075
%head = insertelement <vscale x 32 x half> poison, half %b, i32 0
9521076
%splat = shufflevector <vscale x 32 x half> %head, <vscale x 32 x half> poison, <vscale x 32 x i32> zeroinitializer

0 commit comments

Comments
 (0)