• Home
  • Raw
  • Download

Lines Matching refs:opName

717 class SOP1_Pseudo <string opName, dag outs, dag ins, list<dag> pattern> :
719 SIMCInstr<opName, SIEncodingFamily.NONE> {
724 class SOP1_Real_si <sop1 op, string opName, dag outs, dag ins, string asm> :
727 SIMCInstr<opName, SIEncodingFamily.SI> {
734 class SOP1_Real_vi <sop1 op, string opName, dag outs, dag ins, string asm> :
737 SIMCInstr<opName, SIEncodingFamily.VI> {
744 multiclass SOP1_m <sop1 op, string opName, dag outs, dag ins, string asm,
747 def "" : SOP1_Pseudo <opName, outs, ins, pattern>;
749 def _si : SOP1_Real_si <op, opName, outs, ins, asm>;
751 def _vi : SOP1_Real_vi <op, opName, outs, ins, asm>;
755 multiclass SOP1_32 <sop1 op, string opName, list<dag> pattern> : SOP1_m <
756 op, opName, (outs SReg_32:$sdst), (ins SSrc_32:$src0),
757 opName#" $sdst, $src0", pattern
760 multiclass SOP1_64 <sop1 op, string opName, list<dag> pattern> : SOP1_m <
761 op, opName, (outs SReg_64:$sdst), (ins SSrc_64:$src0),
762 opName#" $sdst, $src0", pattern
766 multiclass SOP1_64_0 <sop1 op, string opName, list<dag> pattern> {
767 def "" : SOP1_Pseudo <opName, (outs SReg_64:$sdst), (ins), pattern>;
769 def _si : SOP1_Real_si <op, opName, (outs SReg_64:$sdst), (ins),
770 opName#" $sdst"> {
774 def _vi : SOP1_Real_vi <op, opName, (outs SReg_64:$sdst), (ins),
775 opName#" $sdst"> {
781 multiclass SOP1_1 <sop1 op, string opName, list<dag> pattern> {
782 def "" : SOP1_Pseudo <opName, (outs), (ins SReg_64:$src0), pattern>;
784 def _si : SOP1_Real_si <op, opName, (outs), (ins SReg_64:$src0),
785 opName#" $src0"> {
789 def _vi : SOP1_Real_vi <op, opName, (outs), (ins SReg_64:$src0),
790 opName#" $src0"> {
796 multiclass SOP1_32_64 <sop1 op, string opName, list<dag> pattern> : SOP1_m <
797 op, opName, (outs SReg_32:$sdst), (ins SSrc_64:$src0),
798 opName#" $sdst, $src0", pattern
802 multiclass SOP1_64_32 <sop1 op, string opName, list<dag> pattern> : SOP1_m <
803 op, opName, (outs SReg_64:$sdst), (ins SSrc_32:$src0),
804 opName#" $sdst, $src0", pattern
807 class SOP2_Pseudo<string opName, dag outs, dag ins, list<dag> pattern> :
809 SIMCInstr<opName, SIEncodingFamily.NONE> {
821 class SOP2_Real_si<sop2 op, string opName, dag outs, dag ins, string asm> :
824 SIMCInstr<opName, SIEncodingFamily.SI> {
830 class SOP2_Real_vi<sop2 op, string opName, dag outs, dag ins, string asm> :
833 SIMCInstr<opName, SIEncodingFamily.VI> {
839 multiclass SOP2_m <sop2 op, string opName, dag outs, dag ins, string asm,
842 def "" : SOP2_Pseudo <opName, outs, ins, pattern>;
844 def _si : SOP2_Real_si <op, opName, outs, ins, asm>;
846 def _vi : SOP2_Real_vi <op, opName, outs, ins, asm>;
850 multiclass SOP2_32 <sop2 op, string opName, list<dag> pattern> : SOP2_m <
851 op, opName, (outs SReg_32:$sdst), (ins SSrc_32:$src0, SSrc_32:$src1),
852 opName#" $sdst, $src0, $src1", pattern
855 multiclass SOP2_64 <sop2 op, string opName, list<dag> pattern> : SOP2_m <
856 op, opName, (outs SReg_64:$sdst), (ins SSrc_64:$src0, SSrc_64:$src1),
857 opName#" $sdst, $src0, $src1", pattern
860 multiclass SOP2_64_32 <sop2 op, string opName, list<dag> pattern> : SOP2_m <
861 op, opName, (outs SReg_64:$sdst), (ins SSrc_64:$src0, SSrc_32:$src1),
862 opName#" $sdst, $src0, $src1", pattern
865 multiclass SOP2_64_32_32 <sop2 op, string opName, list<dag> pattern> : SOP2_m <
866 op, opName, (outs SReg_64:$sdst), (ins SSrc_32:$src0, SSrc_32:$src1),
867 opName#" $sdst, $src0, $src1", pattern
871 string opName, list<dag> pattern = []> : SOPC <
873 opName#" $src0, $src1", pattern > {
877 string opName, PatLeaf cond> : SOPC_Base <
878 op, rc, rc, opName,
882 class SOPC_CMP_32<bits<7> op, string opName, PatLeaf cond = COND_NULL>
883 : SOPC_Helper<op, SSrc_32, i32, opName, cond>;
885 class SOPC_32<bits<7> op, string opName, list<dag> pattern = []>
886 : SOPC_Base<op, SSrc_32, SSrc_32, opName, pattern>;
888 class SOPC_64_32<bits<7> op, string opName, list<dag> pattern = []>
889 : SOPC_Base<op, SSrc_64, SSrc_32, opName, pattern>;
891 class SOPK_Pseudo <string opName, dag outs, dag ins, list<dag> pattern> :
893 SIMCInstr<opName, SIEncodingFamily.NONE> {
898 class SOPK_Real_si <sopk op, string opName, dag outs, dag ins, string asm> :
901 SIMCInstr<opName, SIEncodingFamily.SI> {
908 class SOPK_Real_vi <sopk op, string opName, dag outs, dag ins, string asm> :
911 SIMCInstr<opName, SIEncodingFamily.VI> {
918 multiclass SOPK_m <sopk op, string opName, dag outs, dag ins, string opAsm,
919 string asm = opName#opAsm> {
920 def "" : SOPK_Pseudo <opName, outs, ins, []>;
922 def _si : SOPK_Real_si <op, opName, outs, ins, asm>;
924 def _vi : SOPK_Real_vi <op, opName, outs, ins, asm>;
928 multiclass SOPK_32 <sopk op, string opName, list<dag> pattern> {
929 def "" : SOPK_Pseudo <opName, (outs SReg_32:$sdst), (ins u16imm:$simm16),
932 def _si : SOPK_Real_si <op, opName, (outs SReg_32:$sdst), (ins u16imm:$simm16),
933 opName#" $sdst, $simm16">;
935 def _vi : SOPK_Real_vi <op, opName, (outs SReg_32:$sdst), (ins u16imm:$simm16),
936 opName#" $sdst, $simm16">;
939 multiclass SOPK_SCC <sopk op, string opName, list<dag> pattern> {
940 def "" : SOPK_Pseudo <opName, (outs),
946 def _si : SOPK_Real_si <op, opName, (outs),
947 (ins SReg_32:$sdst, u16imm:$simm16), opName#" $sdst, $simm16"> {
951 def _vi : SOPK_Real_vi <op, opName, (outs),
952 (ins SReg_32:$sdst, u16imm:$simm16), opName#" $sdst, $simm16"> {
957 multiclass SOPK_32TIE <sopk op, string opName, list<dag> pattern> : SOPK_m <
958 op, opName, (outs SReg_32:$sdst), (ins SReg_32:$src0, u16imm:$simm16),
962 multiclass SOPK_IMM32 <sopk op, string opName, dag outs, dag ins,
963 string argAsm, string asm = opName#argAsm> {
965 def "" : SOPK_Pseudo <opName, outs, ins, []>;
969 SIMCInstr<opName, SIEncodingFamily.SI> {
978 SIMCInstr<opName, SIEncodingFamily.VI> {
989 class SMRD_Pseudo <string opName, dag outs, dag ins, list<dag> pattern> :
991 SIMCInstr<opName, SIEncodingFamily.NONE> {
996 class SMRD_IMM_Real_si <bits<5> op, string opName, dag outs, dag ins,
1000 SIMCInstr<opName, SIEncodingFamily.SI> {
1006 class SMRD_SOFF_Real_si <bits<5> op, string opName, dag outs, dag ins,
1010 SIMCInstr<opName, SIEncodingFamily.SI> {
1017 class SMRD_IMM_Real_vi <bits<8> op, string opName, dag outs, dag ins,
1021 SIMCInstr<opName, SIEncodingFamily.VI> {
1027 class SMRD_SOFF_Real_vi <bits<8> op, string opName, dag outs, dag ins,
1031 SIMCInstr<opName, SIEncodingFamily.VI> {
1038 multiclass SMRD_IMM_m <smrd op, string opName, dag outs, dag ins,
1041 def "" : SMRD_Pseudo <opName, outs, ins, pattern>;
1043 def _si : SMRD_IMM_Real_si <op.SI, opName, outs, ins, asm>;
1048 def _vi : SMRD_IMM_Real_vi <op.VI, opName, outs, ins, asm>;
1052 multiclass SMRD_SOFF_m <smrd op, string opName, dag outs, dag ins,
1055 def "" : SMRD_Pseudo <opName, outs, ins, pattern>;
1057 def _si : SMRD_SOFF_Real_si <op.SI, opName, outs, ins, asm>;
1062 def _vi : SMRD_SOFF_Real_vi <op.VI, opName, outs, ins, asm>;
1066 multiclass SMRD_Special <smrd op, string opName, dag outs,
1071 def "" : SMRD_Pseudo <opName, outs, (ins), pattern>;
1074 def _si : SMRD_SOFF_Real_si <op.SI, opName, outs, (ins), opName#opStr>;
1077 def _vi : SMRD_SOFF_Real_vi <op.VI, opName, outs, (ins), opName#opStr>;
1083 multiclass SMRD_Inval <smrd op, string opName,
1086 defm : SMRD_Special<op, opName, (outs), 0, "", [(node)]>;
1090 class SMEM_Inval <bits<8> op, string opName, SDPatternOperator node> :
1091 SMRD_SOFF_Real_vi<op, opName, (outs), (ins), opName, [(node)]> {
1100 class SMEM_Ret <bits<8> op, string opName, SDPatternOperator node> :
1101 SMRD_SOFF_Real_vi<op, opName, (outs SReg_64:$sdst), (ins),
1102 opName#" $sdst", [(set i64:$sdst, (node))]> {
1111 multiclass SMRD_Helper <smrd op, string opName, RegisterClass baseClass,
1114 op, opName#"_IMM", (outs dstClass:$sdst),
1116 opName#" $sdst, $sbase, $offset", []
1121 opName#" $sdst, $sbase, $offset", []>, SMRD_IMMe_ci <op.SI> {
1127 op, opName#"_SGPR", (outs dstClass:$sdst),
1129 opName#" $sdst, $sbase, $soff", []
1673 class VOP <string opName> {
1674 string OpName = opName;
1687 class VOP1_Pseudo <dag outs, dag ins, list<dag> pattern, string opName> :
1689 VOP <opName>,
1690 SIMCInstr <opName#"_e32", SIEncodingFamily.NONE>,
1691 MnemonicAlias<opName#"_e32", opName> {
1699 class VOP1_Real_si <string opName, vop1 op, dag outs, dag ins, string asm> :
1701 SIMCInstr <opName#"_e32", SIEncodingFamily.SI> {
1707 class VOP1_Real_vi <string opName, vop1 op, dag outs, dag ins, string asm> :
1709 SIMCInstr <opName#"_e32", SIEncodingFamily.VI> {
1715 multiclass VOP1_m <vop1 op, string opName, VOPProfile p, list<dag> pattern,
1716 string asm = opName#p.Asm32> {
1717 def "" : VOP1_Pseudo <p.Outs, p.Ins32, pattern, opName>;
1719 def _si : VOP1_Real_si <opName, op, p.Outs, p.Ins32, asm>;
1721 def _vi : VOP1_Real_vi <opName, op, p.Outs, p.Ins32, asm>;
1725 class VOP1_DPP <vop1 op, string opName, VOPProfile p> :
1727 VOP_DPP <p.OutsDPP, p.InsDPP, opName#p.AsmDPP, [], p.HasModifiers> {
1758 class VOP1_SDWA <vop1 op, string opName, VOPProfile p> :
1760 VOP_SDWA <p.OutsSDWA, p.InsSDWA, opName#p.AsmSDWA, [], p.HasModifiers>,
1768 multiclass VOP1SI_m <vop1 op, string opName, VOPProfile p, list<dag> pattern,
1769 string asm = opName#p.Asm32> {
1771 def "" : VOP1_Pseudo <p.Outs, p.Ins32, pattern, opName>;
1773 def _si : VOP1_Real_si <opName, op, p.Outs, p.Ins32, asm>;
1776 class VOP2_Pseudo <dag outs, dag ins, list<dag> pattern, string opName> :
1778 VOP <opName>,
1779 SIMCInstr<opName#"_e32", SIEncodingFamily.NONE>,
1780 MnemonicAlias<opName#"_e32", opName> {
1785 class VOP2_Real_si <string opName, vop2 op, dag outs, dag ins, string asm> :
1786 VOP2 <op.SI, outs, ins, opName#asm, []>,
1787 SIMCInstr <opName#"_e32", SIEncodingFamily.SI> {
1793 class VOP2_Real_vi <string opName, vop2 op, dag outs, dag ins, string asm> :
1794 VOP2 <op.VI, outs, ins, opName#asm, []>,
1795 SIMCInstr <opName#"_e32", SIEncodingFamily.VI> {
1801 multiclass VOP2SI_m <vop2 op, string opName, VOPProfile p, list<dag> pattern,
1804 def "" : VOP2_Pseudo <p.Outs32, p.Ins32, pattern, opName>,
1805 VOP2_REV<revOp#"_e32", !eq(revOp, opName)>;
1807 def _si : VOP2_Real_si <opName, op, p.Outs32, p.Ins32, p.Asm32>;
1810 multiclass VOP2_m <vop2 op, string opName, VOPProfile p, list <dag> pattern,
1813 def "" : VOP2_Pseudo <p.Outs32, p.Ins32, pattern, opName>,
1814 VOP2_REV<revOp#"_e32", !eq(revOp, opName)>;
1816 def _si : VOP2_Real_si <opName, op, p.Outs32, p.Ins32, p.Asm32>;
1818 def _vi : VOP2_Real_vi <opName, op, p.Outs32, p.Ins32, p.Asm32>;
1822 class VOP2_DPP <vop2 op, string opName, VOPProfile p> :
1824 VOP_DPP <p.OutsDPP, p.InsDPP, opName#p.AsmDPP, [], p.HasModifiers> {
1832 class VOP2_SDWA <vop2 op, string opName, VOPProfile p> :
1834 VOP_SDWA <p.OutsSDWA, p.InsSDWA, opName#p.AsmSDWA, [], p.HasModifiers>,
1864 class VOP3_Pseudo <dag outs, dag ins, list<dag> pattern, string opName,
1867 VOP <opName>,
1868 SIMCInstr<opName#"_e64", SIEncodingFamily.NONE>,
1869 MnemonicAlias<opName#"_e64", opName> {
1877 class VOP3_Real_si <bits<9> op, dag outs, dag ins, string asm, string opName,
1881 SIMCInstr<opName#"_e64", SIEncodingFamily.SI> {
1887 class VOP3_Real_vi <bits<10> op, dag outs, dag ins, string asm, string opName,
1891 SIMCInstr <opName#"_e64", SIEncodingFamily.VI> {
1897 class VOP3_C_Real_si <bits<9> op, dag outs, dag ins, string asm, string opName,
1901 SIMCInstr<opName#"_e64", SIEncodingFamily.SI> {
1907 class VOP3_C_Real_vi <bits<10> op, dag outs, dag ins, string asm, string opName,
1911 SIMCInstr <opName#"_e64", SIEncodingFamily.VI> {
1917 class VOP3b_Real_si <bits<9> op, dag outs, dag ins, string asm, string opName,
1921 SIMCInstr<opName#"_e64", SIEncodingFamily.SI> {
1927 class VOP3b_Real_vi <bits<10> op, dag outs, dag ins, string asm, string opName,
1931 SIMCInstr <opName#"_e64", SIEncodingFamily.VI> {
1937 class VOP3e_Real_si <bits<9> op, dag outs, dag ins, string asm, string opName,
1941 SIMCInstr<opName#"_e64", SIEncodingFamily.SI> {
1947 class VOP3e_Real_vi <bits<10> op, dag outs, dag ins, string asm, string opName,
1951 SIMCInstr <opName#"_e64", SIEncodingFamily.VI> {
1958 string opName, int NumSrcArgs, bit HasMods = 1, bit VOP3Only = 0> {
1960 def "" : VOP3_Pseudo <outs, ins, pattern, opName>;
1962 def _si : VOP3_Real_si <op.SI3, outs, ins, asm, opName, HasMods, VOP3Only>,
1966 def _vi : VOP3_Real_vi <op.VI3, outs, ins, asm, opName, HasMods, VOP3Only>,
1973 list<dag> pattern, string opName, bit HasMods = 1> {
1975 def "" : VOP3_Pseudo <outs, ins, pattern, opName, HasMods>;
1977 def _si : VOP3_Real_si <op.SI3, outs, ins, asm, opName, HasMods>,
1980 def _vi : VOP3_Real_vi <op.VI3, outs, ins, asm, opName, HasMods>,
1985 list<dag> pattern, string opName, bit HasMods = 1> {
1987 def "" : VOP3_Pseudo <outs, ins, pattern, opName, HasMods>;
1989 def _si : VOP3_Real_si <op.SI3, outs, ins, asm, opName, HasMods>,
1995 list<dag> pattern, string opName, string revOp,
1998 def "" : VOP3_Pseudo <outs, ins, pattern, opName, HasMods>,
1999 VOP2_REV<revOp#"_e64", !eq(revOp, opName)>;
2001 def _si : VOP3_Real_si <op.SI3, outs, ins, asm, opName, HasMods>,
2004 def _vi : VOP3_Real_vi <op.VI3, outs, ins, asm, opName, HasMods>,
2009 list<dag> pattern, string opName, string revOp,
2012 def "" : VOP3_Pseudo <outs, ins, pattern, opName, HasMods>,
2013 VOP2_REV<revOp#"_e64", !eq(revOp, opName)>;
2015 def _si : VOP3_Real_si <op.SI3, outs, ins, asm, opName, HasMods>,
2024 list<dag> pattern, string opName, string revOp,
2026 def "" : VOP3_Pseudo <outs, ins, pattern, opName, HasMods, VOP3Only>;
2028 def _si : VOP3b_Real_si <op.SI3, outs, ins, asm, opName, HasMods, VOP3Only>,
2031 def _vi : VOP3b_Real_vi <op.VI3, outs, ins, asm, opName, HasMods, VOP3Only>,
2037 list<dag> pattern, string opName, string revOp,
2039 def "" : VOP3_Pseudo <outs, ins, pattern, opName, HasMods, VOP3Only>;
2041 def _si : VOP3e_Real_si <op.SI3, outs, ins, asm, opName, HasMods, VOP3Only>,
2044 def _vi : VOP3e_Real_vi <op.VI3, outs, ins, asm, opName, HasMods, VOP3Only>,
2049 list<dag> pattern, string opName,
2053 def "" : VOP3_Pseudo <outs, ins, pattern, opName, HasMods>,
2054 VOP2_REV<revOp#"_e64", !eq(revOp, opName)> {
2059 def _si : VOP3_C_Real_si <op.SI3, outs, ins, asm, opName, HasMods>,
2065 def _vi : VOP3_C_Real_vi <op.VI3, outs, ins, asm, opName, HasMods>,
2073 multiclass VOP2SI_3VI_m <vop3 op, string opName, dag outs, dag ins,
2077 SIMCInstr<opName, SIEncodingFamily.NONE>;
2081 SIMCInstr <opName, SIEncodingFamily.SI> {
2090 SIMCInstr <opName, SIEncodingFamily.VI> {
2097 multiclass VOP1_Helper <vop1 op, string opName, VOPProfile p, list<dag> pat32,
2100 defm _e32 : VOP1_m <op, opName, p, pat32>;
2102 defm _e64 : VOP3_1_m <op, p.Outs, p.Ins64, opName#p.Asm64, pat64, opName,
2105 def _dpp : VOP1_DPP <op, opName, p>;
2107 def _sdwa : VOP1_SDWA <op, opName, p>;
2110 multiclass VOP1Inst <vop1 op, string opName, VOPProfile P,
2112 op, opName, P, [],
2119 multiclass VOP1InstSI <vop1 op, string opName, VOPProfile P,
2122 defm _e32 : VOP1SI_m <op, opName, P, []>;
2124 defm _e64 : VOP3SI_1_m <op, P.Outs, P.Ins64, opName#P.Asm64,
2129 opName, P.HasModifiers>;
2132 multiclass VOP2_Helper <vop2 op, string opName, VOPProfile p, list<dag> pat32,
2135 defm _e32 : VOP2_m <op, opName, p, pat32, revOp>;
2137 defm _e64 : VOP3_2_m <op, p.Outs, p.Ins64, opName#p.Asm64, pat64, opName,
2140 def _dpp : VOP2_DPP <op, opName, p>;
2142 def _sdwa : VOP2_SDWA <op, opName, p>;
2145 multiclass VOP2Inst <vop2 op, string opName, VOPProfile P,
2147 string revOp = opName> : VOP2_Helper <
2148 op, opName, P, [],
2158 multiclass VOP2InstSI <vop2 op, string opName, VOPProfile P,
2160 string revOp = opName> {
2162 defm _e32 : VOP2SI_m <op, opName, P, [], revOp>;
2164 defm _e64 : VOP3SI_2_m <op, P.Outs, P.Ins64, opName#P.Asm64,
2171 opName, revOp, P.HasModifiers>;
2174 multiclass VOP2e_Helper <vop2 op, string opName, VOPProfile p,
2180 defm _e32 : VOP2_m <op, opName, p, pat32, revOp>;
2183 defm _e64 : VOP3e_2_3_m <op, p.Outs64, p.Ins64, opName#p.Asm64, pat64,
2184 opName, revOp, p.HasModifiers, useSGPRInput>;
2188 multiclass VOP2eInst <vop2 op, string opName, VOPProfile P,
2190 string revOp = opName> : VOP2e_Helper <
2191 op, opName, P, [],
2201 multiclass VOP2b_Helper <vop2 op, string opName, VOPProfile p,
2207 defm _e32 : VOP2_m <op, opName, p, pat32, revOp>;
2210 defm _e64 : VOP3b_2_3_m <op, p.Outs64, p.Ins64, opName#p.Asm64, pat64,
2211 opName, revOp, p.HasModifiers, useSGPRInput>;
2215 multiclass VOP2bInst <vop2 op, string opName, VOPProfile P,
2217 string revOp = opName> : VOP2b_Helper <
2218 op, opName, P, [],
2229 multiclass VOP2_VI3_Helper <vop23 op, string opName, VOPProfile p,
2232 defm _e32 : VOP2SI_m <op, opName, p, pat32, revOp>;
2234 defm _e64 : VOP3_2_m <op, p.Outs, p.Ins64, opName#p.Asm64, pat64, opName,
2238 multiclass VOP2_VI3_Inst <vop23 op, string opName, VOPProfile P,
2240 string revOp = opName>
2242 op, opName, P, [],
2252 multiclass VOP2MADK <vop2 op, string opName, VOPProfile P, list<dag> pattern = []> {
2254 def "" : VOP2_Pseudo <P.Outs, P.Ins32, pattern, opName>;
2258 !strconcat(opName, P.Asm32), []>,
2259 SIMCInstr <opName#"_e32", SIEncodingFamily.SI>,
2267 !strconcat(opName, P.Asm32), []>,
2268 SIMCInstr <opName#"_e32", SIEncodingFamily.VI>,
2277 class VOPC_Pseudo <dag ins, list<dag> pattern, string opName> :
2279 VOP <opName>,
2280 SIMCInstr<opName#"_e32", SIEncodingFamily.NONE> {
2285 class VOPC_SDWA <vopc op, string opName, bit DefExec, VOPProfile p> :
2287 VOP_SDWA <p.OutsSDWA, p.InsSDWA, opName#p.AsmSDWA, [], p.HasModifiers>,
2298 string opName, bit DefExec, VOPProfile p,
2300 string revOpName = "", string asm = opName#"_e32 "#op_asm,
2301 string alias_asm = opName#" "#op_asm> {
2302 def "" : VOPC_Pseudo <ins, pattern, opName>,
2303 VOP2_REV<revOpName#"_e32", !eq(revOpName, opName)> {
2311 SIMCInstr <opName#"_e32", SIEncodingFamily.SI> {
2323 SIMCInstr <opName#"_e32", SIEncodingFamily.VI> {
2336 multiclass VOPC_Helper <vopc op, string opName, list<dag> pat32,
2339 defm _e32 : VOPC_m <op, p.Ins32, p.Asm32, pat32, opName, DefExec, p, sched,
2342 defm _e64 : VOP3_C_m <op, (outs VOPDstS64:$sdst), p.Ins64, opName#p.Asm64, pat64,
2343 opName, p.HasModifiers, DefExec, revOp, sched>;
2345 def _sdwa : VOPC_SDWA <op, opName, DefExec, p>;
2350 multiclass VOPC_Class_Helper <vopc op, string opName, list<dag> pat32,
2353 defm _e32 : VOPC_m <op, p.Ins32, p.Asm32, pat32, opName, DefExec, p, sched>;
2355 defm _e64 : VOP3_C_m <op, (outs VOPDstS64:$sdst), p.Ins64, opName#p.Asm64, pat64,
2356 opName, p.HasModifiers, DefExec, revOp, sched>,
2359 def _sdwa : VOPC_SDWA <op, opName, DefExec, p> {
2365 multiclass VOPCInst <vopc op, string opName,
2367 string revOp = opName,
2371 op, opName, [],
2382 multiclass VOPCClassInst <vopc op, string opName, VOPProfile P,
2385 op, opName, [],
2390 DefExec, opName, P, sched
2394 multiclass VOPC_F32 <vopc op, string opName, PatLeaf cond = COND_NULL, string revOp = opName> :
2395 VOPCInst <op, opName, VOPC_I1_F32_F32, cond, revOp>;
2397 multiclass VOPC_F64 <vopc op, string opName, PatLeaf cond = COND_NULL, string revOp = opName> :
2398 VOPCInst <op, opName, VOPC_I1_F64_F64, cond, revOp, 0, [WriteDoubleAdd]>;
2400 multiclass VOPC_I32 <vopc op, string opName, PatLeaf cond = COND_NULL, string revOp = opName> :
2401 VOPCInst <op, opName, VOPC_I1_I32_I32, cond, revOp>;
2403 multiclass VOPC_I64 <vopc op, string opName, PatLeaf cond = COND_NULL, string revOp = opName> :
2404 VOPCInst <op, opName, VOPC_I1_I64_I64, cond, revOp, 0, [Write64Bit]>;
2407 multiclass VOPCX <vopc op, string opName, VOPProfile P,
2411 : VOPCInst <op, opName, P, cond, revOp, 1, sched>;
2413 multiclass VOPCX_F32 <vopc op, string opName, string revOp = opName> :
2414 VOPCX <op, opName, VOPC_I1_F32_F32, COND_NULL, [Write32Bit], revOp>;
2416 multiclass VOPCX_F64 <vopc op, string opName, string revOp = opName> :
2417 VOPCX <op, opName, VOPC_I1_F64_F64, COND_NULL, [WriteDoubleAdd], revOp>;
2419 multiclass VOPCX_I32 <vopc op, string opName, string revOp = opName> :
2420 VOPCX <op, opName, VOPC_I1_I32_I32, COND_NULL, [Write32Bit], revOp>;
2422 multiclass VOPCX_I64 <vopc op, string opName, string revOp = opName> :
2423 VOPCX <op, opName, VOPC_I1_I64_I64, COND_NULL, [Write64Bit], revOp>;
2426 multiclass VOPC_CLASS_F32 <vopc op, string opName> :
2427 VOPCClassInst <op, opName, VOPC_I1_F32_I32, 0, [Write32Bit]>;
2429 multiclass VOPCX_CLASS_F32 <vopc op, string opName> :
2430 VOPCClassInst <op, opName, VOPC_I1_F32_I32, 1, [Write32Bit]>;
2432 multiclass VOPC_CLASS_F64 <vopc op, string opName> :
2433 VOPCClassInst <op, opName, VOPC_I1_F64_I32, 0, [WriteDoubleAdd]>;
2435 multiclass VOPCX_CLASS_F64 <vopc op, string opName> :
2436 VOPCClassInst <op, opName, VOPC_I1_F64_I32, 1, [WriteDoubleAdd]>;
2439 multiclass VOP3_Helper <vop3 op, string opName, dag outs, dag ins, string asm,
2442 op, outs, ins, opName#" "#asm, pat, opName, NumSrcArgs, HasMods, VOP3Only
2445 multiclass VOP3Inst <vop3 op, string opName, VOPProfile P,
2448 op, opName, (outs P.DstRC.RegClass:$vdst), P.Ins64, P.Asm64,
2476 multiclass VOP3_VCC_Inst <vop3 op, string opName,
2479 op, opName,
2496 multiclass VOP3bInst <vop op, string opName, VOPProfile P, list<dag> pattern = [], bit VOP3Only = 0…
2499 opName#" "#P.Asm64, pattern,
2500 opName, "", 1, 1, VOP3Only
2517 class VINTRP_Pseudo <string opName, dag outs, dag ins, list<dag> pattern> :
2519 SIMCInstr<opName, SIEncodingFamily.NONE> {
2524 class VINTRP_Real_si <bits <2> op, string opName, dag outs, dag ins,
2528 SIMCInstr<opName, SIEncodingFamily.SI> {
2534 class VINTRP_Real_vi <bits <2> op, string opName, dag outs, dag ins,
2538 SIMCInstr<opName, SIEncodingFamily.VI> {
2557 class DS_Pseudo <string opName, dag outs, dag ins, list<dag> pattern> :
2559 SIMCInstr <opName, SIEncodingFamily.NONE> {
2564 class DS_Real_si <bits<8> op, string opName, dag outs, dag ins, string asm> :
2567 SIMCInstr <opName, SIEncodingFamily.SI> {
2574 class DS_Real_vi <bits<8> op, string opName, dag outs, dag ins, string asm> :
2577 SIMCInstr <opName, SIEncodingFamily.VI> {
2584 class DS_Off16_Real_si <bits<8> op, string opName, dag outs, dag ins, string asm> :
2585 DS_Real_si <op,opName, outs, ins, asm> {
2593 class DS_Off16_Real_vi <bits<8> op, string opName, dag outs, dag ins, string asm> :
2594 DS_Real_vi <op, opName, outs, ins, asm> {
2602 multiclass DS_1A_RET_ <dsop op, string opName, RegisterClass rc,
2605 string asm = opName#" $vdst, $addr"#"$offset$gds"> {
2607 def "" : DS_Pseudo <opName, outs, ins, []>;
2610 def _si : DS_Off16_Real_si <op.SI, opName, outs, ins, asm>;
2611 def _vi : DS_Off16_Real_vi <op.VI, opName, outs, ins, asm>;
2617 multiclass DS_1A_RET <bits<8> op, string opName, RegisterClass rc,
2620 string asm = opName#" $vdst, $addr"#"$offset$gds"> {
2622 def "" : DS_Pseudo <opName, outs, ins, []>;
2625 def _si : DS_Off16_Real_si <op, opName, outs, ins, asm>;
2626 def _vi : DS_Off16_Real_vi <op, opName, outs, ins, asm>;
2630 multiclass DS_1A_Off8_RET <bits<8> op, string opName, RegisterClass rc,
2634 string asm = opName#" $vdst, $addr"#"$offset0"#"$offset1$gds"> {
2636 def "" : DS_Pseudo <opName, outs, ins, []>;
2639 def _si : DS_Real_si <op, opName, outs, ins, asm>;
2640 def _vi : DS_Real_vi <op, opName, outs, ins, asm>;
2644 multiclass DS_1A1D_NORET <bits<8> op, string opName, RegisterClass rc,
2647 string asm = opName#" $addr, $data0"#"$offset$gds"> {
2649 def "" : DS_Pseudo <opName, outs, ins, []>,
2650 AtomicNoRet<opName, 0>;
2653 def _si : DS_Off16_Real_si <op, opName, outs, ins, asm>;
2654 def _vi : DS_Off16_Real_vi <op, opName, outs, ins, asm>;
2658 multiclass DS_1A_Off8_NORET <bits<8> op, string opName,
2662 string asm = opName#" $addr $offset0"#"$offset1$gds"> {
2664 def "" : DS_Pseudo <opName, outs, ins, []>;
2667 def _si : DS_Real_si <op, opName, outs, ins, asm>;
2668 def _vi : DS_Real_vi <op, opName, outs, ins, asm>;
2672 multiclass DS_1A2D_Off8_NORET <bits<8> op, string opName, RegisterClass rc,
2676 string asm = opName#" $addr, $data0, $data1$offset0$offset1$gds"> {
2678 def "" : DS_Pseudo <opName, outs, ins, []>;
2681 def _si : DS_Real_si <op, opName, outs, ins, asm>;
2682 def _vi : DS_Real_vi <op, opName, outs, ins, asm>;
2686 multiclass DS_1A1D_RET <bits<8> op, string opName, RegisterClass rc,
2690 string asm = opName#" $vdst, $addr, $data0"#"$offset$gds"> {
2693 def "" : DS_Pseudo <opName, outs, ins, []>,
2697 def _si : DS_Off16_Real_si <op, opName, outs, ins, asm>;
2698 def _vi : DS_Off16_Real_vi <op, opName, outs, ins, asm>;
2703 multiclass DS_1A1D_PERMUTE <bits<8> op, string opName, RegisterClass rc,
2707 string asm = opName#" $vdst, $addr, $data0"#"$offset"> {
2710 def "" : DS_Pseudo <opName, outs, ins,
2715 def "_vi" : DS_Off16_Real_vi <op, opName, outs, ins, asm>;
2720 multiclass DS_1A2D_RET_m <bits<8> op, string opName, RegisterClass rc,
2723 string asm = opName#" $vdst, $addr, $data0, $data1"#"$offset"#"$gds"> {
2726 def "" : DS_Pseudo <opName, outs, ins, []>,
2729 def _si : DS_Off16_Real_si <op, opName, outs, ins, asm>;
2730 def _vi : DS_Off16_Real_vi <op, opName, outs, ins, asm>;
2741 multiclass DS_1A2D_NORET <bits<8> op, string opName, RegisterClass rc,
2742 string noRetOp = opName,
2746 string asm = opName#" $addr, $data0, $data1"#"$offset"#"$gds"> {
2748 def "" : DS_Pseudo <opName, outs, ins, []>,
2752 def _si : DS_Off16_Real_si <op, opName, outs, ins, asm>;
2753 def _vi : DS_Off16_Real_vi <op, opName, outs, ins, asm>;
2757 multiclass DS_0A_RET <bits<8> op, string opName,
2760 string asm = opName#" $vdst"#"$offset"#"$gds"> {
2763 def "" : DS_Pseudo <opName, outs, ins, []>;
2766 def _si : DS_Off16_Real_si <op, opName, outs, ins, asm>;
2767 def _vi : DS_Off16_Real_vi <op, opName, outs, ins, asm>;
2772 multiclass DS_1A_RET_GDS <bits<8> op, string opName,
2775 string asm = opName#" $vdst, $addr"#"$offset gds"> {
2777 def "" : DS_Pseudo <opName, outs, ins, []>;
2780 def _si : DS_Off16_Real_si <op, opName, outs, ins, asm>;
2781 def _vi : DS_Off16_Real_vi <op, opName, outs, ins, asm>;
2785 multiclass DS_1A_GDS <bits<8> op, string opName,
2788 string asm = opName#" $addr gds"> {
2790 def "" : DS_Pseudo <opName, outs, ins, []>;
2793 def _si : DS_Real_si <op, opName, outs, ins, asm>;
2794 def _vi : DS_Real_vi <op, opName, outs, ins, asm>;
2798 multiclass DS_1A <bits<8> op, string opName,
2801 string asm = opName#" $addr"#"$offset"#"$gds"> {
2804 def "" : DS_Pseudo <opName, outs, ins, []>;
2807 def _si : DS_Off16_Real_si <op, opName, outs, ins, asm>;
2808 def _vi : DS_Off16_Real_vi <op, opName, outs, ins, asm>;
2817 class MTBUF_Pseudo <string opName, dag outs, dag ins, list<dag> pattern> :
2819 SIMCInstr<opName, SIEncodingFamily.NONE> {
2824 class MTBUF_Real_si <bits<3> op, string opName, dag outs, dag ins,
2828 SIMCInstr<opName, SIEncodingFamily.SI> {
2833 class MTBUF_Real_vi <bits<4> op, string opName, dag outs, dag ins, string asm> :
2836 SIMCInstr <opName, SIEncodingFamily.VI> {
2841 multiclass MTBUF_m <bits<3> op, string opName, dag outs, dag ins, string asm,
2844 def "" : MTBUF_Pseudo <opName, outs, ins, pattern>;
2846 def _si : MTBUF_Real_si <op, opName, outs, ins, asm>;
2848 def _vi : MTBUF_Real_vi <{0, op{2}, op{1}, op{0}}, opName, outs, ins, asm>;
2854 multiclass MTBUF_Store_Helper <bits<3> op, string opName,
2856 op, opName, (outs),
2860 opName#" $vdata, $offset, $offen, $idxen, $glc, $addr64, $dfmt,"
2868 multiclass MTBUF_Load_Helper <bits<3> op, string opName,
2870 op, opName, (outs regClass:$dst),
2874 opName#" $dst, $offset, $offen, $idxen, $glc, $addr64, $dfmt,"
2908 class MUBUF_Pseudo <string opName, dag outs, dag ins, list<dag> pattern> :
2910 SIMCInstr<opName, SIEncodingFamily.NONE> {
2924 class MUBUF_Real_si <mubuf op, string opName, dag outs, dag ins,
2928 SIMCInstr<opName, SIEncodingFamily.SI> {
2935 class MUBUF_Real_vi <mubuf op, string opName, dag outs, dag ins,
2939 SIMCInstr<opName, SIEncodingFamily.VI> {
2946 multiclass MUBUF_m <mubuf op, string opName, dag outs, dag ins, string asm,
2949 def "" : MUBUF_Pseudo <opName, outs, ins, pattern>,
2953 def _si : MUBUF_Real_si <op, opName, outs, ins, asm>;
2956 def _vi : MUBUF_Real_vi <op, opName, outs, ins, asm>;
2959 multiclass MUBUFAddr64_m <mubuf op, string opName, dag outs,
2962 def "" : MUBUF_Pseudo <opName, outs, ins, pattern>,
2966 def _si : MUBUF_Real_si <op, opName, outs, ins, asm>;
2973 multiclass MUBUFAtomicOffset_m <mubuf op, string opName, dag outs, dag ins,
2976 def "" : MUBUF_Pseudo <opName, outs, ins, pattern>,
2982 def _si : MUBUF_Real_si <op, opName, outs, ins, asm>;
2985 def _vi : MUBUF_Real_vi <op, opName, outs, ins, asm>;
2989 multiclass MUBUFAtomicAddr64_m <mubuf op, string opName, dag outs, dag ins,
2992 def "" : MUBUF_Pseudo <opName, outs, ins, pattern>,
2997 def _si : MUBUF_Real_si <op, opName, outs, ins, asm>;
3004 multiclass MUBUFAtomicOther_m <mubuf op, string opName, dag outs, dag ins,
3007 def "" : MUBUF_Pseudo <opName, outs, ins, pattern>,
3008 AtomicNoRet<opName, is_return>;
3012 def _si : MUBUF_Real_si <op, opName, outs, ins, asm>;
3015 def _vi : MUBUF_Real_vi <op, opName, outs, ins, asm>;
3236 multiclass MUBUF_Invalidate <mubuf op, string opName, SDPatternOperator node> {
3238 def "" : MUBUF_Pseudo <opName, (outs), (ins), [(node)]>;
3244 def _si : MUBUF_Real_si <op, opName, (outs), (ins), opName>;
3247 def _vi : MUBUF_Real_vi <op, opName, (outs), (ins), opName>;
3261 class FLAT_Pseudo <string opName, dag outs, dag ins, list<dag> pattern> :
3263 SIMCInstr<opName, SIEncodingFamily.NONE> {
3268 class FLAT_Real_ci <bits<7> op, string opName, dag outs, dag ins, string asm> :
3270 SIMCInstr<opName, SIEncodingFamily.SI> {
3275 class FLAT_Real_vi <bits<7> op, string opName, dag outs, dag ins, string asm> :
3277 SIMCInstr<opName, SIEncodingFamily.VI> {