Lines Matching refs:vt

728 class DSReadPat <DS_Pseudo inst, ValueType vt, PatFrag frag, int gds=0> : GCNPat <
729 (vt (frag (DS1Addr1Offset i32:$ptr, i16:$offset))),
733 multiclass DSReadPat_mc<DS_Pseudo inst, ValueType vt, string frag> {
736 def : DSReadPat<inst, vt, !cast<PatFrag>(frag#"_m0")>;
740 def : DSReadPat<!cast<DS_Pseudo>(!cast<string>(inst)#"_gfx9"), vt, !cast<PatFrag>(frag)>;
744 class DSReadPat_D16 <DS_Pseudo inst, PatFrag frag, ValueType vt> : GCNPat <
745 (frag (DS1Addr1Offset i32:$ptr, i16:$offset), vt:$in),
761 foreach vt = Reg32Types.types in {
762 defm : DSReadPat_mc <DS_READ_B32, vt, "load_local">;
788 class DSWritePat <DS_Pseudo inst, ValueType vt, PatFrag frag, int gds=0> : GCNPat <
789 (frag vt:$value, (DS1Addr1Offset i32:$ptr, i16:$offset)),
790 (inst $ptr, getVregSrcForVT<vt>.ret:$value, offset:$offset, (i1 gds))
793 multiclass DSWritePat_mc <DS_Pseudo inst, ValueType vt, string frag> {
795 def : DSWritePat<inst, vt, !cast<PatFrag>(frag#"_m0")>;
799 def : DSWritePat<!cast<DS_Pseudo>(!cast<string>(inst)#"_gfx9"), vt, !cast<PatFrag>(frag)>;
805 class DSAtomicWritePat <DS_Pseudo inst, ValueType vt, PatFrag frag> : GCNPat <
806 (frag (DS1Addr1Offset i32:$ptr, i16:$offset), vt:$value),
807 (inst $ptr, getVregSrcForVT<vt>.ret:$value, offset:$offset, (i1 0))
810 multiclass DSAtomicWritePat_mc <DS_Pseudo inst, ValueType vt, string frag> {
812 def : DSAtomicWritePat<inst, vt, !cast<PatFrag>(frag#"_m0")>;
816 def : DSAtomicWritePat<!cast<DS_Pseudo>(!cast<string>(inst)#"_gfx9"), vt, !cast<PatFrag>(frag)>;
825 foreach vt = Reg32Types.types in {
826 defm : DSWritePat_mc <DS_WRITE_B32, vt, "store_local">;
841 class DS64Bit4ByteAlignedReadPat<DS_Pseudo inst, ValueType vt, PatFrag frag> : GCNPat <
842 (vt:$value (frag (DS64Bit4ByteAligned i32:$ptr, i8:$offset0, i8:$offset1))),
846 class DS64Bit4ByteAlignedWritePat<DS_Pseudo inst, ValueType vt, PatFrag frag> : GCNPat<
847 (frag vt:$value, (DS64Bit4ByteAligned i32:$ptr, i8:$offset0, i8:$offset1)),
853 class DS128Bit8ByteAlignedReadPat<DS_Pseudo inst, ValueType vt, PatFrag frag> : GCNPat <
854 (vt:$value (frag (DS128Bit8ByteAligned i32:$ptr, i8:$offset0, i8:$offset1))),
858 class DS128Bit8ByteAlignedWritePat<DS_Pseudo inst, ValueType vt, PatFrag frag> : GCNPat<
859 (frag vt:$value, (DS128Bit8ByteAligned i32:$ptr, i8:$offset0, i8:$offset1)),
865 multiclass DS64Bit4ByteAlignedPat_mc<ValueType vt> {
867 def : DS64Bit4ByteAlignedReadPat<DS_READ2_B32, vt, load_local_m0>;
868 def : DS64Bit4ByteAlignedWritePat<DS_WRITE2_B32, vt, store_local_m0>;
872 def : DS64Bit4ByteAlignedReadPat<DS_READ2_B32_gfx9, vt, load_local>;
873 def : DS64Bit4ByteAlignedWritePat<DS_WRITE2_B32_gfx9, vt, store_local>;
877 multiclass DS128Bit8ByteAlignedPat_mc<ValueType vt> {
879 def : DS128Bit8ByteAlignedReadPat<DS_READ2_B64, vt, load_local_m0>;
880 def : DS128Bit8ByteAlignedWritePat<DS_WRITE2_B64, vt, store_local_m0>;
884 def : DS128Bit8ByteAlignedReadPat<DS_READ2_B64_gfx9, vt, load_local>;
885 def : DS128Bit8ByteAlignedWritePat<DS_WRITE2_B64_gfx9, vt, store_local>;
891 foreach vt = VReg_64.RegTypes in {
892 defm : DS64Bit4ByteAlignedPat_mc<vt>;
895 foreach vt = VReg_128.RegTypes in {
896 defm : DS128Bit8ByteAlignedPat_mc<vt>;
903 foreach vt = VReg_64.RegTypes in {
904 defm : DSReadPat_mc <DS_READ_B64, vt, "load_align8_local">;
905 defm : DSWritePat_mc <DS_WRITE_B64, vt, "store_align8_local">;
910 foreach vt = VReg_96.RegTypes in {
911 defm : DSReadPat_mc <DS_READ_B96, vt, "load_align16_local">;
912 defm : DSWritePat_mc <DS_WRITE_B96, vt, "store_align16_local">;
915 foreach vt = VReg_128.RegTypes in {
916 defm : DSReadPat_mc <DS_READ_B128, vt, "load_align16_local">;
917 defm : DSWritePat_mc <DS_WRITE_B128, vt, "store_align16_local">;
926 foreach vt = VReg_64.RegTypes in {
927 defm : DSReadPat_mc <DS_READ_B64, vt, "load_align_less_than_4_local">;
928 defm : DSWritePat_mc <DS_WRITE_B64, vt, "store_align_less_than_4_local">;
933 foreach vt = VReg_96.RegTypes in {
934 defm : DSReadPat_mc <DS_READ_B96, vt, "load_local">;
935 defm : DSWritePat_mc <DS_WRITE_B96, vt, "store_local">;
942 foreach vt = VReg_128.RegTypes in {
943 defm : DSReadPat_mc <DS_READ_B128, vt, "load_align_less_than_4_local">;
944 defm : DSWritePat_mc <DS_WRITE_B128, vt, "store_align_less_than_4_local">;
953 class DSAtomicRetPat<DS_Pseudo inst, ValueType vt, PatFrag frag, int complexity = 0,
954 bit gds=0> : GCNPat <(frag (DS1Addr1Offset i32:$ptr, i16:$offset), vt:$value),
955 (inst $ptr, getVregSrcForVT<vt>.ret:$value, offset:$offset, (i1 gds))> {
959 multiclass DSAtomicRetPat_mc<DS_Pseudo inst, ValueType vt, string frag> {
961 def : DSAtomicRetPat<inst, vt, !cast<PatFrag>(frag#"_local_m0_"#vt.Size)>;
965 def : DSAtomicRetPat<!cast<DS_Pseudo>(!cast<string>(inst)#"_gfx9"), vt,
966 !cast<PatFrag>(frag#"_local_"#vt.Size)>;
969 def : DSAtomicRetPat<inst, vt, !cast<PatFrag>(frag#"_region_m0_"#vt.Size),
974 ValueType vt, string frag> {
976 def : DSAtomicRetPat<inst, vt,
977 !cast<PatFrag>(frag#"_local_m0_"#vt.Size)>;
978 def : DSAtomicRetPat<noRetInst, vt,
979 !cast<PatFrag>(frag#"_local_m0_noret_"#vt.Size), /* complexity */ 1>;
983 def : DSAtomicRetPat<!cast<DS_Pseudo>(!cast<string>(inst)#"_gfx9"), vt,
984 !cast<PatFrag>(frag#"_local_"#vt.Size)>;
985 def : DSAtomicRetPat<!cast<DS_Pseudo>(!cast<string>(noRetInst)#"_gfx9"), vt,
986 !cast<PatFrag>(frag#"_local_noret_"#vt.Size), /* complexity */ 1>;
989 def : DSAtomicRetPat<inst, vt,
990 !cast<PatFrag>(frag#"_region_m0_"#vt.Size),
992 def : DSAtomicRetPat<noRetInst, vt,
993 !cast<PatFrag>(frag#"_region_m0_noret_"#vt.Size),
1001 class DSAtomicCmpXChgSwapped<DS_Pseudo inst, ValueType vt, PatFrag frag,
1003 (frag (DS1Addr1Offset i32:$ptr, i16:$offset), vt:$cmp, vt:$swap),
1004 …(inst $ptr, getVregSrcForVT<vt>.ret:$cmp, getVregSrcForVT<vt>.ret:$swap, offset:$offset, (i1 gds))…
1008 multiclass DSAtomicCmpXChgSwapped_mc<DS_Pseudo inst, DS_Pseudo noRetInst, ValueType vt,
1011 def : DSAtomicCmpXChgSwapped<inst, vt, !cast<PatFrag>(frag#"_local_m0_"#vt.Size)>;
1012 def : DSAtomicCmpXChgSwapped<noRetInst, vt, !cast<PatFrag>(frag#"_local_m0_noret_"#vt.Size),
1017 def : DSAtomicCmpXChgSwapped<!cast<DS_Pseudo>(!cast<string>(inst)#"_gfx9"), vt,
1018 !cast<PatFrag>(frag#"_local_"#vt.Size)>;
1019 def : DSAtomicCmpXChgSwapped<!cast<DS_Pseudo>(!cast<string>(noRetInst)#"_gfx9"), vt,
1020 !cast<PatFrag>(frag#"_local_noret_"#vt.Size),
1024 def : DSAtomicCmpXChgSwapped<inst, vt, !cast<PatFrag>(frag#"_region_m0_"#vt.Size),
1026 def : DSAtomicCmpXChgSwapped<noRetInst, vt, !cast<PatFrag>(frag#"_region_m0_noret_"#vt.Size),
1033 class DSAtomicCmpXChg<DS_Pseudo inst, ValueType vt, PatFrag frag,
1035 (frag (DS1Addr1Offset i32:$ptr, i16:$offset), vt:$cmp, vt:$swap),
1036 …(inst $ptr, getVregSrcForVT<vt>.ret:$swap, getVregSrcForVT<vt>.ret:$cmp, offset:$offset, (i1 gds))…
1040 multiclass DSAtomicCmpXChg_mc<DS_Pseudo inst, DS_Pseudo noRetInst, ValueType vt, string frag> {
1042 def : DSAtomicCmpXChg<!cast<DS_Pseudo>(!cast<string>(inst)#"_gfx9"), vt,
1043 !cast<PatFrag>(frag#"_local_"#vt.Size)>;
1044 def : DSAtomicCmpXChg<!cast<DS_Pseudo>(!cast<string>(noRetInst)#"_gfx9"), vt,
1045 !cast<PatFrag>(frag#"_local_noret_"#vt.Size), /* complexity */ 1>;
1047 def : DSAtomicCmpXChg<inst, vt, !cast<PatFrag>(frag#"_region_m0_"#vt.Size),
1049 def : DSAtomicCmpXChg<noRetInst, vt, !cast<PatFrag>(frag#"_region_m0_noret_"#vt.Size),